Due to the COVID-19 crisis, the information below is subject to change,
in particular that concerning the teaching mode (presential, distance or in a comodal or hybrid format).
5 credits
30.0 h + 30.0 h
Q1
Teacher(s)
Van Roy Peter;
Language
English
Prerequisites
This course assumes that the student already masters the concepts, paradigms and semantics of the programming languages targeted by the course LINFO1104
Main themes
- Concurrent programming paradigms (shared state, message passing, and declarative competition)
- Major programming concepts that include function, object, class, abstraction, instantiation, inheritance, state, encapsulation, competition, dataflow, lazy evaluation, non-determinism, agent (active object), lock, monitor, transaction, deadlock, higher order programming, compositionality, etc.
- Techniques of reasoning and design with different paradigms to design correct programs
- Practical applications in several areas (eg logic circuits simulation, elevator simulation, transaction manager).
Aims
At the end of this learning unit, the student is able to : | |
1 |
Given the learning outcomes of the "Bachelor in Computer science" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
Students completing successfully this course will be able to
|
Content
The goal of this course is to present advanced concepts in programming languages. Among others, the course presents:
- functional programming and higher-order programming, lazy evaluation,
- concurrent programming in its three principal forms, namely deterministic dataflow, message-passing concurrency, and shared-state concurrency,
- a rigorous presentation of the concept of declarativeness,
- advanced techniques for designing declarative algorithms,
- security as applied to data abstraction,
- the design of multi-agent systems including with the Erlang language,
- a rigorous presentation of mutable state and its utility,
- the concepts of lock, monitor, and transaction.
Teaching methods
Due to the COVID-19 crisis, the information in this section is particularly likely to change.
- Weekly lectures (in auditorium or online, according to university requirements).
- Practical lab sessions in the computer room every week, to solve simplified problems using concepts explained during the lectures.
- One major design and programming project to apply these concepts to a more complex application.
Evaluation methods
Due to the COVID-19 crisis, the information in this section is particularly likely to change.
- Dispensatory test 25% (around week 7)
- Project 25%
- Final exam 50% (or 75% if redoing test part)
Online resources
LINFO1131 Moodle.
Bibliography
Peter Van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004.
Teaching materials
- Peter Van Roy and Seif Haridi, Concepts, Techniques, and Models of Computer Programming
- Course slides, lectures, and videos
Faculty or entity
INFO
Programmes / formations proposant cette unité d'enseignement (UE)
Title of the programme
Sigle
Credits
Prerequisites
Aims
Additional module in computer science