Lecturer
Tutors and lab supervisors
For exercises, lab supervision and grading:
Content of the course
This course teaches the principles of concurrent programming through a textbook, lectures and exercises. In this run of the course, autumn 2016, the exam will test you only on these principles. The labs, completely separate from the exam, will teach you to apply these principles in real-world languages. Your grade depends only on your performance on the exam and the labs.
See the section below on The Programming Languages Used for the concrete details of the programming languages that we will use during the course.
Here you can download a document summarising the required content of the course and the programming languages we will use.
Course Representatives
Chalmers University of Technology
- Poya Kaboteh (kaboteh@student.chalmers.se) - TKITE
- Breunis Blaauwendraad (b.g.blaauwendraad@student.utwente.nl) - Utbyte
- Herman Hörnstein (hermanh@student.chalmers.se) - TKDAT
- Olle Månsson (ollema@student.chalmers.se) - TKTFY
- Tove Svensson (tovesv@student.chalmers.se) - TKDAT
University of Gothenburg
- Darja Linkova (guslinkda@student.gu.se) - GU
- Ken Bäcklund (gusbacke@student.gu.se) - GU
Ping Pong
You can register here to the Ping Pong instance of the course. This platform is meant to be used to post questions and have discussions related to the course. Sharing solutions is forbidden.
Passing requirements and grading guidelines
We will asset your knowledge about the content of the course in the labs as well as the final exam. The course consists on 100 points from which the exam carries a maximum of 68 points and the labs a maximum of 32 points (a maximum of 8 points each lab).
Labs
The labs are assigned points depending on the amount of resubmissions you need to do before passing them.
Submission | Lab 1 | Lab 2 | Lab 3 | Lab 4 |
---|---|---|---|---|
1 | 10 | 6 | 6 | 10 |
2 | 7 | 4 | 4 | 7 |
3 | 5 | 3 | 3 | 5 |
To avoid having lab returns for simple errors, and therefore loosing points, we strongly suggest you to attend the lab sessions.
Exam
The exam is graded for Chalmers students as follows.
Points | Grade |
---|---|
24-38 | 3 |
39-53 | 4 |
54-68 | 5 |
The exam is graded for GU students as follows.
Points | Grade |
---|---|
24-53 | G |
54-68 | VG |
Grade for the whole course (GU)
To pass the course with G, you need to fulfill these requirements:
- At least 24 points in the exam
- At least 5 points in labs 1 & 3 and 3 points in labs 2 & 4
To get VG, you need to fulfill the requirements above and get VG in the exam.
Grade for the whole course (Chalmers)
To pass the course, you need to fulfill these requirements:
- At least 24 points in the exam
- At least 5 points in labs 1 & 3 and 3 points in labs 2 & 4
Point exam + lab | Course Grade |
---|---|
40-59 | 3 |
60-79 | 4 |
80-100 | 5 |
The Programming Languages Used
For the labs
Java
Labs 1 and 2 are to be done in Java. You will get a lecture on how to write concurrent programs in Java before the first lab. The textbook offers very good support.
Erlang
Labs 3 and 4 are to be done in Erlang, a functional language widely used in the industry to write programs with thousands of concurrent processes. You will get two lectures on Erlang during the third week of the course. But if you have never used a functional language before, do skim right away the first two chapters of the quick Erlang tutorial (also available in PDF format from the same page). Download Erlang OTP, install it on your computer, and work through the first 10 pages or so of the tutorial. You might also try the first few pages of learn you some Erlang.
For the lectures and the exam
Pseudo-code
Pseudo-code The textbook uses a pseudo-code notation (summarised here) to write the programs to be discussed. The notation concentrates on concurrency, stripping down all other issues. (The book then often shows how to implement the pseudo-code programs in C, Java and Ada). We use the same pseudo-code notation in the lectures and the exam; indeed, it is the only programming language you need to know for the exam.
Pseudo-code notation is flexible, so we can easily add new constructs, but it is not executable, and it is essential to run programs to understand them. We can of course design in pseudo-code, implement in C or Java, and then test the implemented program. But the gap between the languages means we may not be testing what we designed.
Promela
Fortunately, there is a runnable language close to pseudo-code, Promela. (Or you can think of the pseudo-code notation as a blackboard simplification of Promela). Like the pseudo-code, Promela too can model most concurrency constructs, including those of Java and Erlang. This tutorial introduces the needed Promela constructs as it goes along.
We use Promela as a teaching aid to quickly try out programs and test their properties. It runs on Spin, an interpreter for Promela. Spin can also check properties of programs. You will see shortly that this last is essential to understand concurrent programs.
Neither the labs nor the exam require knowledge of Promela. Even the lectures will mostly use the pseudo-code; only briefly will we use Promela to demonstrate the behaviour of the program being discussed. So Promela is not really needed in the lectures either. It is only needed if you choose to attend exercise sessions based on it.
For the optional exercises: Java, Erlang and Promela
The exercises are not to be submitted; they carry no weight for your grade, but are offered simply as learning aids. We give you example programs in Java, Erlang and Promela that you can read, run and modify to see what happens. You are usually left to do the exercises in your own time, but we will sometimes organise a supervised session.
Official Course PM
Here you can download the official course PM. You can also find the course plan in Studieportalen.
Teaching style (PLEASE MAKE YOUR OWN NOTES)
The lectures will be keyed to the textbook whenever possible. We will use slides from the book as well as slides of our own. These will not in general be available before the lecture, as the content of each lecture is decided dynamically depending on classroom discussions. Many of these discussions will use the blackboard.
It is therefore important that you bring a notebook and make your own notes, and that you understand that the slides are in no sense "lecture notes", or any kind of substitute for the textbook or even for the lectures. Slides are visual aids for the lecture, that is all. After the lecture, they may help you remember what was discussed.