Cet enseignement a de multiples objectifs :
- Poser les bases de l'algorithmique, afin de développer des capacités de programmation.
- Présenter un panel de structures de données utiles à la résolution efficace de problèmes classiques.
- Donner des éléments d'analyse de la complexité algorithmique.
- Aborder les concepts de la programmation objet. Cet apprentissage reposera sur le langage Python. Les concepts objets seront accompagnés d'éléments de modélisation issus d'UML.
- Mettre en pratique une programmation efficace au sens algorithmique dans le cadre d'application : problèmes relevant de la cryptographie/cryptologie, techniques de simulation, optimisation de code. Conception de code en fonction des architectures de calcul (mono-cœur, multi-cœur, distribuées).