Programme des cours 2015-2016
INFO0946-1  
Introduction à la programmation
Durée :
30h Th, 20h Pr, 10h Labo.
Nombre de crédits :
Bachelier en sciences informatiques6
Nom du professeur :
Benoît Donnet
Langue(s) du cours :
Langue française
Organisation et évaluation :
Enseignement au premier quadrimestre, examen en janvier
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 alterne entre les aspects propres au langage C et les aspects algorithmiques. Les thèmes abordés sont les suivants: syntaxe et sémantique de base du langage C, algorithmes simples (parcours linéaire d'un tableau, opération mathématique cumulative, recherche dichotomique, introduction aux problèmes de tri), découpe en sous-problèmes, introduction à la méthodologie de développement (analyse du problème, invariant, fonction de terminaison), analyse d'un algorithme (complexité), structure de données de base (enregistrement, tableau, chaîne de caractères, fichiers), modularité d'un programme (fonction/procédure, variable globale), documentation du code par spécifications (programmation défensive), pointeurs et allocation dynamique de mémoire. La structure du cours est la suivante:
  • Introduction
  • Chapitre 1: Bloc, Variable, Instruction Simple
  • Chapitre 2: Structures de Contrôle
  • Chapitre 3: Méthodologie de Développement
  • Chapitre 4: Introduction à la Complexité
  • Chapitre 5: Structures de Données
  • Chapitre 6: Modularité du Code
  • Chapitre 7: Pointeurs
  • Chapitre 8: Allocation Dynamique
Acquis d'apprentissage (objectifs d'apprentissage) du cours :
L'objectif de ce cours est d'introduire, auprès des étudiants, les principes de base de l'informatique et, en particulier, les principes de base de la programmation.
La conception d'un algorithme correct et efficace sera mise en avant, en particulier dans le cadre d'une méthodologie stricte. A savoir, découpe d'un problème d'une certaine taille en sous-problèmes plus simples à résoudre, construction par invariant et documentation du code à l'aide de spécifications. Le langage de programmation étudié est le C.
A la fin du cours, l'étudiant devra être capable d'analyser un problème de taille moyenne, de proposer des structures de données, de découper le problème en sous-problèmes et de résoudre, en C, chaque problème de manière efficace. Il sera en outre à même d'évaluer les performances de sa solution.
L'étudiant sera aussi à même d'utiliser les bases de la ligne de commande sous Linux (notamment pour gérer son code source, le compiler et l'exécuter).
Savoirs et compétences prérequis :
Aucun pré-réquis en informatique ou programmation. Néanmoins, le cours suppose une bonne connaissance du français (parlé et écrit).
Activités d'apprentissage prévues et méthodes d'enseignement :
En plus du cours théorique, des séances d'exercices (i.e., séance de répétitions) sur papier sont organisées de manière presque hebdomadaire. Chaque séance d'exercices dure 2h. Chaque étudiant disposera de 13 séances d'exercices durant le quadrimestre. Les séances d'exercices sont obligatoires.  La liste des exercices à préparer pour chaque séance est donnée en début de quadrimestre.  Préparer ces exercices à la maison est obligatoire.
En outre, des séances (obligatoires) de laboratoire (i.e., exercices sur machine dans le laboratoire d'algorithmique) de 2h sont aussi organisées durant le quadrimestre. Chaque étudiant disposera de 5 séances de laboratoire.
  Enfin, les étudiants ont aussi la possibilité d'acquérir, durant le quadrimestre, des compétences transversales.  En particulier, une formation d'introduction à la ligne de commande et à l'environnement Linux sera proposée aux étudiants.
Mode d'enseignement (présentiel ; enseignement à distance) :
Le cours théorique se donne au 1er quadrimestre, en présentiel.
Le cours théorique se construit autour d'exemples et de petits exercices. L'auditoire est amené à participer activement au cours
Les étudiants sont aussi amenés à prendre des notes complémentaires (les slides ne sont pas auto-suffisants).
Lectures recommandées ou obligatoires et notes de cours :
Les notes du cours sont composées essentiellement de transparents (slides). Une version imprimée des slides (2/page) est disponible, dès la rentrée, à la Centrale des Cours. Une version électronique (PDF) des slides est aussi disponible sur la page web du cours. Les étudiants sont supposés disposer au plus vite d'une version des slides. Un syllabus d'exercices est disponible auprès de la Centrale des Cours. Une version électronique (PDF) est aussi disponible sur la page web du cours. Chaque étudiant est supposé disposer du syllabus d'exercices dès la première séance de répétitions ou de laboratoire.  Chaque étudiant est supposé disposer du syllabus d'exercices dès la première séance de répétition (typiquement, dès la deuxième semaine de cours).  A noter que la liste des exercices à préparer pour chaque séance est disponible sur la page Web du cours
Aucun livre n'est obligatoire dans ce cours. Cependant, l'étudiant désireux de disposer d'un support écrit additionnel peut se référer aux ouvrages suivants (ils ont servi pour l'élaboration du cours):
  • Claude Delannoy. "Programmer en Langage C". Editions Eyrolles. 2010 (5ème édition)
  • Rémy Malgouyres, Rita Zrour, Fabien Feschet. "Initiation à l'Algorithmique et à la Programmation en C". Editions Dunod. 2011 (2ème édition).
  • Yves Granjon. "Algorithmes en Pascale et en Langage C". Editions Dunod. 2004 (2ème édition).
Modalités d'évaluation et critères :
Les étudiants sont évalués de trois façons:
  • Interrogation de mi-quadrimestre. Une interrogation écrite a lieu le 04 novembre, de 8h30 à 10h30. Typiquement, l'interrogation porte sur l'Introduction et les chapitres 1 à 4 du cours (la matière sur laquelle porte la mini-session pourra être revue en fonction de la matière qui aura été abordée au cours). Cette interrogation est obligatoire (tout qui ne la présente pas sans justificatif se verra attribuer la note de 0/20) et dure 2h. La note de l'interrogation intervient pour 10% dans la note finale (i.e., 2/20) de janvier.  En cas d'absence à l'interrogation, un certificat médical doit être introduit au plus tard 2 jours après l'interrogation.  Dans le cas contraire, l'étudiant se verra attribuer une note nulle.
  • QCMs. Afin de nous assurer que chaque étudiant travaille un minimum au jour le jour, 5 séances de répétition (23/09, 14/10, 18/11, 02/12, 16/12) commenceront par une rapide interrogation (10 min) sous la forme d'un Questionnaire à Choix Multiples (QCMs). L'objectif d'un tel QCM est de s'assurer que l'étudiant a revu son cours avant d'aborder la séance de répétition. L'ensemble des QCMs intervient pour 10% dans la note finale (i.e., 2/20) de janvier.  En cas d'absence à l'un des QCMs, un certificat médical doit être introduit au plus tard 2 jours après le QCM.  Dans le cas contraire, l'étudiant se verra attribuer une note nulle pour ce QCM.
  • Examen. L'examen est écrit et, bien entendu, obligatoire. Il aura lieu en janvier. Il se fait à cours fermé et dure, généralement, 4 heures. La note de l'examen intervient pour 80% de la note finale (i.e., 16/20) de janvier
Attention, en cas d'échec (<10/20) à l'interrogation de mi-quadrimestre, l'étudiant devra suivre obligatoirement des séances de rémédiation qui auront lieu le jeudi après-midi. Les modalités de ces séances et l'agenda sont disponibles sur la page web de la Factulé. En cas d'échec en janvier, l'étudiant peut représenter l'examen en seconde session.  Dans ce cas, les notes de l'interrogation et/ou des QCMs interviendront dans la note finale uniquement si elles sont à l'avantage de l'étudiant.
Stage(s) :
Remarques organisationnelles :
Le cours se donne au 1er quadrimestre.
Le Professeur et l'Assistant organise, chaque séance, des permanences (les détails et les procédures de contact sont indiquées sur la page Web du cours, rubrique « Contact »).  Dans tous les cas, il est toujours possible de les joindre à un autre moment (mais avec une prise de rendez-vous, par email, préalable).
Contacts :
Professeur: Benoit Donnet (benoit.donnet@ulg.ac.be) -- Bureau 1.15 (B28) Assistant: Simon Liénardy (simon.lienardy@ulg.ac.be) -- Bureau R.83a (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, l'agenda du cours et un exemple d'examen.