This course gives a broad introduction to programming concepts, with a special accent given to concurrent programming. The course covers higher-order programming, symbolic programming, declarative (deterministic) concurrency, lazy evaluation, message-passing concurrency, multi-agent systems, state, active objects, and shared-state concurrency including locks, monitors, and transactions.
The course is taught in the third year of the bachelor of applied
science program. The prerequisite is a mastery of programming and
algorithmics in a high-level programming language. The course textbook
is "Concepts, Techniques, and Models of Programming Languages", by Peter
Van Roy and Seif Haridi, MIT Press, 2004. The textbook is mandatory;
it can be bought at the SICI or lent from the INGI library.
During the course we will cover the following sections of the course textbook:
- Sections 2.1-2.6: Declarative model and kernel language
- Sections 3.2-3.4: Declarative programming
- Sections 4.1-4.6, 4.8: Declarative concurrency
- Sections 5.1-5.6: Message-passing concurrency and multi-agent systems
- Sections 6.1-6.3: State
- Sections 7.2, 7.7, 7.8: Classes and active objects
- Sections 8.1-8.6: Shared-state concurrency (locks, monitors, transactions)
The course will be evaluated as follows:
- There will be a mid-term exam near the middle of the semester worth 5 points.
- There will be a programming project in the final third of the semester (week 12).
- The final written exam will have three parts: (1) main part worth 10 points, (2) part corresponding to the mid-term (do only if you want to improve the mid-term), (3) the project points (the project cannot be redone).
The exam is both theoretical and practical: understanding of theoretical concepts and ability to apply them in real programs.
- Teacher: Maudoux Guillaume
- Teacher: Van Roy Peter