Programming for physicists

Course Code :1001WETPRF
Study domain:Physics
Academic year:2019-2020
Semester:2nd semester
Sequentiality:Credit for Mathematical methods for physics I, II & III, Gen. physics I & II, Exp. physics I, Computer practicum, Intro. to analytical mechanics, Intro. to chemistry and Introduction to programming.
Contact hours:55
Study load (hours):168
Contract restrictions: No contract restriction
Language of instruction:Dutch
Exam period:exam in the 2nd semester
Lecturer(s)Nick Van Remortel
Davide Di Croce

3. Course contents *

Concepts and demonstrations are treated in 8 oral lectures, which are based on chapters of various English textbooks (see below),  that are summarized in PowerPoint slides.

The course as a whole is very practical and hands-on oriented. Students will learn to define coding conventions and agree on design and interface of the code in a common final programming assignment.

The course begins with a treatment of the Linux operating system, writing shell scripts and understanding Makefiles, all in function of doing calculations on scientific computing clusters. The basic knowledge of C++ is expanded with more advanced programming concepts such as polymorphism, templates and exception handling.

A few cases of software design patterns will be discussed. We treat in more detail the functionality of the Standard Template Library and explore some external scientific libraries such as Boost, the GNU scientific library and RooT.

During the practical sessions we will work classically on the implementation of one large software project. Subgroups of students will, after discussions on the design, take the responsibility for equivalent parts of the total project and will be graded on the basis of the quality of their subtask and the way they interacted with the rest of the software development team.