## Cours disponibles

The objective of this course is to introduce students to the basics of imperative programming which is one of the most effective paradigms of modern programming. Thus, the theme of algorithmic will be discussed to prepare the continuation of the course. Indeed, an algorithm expresses the logical structure of a solution to a given problem and this independently of any language and any machine. Algorithmic is one of the key steps in teaching programming. Then, it is a matter of applying the knowledge approached in algorithmic through the mastery of a programming language. This is precisely the purpose of this second part of this module which aims to equip students with the background necessary to master a given programming language, in this case the C language, which is at the base of many others. Our objectives are summarized as follows:

- Learn the basic concepts of algorithmic
- Be able to implement these concepts to analyze simple problems
- Mastering abstraction mechanisms in order to analyze a problem and systematically design correct and adequate algorithms and programs
- Implement, using the C language, the algorithms solving a particular problem
- Master the basics of modular programming

The objective of this module is to deepen the study of the imperative programming through the use of advanced constructions of the imperative language seen in I1101. The student must be able to apply the concepts seen in this course to create an application solving a complex problem in the form of modules.

The intended learning outcome of this course is to give good knowledge of graph theoretical concepts, and to practice how to use them in mathematics, natural science and computer science.

After completing the course, students should be able to:

- know some important classes of graph theoretic problems;
- be able to formulate central theorems about trees, matching, connectivity, colouring and planar graphs;
- be able to describe and apply some basic algorithms for graphs;
- be able to use graph theory as a modelling tool.

- to give students a thorough understanding of the Python programming language and it's rich set of libraries;
- to expose students to applications where Python programming is effective, and
- to introduce students to pros and cons of scripting vs. compiled programming languages.

It has easy to understand syntax which allows programmers to develop programs faster and be more efficient. Python has proven to be equally as useful for small scripts as well as large scale software systems.

Due to Python’s ease of use, students will gain expertise with many details of the language as well as programming fundamentals in a short period of time.

Students learn to develop applications where complete implementation requires high skills in structured programming domain. The main objectives are to specify, conceive and develop modules implementing the fundamental data structures and to choose the most appropriate data structure to represent data in a given problem and to allow its resolution by applying efficient and optimal operations.

This course explores advances in algorithm design, algorithm analysis and data structures. The primary focus is on advanced data structures. Topics include advanced trees structures, disjoint sets, heaps, algorithm design techniques, data structures for strings and linear programming algorithms. Finally, we discuss NP-completeness.

Passer site announcements