Lecture 1 - Introduction
This session introduces the module and its content. It gives an overview of terminology and technologies.
Recordings: lab recording
Lecture 2 - Parallel Algorithms
This session gives a (language independent) overview of the design of parallel algorithms.
Recordings: lecture recording (incomplete, sorry for that) lab recording
Lecture 3 - Introduction to Java
This is an introduction to the Java language, mainly intended for those students not yet familiar with Java. In the lecture, I will cover things in a live demonstration, so there are not many slides.
Recordings: lecture recording (incomplete, sorry for that) lab recording
lecture code (not perfect, just to play around with)
Lecture 4 - Concurrency in Java - Basics, processes, threads, object monitors, memory model
Recordings: lecture recording 1 lecture recording 2 lab recording 1 lab recording 2
Lecture 5 - Concurrency in Java - ExecutorService, fork/join framework, bounded buffers, semaphores/mutexes
Lecture 6 - Concurrency in Java - Deadlock, livelock, problems to watch out for, functional elements, parallel streams, futures and promises
Recordings: Lecture 1 Lecture 2 Lab
Lecture 7 - Introduction to C++
This is an introduction to the C++ language, mainly intended for students unfamiliar with it. The lecture covers topics through live demonstrations, with no slides.
Lecture recording Examples 1 Examples 2 Examples 3
Lecture 8 - OpenMP - Introduction to OpenMP, Loop Parallelism and Scheduling, Synchronization Techniques.
Lecture 9 - OpenCL I
Lecture recording Lab recordings
Lecture 10 - OpenCL II
Lecture recording Lab recording