Introduction to Languages for Scientific Computing --- 2012-13


    Prerequisites

    Basic knowledge of numerical linear algebra, programming languages, algorithms.

    Overview

    The goal of the course is to provide the students with tools to 1) achieve effective prototyping through high-level languages, and 2) write high-performance programs in C and/or Fortran. In this respect, programs will be evaluated with respect to metrics like performance, readability, elegance.
    We will discuss programming languages and tools especially suitable for numerical & symbolic computations, data visualization, and high-performance computations. The focus will be on Matlab, Mathematica and C; no prior knowledge of these languages is required. We will also cover standard computational tools and Fortran-based libraries like BLAS and LAPACK.
    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.

    Tentative syllabus

    Introduction History of languages
    Matlab
    Floating point arithmetic
    Conditioning
    Mathematica
    Maps, functions
    Fixed & high-precision numbers; symbols
    Imperative vs. functional programming
    Data visualization
    C
    Performance
    Numerical libraries


  • Winter semester 2012-13.

  • CAMPUS #: 12ws-14775

  • Exam I: Thursday, February 14, 5-7.30pm.

    Exam II: Thursday, March 14, 5-7.30pm.

  • Lectures & Exercises:
    Tuesdays, 17.00-18.30 (lecture)
    Thursdays, 17.00-18.30 (lecture + exercise)
    Rogowski 115 - AICES seminar room (Schinkelstrasse 2)

  • Office hours: Tuesdays, 11am-1pm
    AICES R432 (Rogowski Building - Schinkelstrasse 2)

    • Schedule

    • October, Thursday 11; [Intro]

    • October, Tuesday 16; Floating Point Arithmetic [Lecture 1]

    • October, Thursday 18; Programs & Programming Languages [Lecture 2]
      History of Programming Languages [Poster]

    • October, Tuesday 23; Matlab, part 1 [Lecture]
      The session [diary]

    • October, Thursday 25; Floating points & Matlab, exercises.
      The session [diary]

    • October, Tuesday 30; Matlab, part 2 (functions).
      The session [diary]


    • November, Tuesday 6; Matlab, examples.
      The session [diary] [examples]

    • November, Thursday 8; Matlab, visualization [archive]
      copyright/licensing

    • November, Tuesday 13; HW1
      Mathematica; [Notebook], [diary]

    • November, Thursday 15; Mathematica
      [Notebook]


    • November, Tuesday 20; Mathematica, programming styles, patterns.
      [Notebook]

    • November, Thursday 22; HW2
      Mathematica, how to use patterns.
      [Notebook]

    • November, Tuesday 27; Pure functions, Mapping.
      [Notebook]

    • November, Thursday 29; Map*, Replacement Rules.
      [Notebook]

    • December, Tuesday 4; visualization.
      [Notebook]


    • December, Thursday 6; Numerical computations [Notebook]
      Programming. Sound [Notebook]

    • December, Tuesday 11; Python. (not in the final exam)

    • December, Thurday 13; Python. (not in the final exam)
    • [github]
    • December, Tuesday 18; Solution of HW3, exercises.

    • January, Tuesday 8; C, part 1.
      [Archive]

    • January, Thursday 10; C, linking, libraries; Makefiles.
      [Archive]

    • January, Tuesday 15; C, part 3.
      [Archive]

    • January, Thursday 17; C, part 4.
      [Archive]

    • January, Tuesday 22; C, part 5.
      [Archive]


    • January, Thursday 24; C, wrapping up.
      [typedef], [structs]

    • January, Tuesday 29; licensing, final exam discussion.

    • January, Thursday 31; HW4, final exam discussion.

    • Exam I: Thursday, February 14, 5-7.30pm.

    • Exam II: Thursday, March 14, 5-7.30pm.