Dans un système réparti, même l’interface fournie par les systèmes d’exploitation et de communication est encore trop complexe pour être utilisée directement par les applications à cause de l’hétérogénéité, de la complexité  des  mécanismes  (bas niveau) et la nécessité  de  gérer  (et de  masquer, au moins partiellement) la répartition. Une solution consiste à introduire une couche de logiciel intermédiaire (répartie) entre les niveaux bas (systèmes et communication) et le niveau haut (applications) : c’est l’intergiciel. Ce dernier est la couche ”du milieu” (Middleware) qui joue un rôle analogue à celui d’un ”super-système d’exploitation” pour un système réparti. L'objectif de ce cours est d’étudier l'architecture et la programmation distribuée et de voir les principes de base des Applications Client Serveur Objet, par interaction sous forme d'appels de méthodes distantes via les Middlewares Java RMI et CORBA

Ce cours présente les concepts avancés de Java. Il s'agit de couvrir les aspects de la programmation orientée objet avancée dans l'environnement de la machine virtuelle de java, les Interfaces,  les Inner-classes, les Classes de base, les entrées-sorties. Ce cours explore aussi  les aspects de la programmation concurrente à travers les Collections, la Généricité, les Threads, the Abstract Windowing Toolkit (AWT) et les Swings.

Un compilateur est un logiciel particulier qui traduit un programme écrit dans un langage de haut niveau (par le programmeur) en instructions exécutables (par un ordinateur). C'est donc  l'instrument fondamentale à la base de toute réalisation informatique. ce cours a pour but de présenter les principes de base inhérents à la réalisation des compilateurs à savoir : analyse lexicale, analyse syntaxique, analyse sémantique, génération de code,  et les outils fondamentaux utilisés pour effectuer ces analyses : fondements de base de la théorie des langages (grammaires, automates, ...), méthodes algorithmiques d'analyse, ...