Materials are now complete
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
Recordings: Lecture 1 Lecture 2 Lab
Lecture 7 - Concurrency in Java - Akka and actors, futures and promises
Lecture 8 - Introduction to C++
This is an introduction to the C++ language, mainly intended for those students not yet familiar with C++. In the lecture, I will cover things in a live demonstration, so there are no slides.
Lecture recording Examples 1 Examples 2 Examples 3
Lecture 9 - OpenMP
Lecture 10 - OpenCL I
Lecture recording Lab recordings
Lecture 11 - OpenCL II
Lecture recording Lab recording
Lecture 12 - Scala I
Lecture examples (IntelliJ project)
Lecture 13 - Scala II
Lecture examples (IntelliJ project)