2021-2022 / INFO0030-3

Projet de programmation

Durée

20h Th, 100h Proj.

Nombre de crédits

 Bachelier en sciences informatiques7 crédits 

Enseignant

Benoît Donnet

Langue(s) de l'unité d'enseignement

Langue française

Organisation et évaluation

Enseignement au deuxième quadrimestre

Horaire

Horaire en ligne

Unités d'enseignement prérequises et corequises

Les unités prérequises ou corequises sont présentées au sein de chaque programme

Contenus de l'unité d'enseignement

Le cours comporte un certain nombre d'exposés théoriques (+/- 10 cours) et divers projets de programmation (4) que les étudiants doivent résoudre, soit seul, soit en groupe.
Les exposés théoriques sont là pour introduire les concepts nécessaires à la réalisation des projets. La difficulté des projets est graduelle. Le cours théorique se compose de 4 parties:

Partie 1: Techniques Avancées de C

  • Chapitre 1: Définition de Type
  • Chapitre 2: Généricité
  • Chapitre 3: Arguments d'un Programme
Partie 2: Outils
  • Chapitre 1: Compilation
  • Chapitre 2: Librairie
  • Chapitre 3: Tests
  • Chapitre 4: Documentation
  • Chapitre 5: Débogage
  • Chapitre 6: Analyse de Performance
  • Chapitre 7: Gestion des Versions
Partie 3: Eléments de Programmation Evénementielle
  • Chapitre 1: Introduction aux Interfaces Graphiques
  • Chapitre 2: Applications Interactives
  • Chapitre 3: Pattern MVC
Partie 4: Introduction au Génie Logiciel
  • Chapitre 1: Bases du Génie Logiciel

Acquis d'apprentissage (objectifs d'apprentissage) de l'unité d'enseignement

L'objectif du cours est de permettre aux étudiants d'appliquer la matière vue dans le cadre des cours de programmation de Bloc 1 (INFO0946 et INFO0947) mais aussi d'apprendre à écrire des programmes, en C, d'une taille certaine qui sont à la fois correct, efficace, élégant, et lisible.
A la fin du cours, l'étudiant sera capable

  • de produire une architecture logicielle rigoureuse, efficace et élégante.
  • de manipuler les types opaques, les arguments d'un programme et d'écrire du code C "générique".
  • de manipuler les divers outils d'aide à la programmation, comme le Makefile, la génération de bibliothèque, les tests unitaires (en particulier la librairie Seatest), la documentation via doxygen, le débuggage (gdb, valgrind), le partage de code (svn, git-hub).
  • de comprendre certains mécanismes d'analyse de performance d'une application
  • de construire une insterface graphique à l'aide de GTK et du pattern MVC.
  • de discuter les différentes étapes de la construction d'un logiciel et les différentes méthodes de développement logiciel.
En plus de cela, l'étudiant aura acquis, durant le cours, diverses compétences transversales. A savoir la rédaction de rapport, la manipulation de LaTeX et la défense orale d'un rapport.

Savoirs et compétences prérequis

Le cours s'appuie sur plusieurs co-requis:

  • INFO0946: Introduction à la Programmation
  • INFO0947: Compléments de Programmation 
  • Bonne connaissance du français (oral et écrit)

Activités d'apprentissage prévues et méthodes d'enseignement

Application pratique (i.e., résolution des projets) des concepts/outils vus au cours.

Mode d'enseignement (présentiel, à distance, hybride)

Cours donné exclusivement en présentiel


Explications complémentaires:

Les cours théoriques se basent sur des slides (cfr. site web du cours).  Les étudiants sont amenés à compléter les slides par des notes personnelles durant le cours.  L'auditoire est amené à participer activement au cours.
Les énoncés des projets sont distribués (via la page Web du cours) durant le quadrimestre.
Le cours se donne au 2ème quadrimestre.

Lectures recommandées ou obligatoires et notes de cours

Les slides du cours sont disponibles, en version électronique (PDF) sur la page web du cours.  Une version imprimée est disponible auprès de la CDC (fin janvier).  Les étudiants sont supposés disposer des slides le plus rapidement possible. 
Les étudiants reçoivent un feedback individualisé sur leurs projets en cours d'année.
En plus de cela, les étudiants disposent de 2 syllabus:

  • Critères de Style, document décrivant des critères de style de programmation.  Une version électronique est disponible (PDF) sur la page Web du cours.  Une version imprimée est disponible auprès de la CDC (fin janvier).
  • Critères de Langage, document décrivant les diverses notions d'utilisation du langage, telles qu'enseignées dans ce cours.  Une version électronique est disponible (PDF) sur la page Web du cours.  Une version imprimée est disponible auprès de la CDC (fin janvier).
Aucun livre n'est obligatoire pour le cours. Néanmoins, les ouvrages suivants ont servi à l'élaboration du cours:
  • R. Malgouyres, R. Zrour, F. Feschet. "Initiation à l'Algorithmique et à la Programmation en C". Ed. Dunod 2011.
  • M. Divay. "Algorithmique et Structures de Données Génériques". Ed. Dunod 2004.
  • A. Braquelaire. "Méthodologie de la Programmation en C". Ed. Dunod 2005.
  • B. W. Kernighan, D. M. Ritchie. "La Langage C". Ed. Dunod 2004.
  • J.-L. Imbert. "Algorihmes Fondamentaux et Langage C". Ed. Ellipses 2008.
  • R. Mecklenburg. "Managing Projects with GNU make". Ed. O'Reilly 2004.

Modalités d'évaluation et critères

Travail à rendre - rapport


Explications complémentaires:

Les étudiants sont évalués uniquemet sur base des projets.  La pondération est la suivante:


  • Projet 1: 15% de la note finale
  • Projet 2: 20% de la note finale
  • Projet 3: 15% de la note finale
  • Projet 3: 50% de la note finale
Les 3 premiers projets sont à réaliser individuellement. L'attribution des points se fait sur base d'une grille de cotation générique (75% de la note du projet - la grille est disponible sur la page Web du cours dès le début du quadrimestre) et sur base des acquis d'apprentissage propres au projet (25% de la note du projet - les acquis d'apprentissage d'un projet sont indiqués lors de la distribution de l'énoncé).
Le 4ème projet est à faire en binôme.  Il nécessite en plus du code la production d'un rapport écrit, la démonstration et la défense orale du projet.  La répartition des points de ce projet est la suivante: 50% suivant la grille de cotation générique, 20% pour les acquis d'apprentissage propres au projet, 15% pour le rapport et 15% pour la démonstration + défense orale.
Les étudiants doivent rendre tous les projets.  En cas de non respect de cette règle (i.e., au moins un projet n'est pas rendu sans une raison valable), l'étudiant se verra attribuer une note d'absence pour le cours.   En cas d'échec en 1ère session, tous les projets dont la note est < 10/20 sont à refaire durant l'été (aucun support ne sera fourni par l'équipe pédagogique durant cette période). 


  • Dans le cadre du 4ème projet, il sera à refaire individuellement. Cependant, le rapport et la défense ne font plus partie du projet. Vous serez donc évalué à 75% selon la grille de cotation et les 25% restant porteront sur les apprentissages propres à ce projet.
  • L'étudiant ne peut pas, bien entendu, copier (ou s'inspirer) du projet réalisé par un de ses condisciples durant le quadrimestre. Il s'agirait là d'un cas avéré de plagiat.  L'etudiant peut, par contre, repartir de son propre code et l'améliorer en fonction du feedback reçu durant le quadrimestre.  Attention, si aucune amélioration substantielle n'est constatée par rapport à la version soumise durant le quadrimestre, une note nulle sera affectée au projet.
  • tous les projets devant être refaits doivent être rendus (deadline: 1er jour de la session) sous peine de se voir affecter une note d'absence pour la seconde session.

Stage(s)

Remarques organisationnelles

Le cours est composé d'une dizaine de cours théorique (typiquement, le cours théorique se termine aux alentours de Pâques).  Il n'y a pas de séances d'exercices/labos.  
Les étudiants sont invités à interagir avec l'équipe pédagogique via le forum ecampus, tant pour les questions relatives aux cours théoriques qu'aux projets.

Contacts

Coordinateur/Enseignant: Benoit Donnet -- Bureau I.15 (B28)
Assistante: Emeline Marechal -- Bureau I.73b (B28)