Languages for Scientific Computing 1  200910
Prerequisites:
Basic knowledge of numerical methods, numerical linear algebra, programming languages, algorithms.
Overview:
We will compare and contrast languages especially suitable for numerical
computations, symbolic computations, and highperformance computations:
Mathematica, Matlab, C, Fortran. We will also cover standard tools and
libraries for scientific and parallel computations: BLAS, LAPACK, MPI,
OpenMP... An introduction to Python should conclude the semester.
Different programming paradigms will be introduced: functional
vs. imperative, discrete vs. numerical vs. symbolic. Programs will be
evaluated with respect to metrics like performance, size, elegance.
This first module focuses on numerical computations, highperformance and
parallelism.
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.

Winter semester 200910.

CAMPUS #: 09ws14775

Lectures begin: Thursday, October 15th. In the afternoon.

Lectures & Exercises:
Thursdays, 10.3012.00, Rogowski 115  AICES seminar room (Schinkelstrasse 2)
Thursdays, 17.0018.30, Rogowski 115  AICES seminar room (Schinkelstrasse 2)

Office hours: Tuesdays, 11am1pm, AICES R432 (Rogowski Building  Schinkelstrasse 2)

Lectures:

Oct.22nd: Introduction to Programming
History of Programming Languages

Oct.29th: Mathematica. Replacements rules, assignments, functions.
Mathematica pt2: Lists, functional constructs, programming constructs.

Nov.5th: Classes moved to January 15th.

Nov.12th: Floating point arithmetic.
Mathematica: Numerics.

Nov.19th: Matlab demo. Fast Fourier Transform.

Nov.26th: Visualization in Matlab.

Dec.3rd: Intro to C (part 1).
Book: "The C Programming Language", by Brian Kernighan & Dennis Ritchie.
Visualization in Mathematica.

Dec.10rd: Intro to C (part 2).
Shell scripting.

Dec.17rd: Numerical Linear Algebra libraries. Highperformance.
BLAS
LAPACK

Jan.7th: FLAME, a language and a library for dense linear algebra.

Jan.14th & 15th: Python and extreme programming.

Jan.21st: Makefiles.

Jan.28th: Programming the Cell Broadband Engine.

Feb.2nd: How to give a presentation.
[HOWTOPresentations].
Afternoon: Eigensolvers for Multicore Processors and Massively Parallel Supercomputers.