Languages for Scientific Computing 1 --- 2009-10
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 high-performance 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, high-performance 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 2009-10.
-
CAMPUS #: 09ws-14775
-
Lectures begin: Thursday, October 15th. In the afternoon.
-
Lectures & Exercises:
Thursdays, 10.30-12.00, Rogowski 115 - AICES seminar room (Schinkelstrasse 2)
Thursdays, 17.00-18.30, Rogowski 115 - AICES seminar room (Schinkelstrasse 2)
-
Office hours: Tuesdays, 11am-1pm, 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. High-performance.
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.
[HOWTO-Presentations].
Afternoon: Eigensolvers for Multicore Processors and Massively Parallel Supercomputers.