To receive notifications about scheduled maintenance, please subscribe to the mailing-list gitlab-operations@sympa.ethz.ch. You can subscribe to the mailing-list at https://sympa.ethz.ch

README.md 8 KB
Newer Older
1
# Programming Techniques for Scientific Simulations I ([402-0811-00L](http://www.vorlesungsverzeichnis.ethz.ch/Vorlesungsverzeichnis/lerneinheit.view?lerneinheitId=140944&semkez=2020W&ansicht=KATALOGDATEN&lang=en))
Roger Kaeppeli's avatar
Roger Kaeppeli committed
2

Roger Kaeppeli's avatar
Roger Kaeppeli committed
3 4
### General information

5 6
**ETH Zurich to suspend most classroom teaching starting on 2 November**:

7
The course will take place in a **full online** format:
Roger Kaeppeli's avatar
Roger Kaeppeli committed
8

9 10 11 12
  * **Online**: Live stream over Zoom. All Meeting IDs can be found
    [here](http://www.sam.math.ethz.ch/~karoger/pt/hs2020/)
    (Login credentials were sent by Email on Thursday, October 29.
    If you were not enrolled in the course then, please
Roger Kaeppeli's avatar
Roger Kaeppeli committed
13
    send an email to the mailing list [below](#questions)).
14

Roger Kaeppeli's avatar
Roger Kaeppeli committed
15
  * **Lecture**: 13:45 - 15:30 with a 15 min break between 14:30 - 14:45.
16 17 18 19 20

  * **Exercises**: 15:45 - 17:30. First part will be in the lecture
    Z(r)oom. The interactive part will be in the individual PT1 team
    member Z(r)ooms. Simply join one, or choose the team member you
    want to discuss with.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
21

22 23 24 25
  * **Exam preparation**: There will be several online Q&A sessions starting on
    January 15. The dates and times can be found
    [here](http://www.sam.math.ethz.ch/~karoger/pt/hs2020/).

26 27
**Should you have any issues with the "new" online format, please
 contact us through the mailing list (see [below](#questions)).**
Roger Kaeppeli's avatar
Roger Kaeppeli committed
28

Roger Kaeppeli's avatar
Roger Kaeppeli committed
29 30
The course is automatically (no edit) recorded and available here:

Roger Kaeppeli's avatar
Roger Kaeppeli committed
31
  * <https://video.ethz.ch/lectures/d-math/2020/autumn/402-0811-00L.html>
Roger Kaeppeli's avatar
Roger Kaeppeli committed
32

Roger Kaeppeli's avatar
Roger Kaeppeli committed
33
Unfortunately, the recording of lecture 11 (26.11.2020) is no available there.
34 35 36
You find it at the bottom of the page where all the Meeting IDs are published
above.

Roger Kaeppeli's avatar
Roger Kaeppeli committed
37
We kindly ask **all participants** to comply with the up-to-date latest
Roger Kaeppeli's avatar
Roger Kaeppeli committed
38 39 40 41 42
Coronavirus COVID-19 measures:

  * <https://ethz.ch/services/en/news-and-events/coronavirus.html>

### Summary
Roger Kaeppeli's avatar
Roger Kaeppeli committed
43 44 45 46 47 48 49 50

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.

Roger Kaeppeli's avatar
Roger Kaeppeli committed
51 52
### Questions

Roger Kaeppeli's avatar
Roger Kaeppeli committed
53
For questions or remarks we have a mailing list where you can reach us:
Roger Kaeppeli's avatar
Roger Kaeppeli committed
54 55
<pt1_hs20@sympa.ethz.ch >.
The mailing list closes for the holidays and re-opens on **January 3.**
Roger Kaeppeli's avatar
Roger Kaeppeli committed
56

57
## Lecture slides, script, exercises and solutions
Roger Kaeppeli's avatar
Roger Kaeppeli committed
58 59 60

Lecture slides, exercise sheets and solutions will be provided as part of this
git repository.
rworreby's avatar
rworreby committed
61 62 63
The [**lecture script**](https://gitlab.ethz.ch/pt1_hs20/script/-/blob/master/README.md)
is available in a [seperate repository](https://gitlab.ethz.ch/pt1_hs20/script).
There you can also find some additional [cheatsheets](https://gitlab.ethz.ch/pt1_hs20/script/-/tree/master/cheatsheets).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
64 65 66 67 68 69 70 71 72 73 74 75 76

## 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
questions) to the mailing list.
Advanced users can utilise 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:
Roger Kaeppeli's avatar
Roger Kaeppeli committed
77
@karoger, @engelerp, @ilabarca, @msudwoj, @pollakg and @rworreby.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
78

Roger Kaeppeli's avatar
Roger Kaeppeli committed
79 80 81 82 83 84 85 86 87 88
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).

Roger Kaeppeli's avatar
Roger Kaeppeli committed
89 90 91 92 93 94 95 96 97 98 99 100
## 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

Roger Kaeppeli's avatar
Roger Kaeppeli committed
101
* For general information, see the performance assessment tab in the course
102
  catalogue [here](http://www.vorlesungsverzeichnis.ethz.ch/Vorlesungsverzeichnis/lerneinheit.view?semkez=2020W&ansicht=LEISTUNGSKONTROLLE&lerneinheitId=140944&lang=en).
103

Roger Kaeppeli's avatar
Roger Kaeppeli committed
104
* The exam will have two parts: A written theoretical part, and a programming
105
  part that you will solve on the exam computers.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
106 107 108 109 110

* 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](https://www.ethz.ch/services/en/it-services/catalogue/managed-client/computer-rooms.html).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
111 112 113 114 115 116
    * A virtual machine was created by staff of the Linux Examination Team
      from the LET. Although it is not exactly the same version as will
      be used at the exam, it is reasonably close so that you can get an
      impression. It is avalaible [here](http://idinstallprd.ethz.ch/img/Fedora31s.ova)
      (User: student, login-password: student) and can be run, e.g., with
      [VirtualBox](https://www.virtualbox.org/).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
117 118 119 120 121 122 123 124 125

* 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](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf))
    * An offline version of http://www.cppreference.com
      (See *Html book* https://en.cppreference.com/w/Cppreference:Archives)  
Roger Kaeppeli's avatar
Roger Kaeppeli committed
126
      We recommend that you try it out before the exam.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
127 128 129 130
      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](https://docs.python.org/3.8/index.html)
      (See https://docs.python.org/3.8/download.html)
Roger Kaeppeli's avatar
Roger Kaeppeli committed
131
      We recommend that you try it out before the exam.
132
    * As needed, offline versions of the documentation for Python libraries.
133
    * The script repository
Roger Kaeppeli's avatar
Roger Kaeppeli committed
134 135 136 137 138 139 140 141

* 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).

Roger Kaeppeli's avatar
Roger Kaeppeli committed
142 143 144 145
## Useful resources

### Literature

Roger Kaeppeli's avatar
Roger Kaeppeli committed
146 147
C/C++ primers and references:

Roger Kaeppeli's avatar
Roger Kaeppeli committed
148
* Stroustrup, "The C++ Programming Language", 2013.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
149
  Available online within the ETH network [here](https://search.library.ethz.ch/permalink/f/823s1o/nebis_sfx3280000000036330).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
150 151 152 153

* Kernighan and Ritchie, "C Programming Language", 1988.
  Available online within the ETH network [here](https://search.library.ethz.ch/permalink/f/13kse66/nebis_sfx3710000000220165).

Roger Kaeppeli's avatar
Roger Kaeppeli committed
154 155
Practical/Advanced C++ programming:

Roger Kaeppeli's avatar
Roger Kaeppeli committed
156 157
* Meyers, "Effective STL", 2001.
  Available online within the ETH network [here](https://search.library.ethz.ch/permalink/f/13kse66/nebis_sfx1000000000385265).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
158 159 160

* Meyers, "Effective C : 50 Specific Ways to Improve Your Programs and
  Designs", 2005.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
161
  Available online within the ETH network [here](https://search.library.ethz.ch/permalink/f/823s1o/ebi01_prod009837972).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
162 163

* Meyers, "Effective Modern C++", 2014.
Roger Kaeppeli's avatar
Roger Kaeppeli committed
164 165 166 167
  Available online within the ETH network [here](https://search.library.ethz.ch/permalink/f/13kse66/nebis_sfx3800000000006955).

* Vandevoorde, Gregor, and Josuttis, "C++ Templates: The Complete Guide", 2017.
  Available online within the ETH network [here](https://search.library.ethz.ch/permalink/f/823s1o/nebis_sfx4100000000880644).
Roger Kaeppeli's avatar
Roger Kaeppeli committed
168 169 170 171 172 173 174


### Web resources

* [C++ reference](https://en.cppreference.com)
* [C++ standard](https://isocpp.org/)
* [C++ core guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)