25h Th, 20h Pr, 40h Proj.
Number of credits
Language(s) of instruction
Organisation and examination
Teaching in the first semester, review in January
Units courses prerequisite and corequisite
Prerequisite or corequisite units are presented within each program
Learning unit contents
Solving complex problems involves their decomposition into standard subproblems for which efficient and well-studied algorithms and data structures exist. This course is an introduction to the most important data structures and associated algorithms.
The course topics will include:
- Tools to analyze algorithms (correction of algorithms, asymptotic notations, sums and recurrences...)
- Sorting algorithms (merge sort, quicksort, heapsort...)
- Elementary data structures (stacks, priority queues, vector, sets, heap, graphs...)
- Dictionary structure (binary search trees, hash tables, tries...)
- Generic problem solving methods (brute force, divide and conquer, greedy algorithm, dynamic programming...)
Learning outcomes of the learning unit
At the end of the course, the students will master the basis of algorithmics and will have a good knowledge of the main data structures. Given a new problem, they will be able to make a principled choice of the most appropriate choice of structure and manipulation algorithms given the practical problem constraints. They will also be able to use the main theoretical tools available to analyze the performance of algorithms.
Prerequisite knowledge and skills
Prerequisites are the following:
- INFO0946: Introduction to computer programming (http://progcours.ulg.ac.be/cocoon/cours/INFO0946-1.html)
- INFO0947: Complements of computer programming (http://progcours.ulg.ac.be/cocoon/cours/INFO0947-1.html)
- INFO0030: Programming projects (http://progcours.ulg.ac.be/cocoon/cours/INFO0030-3.html)
- MATH0499: graph theory (http://progcours.ulg.ac.be/cocoon/cours/MATH0499-1.html)
Planned learning activities and teaching methods
The weekly theoretical lectures and practical sessions will be complemented by practical assignments, which will consist in analyzing a problem, finding the best algorithm and data structures to solve it, and to implement the solution in C.
Participation to the theoretical lectures and practical sessions is voluntary but highly recommended. The assignments are mandatory.
Mode of delivery (face to face, distance learning, hybrid learning)
Face-to-face, in the first quadrimester, in French.
We will adjust to the COVID situation if needed.
Recommended or required readings
Several reference books will be suggested to the students, but reading them is not mandatory. Slides, problems and solutions and other materials will be available on the eCampus space of the course.
Assessment methods and criteria
- First session (January): 3 assignments (30%) and written exam (70%).
- Second session: 1 assignment for students who have not completed the assignments during the year (10%), written exam (90%).
- Assignments are mandatory to have access to the written exam. Students who have completed the assignments during the semester can keep their mark for the second session.
The contents of the theoretical and practical sessions, as well as the assignments and useful links, will be made available on the eCampus space of the course.
- Substitute Teacher: Pascal Fontaine, +32 4 366 28 75, Pascal.Fontaine@uliege.be
- Teaching Assistants: Jean-Michel Begon, +32 4 366 29 72, email@example.com Romain Mormont, firstname.lastname@example.org
- Preferred contact modes: e-mail or personal contact after the lectures or by appointment.