Students are introduced to some best practices in scientific computing: software development with modern software engineering techniques, application of different methods for code optimization and parallelization to a real scientific application, collaborative software development with a distributed software management system (git), various aspects of testing in software development, and maintenance of large scientific software packages.
The course culminates with a group project designed to practice close-to-reallife collaborative development techniques introduced in the lectures.