Introduction to Languages for Scientific Computing
When: Summer semester 2017
CAMPUS #: 17ws57513
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 highlevel languages, and write highperformance 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 highperformance computations. The focus is on Matlab, Mathematica and C; no prior knowledge of these languages is required. We also cover standard computational tools and Fortranbased 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 & highprecision numbers; symbols
 Imperative vs. functional programming
 C
 Performance
 Numerical libraries
Lectures & Exercises
Room: 2181P11 (MeT P 11), Kopernikusstraße 14
 Tuesdays, 4.15pm5.45pm (lecture)
 Thursdays, 2.15pm3.45pm (lecture + exercise)
Office hours

Tuesdays, 11am1pm, by appointment.
AICES R432 (Rogowski Building  Schinkelstrasse 2)
Schedule

Tuesday, 18.04 NO CLASS  Vorstellung der WahlpflichtVeranstaltungen [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 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.15pm3.45pm + 3.45pm5.15pm 
Tuesday, 11.07 Mathematica, part 6/8 [Notebook] 
Thursday, 13.07 Mathematica, part 7/8 [Notebook] EXTRA lecture 2.15pm3.45pm + 3.45pm5.15pm [Mathematica exercises] [Challenge 4] Winner: Tobias Vogel 
Tuesday, 18.07 C, part 1/? [Files] [Challenge 5] 
Thursday, 20.07 Mathematica, part 8/8 [Notebook] EXTRA lecture C, part 2/? [Files] 2.15pm3.45pm + 3.45pm5.15pm [Matlab exercises] [Mathematica exercises] [Challenge 6] 
Tuesday, 25.07 
Thursday, 27.07
Exam
 01.08.2017, 13:0016:00, 1132303 (HKW 2)
 01.08.2017, 13:0016:00, 2181P11 (MeT P 11)
 01.08.2017, 13:3016:00, 1090334 (klPhys)
 20.09.2017, 16:0018:30, 1090334 (klPhys)