cookieImage
2026-2027 / INFO0946-1

Introduction à la programmation

Durée

30h Th, 30h Pr, 10h Labo.

Nombre de crédits

 Bachelier en sciences informatiques5 crédits 

Enseignant

Benoît Donnet

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

Langue française

Organisation et évaluation

Enseignement au premier quadrimestre, examen en janvier

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 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 et introduction à la méthodologie de développement (analyse du problème, invariant, fonction de terminaison)
  • structure de données de base (enregistrement, tableau, chaîne de caractères, fichiers)
  • modularité d'un programme (fonction/procédure, variable globale) et 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: Structures de Données
  • Chapitre 5: Modularité du Code
  • Chapitre 6: Pointeurs
  • Chapitre 7: Allocation Dynamique

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

L'objectif général 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 en trois points: 

  • découpe d'un problème d'une certaine taille en sous-problèmes plus simples à résoudre
  • construction par invariant de boucle graphique
  • 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 en s'appuyant sur la méthodologie vue au cours
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). 

En outre, au-delà des compétences techniques, la pédagogie du cours (voir plus bas) cherche à développer trois "qualités" comportementales chez l'informaticien débutant: la rigueur, la persévérance, et l'autonomie.

  • Rigueur: un ordinateur est une machine qui exécute vite et bien les instructions qu'on lui a données.  Mais cette machine ne sait pas interpréter autre chose: même mineure, une erreur provoque le dysfonctionnement de la machine.  Le respect des consignes, la précision et l'exactitude sont  de rigueur en informatique
  • Persévérance: face à l'intransigeance de la machine, le débutant est confronté à ses nombreuses erreurs (les siennes, pas celles de la machine!!) et sa tendance naturelle est de passer à autre chose.  Mais le papillonnage (ou zapping) est une très mauvaise stratégie en informatique: pour s'exécuter correctement, un programme doit être finalisé.  L'informatique nécessite donc "d'aller au bout des choses".
  • Autonomie: programmer soi-même des algorithmes qu'on a définis est sans doute le meilleur moyen pour assimiler au mieux les principales structures algorithmiques et pour mieux comprendre ses erreurs en se confrontant à l'intransigeante impartialité de l'ordinateur, véritable "juge de paix" des informaticiens.  Par ailleurs, l'évolution continuelle et soutenue des langages de programmations et des ordinateurs nécessitent de se tenir à jour régulièrement et seule la pratique systématique (résolution d'exercices supplémentaires du syllabus) permet de "ne pas perdre pied".

Savoirs et compétences prérequis

Aucun pré-réquis en informatique ou programmation (mais il est quand même préférable d'être à l'aise sur un ordinateur).
Cependant, le cours suppose une très bonne connaissance du français (parlé et écrit).  En effet, la bonne résolution d'un problème nécessite, avant tout, de le comprendre.

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

Afin de mieux comprendre l'organisation pédagogique du cours, nous allons emprunter une métaphore inspirée de Henri-Pierre Charles (Henri-Pierre Charles.  Initiation à l'Informatique.  Ed. Eyrolles.  2000):

- Pédagogie par Objectifs:  le solfège est l'étude des principes élémentaires de la musique et de sa notation.  Le musicien "fait ses gammes" et chaque exercice a un objectif précis pour évaluer l'apprentissage du "langage musical".  Il en va de même pour l'informaticien débutant confronté à l'apprentissage d'un langage de programmation (le C pour nous).

- Pédagogie par l'Exemple: l'apprentissage des grands classiques permet au musicien de s'approprier les bases du solfège en les appliquant à ces partitions connues et en les (re)jouant lui-même.  L'informaticien débutant, en (re)codant lui-même les algorithmes bien connus (et en refaisant à la maison les problèmes résolus ensemble en séance théorique) se constituera ainsi une base de réflexes de programmation en "imitant" ces algorithmes.

- Pédagogie de l'Erreur: les bogues (ou bugs en anglais) sont à l'informaticien ce que les fausses notes sont aux musiciens: des erreurs.  Ces erreurs sont nécessaires dans l'acquisition de la connaissance.  Un élève a progressé si, après s'être trompé, il peut reconnaître qu'il s'est trompé, dire où et pourquoi il s'est trompé, et comment il recommencerait sans produire les mêmes erreurs.

- Pédagogie par Problèmes: connaissant ses "classiques" et les bases du solfège, le musicien devenu plus autonome peut envisager sereinement la création de ses propres morceaux.  Le développement d'un projet informatique ambitieux sera "mis en musique" au cours du Q2.

L'implémentation de cette pédagogie, dans le cours INFO0946, se fera en 4 parties:

- Cours Théorique: le cours théorique est là pour présenter, aux étudiants, le "solfège" de la programmation, des algorithmes typiques mais aussi une méthodologie de résolution de problèmes.  Le cours théorique se donne (sauf exception) 2h par semaine.  Le cours théorique se donne, généralement, en présentiel avec des slides (une participation active des étudiants est donc attendue).  Des petits exercices de synthèse sont aussi résolus durant les séances théoriques. 

- Séance de Répétition:  il s'agit de séances d'exercices sur papier organisées de manière presque hebdomadaire.  Chaque séance d'exercices dure 2h.  La présence aux séances d'exercices est obligatoire.  La liste des exercices qui seront abordés lors de chaque séance est donné en début de quadrimestre, sur le site web du cours.  Il est vivement conseillé de préparer activement chaque séance de répétition en préparant, à la maison, les exercices de la séance à venir.  

- Utilisation de CAFÉ 3.0: l'outil CAFÉ 3.0 sera utilisé tout au long du quadrimestre, pour des diverses activités à réaliser à la maison (Challenges de Programmation, et des QCMs d'entrainement après chaque cours théorique).  L'utilisation de CAFÉ 3.0 est certificative (cfr. plus bas)

- Collaborative Design & Build: une activité collaborative (organisée sous la forme d'un jeu de rôle) vous permettant de sentir l'importance de chacune des étapes de la méthodologie de programmation. Trois séances seront organisées au cours du quadrimestre, à chaque fois à des moments clés.  La participation à CDB est obligatoire.

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, à distance, hybride)

Cours donné exclusivement en présentiel


Informations complémentaires:

Le cours se donne au 1er quadrimestre et se compose de séances théoriques, de répétitions, d'activités la maison à réaliser sur la plateforme CAFÉ 2.0 et de l'activité CDB.

Supports de cours, lectures obligatoires ou recommandées

Plate-forme(s) utilisée(s) pour les supports de cours :
- eCampus

Autre(s) site(s) utilisé(s) pour les supports de cours
- CAFÉ 3.0 (https://cafe.uliege.be)


Informations complémentaires:

Les notes du cours sont composées essentiellement de transparents (slides). Une version imprimée des slides (2 slides/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.  En raison de l'épidémie de covid-19, il est possible que les notes de cours soient complétées par des capsules vidéos.

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

Examen(s) en session

Toutes sessions confondues

- En présentiel

évaluation écrite

- En distanciel

évaluation écrite

Evaluation continue

Interrogation(s) hors session


Informations complémentaires:

Examen(s) en session

Toutes sessions confondues

- En présentiel

évaluation écrite

- En distanciel

évaluation écrite

Evaluation continue

Interrogation(s) hors session


Informations complémentaires:

Les étudiants sont évalués principalement de deux manières:    

1. Evaluations Formatives

Elles ont lieu tout au long du quadrimestre et ont pour but d'évaluer le travail hebdomadaire de l'étudiant.  

Progress Tracker

Afin de nous assurer que chaque étudiant travaille un minimum au jour le jour, CAFÉ 3.0 inclut une activité appelée Progress Tracker.  Le Progress Tracker est inspiré (d'un point de vue esthétique) de Duolingo. Le parcours du Progress Tracker correspond aux différents chapitres du cours.  Chaque chapitre, sur le Progress Tracker, est divisé en sections et, pour chaque section, l'activité correspond à une rapide interrogation (10min) sous la forme d'un Questionnaire à Choix Multiples (QCMs). L'objectif d'un tel QCM est de s'assurer que l'étudiant revoit son cours sur une base hebdomadaire.   Les QCMs apparaissent petit à petit au cours du quadrimestre, en fonction de l'évolution du cours.  Cela vous permet donc de vous positionner par rapport à la progression du cours.

CAFÉ 3.0

Afin de nous assurer que chaque étudiant manipule un minimum de code durant le quadrimestre, 5 Challenges (+ un challenge initial pour apprendre à utiliser le système) seront proposés. Chaque Challenge consiste en un petit problème à résoudre. Le code doit alors être soumis sur CAFÉ 3.0. Le code est corrigé automatiquement par le système CAFÉ et un feedback + feedforward est envoyé, dans le Centre de Notification de CAFÉ 3.0, à l'étudiant dans les minutes qui suivent la soumission. 

Le feedback correspond aux résultats de votre code par rapport à des scripts de tests, le feedforward vous donne les clés pour aller trouver de l'aide dans le cours. Chaque Challenge est évalué sur 20. 

Pour chaque Challenge, vous avez la possibilité de le soumettre trois fois maximum jusqu'à la deadline (afin d'éviter un comportement de type "essai/erreur"). Une fois la deadline passée, il vous est toujours possible de réaliser le Challenge (autant de fois que vous le désirez) mais vous n'engrangez plus de gemmes (cfr. ci-dessous).

Les Challenges sont à faire seuls et sans aide extérieure (e.g., ChatGPT ou n'importe quelle IA générative).  

Utlisation de CAFÉ 3.0

Différentes activités sont proposées sur CAFÉ 3.0 tout au long du quadrimestre: QCMs, Challenges. La réalisation de ces activités et les résultats que vous obtenez vous permettent de collecter, tout au long du quadrimestre, des gemmes (ou diamants). À la fin du quadrimestre, vos gemmes seront convertis en points (sur /20) et vous permettront d'acquérir 5% de la note finale.


2. Evaluations Certificatives

Elles se présentent sous la forme d'interrogations d'une durée plus importante que les évaluations continues et d'un niveau de complexité plus élevé.  L'objectif est de faire un "arrêt sur image" des compétences acquises par l'étudiant, les évaluer et, le cas échéant, remédier aux difficultés.

Interrogation de mi-quadrimestre

Une interrogation écrite a lieu lors de la semaine de Toussaint. Typiquement, elle porte sur l'Introduction et les chapitres 1 à 3 du cours (la matière pouvant être revue en fonction de la matière qui aura été abordée au cours).

Cette interrogation est obligatoire et dure 2h. Tout qui ne présente pas l'interrogation sans justificatif valable (i.e., un certificat médical) se verra attribuer une note de 0. La justification de l'absence sera remise en main propre au Professeur ou envoyée par mail (version scannée) ou courrier ordinaire au plus tard dans les 2 jours suivant l'épreuve.

En cas d'échec à l'interrogation (note < 10/20), l'étudiant devra suivre diverses séances de remédiation. L'assistance à ces séances, en cas d'échec, est obligatoire. 

La note de l'interrogation intervient pour 20% dans la note finale (i.e., 4/20) de janvier.

Examen

L'examen est écrit et, bien entendu, obligatoire.  Il se fait à cours fermé et dure 4 heures.   Un exemple d'examen est disponible sur la page Web du cours. 

L'examen porte sur l'entièreté de la matière et comporte uniquement des exercices. Il intervient pour 75% (i.e., 15/20) de la note finale.

3. Seconde Session

en cas d'échec en Janvier (i.e., note finale < 10/20), l'étudiant a la possibilité de représenter l'examen au mois de Juin et/ou au mois d'août. Attention, dans ce cas la note finale (de juin et/ou août) ne comprendra plus les notes de l'utilisation de CAFÉ 3.0 et interrogation de mi-quadrimestre. Cela signifie donc que la note finale sera donnée à 100% par l'examen

L'utilisation d'une IA générative (e.g., ChatGPT) est strictement interdite dans le cadre de ce cours et mènera, si avérée, à des sanctions équivalentes à une fraude.

Stage(s)

Remarques organisationnelles et modifications principales apportées au cours

Le cours se donne au 1er quadrimestre, le mercredi matin et certains mercredi saprès-midi.  L'agenda détaillé du cours est donné en début de quadrimestre.

Le Professeur et l'Assistante sont disponibles pour répondre aux questions par email, via le forum sur la page Web (solution privilégiée de façon à ce que la question et la réponse profitent à tous) ou, si nécessaire, lors d'un rendez-vous dans nos bureaux.

Contacts

Professeur: Benoit Donnet  (email)

Assistant: Géraldine Brieven (email)

Association d'un ou plusieurs MOOCs