Programmation avancée et outils de développement

Ref: 3IF1020

Description

Les objectifs de ce cours sont de présenter :
  • les principaux concepts que l'on retrouve dans les différents langages de programmation de haut niveau, et les variations sur leurs mises en œuvre ; un objectif secondaire est l'apprentissage des langages de programmation C et C++,
  • la programmation système,
  • les approches actuelles de développement des logiciels (DevOps, Software craftsmanship).
Une partie importante du temps est consacrée à la pratique.

Numéro de trimestre

SD9

Prérequis

  • 1CC1000 : Systèmes d'Information et Programmation
  • 1CC2000 : Algorithmique et Complexité

Syllabus

  • Concepts des langages de programmation
    • Introduction, panorama des langages de programmation, modules et fichiers
    • Approche impérative
    • Approche fonctionnelle
    • Approche objet
    • Approche générative
    • Compléments
  • Programmation système
    • Threads, processus
    • Mécanisme de communication et de synchronisation
  • Outils de développement avancés
    • DevOps
    • Intégration et déploiement continus
    • Software craftsmanship

Composition du cours

  • Cours magistraux : 12h00
  • Travaux dirigés : 3h00
  • Travaux pratiques : 15h00
  • Ateliers : 6h00
  • Travail personnel (exercices à terminer) : 24h00

Notation

Les exercices, commencés lors des travaux pratiques et terminés par un travail personnel, sont évalués et notés.

Ressources

Ce cours est constitué de cours magistraux pour présenter les concepts, de travaux pratiques permettant une appropriation opérationnelle de ces concepts et d'ateliers sur les aspects outillage et méthodologie.

Résultats de l'apprentissage couverts par le cours

À l'issue de ce cours, les élèves seront capables :
  • d'écrire des programmes corrects et performants en C et C++ ;
  • d'apprendre rapidement un nouveau langage de programmation ;
  • d'utiliser dans un programme les possibilités offertes par un système d'exploitation ;
  • de mettre en œuvre les approches modernes de développement de logiciels.

Description des compétences acquises à la fin du cours

C1.4: Design: specify, implement and validate all or part of a complex system
  • Specify, design, build and test complex software
C2.1: Deepen a field of engineering sciences or a scientific discipline
  • Knowledge of the main concepts of programming languages
  • Correct use of operating system services
C6.2: Design software
  • Improvement of skills

Support de cours, bibliographie

  • Livres
    • The C++ Programming Language - Bjarne Stroustrup
    • Programmer en C++ : Des premiers pas à la maîtrise de C++20 - Alain Gibaud - Ellipses
    • Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 - Scott Meyers
  • Supports
    • Transparents commentés projetés pendant les cours magistraux
    • Énoncés des exercices à réaliser lors des travaux pratiques et en travail personnel