To receive notifications about scheduled maintenance, please subscribe to the mailing-list You can subscribe to the mailing-list at

Commit ae13d181 authored by Roger Kaeppeli's avatar Roger Kaeppeli
Browse files

Init from HS20

# Programming Techniques for Scientific Simulations I ([402-0811-00L](
### General information
The course will take place in a **hybrid presence / online** format:
* **Presence**: Thursday 13:45 - 17:30, [HCI]( [J 3]( [>>](
* **Online**: Live stream over Zoom. All Meeting IDs can be found
(Login credentials were sent by Email on Monday, September 20.
If you were not enrolled in the course then, please
send an email to the mailing list [below](#questions)).
* **Recordings**: All recordings can be found [here](
(See remark above for the login credentials.)
We kindly ask **all participants** to comply with the up-to-date Coronavirus
COVID-19 measures:
* <>
### Summary
This lecture provides an overview of programming techniques for scientific
The focus is on advanced C++ programming techniques and scientific software
Based on an overview over the hardware components of PCs and supercomputers,
optimization methods for scientific simulation codes are explained.
### Questions
For questions or remarks we have a mailing list where you can reach us:
< >.
## Lecture slides, script, exercises and solutions
Lecture slides, exercise sheets and solutions will be provided as part of this
git repository.
## Submission
If you want to receive feedback on your exercises, please push your solutions
to your own git repository before **Monday night** of the week after we hand
out the exercise sheet.
Then send a notification / request for correction email (possibly with specific
questions) to the mailing list.
Advanced users may use `GitLab` issues (make sure to tag all the assistants,
but not the professor, with their @name in the issue description).
Your exercise will then be corrected before the next exercise session.
Make sure to give *maintainer* access to the following people:
@karoger, @engelerp, @ilabarca, @lbloin, @msudwoj and @rworreby.
Of course, working in small groups is allowed (and even encouraged using a
collaborative workflow with `git` and `GitLab`).
However, please make sure that you understand every part of the group's
proposed solution (you will have to e.g., at the exam!).
If several group members submit the exercises, please indicate clearly in the
notification/request for correction email all the group members and indicate
which parts of the solution you would like to have looked at individually
(although we try to run data comparison tools carefully during the correction,
we may miss some individual solution of group members).
## Course confirmation (Testat)
For students needing the confirmation (Testat) for this course, we require
that 70% of the exercises have been solved reasonably (sinnvoll).
The submission deadline is every Wednesday midnight (Zurich time!).
Please announce that you want the confirmation (Testat) for this course
explicitly at the beginning of the semester. Contact us either in person or
through the mailing list.
## Exam information
* For general information, see the performance assessment tab in the course
catalogue [here](
* The exam will have two parts: A written theoretical part, and a programming
part that you will solve on the exam computers.
* The exam computers will run Fedora Linux, similar to those that you find in
the computer rooms in the ETH main building.
The system language of the computers is English.
A list of the installed software can be found [here](
* By default, the keyboards will have the Swiss layout.
There will be a poll for those who want to get a US keyboard instead.
* Provided on the computers are:
* The full lecture repository
* The C++ standard ([draft version](
* An offline version of
(See *Html book*
We recommend that you try it out before the exam.
Also note that the search function is absent: use the Index page and the
search function of the browser.
* An offline version of [the Python documentation](
We recommend that you try it out before the exam.
* As needed, offline versions of the documentation for Python libraries.
* This is an open-book exam, which means that you can bring any written
material (books, notes, printed code, ...).
However, you may **not** use any digital devices (other than the exam
computer) during the exam.
* Don't forget to bring your student card (Legi).
## Useful resources
### Literature
C/C++ primers and references:
* Stroustrup, "The C++ Programming Language", 2013.
Available online within the ETH network [here](
* Kernighan and Ritchie, "C Programming Language", 1988.
Available online within the ETH network [here](
Practical/Advanced C++ programming:
* Meyers, "Effective STL", 2001.
Available online within the ETH network [here](
* Meyers, "Effective C : 50 Specific Ways to Improve Your Programs and
Designs", 2005.
Available online within the ETH network [here](
* Meyers, "Effective Modern C++", 2014.
Available online within the ETH network [here](
* Vandevoorde, Gregor, and Josuttis, "C++ Templates: The Complete Guide", 2017.
Available online within the ETH network [here](
### Web resources
* [C++ reference](
* [C++ standard](
* [C++ core guidelines](
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment