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
- Make sure you can compile and run C++ programs comfortably. Your group leader will help in case of trouble.
- Work on the excercises in lab1.html.
- 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
- Finish Lab1 if you didn't already.
- 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
- 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 .
Here are some example answers lab4-oblig1-answers.html.
Lab 5, Week 40–41
- 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
- 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 . 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