La première partie de cet enseignement débutera donc par quelques révisions, puis introduira les notions de type abstrait, de définition fonctionnelle d'un type, dans un premier temps de manière indépendante d'un quelconque langage de programmation, puis l'implantation des opérations définies pour ce type en utilisant le Langage C. Seront abordées suivant ce modèle différentes façons de définir des collections d'objets très usitées en informatique (pile, file, arbres, …). Associés à ces types de données, différents algorithmes de consultation et mise à jour seront décrits.
La deuxième partie de cette UE est conçue pour doter les étudiants d'une compréhension approfondie de la Programmation Orientée Objet (POO) en Python. Cette compétence est essentielle pour l'utilisation efficace des bibliothèques de Deep Learning et de Vision par ordinateur, qui seront abordées dans les cours de la deuxième année de ce Master.
Les étudiants commenceront par explorer les principes fondamentaux de la POO, en les contrastant avec le paradigme de programmation procédurale, afin de mieux comprendre les intérêts de cette approche.
Le cours se poursuivra avec des modules détaillés sur la définition des classes, la création d'objets, ainsi que l'importance des variables d'instance et des méthodes, qui sont cruciales pour encapsuler et structurer les données et les fonctions de manière cohérente. Les étudiants apprendront également à implémenter des constructeurs pour initialiser les objets et à utiliser l'encapsulation pour protéger les données à travers des modificateurs d'accès.
Le concept d'héritage, y compris l'héritage multiple, sera exploré pour montrer comment les classes peuvent étendre ou modifier le comportement d'autres classes. En outre, le cours couvrira la surcharge de méthode et le polymorphisme, permettant ainsi aux étudiants de redéfinir des méthodes et d'utiliser des interfaces unifiées pour manipuler divers objets.