Ce cours poursuit l'apprentissage du génie logiciel en Java en introduisant des concepts avancés tels que les structures de données et types abstraits de données (piles, files, listes, arbres, graphes) et les algorithmes associés. 

En parallèle, les étudiants sont confrontés aux bonnes pratiques du développement logiciel, des révisions sur la programmation orientée objets aux patrons de conception permettant d'organiser son code de manière flexible et adaptable.