Le but de cet enseignement est de proposer un tour d'horizon des outils qui permettent de concevoir des systèmes numériques, et d'en étudier leur efficacités. Pour cela, les notions d'algorithmes, de structure de données seront abordées, tout en considérant leurs coûts en mémoire et en calcul.
Ce cours est aussi l'occasion d'aborder la programmation orientée objet et la généricité et à travers cela, la conception de code qui puisse être réutilisé. Si notions sont applicables pour un grand nombre de langages de programmation, l'apprentissage se fera par le biais du C++.
Le cours est organisé autour de l'apprentissage des notions suivantes:
1 - Automate et machine à états. Le but est de saisir comment fonctionne un ordinateur, et comment sont définis les langages de programmations
2 - Algorithmique, Structure de données et Complexité. Le but est cette partie est de savoir mettre en place un algorithme, en spécifiant son but, les actions à mener et la complexité résultante. Cela est indissociable de la spécification ou du choix des structures de données les plus appropriées
3 - Programmation orientée objet. Le but est d'appréhender ce mode de programmation, et à travers ce mode de programmation, la possibilité de faire du code qui soit ré-utilisable (modularité, généricité). Ces notions peuvent être appliqués à tout programme jusqu'au langage dédiée comme en matlab.
Niveau requis : Programmation impérative (e.g., C)
Modalités d'évaluation : Contrôle continu et examen
Dernière mise à jour : Saturday 13 September 2014