Description générale :

L'objectif de la majeure informatique est l'acquisition de technologies, méthodologies, concepts avancés en informatique.

Elle est axée sur l’acquisition de compétences fondamentales en informatique indépendants d’un type d’application, ou d’une infrastructure logicielle particulière.

Cohérence entre les unités pédagogiques du groupe pédagogique:

Les unités pédagogiques sont:
  1. Socle technique de l'informatique (38h): ligne de commande unix, scripting bash, gestion de version de code, gestion des dépendances, automatisation de la production de code, debugging, documentation, licenses, publication, containerisation, intégration et déploiement continu
  2. Ingénierie logicielle (40h): modélisation de systèmes informatiques, les méthodes agiles, le recueil et la structuration des besoins, la conception d’architectures, les styles d’architectures, les patrons de conceptions, normes de codage et nommage, éthique, droit.
  3. Sécurité, Confiance, Confidentialité  (38h): cryptographie moderne, outils de la sécurité des réseaux, contrôle d’accès, mécanismes de gestion et de négociation de la confiance, gestion des données personnelles.
  4. Infrastructures Cloud et Edge (24h): principaux concepts et impacts commerciaux du cloud et de l'edge avex travaux pratiques utilisant  Amazon Web Services (AWS) plateforme.
  5. Interopérabilité des données et sémantique (20h): types de données, formats de données, langages de requêtage et de validation des données, valeur de la donnée, interopérabilité des données.

L'UP socle technique de l'informatique apporte des compétences principalement techniques, qui sont utiles pour tous les autres UP de la majeure.

L'UP ingénierie logicielle fournit des compétences méthodologiques et de bonnes pratiques pour le développement logiciel, systématiquement utiles pour tout projet de développement logiciel et systématiquement mises en places par les entreprises en lien avec l'informatique.

Les trois autres UP sont relativement indépendantes.

Parcours et cohérence avec les autres groupes pédagogiques:

  1. Les compétences fondamentales en informatiques acquises en Majeure Informatique peuvent servir et être complémentées par d'autres GP informatique tels que les Majeure Science des Données, les défi IA et Big Data, et les toolboxes Applications logicielles d'entreprise et Programmation Web, Mobile, Embarqué.
  2.  La Toolbox 3 PWME (Programmation Web, Mobile, Embarqué) est davantage axée sur l'apprentissage d'infrastructures logicielles et de langages de programmation particuliers
  3. Les étudiants souhaitant suivre le M2 Cyber Physical and Social Systems doivent suivre la majeure informatique en 2A ou en 3A.

This course is given in English as it corresponds to a Teaching Unit of the International MSc on Cyber Physical and Social Systems (CPS2): AI and IoT

Part 1: Everything from the Command Line

The command line interface is an essential tool for computer developers, both for its wealth of available tools and for its ability to increase productivity through the development of ad-hoc scripts.

Each of the other courses in the Computer Science Major makes use of the Shell command line interface, now available on all major operating systems.

The objective of the "Everything on the Command Line" part of this course is for students to master the fundamental concepts of the Shell command line, and to become comfortable with the command line interface for computer development projects.

The following concepts will be covered: 

  • the file system and working with it,
  • text editing and processing,
  • input/output streams and command chaining,
  • process management
  • basic scripting.

Part 2: Technological Foundation of Software Development

The second part of this course aims to discover the tools and methods that are essential to know in any modern software development project.

Students will discover:

  • Concepts involved throughout the development and implementation of software systems
  • Modern tools and methods adapted to the development and implementation of software systems

    The course consists of eight independent parts:

    1. Master your working environment
    2. Manage your source code
    3. Master your development environment and software dependencies
    4. Automate code production
    5. Debug, log, test, profile, analyse your software
    6. Document, license, publish, maintain your software
    7. Run your software anywhere with Docker
    8. Integrate and deploy your software continuously



    This course is given in English as it corresponds to a Teaching Unit of the International MSc on Cyber Physical and Social Systems (CPS2): CPS2 engineering and development

    Today's IT applications are increasingly complex. Resulting from the integration of multiple functionalities or pre-existing or non-existing services, they run in complex, distributed environments (e.g. Internet of Things, Cloud, Web). In addition to developing techniques for analyzing and processing the masses of data these applications have to cope with, the engineering of such applications is a major challenge if they are to be based on efficient, flexible and scalable architectures, so that they can integrate new data sources and new processes at the lowest possible cost.

    The engineering of such systems is a major issue combining modeling, architecture definition, agility and reactivity. It is based on increasingly rich technical foundations, covering the whole cycle of development and production. It is of first importance to understand the challenges and problems of developing such systems, to master and know the models and technologies to address these challenges in order to choose the right models, technologies and methods according to the context and pursued objectives.

    The pedagogical objectives of this course are to understand the current challenges and problems of the development of IT system that result from the bottom-up or top-down integration of existing systems (so called systems of systems), and that operate in distributed environments such as Web, IoT, Cloud, etc.

    The students will acquire the skills to be able:

    • to carry out an agile development of IT applications,
    • to model, design, architect and integrate different IT services, data sources and systems with the right models, architectures,
    • to efficiently develop, implement, deliver and put in production such systems with the right technologies and best practices

    The following concepts will be covered mainly through practical cases.

    • Introduction to Software Engineering and Agile software engineering methodologies
    • the SCRUM methodology
    • Unified Modeling Language (UML) 
    • proven models and good practices in the design and coding of software systems
    • common software architectural styles (REST, micro-services, publish-subscribe)

    This unit is an introduction to the security of information systems and deals with the following aspects :

    • Information systems security requirements, issues at stake and measures to be taken.
    • Modern cryptography (classic algorithms, private or secret key encryption, public key encryption, modular arithmetic, primary and random numbers);
    • Network security tools (filters, intrusion detection)
    • lControl of access (ACL, roles…) and mechanisms of trust management and negotiation
    • Personal data management.

    The aim of this course is to understand the main concepts of cloud computing and on-demand use of computer system resources, including data storage and computing power. The main service models will be taught such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS). Practical sessions will use a well known platform provider such as AWS, Azure, or Google Cloud. 



    This course is given in English as it corresponds to a Teaching Unit of the International MSc on Cyber Physical and Social Systems (CPS2): AI and IoT

    This lecture aims at understanding the data interoperability issues that arise from the integration of existing application, or the evolution of systems. The students will understand and use the main data formats, query languages, and schema definition languages. They will understand the importance of controlled vocabularies and ontologies, and the importance of relaxing data schemas to enable the injection of additional information in documents. The course combines theory and practice on the following topics:

    • Encoding base data types. Numbers, characters, date and time, languages, quantities and units of measures, colors, etc.
    • Data formats. Delimiter separated values, XML, JSON, YAML, data formats for configuration files, markup, multimedia, or 3D models.
    • Data schemas and semantics. Covering XML and JSON schema, controlled vocabularies and ontologies, the Resource Description Framework, rich structured data.
    • The value of data. Everything related to data storage and processing, the data value chain, open data, data interoperability, and the European strategy for data.