Introduction to Languages for Scientific Computing

When: Winter semester 2015

CAMPUS #: 15ws-14775

Contact: Prof. Paolo Bientinesi


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


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)


  • 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]


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