Les étudiants ayant suivi l'option "Software engineering and programming systems" devront être capables de :
- Comprendre et expliquer les problèmes rencontrés dans la conduite de gros projets logiciels, ainsi que l'impact critique du choix de solutions tout au long de leur cycle de vie (dimensions de construction, de validation, de documentation, de communication et de gestion de projet impliquant de grosses équipes ainsi que des coûts et délais à respecter)
- Choisir et appliquer des méthodes et outils d'ingénierie de systèmes logiciels complexes répondant à des critères stricts de qualité: fiabilité, adaptabilité, évolutivité, performance, sécurité, utilisabilité...
- Modéliser les produits et processus nécessaires à l'obtention de tels systèmes et analyser ces modèles
- Concevoir et réaliser des programmes d'analyse, de conversion et d'optimisation de représentations informatiques
- Utiliser à bon escient différents paradigmes et langages de programmation, en particulier en ce qui concerne la programmation fonctionnelle, orientée-objet et concurrente.
- Comprendre les enjeux des différents modèles de programmation concurrente et répartie et utiliser le modèle approprié.
- Définir un nouveau langage (syntaxe et sémantique) approprié à un contexte spécifique