linfo1104  2020-2021  Louvain-la-Neuve

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
Van Roy Peter;
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.
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.

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:
  • LO 1.1, 1.2
  • LO 2.3, 2.4, 2.5, 2.6, 2.7
  • LO 4.2, 4.3, 4.4
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:
  • S1.I2., S1.I3, S1.I5
  • S2.2., S2.3, S2.4
  • S5.3, S5.4., S5.5.
Students completing successfully this course will be able to
  • specify the problems, divide them into their basic steps, and design algorithms and abstractions to solve them;
  • choose the right programming paradigm and write a program in this paradigm to solve a problem;
  • use formal semantics to explain the accuracy of the program;
  • write small concurrent programs in the deterministic dataflow paradigm.
  • think using abstractions (reason correctly on a system that includes several layers of abstractions, and define new abstractions to simplify the resolution of a problem)
The goal of this course is to widen and deepen the programming knowledge acquired in preceding courses.  This course will treat the following subjects:
  • The course will give a uniform framework for all programming concepts, organised as programming paradigms.
  • The course will give a formal semantics and reasoning techniques for all paradigms.
  • Higher-order programming will be used as organising principle for the construction of procedural abstractions.
  • Concurrent programming will be presented in two forms, namely deterministic dataflow and message-passing concurrency.
  • Data abstraction will be 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.
  • Several programming paradigms will be presented in the course, including functional programming, object-oriented programming, deterministic dataflow programming, and multi-agent programming.
Examples of practical applications will be given for all concepts and all paradigms.
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)
The project is mandatory and is done during the quadrimester. It can only be done only once and it counts for the whole academic year.  The optional dispensatory test and the final exam may be done in auditorium or online, depending on university requirements.
Other information
  • Second-year programming course Informatique 2 (LEPL1402) or equivalent.
Online resources
LINFO1104 Moodle.
Peter Van Roy et Seif Haridi, PROGRAMMATION: Concepts, techniques et modèles, Dunod, 2007
Peter Van Roy et Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press, 2004
Teaching materials
  • Concept, Techniques, and Models of Computer Programming
Faculty or entity

Programmes / formations proposant cette unité d'enseignement (UE)

Title of the programme
Master [120] in Linguistics

Approfondissement en sciences et technologies de l'information et de la communication (pour seule réinscription)

Bachelor in Computer Science

Specialization track in Computer Science

Master [120] in Agricultural Bioengineering

Master [120] in Environmental Bioengineering

Additionnal module in Geography

Master [120] in Chemistry and Bioindustries