This course assumes a sufficient mathematical maturity, equivalent to the level of a third year student in engineering. The course is an introduction to algorithmics, treating mainly of non-numerical aspects. A mathematical analysis of the existence and complexity of algorithms for classic problems pertaining to discrete structures and problems. Previous exposition to non-elementary algorithmic questions is useful to the student; other than that, no prerequisite in algorithmics is assumed
- AA1 : 1,2,3
- AA3 : 1,3
- AA4 : 1
- AA5 : 1,2,3,5,6
At the end of this course the student will be able to :
- Study exact and approximate algorithms for combinatorial problems from different viewpoints: design, data structure, performance analysis, existence, complexity.
- Apply some general techniques (divide and conquer, dynamic programming, etc.) to solve basic algorithmic problems (e.g. sorting) and perform a worst-case or average-case complexity analysis.
- Take initiatives to search information relevant for the analysis of a given problem.
- Propose original solutions and compare them to available solutions.
- Write a report on the proposed and available solutions.
The contribution of this Teaching Unit to the development and command of the skills and learning outcomes of the programme(s) can be accessed at the end of this sheet, in the section entitled “Programmes/courses offering this Teaching Unit”.
The students are evaluated through an individual written exam, on the objectives listed above. Moreover the students write homework papers during the term, which are corrected and commented. The grades for the homework enter the final grade.
The course is organised in lessons and weekly homework, for which non-compulsory consulting is offered.
Introduction to the basic algorithms for sorting and the efficient implementation of different data structures including an analysis of worst case and average case complexity. Treatment of important algorithm classes including greedy and dynamic programming algorithms. Aspects of complexity theory including NP-completeness, complexity classes and decidability.
- Algorithmics: Theory and Practice, G. Brassard and P. Bratley, Prentice Hall, 1988.
- Introduction to Algorithms, T.H. Cormen, C.E. Leierson and R.L. Rivest, MIT Press 1986.