Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
user avatar
Roger Kaeppeli authored
3917e404
History
Name Last commit Last update
demos
exercises
slides
.gitignore
README.md

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 here. (You need your ETH LDAP credentials to login. Please send a message to the slack channel below or an email to Roger Kaeppeli in case of problems.)

  • Recordings: All recordings can be found here. (See remark above for the login credentials.)

To comply with the ETHZ safety concept hygiene measures and room ventilation regulations, the course will proceed in two 90 minutes blocks with an extended 30 minutes break in between:

  • Lecture 13:45 - 15:15
  • Ventilation break 15:15 - 15:45
  • Exercises 15:45 - 17:15

All presence participants must leave the room during the break and must return to the same places as before (of course, only if you choose to return!).

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 simulations. The focus is on advanced C++ programming techniques and scientific software libraries. 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 slack channel where you can reach us: Join PT1.

Experimental: For questions specifically on the lecture slides, we are currently evaluating Qanda. Feel free to test it!

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 (possibly with specific questions) to the respective series' slack channel. 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, @ivanalsina, @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 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 Roger Kaeppeli either in person or by email.

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:

  • 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