Prerequisites
Some experience with programming is crucial, e.g. from a programming course. We will use C (and Julia for the purpose of some illustrations). If you know programming in any imperative language, then learning the basics of C should be easy except for the memory handling.
One good resource to learn programming in C is https://www.tutorialspoint.com/cprogramming. General programming skills can be practiced, for example, at https://projecteuler.net.
Highlights and focus
- Course week 1 Gain familiarity with course structure. Prepare for code programming. Start to learn about byte representation.
- Course week 2 Consolidate understanding of byte representation. Learn to debug.
- Course week 3 Optimization opportunities. Learn to benchmark.
- Course week 4 Optimization opportunities. Learn to profile.
- Course week 5 Learn thread parallelism.
- Course week 6 OpenMP. If on optional track: Thread library.
- Course week 7 Thread library. If on optional track: OpenCL.
- Course week 8 Consolidate. If on optional track: MPI.