Cette unité d'enseignement permet d'approfondir plusieurs aspects de l'informatique tels que la conception orientée objet, les systèmes d'exploitation et les applications réseaux.
La conception consiste à donner à un projet de programmation une organisation souple mais structurante. Une telle organisation permettra de garder un code clair au cours des différentes évolutions que le code subira. Ces évolutions devront pouvoir être faites facilement, et le code pourra à tout moment être testé facilement. La modularité intelligente est une clé de voûte de la conception. Les principes de cette modularité sont énoncés dans les principes SOLID. Le savoir-faire de cette modularité est résumé dans les patrons de conceptions qui permettent d'éviter les pièges habituels de conception en suivant des modèles sous la forme de diagrammes UML.
-
Documentation, spécification, automatisation des tests
-
Principes SOLID : SRP, OCP, LSP, ISP, DIP
-
Diagramme de classes UML
-
Présentation et utilisation de patrons de conceptions sur des exemples concrets
Le cours aborde également les principes généraux qui sont à la base des systèmes d'exploitation (SE) modernes tels que la notation de processus, interruptions, ordonnancement, gestion de mémoire et de fichiers.
-
Introduction et historique : définition d'un SE, historique, différents types de SE
-
Architecture, Interruptions et Processus : description d'une machine du point de vue SE, concepts et mécanismes d'interruptions, définition et caractérisation de processus
-
Ordonnancement des processus : définition et mesures de performance, algorithmes simples, ordonnancement sur UNIX, Linux et Windows
-
Outils de synchronisation : section critique, exclusion mutuelle, attente active, attente passive
-
Gestion de la mémoire : mémoire vive, mémoire virtuelle
-
Système de gestion de fichiers : organisation physique et logique des fichiers et disques
Le cours aborde finalement le domaine des applications réseaux à
-
-
Programmation Socket :
API, fonctionnement, utilisation en TCP et UDP, indépendance langage de programmation/protocole réseau