Les développeurs et concepteurs des systèmes informatiques de demain seront confrontés à deux défis majeurs :
- les systèmes informatiques développés sont de plus en plus complexes ;
- les domaines d’application sont de plus en plus variés.
Pour pouvoir relever ces défis, le futur diplômé master en sciences informatiques devra :
- maîtriser les technologies actuelles en informatique mais également gérer leur constante évolution,
- innover en intégrant dans les systèmes informatiques des éléments en lien avec l’intelligence artificielle, le génie logiciel, les réseaux et la sécurité,
- s’insérer dans des équipes pluridisciplinaires, sa formation polytechnique d’ingénieur lui permettra d’être l’interface entre l’équipe de développement et les autres intervenants concernés par les enjeux scientifiques et techniques du projet.
Le futur ingénieur civil en informatique acquerra les connaissances et compétences nécessaires pour devenir :
- Un professionnel polytechnicien capable d’intégrer plusieurs disciplines scientifiques et techniques dans les domaines de l’information et de la communication
- Un homme de terrain capable de mettre en pratique les compétences et d’utiliser les outils performants de la recherche et de la technologie, en constante évolution.
- Un spécialiste ayant acquis des compétences de pointe dans sa discipline, par exemple, l’intelligence artificielle, les réseaux et la sécurité, le génie logiciel et les systèmes de programmation.
- Un manager qui gère des projets en équipe.
Polytechnique et multidisciplinaire, la formation offerte par l’Ecole polytechnique de Louvain (EPL) privilégie l'acquisition de compétences combinant théorie et pratiques ouvrant à des aspects d’analyse, de conception, de développement, de mise en œuvre, de maintenance, de recherche et d’innovation en y intégrant des aspects éthiques.
Ouverture internationale :
L’anglais est de fait la langue véhiculaire la plus utilisée dans les entreprises et en particulier dans le domaine technique. Le master est donc enseigné en anglais pour permettre à nos diplômés d’acquérir de bonnes compétences tant à l’oral qu’à l’écrit. Offrir un master en anglais, c’est un positionnement résolument ouvert sur l’international. L’usage de l’anglais permet d’accueillir les étudiants internationaux dans de bonnes conditions, tout en leur permettant d’être immergés dans un environnement francophone. Cela élargit également les possibilités d’échange et de co-diplômes avec des universités étrangères.
Au terme de ce programme, le diplômé est capable de :
1.1. Confronté à un problème informatique, il identifie les concepts, algorithmes et structures de données applicables pour le résoudre; et il en tire parti pour décomposer le problème en sous-problèmes et élaborer des méthodes de résolution informatique de ces derniers.
1.2. Confronté à un problème relevant de sa discipline, il choisit les outils de travail (p.e. environnement de développement, langage de programmation, logithèques et progiciels) qui lui permettront de réaliser une solution logicielle pertinente et correcte au regard des données du problème posé.
1.3. Confronté aux résultats obtenus par le raisonnement et la mise en oeuvre des outils et concepts qu’il a mobilisés, il prend le recul nécessaire pour en vérifier la pertinence, en ce qui concerne les fonctionnalités et la qualité de la solution recherchée. Dans ce contexte, il développera des tests et des vérifications pertinents qui peuvent garantir la qualité de la solution développée.
2.1. Avant de travailler sur la solution, il explore et analyse toutes les dimensions du problème posé en exploitant la documentation qui lui est fournie et en échangeant avec les porteurs et futurs utilisateurs du système informatique qui sera développé. Il les reformule dans un cahier des charges, où l’on retrouve non seulement les exigences relatives aux fonctionnalités du système, mais aussi les contraintes de délai et de facilité d’exploitation pour les futurs utilisateurs.
2.2. Dans la phase de conception, il modélise et imagine l’architecture du système informatique à développer en termes de composants fonctionnels (sous-systèmes) de façon à pouvoir en faciliter et optimiser le développement. Il tire parti des technologies disponibles et des méthodes de vérification de programme pour s’assurer, dès la phase de conception, du niveau de qualité du système ou du logiciel à implémenter.
2.3. Dans la phase d’analyse du système (serveur, OS, logiciel, …), il inventorie, évalue et compare les différentes technologies envisagées (matériel, langages, algorithmes, routage) dans le but de privilégier celles qui répondent au mieux aux différents critères de performance et de qualité explicités dans le cahier des charges.
2.4. Dans la phase d’implémentation de la solution, il démontre sa maîtrise des principes, techniques et outils de développement à sa disposition. Il crée un prototype du logiciel à concevoir pour vérifier que le logiciel correspond bien aux attentes du client. Il crée un environnement et une batterie de tests pour s’assurer que la solution développée répond aux fonctionnalités du cahier des charges. En appliquant les techniques de validation et de vérification de programme, il identifie, localise les bugs (bogues) et y remédie.
2.5. Sur base d’un développement réalisé à l’échelle d’un prototype, il définit et assure le suivi d’un plan de gestion de la qualité du système : monitoring, optimisation, maintenance, détection de pannes, protocoles de communication et d’intervention en cas de défaillance, etc. Il utilise des métriques et des outils pour évaluer/valider la qualité structurelle d’un système logiciel en terme de sécurité et de maintenabilité.
3.1. Confronté à un problème informatique dont le sujet et le contexte sont nouveaux pour lui, l’étudiant s’organise pour explorer le domaine considéré et se procurer les informations nécessaires pour faire un état des lieux via divers canaux à sa disposition (bibliothèque, Internet, chercheurs, industriels, ...)
3.2. Dans un TFE (couplé éventuellement avec un stage en entreprise) centré sur l’étude d’un problème inédit, il construit un modèle du phénomène sous-jacent dans une perspective de traitement informatique.
Sur base de ce modèle, il élabore et teste expérimentalement différents dispositifs informatiques susceptibles d’apporter une réponse au problème étudié. (par exempe, traitement informatique de l’image générée par un scanner pour faciliter un diagnostic médical)
3.3. Une fois en possession des résultats expérimentaux, il synthétise dans un rapport les conclusions de sa recherche, en mettant en évidence les paramètres clés et leur influence sur le comportement du phénomène étudié. Il en extrait des recommandations utiles pour développer et implémenter des solutions techniques innovantes dans des problématiques concrètes de l’environnement industriel considéré.
4.1. En tant que membre de l’équipe en charge du projet, il contribue à explorer la problématique et le contexte dans lequel se situe le projet dans le but d’inventorier les différentes parties prenantes, les enjeux et les contraintes en présence. Au terme de ce travail d’inventaire, il contribue à rédiger avec ses collègues un cahier des charges reprenant les éléments clés de cadrage du projet : problématique et destinataires de la solution, objectifs et indicateurs de performance, risques, contraintes de temps et ressources disponibles …
4.2. Le cadre du projet étant défini, il contribue à la planification de l’action. Il s’agit ici pour l’équipe de se mettre d’accord et de s’engager collectivement sur un plan de travail, des étapes intermédiaires, une répartition des tâches, des délivrables à fournir, et un calendrier à respecter pour rencontrer les objectifs du projet.
4.3. Il tire parti des atouts et compétences de ses équipiers et les fait profiter des siennes pour résoudre collectivement les difficultés qui se présentent inévitablement dans le développement du projet : que ce soit sur le plan technique ou sur le plan du fonctionnement collectif. Il prend le recul nécessaire pour dépasser les difficultés ou les conflits rencontrés au sein de l’équipe.
4.4. Vigilant sur le respect des engagements pris au cours de la planification du projet, il alerte ses équipiers sur les décisions à prendre en cas de dérive ou de blocage. Au cours des réunions de pilotage, il contribue à faciliter la prise de décisions nécessaires pour s’organiser (ou se réorganiser) en vue de rencontrer les objectifs du projet.
5.1. Confronté à un projet de développement informatique, il repère et interpelle les acteurs concernés par la mise en oeuvre et l’exploitation du système à développer. En échangeant avec tous les acteurs du projet, il prend la mesure de l’environnement et des enjeux du projet, leur fait expliciter leurs besoins et leurs attentes, de même que les contraintes à faire figurer au cahier des charges du projet. Et ceci tant sur le plan des fonctionnalités du système que sur ses conditions d’exploitation (interfaces avec d’autres applications, maintenance, évolution …).
5.2. Dans sa communication, il prend en compte le fait que ses interlocuteurs ne maîtrisent pas nécessairement le langage informatique et n’ont pas les mêmes représentations que lui sur les enjeux et performances de la solution envisagée par le biais de l’informatique.
5.3. Dans certaines phases critiques du déroulement d’un projet, il y des choix à faire, des décisions à prendre collectivement. Pour faciliter la prise de décision, le diplômé doit être capable de fournir à ses interlocuteurs une vue synthétique de la situation et des enjeux en présence. Dans cette perspective, il est capable de structurer et de communiquer l’information requise en utilisant des schémas ou des graphes adaptés à la représentation de l’architecture d’un système informatique.
5.4. Il sait se servir d’un ouvrage de référence ou d’un manuel relatif à l’emploi d’un langage informatique ou d’un logiciel, tant en anglais qu’en français. Il comprend un exposé technique fait en anglais.
5.5. Au cours du développement d’une application informatique, il en assure la traçabilité et la documentation dans un langage concis et précis : cahier des charges, structure du logiciel et des données qui y sont liées, mode opératoire. Il fait de même quand il s'agit de rédiger un rapport de synthèse décrivant et argumentant les choix (design et technologie) opérés dans le développement d’un projet.
6.1. Dans sa discipline, l’étudiant maîtrise le vocabulaire technique et les standards en usage, ce qui lui permet de décoder sans difficulté un article scientifique ou une documentation technique, ou encore de communiquer avec des spécialistes de sa discipline.
6.2. Étant concerné par la réalité industrielle des applications à développer, il se soucie naturellement de prendre en compte les enjeux socio-économiques d’un projet pour l’usager et son environnement - et ce, dès la rédaction d’un cahier des charges - notamment en matière de compatibilité avec l’évolution des technologies et de l’éthique de la profession.
6.3. En particulier dans le développement d’une application qui présente des enjeux industriels ou de service importants (ex : gestion des ambulances), il se préoccupe d’en assurer la robustesse et la fiabilité à l’épreuve des aléas de l’environnement de travail des utilisateurs.
6.4. Confronté à un problème inédit, il acquère et intègre de façon autonome les informations et les outils informatiques dont il a besoin même si ceux-ci n'ont pas été abordés explicitement dans son programme de cours.