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
    
    * high-performance on multi-core 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 #: 10ss-24886
    
    - 
         Lectures begin: Thursday, April 22nd - 10.30am.  
    
    - 
         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:
      
	
 
- 
	  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 loop-invariant to algorithm.
	
 
- 
	  Material:
	  [Dissertation]
	  
	  
	    | Formal correctness | Chapter 2, pagg.22-30 |  | Worksheet | Chapter 2, pagg.31-35 |  | Example | Chapter 2, pagg.35-45 |  | PME & Loop-Invariants | Chapter 2, pagg.45-55 |  | Automation | Chapter 3, pagg.59-83 |