Introduction to Languages for Scientific Computing --- 2013-14


    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 2013-14.

  • CAMPUS #: 13ws-14775

  • Lectures begin: Thursday, October 17, 2.15pm.

  • Lectures & Exercises:
    Mondays, 2.15-3.45pm (lecture)
    Thursdays, 2.15-3.45pm (lecture + exercise)
    Rogowski 115 - AICES seminar room (Schinkelstrasse 2)

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

    • Schedule

    • 17.10.2013 - Thursday -> Introduction

    • 21.10.2013 - Monday -> Programs & Programming Languages [Lecture 1]

    • 24.10.2013 - Thursday -> Floating Point Arithmetic [Lecture 2]

    • 28.10.2013 - Monday -> Charlemagne Lecture, 2pm, Generali room, Super C

    • 31.10.2013 - Thursday -> Matlab, part 1 [Lecture 3] [Diary]

    • 04.11.2013 - Monday -> Matlab, part 2 [Diary]

    • 07.11.2013 - Thursday -> Matlab, part 3; more FPA [Diary] [Files] [FPA]

    • 11.11.2013 - Monday -> Matlab, part 4; FFT; Cholesky. [Diary] [Files]

    • 12.11.2013 - Tuesday, 1pm -> deadline HW1

    • 14.11.2013 - Thursday -> HW1 review. Winner: Henrik Barthels; Mathematica, part 1 [Notebook];

    • 18.11.2013 - Monday -> Mathematica, part 2 [Notebook];

    • 19.11.2013 - Tuesday, 1pm -> deadline HW2

    • 21.11.2013 - Thursday -> HW2 review. Winner: Jan Winkelmann

    • 25.11.2013 - Monday -> Mathematica, part 3 [Notebook];

    • 28.11.2013 - Thursday -> Mathematica, part 4 [Notebook];

    • 02.12.2013 - Monday -> Mathematica, part 5 [Notebook];

    • 05.12.2013 - Thursday Double lecture: 2.15pm & 5pm
      Mathematica, part 6 [Notebook];

    • 09.12.2013 -> shifted to Thursday 05.12, 4pm.

      Practice questions: Floating point arithmetic - [EX1]

      Practice questions: Mathematica - [EX2]

    • 12.12.2013 -> shifted to January.

    • 14.11.2013 - Saturday, 1pm -> deadline HW3

    • 16.12.2013 - Monday -> HW3 review. Winners: Henrik Barthels and Yannick Deuster;
      Mathematica, part 7 [Notebook];

    • 19.12.2013 - Thursday -> Mathematica examples [Notebook];

    • 09.01.2014 - Thursday -> review of exercises. [Solutions]

    • 13.01.2014 - Monday -> C, introduction [files]

    • 16.01.2014 - Thursday -> C [files]

    • 20.01.2014 - Monday -> C [files]

    • 21.01.2014 - Tuesday, 1pm -> deadline HW4

    • 23.01.2014 - Thursday -> HW4 review

    • 27.01.2014 - Monday -> C [files]
      [BLAS cheat sheet]
      [BLAS library]. This is the reference implementation; do not expect performance!
      [OpenBLAS]. This is an optimized implementation; do expect speed!

    • 30.01.2014 - Thursday -> Makefiles (not part of the exam) [files]

    • 01.02.2014 - Saturday, 1pm -> deadline HW5

    • 03.02.2014 - Monday -> final lecture, wrap up [Cholesky]


    Exam dates


    February: 13, 20, 27
    March: 7, 21
    April: 3

    Send me an email to schedule an appointment -> First come, first served.