Programme des cours 2015-2016
INFO0030-3  
Projet de programmation
Durée :
20h Th, 100h Proj.
Nombre de crédits :
Bachelier en sciences informatiques7
Nom du professeur :
Benoît Donnet
Langue(s) du cours :
Langue française
Organisation et évaluation :
Enseignement au deuxième quadrimestre
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 du cours :
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) du cours :
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:
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 ; enseignement à distance) :
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 :
Les étudiants sont évalués sur base des projets et d'un examen écrit ayant lieu en juin durant la session.
La pondération est la suivante:
  • Projet 1: 10% de la note finale
  • Projet 2: 10% de la note finale
  • Projet 3: 10% de la note finale
  • Projet 4: 50% de la note finale
  • Examen Ecrit: 20% 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 et la défense orale du rapport.  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éfense orale.
L'examen a pour but de vérifier les connaissances théoriques et pratiques des étudiants.  Il est écrit et se fait à livre fermé.  L'examen dure 4h et a lieu généralement avant la session d'examens de juin (typiquement lors de la dernière semaine de cours).  Les étudiants doivent rendre tous les projets pour pouvoir passer l'examen.  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 ne pourra pas avoir accès à l'examen et 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).  L'examen doit lui aussi être repassé.
  • Dans le cadre du quatriè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.
  • La note de l'examen peut être reportée en seconde session uniquement si elle est supérieure à 10/20. L'étudiant doit en faire explicitement la demande au Professeur.
  • Vous ne pouvez pas, bien entendu, copier (ou vous inspirer) du projet réalisé par un de vos condisciples durant le quadrimestre. Il s'agirait là d'un cas avéré de plagiat.  Vous pouvez par contre repartir de votre propre code et l'améliorer en fonction du feedback reçu durant le quadrimestre.
Stage(s) :
Remarques organisationnelles :
Un page web décrivant en détail le cours est disponible: http://www.montefiore.ulg.ac.be/~info0030
Contacts :
Professeur: Benoit Donnet,(benoit.donnet@ulg.ac.be) -- Bureau I.15 (B28) Assistant: Korian Edeline (korian.edeline@ulg.ac.be) -- Bureau R.71/b (B28)
Notes en ligne :
Site Web du cours
Le site Web du cours est important car il regroupe les diverses informations de contact, les notes de cours, les énoncés des projets et toutes les ressources utiles (compilateur, système d'exploitation, ...) pour la réalisation des projets