General remarks
What you need before starting
The project will guide you through the process of writing your own MPI-parallel molecular dynamics code. We will provide guidance for implementation details, but we will not teach specific programmings skills. Depending on your background, this means you may need to familarize yourself with a certain set of technologies. In particular, we are assuming that you have some experience in working with the unix shell (bash). Note that you can find a tutorial can be found here.
You should have some experience with a programming languages, ideally C or C++. C++ tutorials can be found here or here, and there are many more available online. The C++ Core Guidelines are an excellent resource for best practices in C++. For a more technical but exhaustive reference on the language and the standard library, cppreference should be your main resource. Please familarize yourself with the basics of C++ (flow control, variables, loops) etc. before embarking in the milestones. Note that many generic features of imperative programming languages are quite similar and carry over to each other. Even if you are unfamiliar with C++, it should be straightforward to learn basic C++ features quickly. Advanced features of C++ can be complicated and confusing but we will comment on those throughout the milestone when we require them.
What you need to pass the class
You need to submit a final written report at the end of the class. Throughout the milestones, we will indicate the types of results that we want documented in the report. Note that we do not expect anything from the first milestones, but once you have a working code we will ask you to compute certain physical problems.