~~NOTOC~~ ====== Programmation comparée ====== ===== Description ===== Ce module vise à renforcer les capacités de communication écrites et orales des étudiants à travers la production d'analyses critiques et comparatives de diverses technologies de développement logiciel. Chaque séance s'organise autour de plusieurs exposés produits par les étudiants (en binôme) ou l'équipe enseignante. Chaque exposé étudiant est noté et donne également lieu à la production d'un rapport écrit, noté lui aussi. ===== Syllabus ===== ==== Sujets centraux ==== - Expression orale : préparation et présentation d'un exposé technique. - Expression écrite : rédaction d'un rapport technique. - Comparaison raisonnée de technologies de développement logiciel. ==== Sujets potentiellement traités ==== À titre d'exemple, voici quelques comparaisons produites par les étudiants des années écoulées : * programmation orientée objet : organisation structurelle (OCaml) vs. nominale (Java) vs. à prototypes (JS), * hyperviseurs : Xen vs. Firecracker, * langages pour la //Java Virtual Machine// : Kotlin vs. Scala vs. Clojure, * langages de script : Bash vs. Python, * langages de configuration : Puppet vs. Chef vs. Terraform, * API graphiques : DirectX vs. Vulkan vs. OpenGL, * méthodologie de test : unitaire (JUnit) vs. à base de propriétés (QuickCheck) vs. par comparaison (Monolith). ===== Pré-requis ===== Pas de pré-requis formel si ce n'est le bagage standard d'un étudiant de Master 2 en informatique : culture générale en programmation et en systèmes, familiarité avec plusieurs langages de programmation. Le module suppose toutefois une certaine curiosité de l'étudiant vis-à-vis de technologies informatiques issues d'horizon très différents, de l'assistant de preuve Coq au gestionnaire de cluster Kubernetes en passant par les bibliothèques JavaScript du moment.