The course content focuses on how applications are created by combining small programs and exchanging them over pipes, files, mass memory, or networks. The course also equips multi-threaded and shared-memory programming skills on the basis of the NUMA computer architecture (a modern computer model with a single processor or multiple cores). Students will be equipped with knowledge of parallel programming, using different levels of caching, locking and synchronization types.