Numerical Methods for CSE
Table of Contents
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
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:
- Install Visual Studio and follow the steps here.
- Use Putty to SSH into the ETH computers:
ssh username@slab-1.ethz.ch
- Use VirtualBox and some Linux distribution (e.g. Ubuntu) and work with Linux.
- 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:
Misc. tutorials:
- CMake tutorial
- gdb debugging guide
Misc. links:
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