Teaching supercomputing and software engineering skills to science and engineering students





We describe a newly created Master-level course about numerically solving partial differential equations (PDEs) on graphical processing units (GPUs), both on local machines, on high-performance computing (HPC) clusters and supercomputers. The course is aimed at domain-science students, which we broadly define as non-computer science students, such as earth-science, physics, engineering, etc. students. Besides the core content, the course aims also at teaching other essential skills needed for the domain scientist to successfully conduct numerical research, including software engineering skills (e.g., git and GitHub, testing, documentation), tools (e.g., VSCode and remote HPC access), teamwork and project management. The course is research-based as it closely follows the workflows we use in our daily research activity. The course teaches its content through a hands-on, project-based approach with weekly assignments and two large projects as a core part of the course. We show that student grades and satisfaction is excellent, however, the high workload of the teachers needs refinements in future iterations of the course.