Programming language concepts

linfo1104  2026-2027  Louvain-la-Neuve

Programming language concepts
5.00 credits
30.0 h + 30.0 h
Q2
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 prerequisites for this teaching unit (UE) are specified at the end of this sheet, next to the programs/training courses that offer this teaching unit.

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:
  • AA 1.1, 1.2
  • AA 2.3, 2.4, 2.5, 2.6, 2.7
  • AA 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.1, S2.2.2, S2.3, S2.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).
 
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 a wide range of programming concepts, organized as programming paradigms.
  • The course gives a formal semantics and reasoning techniques for all paradigms shown.
  • 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.
Examples of practical applications are given for all concepts and all paradigms.
 
 
 
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
The assessment consists of the following components, each identified by a variable (M1, P, F, M2, B):
  • M1, Midterm exam: worth 5 points, around the 7th week. Written examination.
  • P, Project: worth 5 points, during the second half of the semester. Project-based assessment. The project is mandatory and must be completed during the semester in which the course is taught. The project is assessed only once per academic year. It cannot be completed during the second examination session. An oral defense may be required as part of the project assessment.
  • F, Final exam: worth 10 points. Written examination, at the end of the examination session.
  • M2, Midterm retake: worth 5 points, held at the same time as the final exam. Only the higher grade between the midterm exam (M1) and its retake (M2) will be retained. Both exams will nevertheless always be graded.
  • B, Practical session bonus: worth 1 point, accumulated throughout the semester. Continuous assessment based on the number of practical sessions attended by the student.
The final grade is calculated according to the following formula: min(20, max(M1, M2) + P + F + B), where M1, M2, P, F, and B are the variables defined above. The final grade therefore cannot exceed 20/20. The weighting is as follows: M1/M2 = 25%, P = 25%, F = 50%, and B = 5%, with the total capped at 100%.
In the event of a second examination session, only M2 and F are reassessed. The other grades (M1, P, B) are carried over unchanged.
The instructor reserves the right to require an oral defense from certain students in order to validate an assessment component.
Other information
Prequisite:
  • Second-year programming course Informatique 2 (LEPL1402) or equivalent.
One of the objectives of the course is to enable students to develop skills and knowledge that will be useful in their future careers. The use of generative AI tools interferes with the proper acquisition of these skills and knowledge. The use of generative AI tools is therefore:
  • prohibited during examinations,
  • prohibited for writing code for the project or for any other code-writing activity,
  • permitted only for improving the writing (spelling, grammar, minor rephrasings) of the project report, provided that (i) the student assumes full responsibility for the report submitted for assessment, and (ii) the use of generative AI is precisely documented in a generative AI use statement specifying which generative AI tools were used, for which parts of the report, and with which prompts,
  • strongly discouraged during practical sessions.
All projects must include a generative AI use statement, including projects for which no generative AI tools were used. In the latter case, the statement should simply indicate that no generative AI tools were used. Any project that does not include a generative AI use statement will receive a penalty.
Online resources
LINFO1104 Moodle.
Bibliography
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
Sigle
Credits
Prerequisites
Learning outcomes
Specialization track in Computer Science

Master [120] in Linguistics

Master [120] in Environmental Bioengineering

Master [120] in Chemistry and Bioindustries

Bachelor in Computer Science

Minor in Computer Sciences

Master [120] in Agricultural Bioengineering

Mineure Polytechnique