Introduction to Languages for Scientific Computing


When: Summer semester 2018

CAMPUS #: 18ws-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
  • Monday, 16:15 - 17:45, 2181|P11 (MeT P 11) (lecture)
  • Friday, 16:15 - 17:45, 2181|P11 (MeT P 11) (lecture + exercise)


Office hours

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

Schedule

  • Friday, 13.04 FIRST CLASS
    [PDF]
  • Friday, 20.04 Floating point arithmetic (1/3) [PDF]
  • Monday, 23.04 Floating point arithmetic (2/3) [PDF][Pi up][Pi down]
  • Friday, 27.04 Floating point arithmetic (3/3) [PDF]
  • Monday, 30.04 Intro to programming [PDF]
    Matlab 1/5 [Diary]
  • Friday, 04.05 Matlab 2/5 [Diary]
    Challenge #1 [PDF]
    Winner: Mietze Tang [PDF]. Honorable mentions: Nils Frahm, Ashutosh Manchanda
  • Monday, 07.04 Floating point arithmetic: Exercises [PDF], Test exam [PDF][Solutions]
  • Friday, 11.05 Matlab 3/5 [Diary], [Files]
  • Monday, 14.05 Matlab 4/5 [Diary], [Files]
  • Friday, 18.05 Matlab 5/5 [Diary], [Files]
  • Tuesday, 22.05 Challenge #2 [PDF] [Rec] [MV]
    Winner: Lucas Wiens. Honorable mention: Benjamin Jung
  • Monday, 28.05 Mathematica 1/8 [Notebook 1]
  • Friday, 01.06 Matlab exercises [PDF] [Files]
  • Monday, 04.06 C 1/4 [Files] -- Dr. William McDoniel
  • Friday, 08.06 C 2/4 [Files] -- Dr. William McDoniel
  • Monday, 11.06 C 3/4 [Files] -- Dr. William McDoniel
  • Friday, 15.06 C 4/4 [Files]
  • Monday, 18.06 Mathematica 2/8 [Notebook 2]
  • Tuesday, 19.06 Extra Lecture: "Optimal Performance Numerical Code: Challenges and Solutions" by Prof. Markus Pueschel (ETH). 10:30-12:00 + 13:30-15:00, Room 115. [html]
  • Friday, 22.06 Mathematica 3/8 [Notebook 3]
  • Monday, 25.06 Mathematica 4/8 [Notebook 4]
    Challenge #3
  • Friday, 29.06 Mathematica 5/8 [Notebook 5]
  • Monday, 02.07 Mathematica 6/8 [Notebook 6]
  • Friday, 06.07 Challenge #3. [Notebook]
    Winners: Jonas Dedden [solution], Karim Abou Zeid [(complicated) solution].
    Exercises: [PDF]
  • Monday, 09.07 Mathematica 7/8 [Notebook 7]
  • Tuesday, 10.07 Challenge #4 [PDF]
    Winner: Mietze Tang. Honorable mentions: Jonas Dedden, Mara Caltapanides
  • Friday, 13.07 Mathematica 8/8 [Notebook 8]
  • Monday, 16.07 Challenge #4 [Solutions]
    Recap [Notebook]
  • Friday, 20.07 [Exercises]

Exam

  • 02.08.2018, 10:30-13:00, HKW 1, HKW 2
  • 14.09.2018, 17:00-19:30, KlPhys