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
[Lectures 1 & 2].
History of Programming Languages
[Poster].
[Assignment #1]
[Solution]
Elegant solution to Problem #1 and possible approaches to Problems #2 and #3. (by Andreas Bollermann)
-
Oct.29th: Mathematica. Replacements rules, assignments, functions.
Mathematica pt2: Lists, functional constructs, programming constructs.
[Intro to Mathematica].
[Assignment #2]
[Solutions], including a replacement rules-based Quicksort (by Fabian Kuerten). Challenge winner: Tadeus Prastowo.
-
Nov.5th: Classes moved to January 15th.
-
Nov.12th: Floating point arithmetic.
[Lecture]
Mathematica: Numerics.
[Notes & Solution to HW2]
[Assignment #3]
-
Nov.19th: Matlab demo. Fast Fourier Transform.
[Lecture] <- updated
Mathematica: [Razz],
[Sound].
-
Nov.26th: Visualization in Matlab. [Lecture]
[Assignment #4] (team assignment)
Files: [F.m] [P.m]
[Image]
-
Dec.3rd: Intro to C (part 1). [Lecture]
Book: "The C Programming Language", by Brian Kernighan & Dennis Ritchie.
Visualization in Mathematica. [Lecture]
-
Dec.10rd: Intro to C (part 2). [Lecture]
[MV.c]
Shell scripting. [Lecture]
-
Dec.17rd: Numerical Linear Algebra libraries. High-performance. [Lecture]
BLAS [Source] [Reference]
LAPACK [Source]
[Assignment #5]
-
Jan.7th: FLAME, a language and a library for dense linear algebra.
-
Jan.14th & 15th: Python and extreme programming.
[Lectures & Material]
-
Jan.21st: Makefiles. [Examples]
TRMV challenge. Winner: Torsten Kammer.
Final assignment: Razz simulation.
[Assignment #6]
<-- To be discussed at the final exam.
-
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.
Automatic Generation and Analysis of Algorithms --- 2009
Prerequisites:
Basic knowledge of numerical linear algebra.
Principles of algorithms and programming.
Familiarity with at least one of the following languages: Mathematica,
Maple, Matlab, C.
Overview:
This course is research-oriented; it covers novel techniques on
automation.
In this course "automation" means that a computer makes decisions and
performs operations much like a human would do. This is in constrast
to the scenario in which automation means that a computer is used to
test a very large number of cases.
Starting from a problem expressed in symbolic (algebraic) form
(example: Lx = b), it is possible to automatically generate algorithms
and code to solve the problem with only minimal human intevention. Not
only are the algorithms generated automatically, but they are provably
correct!
We will study the generation methodology and we will explore the
following topics: generation of parallel algorithms for multi-core
processors, cost analysis, error analysis.
-
Summer semester 2009.
-
CAMPUS #: 09ss-24886
-
First meeting: Thursday, April 16th - 17.15 in Wullnerstrasse.
Lectures begin: Thursday, April 23rd - 10.30am.
-
Lectures:
Thursdays, 10.00-11.30, 2356|5055 (Ahornstrasse 55)
Thursdays, 17.15-18.45, 1810|013 (Wullnerstrasse 5 u.7)
-
Office hours:
Tuesdays, 11am-1pm, AICES R432 (Rogowski Building - Schinkelstrasse 2)
-
Lectures:
Languages for Scientific Computing --- 2008-09
-
Winter semester 2008-09.
-
CAMPUS #: 08ws-14775
-
Lectures: Thursdays, 1.15-2.45pm, RS 5 (Rochusstrasse 2-14)
-
Exercises: Wednesdays, 10-11.30am, MeT P 11 (Kopernikusstrasse 14)
-
Office hours: Tuesdays, 11am-1pm, AICES R432 (Rogowski Building - Schinkelstrasse 2)
-
Lectures:
-
Lecture 1: Intro to Programming
-
Lecture 2: Intro to Matlab
-
Lecture 3: Matlab Part2
-
November 12 & 13: PETSc tutorial.
-
November 20: Intro to C.
-
November 27: BLAS. [Source] [Reference]
-
December 3 & 4: Pair Programming. Pointers to functions.
-
Intro to Mathematica & functional programming.
-
January 15: Floating Point Arithmetic.
-
January 22: LAPACK. [Source]
-
January 29: FLAME. [Source]
-
February 4: make / Makefile,
Valgrind
February 5: Shell scripting