This learning unit is not open to incoming exchange students!
Teacher(s)
Language
French
Prerequisites
This course assumes that the student already masters basic programming skills targeted by courses LINFO1101 or LEPL1401 and concepts on algorithmics and simple data structures covered by course LEPL1402.
The prerequisite(s) for this Teaching Unit (Unité d’enseignement – UE) for the programmes/courses that offer this Teaching Unit are specified at the end of this sheet.
The prerequisite(s) for this Teaching Unit (Unité d’enseignement – UE) for the programmes/courses that offer this Teaching Unit are specified at the end of this sheet.
The prerequisite(s) for this Teaching Unit (Unité d’enseignement – UE) for the programmes/courses that offer this Teaching Unit are specified at the end of this sheet.
Main themes
- Programming paradigms: functional programming, object-oriented programming and declarative dataflow programming;
- Formal semantics and reasoning techniques on programs;
- Core language and abstract machine;
- Data Abstractions and Object-Oriented Modeling;
- Recursive algorithms and programming with invariant using linear and tree data structures;
- Analysis of the temporal complexity of an algorithm and the spatial complexity of a data structure;
- Non-determinism, scheduling and equity;
- Implementation of medium complexity programs with a focus on test and program validation methods.
Learning outcomes
At the end of this learning unit, the student is able to : | |
Regarding the learning outcomes of the program of Bachelor in Engineering, this course contributes to the development and the acquisition of the following learning outcomes:
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 broaden and deepen the programming knowledge acquired in preceding courses. The course treats the following subjects:
- The course gives a uniform framework for all programming concepts, organised as programming paradigms.
- The course gives a formal semantics and reasoning techniques for all paradigms.
- The course gives an introduction to lambda calculus as foundation of functional programming and higher-order programming.
- Higher-order programming is used as organizing principle for the construction of procedural abstractions.
- Concurrent programming is presented in two forms, namely deterministic dataflow and message-passing concurrency.
- Data abstraction is presented in its general form and with its two principal derived forms, namely object-oriented programming and abstract data types.
- Symbolic programming and algorithm design principles are used throughout the course.
- Five important programming paradigms are presented in the course: functional programming, object-oriented programming, deterministic dataflow programming, actor dataflow, and active object (multi-agent) programming.
Teaching methods
- 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
- Dispensatory test 25% (around week 7)
- Project 25%
- Final exam 50% (or 75% if redoing test part)
Faculty or entity