Introduction to Languages for Scientific Computing


When: Winter semester 2015

CAMPUS #: 15ws-14775

Contact: Prof. Paolo Bientinesi



Prerequisites

Basic knowledge of numerical linear algebra, programming languages, algorithms.


Overview

The goal of the course is to provide the students with tools to 1) achieve effective prototyping through high-level languages, and 2) write high-performance programs in C and/or Fortran. In this respect, programs will be evaluated with respect to metrics like performance, readability, elegance.

We will discuss programming languages and tools especially suitable for numerical & symbolic computations, data visualization, and high-performance computations. The focus will be on Matlab, Mathematica and C; no prior knowledge of these languages is required. We will also cover standard computational tools and Fortran-based libraries like BLAS and LAPACK.

The course is hands on. The students are expected to solve (and compete on) simple programming assignments and to present approach & results in front of the class.


Tentative syllabus

  • Introduction
  • Floating point arithmetic
  • Conditioning
  • History of languages
  • Matlab
  • C
  • Performance
  • Numerical libraries
  • Mathematica
  • Maps, functions
  • Fixed & high-precision numbers; symbols
  • Imperative vs. functional programming
  • Data visualization

Lectures & Exercises


IMPORTANT: Due to the high attendance, for the first few weeks the class will take place in
2181|P11 (MeT P 11), Kopernikusstra├če 14,
with schedule
  • Tuesdays, 6.15-7.45pm (lecture)
  • Thursdays, 5.15-6.45pm (lecture + exercise)
First lecture: Tuesday, October 20, 6.15pm

Office hours

  • Tuesdays, 11am-1pm, by appointment.
    AICES R432 (Rogowski Building - Schinkelstrasse 2)

Schedule

  • Tuesday, 20.10 Intro; live demo
  • Thursday, 22.10 Floating point arithmetic (pt1/2) [slides]
  • Tuesday, 27.10 Floating point arithmetic, (pt2/2)
    [slides], [examples], [notebook], [pi_up] [pi_down]
  • Thursday, 29.10 Languages [slides]
    [HW#1] Deadline: Wednesday, Nov.4, 23.59pm
  • Tuesday, 03.11 Matlab (pt1/4) [Diary]
  • Thursday, 07.11 Review of HW1 [solutions]
    [Challenge #1] Solved!
    Winner: Fabian Orland
  • Tuesday, 10.11 Matlab (pt2/4) [Diary] [m-files]
  • Thursday, 12.11 Matlab (pt3/4) [Diary] [fft]
    [HW#2] Deadline: Wednesday, Nov.18, 23.59pm
  • Tuesday, 17.11 Matlab (pt4/4) [Diary] [m-files]
  • Thursday, 19.11 Review of HW2 [solutions]
    [Challenge #2] Deadline: Thursday, Nov.23, noon.
    Winner: Erik Koene; honorable mention: Robert Lau
  • Tuesday, 24.11 Mathematica (pt1/9) [Notebook 1]
  • Thursday, 26.11 Mathematica (pt2/9) [Notebook 2]
    [Notes on FFT] [Challenge #3] Deadline: Sunday, Dec.6, midnight.
    Winner: SunUng Mun; honorable mention: Erik Koene
  • Tuesday, 01.12 Mathematica (pt3/9) [Notebook 3]
  • Thursday, 03.12 Mathematica (pt4/9) [Notebook 4]
  • Tuesday, 08.12 Mathematica (pt5/9) [Notebook 5]
  • Thursday, 10.12 Mathematica (pt6/9) [Notebook 6]
    [HW#3 / Challenge #4] Deadline: Wednesday, Dec.16, midnight.
    Winner: William Heymann
  • Tuesday, 15.12 Mathematica (pt7/9) [Notebook 7]
  • Thursday, 17.12 Mathematica (pt8/9) [Solutions] [Fibonacci]
  • Tuesday, 22.12 [Challenge #5] Deadline: Wednesday, Jan.13, 1pm.
    Winner: Sebastian Achilles
  • Tuesday, 12.01 Mathematica (pt9/9) [Sound] [Sequence] [Precision]
  • Thursday, 14.01 Mathematica exercises [Notebook]
  • Tuesday, 19.01 C (pt1/5) [Archive]
  • Thursday, 21.01 C (pt2/5) [Archive]
  • Tuesday, 26.01 C (pt3/5) [Archive]
  • Thursday, 28.01 C (pt4/5) [Archive]
  • Tuesday, 02.02 C (pt5/5) [Archive]
  • Thursday, 04.02 Makefile, compilation, linking [Archive]
  • Tuesday, 09.02 Exercises and practice questions (Floating point arithmetic, Matlab)
    FPA lecture updated [slides], [exercises]
  • Thursday, 11.02 Exercises and practice questions (Mathematica, C) [exercises]

Exam

  • February 16, 5pm, room 1132|101 (HKW 1, HKW 2). [Room assignment]
  • March 1, 5pm, room 1090|334 (klPhys, Rog.115).