Person in charge: Sylvain Lefebvre / Patricia Conde-Céspedes

Prerequisite: II.1102/II.1202 Algorithmic and Programming

Organization: 14 x 3h Lectures/Tutorials

Evaluation: Exam

ECTS: 5 credits



Numerous problems of great practical use (network routing, task scheduling, data mining), rely on advanced modelling and algorithmic concepts. The design of solutions to such problems can greatly benefit from deep knowledge of a specific programming language features and their associated theoretical background.



This modules prepares engineering students to acquire skills in a large spectrum of domains where algorithmic and modelling play a central role.


In terms of skills, this module aims to enable students to:

  • Model a complex system or domain with an Object Oriented approach
  • Model a problem with graph theory, and choose the right algorithm to solve it


This module enables students to develop the following concepts and skills.

·        Concepts

o   Graph Theory (flow problems, shortest path, logistics,…)

o   Complexity classes

o   Algorithm design

o   Advanced Object Programming

o   Design Patterns

o   Concurrent and parallel programming

o   Event-based Programming

o   Network programming


·        Know-how

o   Evaluate and compare algorithmic complexities

o   Identify  Design Patterns

o   Solve synchronization problems

o   Inter-machine communication


Pedagogical approach

The module is divided in two parts. Six sessions follow a class / practical class pattern, and aim at introducing fundamentals concepts in algorithmic (complexity, optimization) and graph theory.  One session will introduce design patterns. These sessions will be followed by practical classes dedicated to advanced programming techniques in Java. Concepts and know-how will be evaluated through practical classes and exam.