Programmation informatique

ComProg
Abstract

Les langages de programmation et conception d'algorithmes ont les objectifs suivants :

  • Initier les étudiants aux concepts de base de la programmation et aux outils de programmation ;
  • Étudier trois langages de programmation : C, comme exemple de langage de bas niveau ; Python, comme exemple de langage de haut niveau ; et MATLAB, comme exemple de langage spécifique à un domaine ;
  • Fournir aux étudiants des méthodes et des connaissances adaptées à la conception d'algorithmes efficaces ;
  • Fournir des méthodes pour l'analyse des ressources (mémoire et temps) utilisées par les algorithmes ;
  • Fournir un catalogue des algorithmes les plus connus et les plus efficaces pour les problèmes de calcul de base (tri, recherche, optimisation des ressources, etc.).

Modalités pédagogiques : Le cours est composé de cours magistraux, de séances de travaux pratiques sous forme de cours interactifs accélérés, et d'un mini projet étudiant. Les sessions de travaux pratiques consistent en des cours interactifs accélérés (2 sessions de 3 heures chacune pour chaque langage de programmation) où les étudiants ont la possibilité d'apprendre les concepts de programmation de base de différents langages de programmation.

Interactif :

Les sessions de travaux pratiques seront interactives et comprendront des discussions avec les étudiants et des exercices de travaux pratiques. Elles se dérouleront dans une salle de laboratoire équipée d'un projecteur.

Cours accéléré :

Le cours sera structuré en deux sessions de 3 heures chacune.

La première session servira d'introduction au langage de programmation et aux outils de programmation correspondants. Après une brève description de l'objectif et des caractéristiques de l'environnement et du langage de programmation, les étudiants seront guidés à travers des exercices de laboratoire pour se familiariser avec le logiciel et les concepts de programmation de base.

La deuxième session présentera des bibliothèques supplémentaires, en mettant l'accent sur celles utilisées dans les cours d'EURECOM.

La discussion sera alternée avec des exercices en laboratoire. Les étudiants disposeront d'un certain temps pour résoudre un problème, puis un étudiant volontaire sera invité à montrer sa solution aux autres étudiants en utilisant l'ordinateur connecté au projecteur.

L'objectif est de s'assurer que tous les étudiants participent aux discussions et présentent leur solution au moins une fois pendant le cours.

Règles du cours : La présence aux séances de travaux pratiques est obligatoire.

Bibliography

E-book : PILGRIM Mark. Dive into Python 3 (https://diveintopython3.problemsolving.io/) APRESS, 2009, 360 p.

Requirements

Aucun

Description

Les conférences porteront sur les sujets suivants :

Module sur les langages de programmation :

  • Introduction aux langages de programmation ;
  • Histoire et évolution des langages de programmation ;
  • Algorithmes et programmes ;
  • Entrée/sortie, expressions, instructions conditionnelles, boucles ;
  • Types de données, indexation des tableaux, définition des fonctions ;
  • Durée et portée des variables ;
  • Mémoire de tas et de pile, ramassage des ordures ;
  • Allocation et désallocation de la mémoire ;
  • Chaînes de caractères et structures de données ;
  • Récursion ;
  • Langage compilé, interpréteur ;
  • Paradigmes des langages de programmation ;
  • Introduction aux langages de programmation sélectionnés pour les sessions de laboratoire ;
  • Différences entre les langages de programmation étudiés ;
  • Aperçu rapide des dernières nouveautés en matière de programmation.

Module Conception d'algorithmes :

  • Introduction aux notations asymptotiques Big O, Omega, Theta et leurs applications à l'analyse asymptotique des algorithmes ;
  • Etude des équations de récurrence pour l'analyse de la complexité des algorithmes récursifs et dérivation des méthodes pour leur solution ;
  • Étude de la technique "diviser pour régner" pour la conception d'algorithmes et exemples d'application connexes ;
  • Étude de la technique de programmation dynamique pour la conception d'algorithmes et d'exemples d'application connexes ;
  • Étude de la technique de l'avidité pour la conception d'algorithmes et d'exemples d'application connexes ;
  • Graphes et algorithmes sur les graphes. Recherche en largeur et en profondeur de graphes et leurs applications. Graphes acycliques directs et ordonnancement topologique ;
  • Algorithmes pour le calcul des chemins de coût minimal ;
  • Algorithmes intelligents pour la recherche exhaustive : backtracking, branch-and-bound et exemples d'applications connexes.

Objectifs d'apprentissage : 

  • Connaître et comprendre la construction d'un langage de programmation ;
  • Adapter les connaissances acquises à d'autres langages de programmation ;
  • Connaître et comprendre la base des langages de programmation étudiés ;
  • Utiliser les outils de base du logiciel ;
  • Connaître et comprendre les différents paradigmes des langages de programmation ;
  • Concevoir des algorithmes efficaces ;
  • Analyser l'utilisation de la mémoire et la complexité temporelle des algorithmes ;
  • Connaître et comprendre la base des notations asymptotiques Big O, Theta et Omega ;
  • Connaître et comprendre les algorithmes les plus connus et les plus efficaces pour les problèmes de calcul de base (tri, recherche, optimisation des ressources, etc.).

Nombre d'heure : 42 heures

Evaluation :

  • Exercices de séances de travaux pratiques (40% de la note finale) ;
  • Examen final  sous forme de quiz (60% de la note finale).