Algorithmics
Presentation & objectives
Welcome to the part of the course on algorithmics! In this block, you will study how to solve problems using algorithmic solutions, i.e., series of operations that, when applied, compute a solution to the problem, pretty much like following a cooking recipee to make a cake.
In addition to writing algorithms, we will also study some properties of algorithms, such as complexity or termination. Indeed, it is important to be able to characterize these properties, either to be able to compare algorithms together (e.g, to determine which one to choose for a specific task), or to guarantee they will act as expected.
Finally, we will transition toward more advanced algorithmic solutions, and other approaches to solve problems. We will in particular give you an introduction on artificial intelligence, so that you know how it differs from classical algorithmic approaches.
Schedule
- Session 1 – Basics of algorithmics.
Algorithmic statements, invariants
- Session 2 – Recursion.
Devising and writing recursive functions
- Session 3 – Data structures.
Data structures (stack, queues) and complexity
- Session 4 – Properties of algorithms.
Theoretical properties of algorithms: complexity, termination, deterministic/stochastic
- Session 5 – Advanced algorithmics.
Algorithmic strategies: divide and conquer, greedy algorithm, memorisation and dynamic programming
- Session 6 – Introduction to artificial intelligence.
Basic of AI (supervised vs. unsupervised learning)
Meilleures descriptions quand contenu vérifié
How is a session organized?
Every session contains a course part that has to be read and studied autonomously before the first supervised activity. Supervised activites are composed of exercices that are generally associated with their solution. Use in a wise way these solutions, i.e. only to check your production.
Most of the sessions also propose a self-assessment section to let you check you manage the basic concerned notions.
Classe inversée ou cours standard ?
Evaluation
A compléter
In addition to the project evaluation, your algorithmic and programming skills will be evaluated at two steps. You will have to produce high quality code to solve concrete problems. These two evaluations will happen at the end of the programming sessions 2 and 3.