ETH Zurich Department of Mathematics

Numerical Methods for CSE

Table of Contents

  • General information
  • Exercises
    • Schedule
    • Material
    • Hand-in
    • Groups
    • Study center
    • Winter presence
  • Exam
    • Mid-term and end-term
    • Previous exams
  • Lecture material
    • Lecture notes and video
    • Eigen3
    • Virtual Machine
    • Useful links
    • Literature

General information

What Who/When Where What Who/When Where
Lecturer: R. Hiptmair   Coordinators: D. Casati  
        F. Leonardi  
Lecture: Thu, 08:15-10:00 HG F1 Exercises: Mon, 10:15-11:55 see Exercises
  Fri, 13:15-15:00 HG F1   Mon, 12:15-14:00 see Exercises
        Mon, 13:15-15:15 see Exercises
Study center: Mon, 18:00-20:00 HG E41      
First lecture: Mon, 19.09.2016   First exercises: Mon, 26.09.2016  
First study center: Mon, 26.09.2016        
Winter presence: Thu, 19.01.2017, 08:00-12:00 HG E41      
Main exam (winter session): Thu, 26.01.2017, 09:00-12:20 HG G1, HG E27, HG E19 Main exam (summer session): Mon, 28.08.2017, 09:00-12:00 HG E26.1
Mid-term: Fri, 04.11.2016, 13:15-13:45   End-term: Fri, 23.12.2016, 13:15-13:45  
Make-up: Fri, 13.01.2017, 09:15-09:45 HG D5.3 Repetition term: Fri, 12.05.2017, 16:15-16:45  

Exercises

Exercises are optional (there is no "Testat" requirement). However, it is strongly recommended to devote some time to practice the material taught in class.

Schedule

Problem Hand-in Discussion
Problem 1.1 Thu., 29.09.16 Discussed Monday, 26th Sept.
Problem 1.2 Thu., 29.09.16 Discussed Monday, 26th Sept.
Problem 1.3 Thu., 29.09.16 Discussed Monday, 3rd Oct. (Core problem)
Problem 1.5 Thu., 29.09.16 Discussed Monday, 3rd Oct.
Problem 1.7 Thu., 29.09.16 Discussed Monday, 3rd Oct. (Core problem)
Problem 1.8 Thu., 06.10.16 Discussed Monday, 10th Oct. (Core problem)
Problem 1.10 Thu., 06.10.16 Discussed Monday, 10th Oct.
Problem 1.11 Thu., 06.10.16 Discussed Monday, 10th Oct.
Problem 2.2 Thu., 06.10.16 Discussed Monday, 10th Oct. (Core problem)
Problem 2.3 Thu., 13.10.16 Discussed Monday, 17th Oct.
Problem 2.4 Thu., 13.10.16 Discussed Monday, 17th Oct.
Problem 2.5 Thu., 13.10.16 Discussed Monday, 17th Oct. (Core problem)
Problem 2.6 Thu., 13.10.16 Discussed Monday, 17th Oct. (Core problem)
Problem 2.8 Thu., 20.10.16 Discussed Monday, 24th Oct.
Problem 2.9 Thu., 20.10.16 Discussed Monday, 24th Oct. (Core problem)
Problem 2.10 Thu., 20.10.16 Discussed Monday, 24th Oct.
Problem 2.11 Thu., 20.10.16 Discussed Monday, 24th Oct.
Problem 2.13 Thu., 20.10.16 Discussed Monday, 24th Oct. (Core problem)
Problem 2.12 Thu., 20.10.16 Discussed Monday, 24th Oct.
Problem 3.1 Thu., 27.10.16 Discussed Monday, 31st Oct.
Problem 3.2 Thu., 27.10.16 Discussed Monday, 31st Oct.
Problem 3.4 Thu., 27.10.16 Discussed Monday, 31st Oct. (Core problem)
Problem 3.5 Thu., 27.10.16 Discussed Monday, 31st Oct. (Core problem)
Problem 3.7 Thu., 3.11.16 Discussed Monday, 7th Nov. (Core problem)
Problem 3.8 Thu., 3.11.16 Discussed Monday, 7th Nov.
Problem 3.9 Thu., 3.11.16 Discussed Monday, 7th Nov. (Core problem)
Problem 3.10 Thu., 3.11.16 Discussed Monday, 7th Nov. (Core problem)
Problem 4.1 Thu., 10.11.16 Discussed Monday, 14th Nov.
Problem 4.2 Thu., 10.11.16 Discussed Monday, 14th Nov.
Problem 4.3 Thu., 10.11.16 Discussed Monday, 14th Nov. (Core problem)
Problem 4.4 Thu., 10.11.16 Discussed Monday, 14th Nov. (Core problem)
Problem 5.1 Thu., 17.11.16 Discussed Monday, 21st Nov. (Core problem)
Problem 5.3 Thu., 17.11.16 Discussed Monday, 21st Nov. (Core problem)
Problem 5.4 Thu., 17.11.16 Discussed Monday, 21st Nov.
Problem 5.5 Thu., 17.11.16 Discussed Monday, 21st Nov.
Problem 5.6 Thu., 24.11.16 Discussed Monday, 28st Nov.
Problem 6.2 Thu., 24.11.16 Discussed Monday, 28st Nov. (Core problem)
Problem 6.3 Thu., 24.11.16 Discussed Monday, 28st Nov. (Core problem)
Problem 6.4 Thu., 24.11.16 Discussed Monday, 28st Nov.
Problem 7.3 Thu., 01.12.16 Discussed Monday, 5th Dec. (Core problem)
Problem 7.4 Thu., 01.12.16 Discussed Monday, 5th Dec.
Problem 7.5 Thu., 01.12.16 Discussed Monday, 5th Dec. (Core problem)
Problem 7.6 Thu., 01.12.16 Discussed Monday, 5th Dec.
Problem 7.1 Thu., 08.12.16 Discussed Monday, 12st Dec.
Problem 8.4 Thu., 08.12.16 Discussed Monday, 12st Dec. (Core problem)
Problem 8.5 Thu., 08.12.16 Discussed Monday, 12st Dec. (Core problem)
Problem 8.7 Thu., 08.12.16 Discussed Monday, 12st Dec. (Core problem)
Problem 8.10 Thu., 08.12.16 Discussed Monday, 12st Dec.
Problem 11.1 Thu., 15.12.16 Discussed Monday, 19th Dec.
Problem 11.2 Thu., 15.12.16 Discussed Monday, 19th Dec. (Core problem)
Problem 11.3 Thu., 15.12.16 Discussed Monday, 19th Dec. (Core problem)
Problem 11.5 Thu., 15.12.16 Discussed Monday, 19th Dec.
Problem 11.4    
Problem 12.4   (Core problem)
Problem 12.5    
Problem 12.6   (Core problem)
Problem 12.7    

(Problems not listed but available on Gitlab/Collection are currently work in progress.)

Material

Every week (on Friday), we publish a list of problems that you should solve. We publish all problem formulations in a single ".pdf" file (here).

You can find all the assignments codes (templates and solutions) and lecture codes in GitLab (see a tutorial on GitLab here). Read the instructions on the main page of the repository for an explanation on how to use the repository. If you do not wish to use GitLab, we publish every week an archive containing templates and solutions of the assignments. You can download template and solution codes here.

You can download the full list of problems (as ".pdf") here.

You can access the hints and the solutions (as ".pdf") here.

Hand-in

Place your handwritten solutions by Thursday night in the pigeon-holes in front of HG G 53.2. You can submit your codes to the assistants using the online submission interface.

Groups

The group allocation can be changed here: https://echo.ethz.ch/

Name Time Room
Hupp Daniel / Kranjcevic Marija Mon, 10:15-12:00 CLA E4
Heinekamp Sebastian Mon, 10:15-12:00 ML H41.1
Hillebrand Fabian Mon, 10:15-12:00 LFW E11
Schaffner Yannick Mon, 10:15-12:00 LFW E13
Schwarz Fabian (in German) Mon, 10:15-12:00 ML J34.1
Accaputo Giuseppe Mon, 10:15-12:00 ML J34.3
Mondada Luca (in German) Mon, 10:15-12:00 ML J37.1
Baumann Christian / Romero Francisco Mon, 12:15:14:00 LFW C4
Dabrowski Alexander / Varghese Alexander Xandeep Mon, 13:15-15:00 HG E33.3
Hupp Daniel / Kranjcevic Marija Mon, 13:15-15:00 CLA E4
Thomas Graf Mon, 13:15-15:00 HG F26.5

Study center

An optional study center will be offered on Mondays from 18:00 to 20:00. During this time the assistants will be at your disposal for questions. The room (HG E 41) is equipped with a blackboard, screens and configurable tables. You can use this room for solving the exercises.

Winter presence

On Thursday 19.01.2017, 08:00-12:00, an additional study center will take place in room HG E41 in preparation for the final exam. Students are invited to submit their questions in advance to the linked page of the NumCSE wiki.

Exam

The final exam for the summer session will take place on Monday 28.08.2017, 09:00-12:00 in room HG E26.1.

The final exam for the winter session took place on Thursday 26.01.2017, 09:00-12:20 in rooms HG G1, HG E27 and HG E19.

A similar Linux system is installed as the one in the public computer rooms of the main building, HG (Fedora with Gnome 3 as DE). You will have access to several files, including a partial version of the lecture notes from this year.

If you want to get familiar with the exam environment, it is recommended to go to a public computer room in HG, start the computer with Linux and solve one or two exercises there. You can also log-in remotely through VPN and ssh from outside ETH (see here).

  • Subjects of the examination: all topics addressed in class or in homework assignments. Will involve C++/Eigen programming tasks.
  • Duration: 180 minutes
  • Admission: pass one of the offered term examinations (grade >= 4)
  • Aids: Summary of up to 10 A4 pages (5 double-sided sheets) in the candidates own handwriting. No printouts and copies are allowed.

You can download an example of all available files here (exam Summer 2016). Below, you can find a Virtual Machine simulating the exam environment.

Mid-term and end-term

Two examinations will be held during the semester. They will take place on Friday 04.11.2016, 13:15-13:45 (mid-term) and Friday 23.12.2016, 13:15-13:45 (end-term). Both examinations will last 30 min and will be on paper, closed book. Points earned in each examination will contribute to the final grade.

UPDATE: At least one of the mid-term and end-term exams must be passed in order to gain admission to the main exam.

VVZ: "They will be regarded as central elements, graded on a pass-fail basis, and at least one of them has to be passed in order to be admitted to the final exam in the exam session. In case of proven illness, either exam can be repeated shortly after the end of the teaching period."

The make-up term exam, for those who could not participate in the mid-term or end-term exams due to proven illness, will take place on Friday 13.01.2017, 09:15-09:45 in room HG D5.3.

Previous exams

You can download the old exams from here.

Lecture material

Lecture notes and video

You can download the lecture notes here. All codes are available in GitLab.

Video recordings of the lecture are available here.

You can download the tablet notes here.

Midterm.

Eigen3

During the semester, we will use the linear algebra library Eigen3. You should become familiar with C++ and Eigen3 prior to the first exercise class, so that basic questions can be addressed during the first exercise class.

You can obtain Eigen (v. 3.2.9) here. Many Linux distributions, including the ones in the computer rooms of ETH, already have Eigen installed or available trough the package manager. Eigen is a template library, therefore no installation is required. The library is usually located in /usr/include/eigen3:

g++ eigen_demo.cpp -I/usr/include/eigen3 -o eigen_demo

Here you can find a getting started tutorial on Eigen (a quick reference). Try and compile the demo program.

Assuming you are on Linux or Mac with gcc, you can conveniently obtain and test Eigen3 using:

wget --no-check-certificate http://bitbucket.org/eigen/eigen/get/3.2.9.tar.bz2
tar xf 3.2.9.tar.bz2
wget --no-check-certificate https://www2.math.ethz.ch/education/bachelor/lectures/hs2015/math/nummath_cse/eigen/eigen_demo.cpp
g++ eigen_demo.cpp -I./eigen-eigen-bdd17ee3b1b3/ -o eigen_demo
./eigen_demo

If you use Windows: there are 4 ways to work with Eigen:

  1. Install Visual Studio and follow the steps here.
  2. Use Putty to SSH into the ETH computers: ssh username@slab-1.ethz.ch
  3. Use VirtualBox and some Linux distribution (e.g. Ubuntu) and work with Linux.
  4. Install CygWin and use gcc as if you were on Linux.

If you use Code::Blocks, you must add the Eigen path (the one containing Eigen and cmake folders) under:

Settings->Compiler->Global compiler settings->Search directories->Compiler->Add

For the assignments: if you use the GitLab repository, Eigen will already be included and distributed with a working CMake build file.

Virtual Machine

Here you can download a virtual machine with "Fedora 24" and an environment similar to the exam environment. You can use this to test you familiarity with the environment. Notice that the exam setup may change and the experience is not entirely representative of the real exam.

In this VM you can find a "~/README.md" with some additional informations.

Warning: during the examination only the Linux environment will be available, which includes editors such as vim, Emacs, GEdit and Kate. Advanced IDEs such as "Eclipse", "Code::Blocks" and "Qt Creator" may be available. However, we do not guarantee their availability, and you may have to waste time properly configuring those editor. You should be able to successfully solve all tasks with a simple text editor and a terminal emulator.

You should try out the Linux environment by yourself before the final exam. During the exam you will have no time to learn how the computer system work (Fedora 24 and Gnome).

Download the VM image here (6G): https://polybox.ethz.ch/index.php/s/CXLxt6wlYKlLCDb

Download VirtualBox here: https://www.virtualbox.org/

Instructions to install: Install. Then click "new", give a name, select "Linux" as "Type" and "Fedora 64-bit" as Version. Give a sufficient amount of virtual memory (1G should suffice). Select "Use an existing virtual HD file". Choose the ".vdi" file you just downloaded.

Instruction for use: Start the VM. Wait until a screen with "student" will appear, then click it. When the system is loaded, you should have a screen with "Activities" on the top-left corner. Click on "Activities" and then on "Files" to open a file manager. Click on "Activities" and type "Terminal" to open the terminal.

Update: the folder structure has been changed since the first publication. All your solutions must be saved in the folder "~/questions".

Additional info:

  • you can change the Keyboard layout from US to CHde and viceversa on the top-right corner;
  • you can find a file "README.md" in "~/" with some extra information;
  • in "~/documentation" and "~/questions" you will find the data you will have available during the exam, for this VM we (partially) used last years configuration;
  • the only folder that will be saved/backed up regularly during the exam is the "questions" folder. You must work and save all your solution in this folder. All the other data will be lost;
  • during the exam, the environment will be slightly different, this VM is just to give an idea on how the system works. For example, during the exam there will be an extra window asking for you name and your Legi number. (Do not input your password!)

Useful links

C++ links:

  • tutorial [TODO]
  • cppreference online reference (likely available during exam)
  • cplusplus online reference

Eigen3 links:

  • main page
  • documentation
  • quick reference for MATLAB users

Misc. tutorials:

  • CMake tutorial
  • gdb debugging guide

Misc. links:

  • D-MATH GitLab (help)

Literature

Studying extra literature is optional and not required for this course. Here we provide a non-comprehensive list of supplementary readings for this course:

  • A First Course in Numerical Methods, Uri M. Ascher, Chen Greif, SIAM 2011
  • Numerik für Ingenieure und Naturwissenschaftler (in german, available on SpringerLink), Wolfgang Dahmen, Arnold Reusken, Springer Heidelberg 2008