Introduction to Languages for Scientific Computing

Winter semester 2014-15


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

CAMPUS #

14ws-14775


Lectures & Exercises

  • Tuesdays, 6.15-7.45pm (lecture)
  • Thursdays, 12.15-1.45pm (lecture + exercise)

First lecture: Tuesday, October 21, 18.15
Rogowski 115 - AICES seminar room (Schinkelstrasse 2)


Office hours

  • Tuesdays, 11am-1pm, by appointment.
    AICES R432 (Rogowski Building - Schinkelstrasse 2)

Schedule

  • Tuesday, 21.10 - Intro; live demo

  • Thursday, 23.10 - Floating point arithmetic (1/3) [slides] [notebook]

  • Tuesday, 28.10 - Floating point arithmetic (2/3) [slides] [BX] [pi Up] [pi Down]

  • Thursday, 30.10 - Floating point arithmetic (3/3) [LU] [LU2]

  • Tuesday, 4.11 - Exercises on floating point arithmetic [Exercise sheet]

  • Thursday, 6.11 - Languages [quick intro]. Matlab (1/5) [references] [diary].

  • Tuesday, 11.11 - HW1: winner: Fabian Wendt
    Matlab (2/5) [diary].

  • Thursday, 13.11 - Matlab (3/5) [diary], [my_fft], [fun].

  • Tuesday, 18.11 - Matlab (4/5), exercises [diary], [data.txt], [image], [compressor].

  • Thursday, 20.11 - Matlab (5/5) [fft], [diary], [Euler], [feuler] [ode1] [ode2]

  • Tuesday, 25.11 - Mathematica (1/9) [Notebook]

  • Thursday, 27.11 - 1pm Q&A

  • Tuesday, 2.12 - Mathematica (2/9) - functions [Notebook]

  • Thursday, 4.12 - HW2a, winner: Johannes Lange

    Mathematica (3/9) - patterns [Notebook]

  • Tuesday, 9.12 - Mathematica (4/9) - pure functions [Notebook]

  • Thursday, 11.12 - Mathematica (5/9) - maps [Notebook]

  • Tuesday, 16.12 - HW2b, winner: Madita Nocon
    HW2c, honorable mention: Berrendorf, Armborst, Willsch, Nocon
    Mathematica (6/9) - programming [Notebook]

  • Thursday, 18.12 - Mathematica (7/9) - replacement rules [Notebook]
    [Exercises]

  • Tuesday, 6.01 - [Mathematica exercises] [Solutions]

  • Thursday, 8.01 - Mathematica (8/9) - numerics [Notebook]

  • Tuesday, 13.01 - C (1/5) [Archive]

  • Thursday, 15.01 - Mathematica (9/9) [Notebook] [sqrts.m] [sqsqrt.m] [sqrtsq.m]

  • Tuesday, 20.01 - C (2/5) [Archive]

  • Thursday, 22.01 - Solutions to HW3
    HW3a, winners: Lukas Armborst (x2), Jan-Lukas Wynen. Honorable mentions: Berrendorf, Kolyvanov.
    HW3b, winner: Benjamin Joecker

  • Tuesday, 27.01 - C (3/5) [Archive]

  • Thursday, 29.01 - C (4/5) [Archive]

  • Tuesday, 03.02 - C (5/5) [Archive] + test exam

  • Thursday, 05.02 - test exam
    HW4, winner: David Laukamp

Exams

  • February 10, 6pm, room 115. COME EARLY!

  • March 17, 6pm, room 115.