Languages for Scientific Computing 2: Automation  2010
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:
The focus of the second part of Languages for Scientific Computing is:
* symbolic computations
* automatic generation of algorithms and code
* highperformance on multicore processors.
The course is research oriented.
Mathematica and other languages with symbolic capabilities (Maple, Sage, Matlab) are used to continue comparison between different programming paradigms: functional vs. imperative, discrete vs. numerical vs. symbolic.
We will cover topics such as pattern matching, textual substitution, functions and functionals, algebraic manipulations. The concepts of automation, program correctness and numerical stability are then introduced.
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.
Finally, symbolic technique are used to show how to automatically generate and analyze algorithms and routines.
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!
Programs will be evaluated with respect to metrics like performance, size, elegance.
NOTE: The course "Languages for Scientific Computing 1" is NOT a prerequisite.

Summer semester 2010.

CAMPUS #: 10ss24886

Lectures begin: Thursday, April 22nd  10.30am.

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:

Intro: Symbolic vs. numerical computations.

Intro: Automation.

Preliminaries: Linear algebra by blocks.

Crash course on symbolic & functional programming.

Program correctness: semantics of Expressions and Commands.

Assignment: are the following three statements equivalent?

While Exp do Com endw

If Exp
then Com; While Exp do Com endw
else null
fi

If Exp
then Com
else null
fi;
While Exp do Com endw

Loop Invariants.

Autotuning.

Partitioned Matrix Expressions and Loop Invariants.

E. Chan: "Runtime data flow graph scheduling of matrix computations"

Automation of PME generation.

Generation: from loopinvariant to algorithm.

Material:
[Dissertation]
Formal correctness  Chapter 2, pagg.2230 
Worksheet  Chapter 2, pagg.3135 
Example  Chapter 2, pagg.3545 
PME & LoopInvariants  Chapter 2, pagg.4555 
Automation  Chapter 3, pagg.5983 