Element chat Zoom Meeting ETHZ Moodle

Suggestion: Bookmark this page for easy access to all infos you need for the course.

Course structure

Each lecture contains material on physics, numerics, technical concepts, as well as exercises. The lecture content is outlined in its introduction using the following items for each type of content:

The course will be taught in a hands-on fashion, putting emphasis on you writing code and completing exercises; lecturing will be kept at a minimum.


Live lectures | Tuesdays 12h45-15h30

Office hours

Schedule to be defined (on Element/Zoom or in-person)


We plan to use the Element-chat (https://chat.ethz.ch/) as the main communication channel for the course, both between the teachers and the students, and hopefully also between students. We encourage ETH students to ask course, exercises and technical questions there.

Head to the Course chat space (Element) link on Moodle to get started with Element:

  1. Select Start Student-Chat.

  2. Login using your NETHZ credentials to start using the browser-based client.

  3. Join the General and Helpdesk rooms (you may see an error upon accessing the rooms - refreshing the app should solve the issue).

  4. Download the Element Desktop/Mobile client for more comfortable access.


Homework tasks will be announced after each week's lecture. The exercise session following the lecture will get you started.

Homework due date will be Wednesday 23h59 CET every following week (8 days) to allow for Q&A during the following in-class exercise session.

Homework assignments can be carried-out by groups of 2. However, note that every student has to hand in a personal version of the homework.

➡ Check out the Homework page for an overview on expected hand-in and deadlines.


Starting from lecture 3 and onwards, the development of homework scripts happens on GitHub and you will have to submit the git commit hash (or SHA) on Moodle in the related git commit hash (SHA) submission activity.

Private GitHub repository setup

Once you have your GitHub account ready (see lecture 2 how-to), create a private repository you will share with the teaching staff only to upload your weekly assignments (scripts):

  1. Create a private GitHub repository named pde-on-gpu-<moodleprofilename>, where <moodleprofilename> has to be replaced by your name as displayed on Moodle, lowercase, diacritics removed, spacing replaced with hyphens (-). For example, if your Moodle profile name is "Joël Désirée van der Linde" your repository should be named pde-on-gpu-joel-desiree-van-der-linde.

  2. Select an MIT License and add a README.md file.

  3. Share this private repository on GitHub with the teaching-bot (https://github.com/teaching-bot).

  4. For each homework submission, you will:

    • create a git branch named homework-X (X [2...]\in [2-...]) and switch to that branch (git switch -c homework-X);

    • create a new folder named homework-X to put the exercise codes into;

    • (don't forget to git add the code-files and git commit them);

    • push to GitHub and open a pull request (PR) on the main branch on GitHub;

    • copy the single git commit hash (or SHA) of the final push and the link to the PR and submit both on Moodle as the assignment hand-in (it will serve to control the material was pushed on time);

    • (do not merge the PR yet).

⚠️ Warning!
Make sure to only include the homework-X folders and README.md in the GitHub repo you share with the exercise bot in order to keep the syncing as lightweight as possible.
💡 Note
For homework 3 and later, the respective folders on GitHub should be Julia projects and thus contain a Project.toml file. The Manifest.toml file should be kept local. An automated way of doing so is to add it as entry to a .gitignore file in the root of your repo. Mac users may also add .DS_Store to their .gitignore. Codes could be placed in a scripts/ folder. Output material to be displayed in the README.md could be placed in a docs/ folder.


After the submission deadline, we will correct and grade your assignments. You will get personal feedback directly on the PR as well as on Moodle. Once you got feedback, please merge the PR.

We will try to correct your assignments before the lecture following the homework's deadline. This should allow you to get rapid feedback in order to clarify the points you may struggle on as soon as possible.


Starting from lecture 7 (until lecture 9), homework contribute to the course's first project. The goal of this project is to have a multi-xPU thermal porous convection solver in 3D.

The exercises in lecture 7 will serve as starting point for the first project:

  1. Within your pde-on-gpu-<moodleprofilename> folder, copy over the PorousConvection you can find in the l7_project_template folder within the scripts folder. Make sure to copy the entire folder as not to loose the hidden files.

  2. Follow the specific instructions given in Lecture 7 - infos about projects.

  3. During lectures 7 and 9 you will be asked to add material to the PorousConvection folder as part of regular homework hand-in which will serve as evaluation for the Part 2 (35% of the final grade) (see Evaluation section).

Project hand-in checklist

The project submission deadline is set to 01.12.2023 - 23h59 CET (see also Homework). The final GitHub SHA has to be added to Moodle in the Lecture 9 section.

Make sure to have following items in your private GitHub repository:

In addition enhance the README.md within the PorousConvection folder to include:

Note that for evaluation will be considered the following (non-exhaustive) items: code correctness, style, and conciseness; implementation of demanded tasks; final layout and rendering, ...

Final project

For information about topics for the final project, head to Information about final projects page.

Getting started

The following steps will get you started with the final projects:

  1. Find a classmate to work with (being your own mate is fine too)

  2. Select a topic of your choice

  3. Initiate a private GitHub repository for your project (CamelCaps, including .jl at the end - e.g.: MyProject.jl)

  4. Share the final project private repository on GitHub with the teaching-bot (https://github.com/teaching-bot)

  5. Send and email to Ludovic (luraess@ethz.ch) and Ivan (iutkin@ethz.ch) by Tuesday December 5, 2023, with subject Final projects including

    • your project partner

    • a brief description of your choice

    • a link to your final project GitHub repository

    • anything else missing in this list

  6. Work on your final project, asking for help

    • in the Element Helpdesk channel for general question

    • as GitHub "issue" for project specific questions

    • during class hours serving as helpdesk

Final project submission

Submission deadline for the project is December 22, 2023 – 23h59 CET.

Final submission timestamp is enforced upon tagging the v1.0.0 version release of your repository. See GitHub docs for infos.

Also, add the last commit SHA to Moodle - Final project submission as for the exercises.

Final project grading

Grading of the final project will contribute 35% of the final grade.

For a successful outcome, final projects are expected to be handed-in as single GitHub repository featuring the following items:


Enrolled ETHZ students will have to hand in on Moodle (& GitHub):

  1. 5 (out of 6) weekly assignments (30% of the final grade) during the course's Part 1. Weekly coding exercises can be done alone or in groups of two.

  2. A project during Part 2 (35% of the final grade). Projects submission includes codes in a git repository and an automatic generated documentation.

  3. A final project during Part 3 (35% of the final grade). Final projects submission includes codes in a git repository and an automatic generated documentation.