INF214 Concurrent Programming, Fall 2019

Course Essentials

Lectures Tue 12:15–14:00, Realfagbygget, Auditorium 2
  Thu 12:15–14:00, Realfagbygget, Auditorium 4
Labs Mon 8:15, Tue 8:15, Thu 12:15, Fri 8:15; Realfagbygget grupperom (for exact location see mitt.uib)
Instructor Jaakko Järvi
TAs Jonathan Steven Prieto Cubides, Eirin Sognnes, Markus Johan Ragnhildstveit
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.

Week Date Topic Material Reading
1 Tue 20.8 Class setup, introduction slides 1 notes1-19.pdf examples1 1–1.4, 1.9
  Thu 22.8 Introduction alang-tutorial.html alang.hpp 2–2.5, 2.7–2.7.4, 2.8
2 Tue 27.8 Introduction    
  Thu 29.8 Synchronization with locks notes2-19.pdf examples2 3–3.3
3 Tue 3.9 Barriers   3.4–3.5.1
  Thu 5.9 Semaphores, deadlock notes3-19.pdf examples3 4–4.4
4 Tue 10.9 Readers/writers, monitors slides 4 examples4 Ch 5.
  Thu 12.9 Condition variables    
5 Tue 17.9 Concurrency in C++ c++-concurrency.pdf  
  Thu 18.9 Concurrency in C++    
6 Tue 24.9 Concurrency in C++, task-based concurrency    
  Thu 24.9 Task system implementation task-system.pdf  
7 Tue 1.10 Task system implementation    
  Thu 3.10 Software Transactional Memrory notes-stm.pdf stm slides stm-examples  
8 Tue 8.10 Message Passing Concurrency notes-message-passing.pdf examples-message-passing 7–7.3.1
  Thu 10.10 Message Passing Concurrency    
9 Tue 15.10 no class    
  Thu 17.10 Coroutines coroutines slides notes-coroutines.pdf  
10 Tue 22.10 Coroutines    
  Thu 24.10 Coroutines/Promises/Async/Await    
11 Tue 29.10 Reasoning about programs notes-verification.pdf 2.6
  Thu 31.10 Reasoning about concurrent programs    
12 Tue 5.11 Reasoning about concurrent programs    
  Thu 7.11 Distributed computing distributed-systems.pdf notes10.pdf  
  Mon 25.11 Exam Fall 2018 exam Fall 2019 exam  

Assignments

There will be two or 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. Work on the excercises in lab1.html.
  3. Before 2, you likely want to study the alang-tutorial.html (which also contains instructions on how to compile and run C++ programs). You can ignore the parts on await, monitors, etc. as we have not yet discussed them, but learn how to define and start processes in alang. It is probably helpful to compile and run some of the example programs in the tutorial. You will need the alang.hpp header file.

Here are some example answers lab1-answers.html.

Lab 2, Week 36

  1. Finish Lab1 if you didn't already.
  2. Work through these couple of exercises: lab2.html. This is a fairly light exercise, since many may be still working on Lab1.

Here are some example answers lab2-answers.html.

Lab 3, Week 37

  1. Work through these three exercises: lab3.html

Here are some example answers lab3-answers.html.

Lab 4, obligatory assignment, Weeks 38–39

The assignment is here: lab4-oblig1.html. Submission deadline is <2019-09-29 Sun>.

Here are some example answers lab4-oblig1-answers.html.

Lab 5, Week 40–41

  1. Work through these exercises in lab5.html. There should be enough work for two weeks.

Here are some example answers lab5-answers.html.

Lab 6, Week 42

  1. Work through these exercises in lab6.html.

Here are some example answers lab6-answers.html.

Lab 7, Weeks 43–44

The assignment is here: lab7-oblig2.html. Submission deadline is <2019-11-06 Wed>. Here are some example answers: lab7-oblig2-answers.html.

Lab 8, Week 46

The assignment is here: lab8.pdf. There is no deadline, nor submission. Work on this at home. Here are some example answers lab8-answers.pdf.

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

  • A recent C++ compiler
    • Clang, GCC, VisualStudio should all be fine
  • A modern browser
    • Chrome, Firefox for example
    • We will write a few JavaScript programs

Author: Jaakko Järvi

Created: 2019-12-15 Sun 17:49