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.
- Complexity measures of an algorithm and complexity analysis methods.
- Dichotomic sorting and search algorithms.
- Basic data structures (lists, trees, binary search trees): study of their abstract properties, their concrete representations, their application and the main algorithms that manipulate them.
- Advanced data structures (union-find, hash tables, heaps, balanced binary trees, graph representation and manipulation, textual data processing, dictionaries).
At the end of this learning unit, the student is able to :
Given the learning outcomes of the "Bachelor in Engineering" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:
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:
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”.
- Computational complexity,
- Trees, binary search trees,
- Balanced trees,
- Dictionaries and hash tables,
- Priority queues and heaps
- Text processing (pattern matching, compression algorithms)
Due to the COVID-19 crisis, the information in this section is particularly likely to change.The active teaching method followed in this course is inspired from the Problem Solving Approach and is a flipped classroom. This method is based on several phases of work, some supervised by tutors. In addition to tutored sessions, an essential component of this pedagogical approach is to promote each student to learn by himself. The success of the learning process presupposes a significant involvement of each student. The role of group work is mainly to discuss the concepts studied and, secondarily, to organize the work of each. Learning itself remains the responsibility of each student.
The work is organized into modules that each group of students must perform with strict deadline (typically 2 weeks per module, with 2 deadlines per module). These missions include questions for which each group must make the best possible answers and programming problems, for which each student must produce Java programs individually.
Due to the COVID-19 crisis, the information in this section is particularly likely to change.
The participation to the tutored sessions accounts for 20% of the final note. This total includes:
- The active participation to the tutored session by the student, evaluated by the tutor;
The exercises made on INGInious (they should be submitted before the deadlines)
The exam amounts for 80% of the final grade.
A mid-term is organized on INGInious around week 7. The mid-term accounts for 10% of the total of the exam (8% of the overall total) only if it increases the overall grade of the student. The grade of the mid-term is kept during the August exam session. The content of the mid-term is based on modules 1 to 3.
- A mid-term is organized on INGInious around week 7. The mid-term accounts for 10% of the total of the exam (8% of the overall total) only if it increases the overall grade of the student. The grade of the mid-term is kept during the August exam session. The content of the mid-term is based on modules 1 to 3.
- master an object-oriented programming language (p.e. Java)
- know an use correctly basic data structures (stacks, queues, lists, etc..)
- have basic knowledge of recursion and computational complexity.
+ questions on the course website (reachable from Moodle).
Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne, Addison-Wesley Professional.
Et plus généralement les documents (énoncés des missions, conseils pour l'examen, ...) disponibles sur : http://moodleucl.uclouvain.be/course/view.php?id=7682