Introduction to Languages for Scientific Computing


When: Summer semester 2017

CAMPUS #: 17ws-57513

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 achieve effective prototyping through high-level languages, and write high-performance programs in C and/or Fortran. Programs will be evaluated with respect to metrics such as performance, readability, elegance.

We will discuss programming languages and tools especially suitable for numerical & symbolic computations, data visualization, and high-performance computations. The focus is on Matlab, Mathematica and C; no prior knowledge of these languages is required. We also cover standard computational tools and Fortran-based libraries such as 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
  • History of languages
  • Matlab
  • Data visualization
  • Mathematica
  • Maps, functions
  • Fixed & high-precision numbers; symbols
  • Imperative vs. functional programming
  • C
  • Performance
  • Numerical libraries

Lectures & Exercises


Room: 2181|P11 (MeT P 11), Kopernikusstra├če 14
  • Tuesdays, 4.15pm-5.45pm (lecture)
  • Thursdays, 2.15pm-3.45pm (lecture + exercise)
First lecture: Thursday, April 27, 2.15pm-3.45pm + 3.45pm-5.15pm

Office hours

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

Schedule

  • Tuesday, 18.04 NO CLASS - Vorstellung der Wahlpflicht-Veranstaltungen
    [PDF]
  • Thursday, 27.04 Intro, programming languages [PDF]
    EXTRA lecture Floating point arithmetic, part 1/3 [PDF]
  • Tuesday, 02.05 Floating point arithmetic, part 2/3 [PDF] [Examples]
  • Thursday, 04.05 Floating point arithmetic, part 3/3 [PDF] [Examples][PI up][PI down]
    [Misc exercises]
  • Tuesday, 09.05 Matlab, part 1/5 [Diary]
    [Challenge 1][Solution] Winners: Stephan Christian and Dmitry Manuilov
  • Thursday, 11.05 Exercises: FPA [PDF]
  • Tuesday, 16.05 Matlab, part 2/5 [Diary][scripts]
  • Thursday, 18.05 Matlab, part 3/5 [Diary][scripts]
  • Tuesday, 23.05 Matlab, part 4/5 [Diary][scripts2]
  • Tuesday, 30.05 Mathematica, part 1/8 [Notebook]
    [Challenge 2][Solution] Winner: Annika Savelsberg
  • Thursday, 01.06 Mathematica, part 2/8 [Notebook]
  • Tuesday, 13.06 Matlab, part 5/5, exercises
  • Tuesday, 20.06 Conflict
    [Challenge 3] Honorable mentions: Dmitry Manuilov and Patrick Ziegler
  • Thursday, 29.06 Mathematica, part 3/8 [Notebook]
  • Tuesday, 04.07 Mathematica, part 4/8 [Notebook]
  • Thursday, 06.07 Mathematica, part 5/8 [Notebook]
    EXTRA lecture 2.15pm-3.45pm + 3.45pm-5.15pm
  • Tuesday, 11.07 Mathematica, part 6/8 [Notebook]
  • Thursday, 13.07 Mathematica, part 7/8 [Notebook]
    EXTRA lecture 2.15pm-3.45pm + 3.45pm-5.15pm
    [Mathematica exercises]
    [Challenge 4] Winner: Tobias Vogel
  • Tuesday, 18.07 C, part 1/4 [Files]
    [Challenge 5] Winner: Hubert Grawender
  • Thursday, 20.07 Mathematica, part 8/8 [Notebook]
    EXTRA lecture C, part 2/4 [Files]
    2.15pm-3.45pm + 3.45pm-5.15pm
    [Matlab exercises]
    [Mathematica exercises]
    [Challenge 6] Winner: David Wlazlo. Honorable mention: Tobias Vogel
  • Tuesday, 25.07 C, part 3/4 [Files]
  • Thursday, 27.07 C, part 4/4 [Files]

Exam

  • 01.08.2017, 13:00-16:00, 1132|303 (HKW 2)
  • 01.08.2017, 13:00-16:00, 2181|P11 (MeT P 11)
  • 01.08.2017, 13:30-16:00, 1090|334 (klPhys)
  • 20.09.2017, 16:00-18:30, 1090|334 (klPhys)