INF214 Concurrent Programming, Fall 2018

Course Essentials

Lectures Tue 14:15–16:00, Allegaten 66, Auditorium B
  Thu 08:15–10:00, Allegaten 66, Auditorium B
Labs Group 3: Tue 8:15–10:00
  Group 1: Wed 14:15–16:00 (Check Lab locations here)
  Group 2: Fri 8:15–10:00
Instructor Jaakko Järvi
TAs Jonathan Steven Prieto Cubides, Ole Magnus Lie
Course pages http://www.ii.uib.no/~jjarvi/INF214 (Also: UiB's official course page)
Contact
Office hours TBA

Schedule and material

Some of the materials are behind a password. Ask the instructor for one.

Date Topic Material Reading
Tue 21.8 Class setup, introduction notes1.pdf examples1 1–1.4, 1.9
Thu 23.8 Introduction alang-tutorial.html 2–2.5, 2.7–2.7.4, 2.8
Tue 28.8 Synchronization with locks notes2.pdf examples2 3–3.5.1
Thu 30.8 Barriers    
Tue 4.9 Barriers, semaphores notes3.pdf examples3 4–4.4
Thu 6.9 Semaphores, deadlock, readers/writers    
Tue 11.9 Readers/writers, Monitors notes4.pdf examples4 Ch. 5
Thu 13.9 Monitors    
Tue 18.9 Reasoning about programs notes5.pdf 2.6
Thu 20.9 Reasoning about programs    
Tue 25.9 Reasoning about concurrent programs    
Thu 27.9 Reasoning about concurrent programs    
Tue 2.10 Software Transactional Memory notes6.pdf stm.pdf  
Thu 4.10 Concurrency in C++ c++-concurrency.pdf  
Tue 9.10 Concurrency in C++    
Thu 11.10 Concurrency in C++ notes7.pdf  
Tue 16.10 no class    
Thu 18.10 Task Parallelism task-system.pdf  
Tue 23.10 Task Parallelism    
Thu 25.10 no class    
Tue 30.10 Message passing concurrency notes8.pdf 7–7.3.1
Thu 1.11 Message passing concurrency examples8  
Tue 6.11 CSP   7.6
Thu 8.11 CSP, Coroutines notes9.pdf  
Tue 13.11 Coroutines coroutines.pdf  
Thu 15.11 Coroutines in JavaScript    
Tue 20.11 Distributed Systems distributed-systems.pdf notes10.pdf  
Thu 22.11 Review list of review topics  

Example programs discussed in class are not included into the above two files.

Assignments

There will be three compulsory assignments. There will be weekly exercises.

Lab 1, Week 35

  1. Make sure you can compile and run C++ programs comfortably. Your group leader will help in case of trouble.
  2. Read through the alang-tutorial.html (which also contains instructions on how to compile and run C++ programs).
  3. Study all examples in the tutorial; compile and run them, and see that the results are as expected. You will need the alang.hpp header file.
  4. Work on the excercises in lab1.html.

Lab 2, Week 36

  1. Finish Lab1 if you didn't already.
  2. Work through these exercises: lab2.html.

Lab 3, Weeks 37–38, first obligatory assignment

The assignment is here: lab3-oblig1.html. Submission deadline is <2018-09-24 Mon>.

Lab 4, Week 39

Work through these exercises: lab4.html.

Lab 5, Weeks 40–42, second obligatory assignment

The assignment is here: lab5-oblig2.html. Submission deadline <2018-10-17 Wed>.

Lab 6, Week 43–44

Work through these exercises: lab6.html.

Lab 7, Weeks 45–46

Work through these exercises: lab7.html.

Lab 8, Week 47, third obligatory assignment

The assignment is here: lab8-oblig3.html. Submission deadline <2018-11-24 Sat>.

Resources

Textbooks

G. R. Andrews: Foundations of Multithreaded, Parallel, and Distributed Programming, 2000. Addison-Wesley.

  • Tentative plan: Chapters 1 – 10, focusing on Chapters 1 – 5, 7, 8.

Software

Recent C++ compiler

  • Clang, GCC, VisualStudio should all be fine

Author: Jaakko Järvi

Created: 2019-02-08 Fri 13:15