Logo ÉTS
Session
Cours
Responsable(s) Florent Hernandez

Se connecter
 

Sauvegarde réussie
La notification a été envoyée
Echec de sauvegarde
Avertissement
École de technologie supérieure

Responsable(s) de cours : Florent Hernandez


PLAN DE COURS

Été 2025
INF155 : Introduction à la programmation (4 crédits)





Préalables
Aucun préalable requis
Unités d'agrément
Total d'unités d'agrément : 64,8 100,0 %




Qualités de l'ingénieur

Qn
Qualité visée dans ce cours  
Qn
  Qualité visée dans un autre cours  
  Indicateur enseigné
  Indicateur évalué
  Indicateur enseigné et évalué



Descriptif du cours
Au terme de ce cours, l’étudiante ou l’étudiant aura acquis des connaissances de base solides de l’algorithmique et de la programmation qui lui permettront de solutionner des problèmes reliés à sa discipline. Plus spécifiquement, il aura fait l’apprentissage de méthodologies lui permettant d’aborder la programmation avec aisance, la conception d’algorithmes pour résoudre des problèmes de nature scientifique et la traduction de ces algorithmes en langage C.

Mémoire et programme : types de base et concept de variable, adresse et contenu, introduction à la notion de pointeur. Structure d’un programme : instructions et flot d’exécution. Langage de l’algorithme et langage de programmation. Structures de contrôle et algorithmes de base : structures séquentielles, structures décisionnelles et itératives. Fonctions : passage de paramètres, pointeurs et prototypes. Techniques de résolution de problème. Structures de données : tableaux statiques et chaînes de caractères, introduction aux structures. Manipulation de fichiers. Configuration matérielle et architecture des micro-ordinateurs.

Séances de laboratoire axées sur la réalisation d’exercices et de programmes en langage C dans un environnement graphique sur micro-ordinateur.



Objectifs du cours

Ce cours a pour objectif de permettre à l’étudiante ou l'étudiant de maîtriser le fonctionnement des ordinateurs et d'acquérir des compétences en programmation afin de pouvoir résoudre des problèmes liés à leur discipline. Le langage de programmation est le C (norme C99).

Plus spécifiquement, ce cours permet à l’étudiante ou l'étudiant de :

  • concevoir des algorithmes pour résoudre des problèmes scientifiques;
  • développer une maîtrise du langage C;
  • acquérir une méthodologie lui permettant d’aborder d’autres langages de programmation.

Le cours met l’accent sur la portabilité du code et des solutions. Les environnements de développement et compilateurs utilisés peuvent varier d’une séance à l’autre, et les environnements multiplateformes sont privilégiés par les enseignantes et enseignants.




Stratégies pédagogiques

Organisation des séances :

  • 3 heures de cours par semaine;
  • 3 heures de laboratoire par semaine.


Le matériel disponible sur la page Moodle du cours est accessible à l'adresse suivante : https://ena.etsmtl.ca. Du matériel pédagogique supplémentaire pourrait vous être fourni par l'enseignant(e).


Les laboratoires ont pour principaux objectifs de :

  • consolider l'assimilation des concepts à travers des activités pratiques;
  • développer des compétences en programmation en réalisant des programmes dans le cadre des travaux pratiques.



Utilisation d’appareils électroniques

L'étudiante ou l'étudiant doit disposer d'un ordinateur portable permettant d'exécuter l'environnement de développement du cours. L'ordinateur portable sera utilisé autant durant les séances de cours que de travaux pratiques, ainsi que pour les examens. 




Horaire
Groupe Jour Heure Activité
01 Lundi 18:00 - 21:30 Activité de cours
Mercredi 18:00 - 21:00 Laboratoire



Coordonnées du personnel enseignant le cours
Groupe Nom Activité Courriel Local Disponibilité
01 David Beaulieu Activité de cours David.Beaulieu@etsmtl.ca B-2568
01 David Beaulieu Laboratoire David.Beaulieu@etsmtl.ca B-2568



Cours

HORAIRE DES COURS

Ce tableau est donné à titre indicatif. L'enseignante ou l'enseignant peut modifier l’ordre de présentation des notions pour des raisons pédagogiques.
 

COURS

MATIÈRE

1 à 4

Architecture de base d’un ordinateur : composantes matérielles (E/S, mémoire, ...).

Notions élémentaires de programmation : types de base du C avec leurs opérateurs et conversions automatiques, variables, entrées/sorties de base, instructions conditionnelles et itératives et l’algorithmie de base, comparaison et compatibilité des types numériques, opérateurs binaires.

Description première de la qualité de programmation attendue : commentaires, indentation, utilisation de constantes symboliques et choix des identificateurs.

Compilation et commandes de préprocesseur : Étapes de compilation, commandes de pré-processeur (#define, #include, et #if..#endif).

Fonctions : déclaration, commentaires standard à la déclaration, paramètres effectifs et paramètres formels, valeur de retour, passage par valeur, portée et durée de vie des variables, factorisation et modules de fonctions.

Pointeurs : indirection, déclaration, initialisation et assignation, passage par adresse.

5 à 8

Algorithme et résolution de problèmes : pseudocode, trace d’exécution, diviser pour régner, approche descendante, approche ascendante.

Tests unitaires : Conception d’algorithmes (élaboration des tests) et implémentation de tests unitaires.

Tableaux : déclaration, initialisation, accès aux éléments, passage en paramètre, tableaux de tableaux, arithmétique des adresses et algorithmes de base, déclarations de types avec typedef, fouilles et tris.

Modules : concepts d'interface (.h) et d'implémentation/définition (.c), organisation de modules (dépendances, services offerts), masquage de l'information (représentation cachée).

Chaînes de caractères : construction d'une chaine de caractères et fonctions offertes par le langage.

Enregistrements : déclaration, accès aux membres et passage en paramètre.

9 à 13

Allocation dynamique de la mémoire : L’allocation programmée de mémoire, gestion de la mémoire allouée dynamiquement, tableaux 1D et 2D alloués dynamiquement, allocation dynamique de structures de données..

Fichiers texte et binaire : FILE * et ses fonctions classiques.

Notions complémentaires optionnelles au gré de l’enseignant et parfois nécessaires aux travaux (piles, files ou récursion).


Contenu asynchrone optionnel : 

  • Atelier de formation à l'outil de gestion de versions et de travail collaboratif Git (avec GitHub) : Cet atelier est présenté à travers des capsules vidéo et des exercices à réaliser en ligne. Cette matière n'est pas évaluée durant les examens mais est nécessaire et sera évaluée pour la réalisation des TPs. 



Laboratoires et travaux pratiques

Les laboratoires ont pour objectif de mettre en pratique les notions présentées lors des cours théoriques. À chaque séance, l’enseignante ou l'enseignant fournit aux étudiantes et étudiants une série d’exercices permettant d’appliquer directement les concepts abordés lors du cours précédent. La réalisation de ces exercices constitue une partie essentielle du processus d’apprentissage.

Ces séances offrent également aux étudiantes et étudiants l’opportunité de réaliser les exercices avec l’assistance d’auxiliaires d’enseignement. Celles et ceux ayant complété les exercices avant la séance peuvent profiter de ce temps pour avancer sur leur travail pratique.




Utilisation d'outils d'ingénierie

Les environnements de développement intégrés (EDI) recommandés pour ce cours incluent CLion et Microsoft Visual Studio. Toutefois, d'autres environnements peuvent être utilisés selon vos préférences ou besoins spécifiques.




Évaluation

Les dates de remise des travaux pratiques indiquées dans ce tableau sont fournies à titre indicatif. En cours de session, votre enseignante ou votre enseignant vous informera à l’avance de tout changement apporté à l’horaire d’évaluation des travaux pratiques.

 

Évaluation Pondération *Semaine(s) 01 02 03 05

Laboratoire 1

10%

3 ou 4

12 mai      
Laboratoire 2 10% 4 ou 5 28 mai      
Laboratoire 3 10% 5 ou 6 11 juin      

Examen intra

20%

7 ou 8

20 juin      

TP

15%

9 à 13

01 aout      

Examen final

35%

Période des examens finaux

 

À propos des travaux pratiques :

  • Ils sont communs pour tous les groupes.

  • Ils ont pour objectif d’appliquer, à travers un problème réaliste, les concepts et méthodes de programmation abordés lors des cours théoriques. Les étudiantes et étudiants sont tenus de produire des travaux qui non seulement répondent au problème de l’énoncé, mais qui respectent avant tout les standards de qualité et les bonnes pratiques enseignés (respect des normes, décomposition en sous-programmes ou modules, etc.).

    La cohérence et l’optimalité des algorithmes implémentés sont également des critères d’évaluation importants. Il est à noter que la part attribuée à l’exécution correcte du programme ne pourra dépasser 40% de la note globale d’un travail pratique.

  • Ils sont obligatoirement réalisés en équipe. Chaque équipe soumet un seul travail ou rapport par exercice.

  • Chaque membre recevra une note individuelle, laquelle ne pourra excéder la note obtenue par l’équipe. Cette note individuelle sera ajustée en fonction de l’implication de chaque étudiante ou étudiant, selon une méthode d’évaluation déterminée par l’enseignant(e).

  • Dans le but de respecter la loi sur la langue française dans les universités, les travaux et le code doivent être, dans la mesure du possible, en français. En tout état de cause, les commentaires de code doivent obligatoirement être écrits en français uniquement. Ces règles s’appliquent autant au matériel fourni par les enseignant(e)s qu’aux documents et travaux remis par les étudiant(e)s.

  • Ils évaluent les notions suivantes : 

    • TP : Toutes les notions enseignées dans le cours, avec un accent mis sur la matière enseignée après l'examen intra. Le travail demandé comporte entre 800 et 1000 lignes de code, incluant les commentaires et l'aération du code.

À propos des laboratoires notés :

  • Les évaluations se font de manière individuelle et sont généralement réalisées durant les séances de laboratoire.
  • Aucune documentation n’est permise, à l’exception d’une feuille de référence uniforme fournie à tous les groupes du cours.
  • La présence à l’ÉTS est obligatoire, même si le cours-groupe est offert en format hybride.
  • Les laboratoires notés peuvent se faire sur papier ou sur l'ordinateur de l'étudiante ou de l'étudiant :
    • L'usage d'un environnement contrôlé (SafeExamBrowser) est obligatoire.
    • L'étudiant(e) est responsable d’installer et de vérifier le bon fonctionnement de l’environnement d’examen avant le jour de l’évaluation. Tout problème doit être signalé à l’enseignante ou l'enseignant au moins 5 jours ouvrables avant l’examen.

À propos des examens intra et final :

  • Les examens intra et final ont une durée de 3 heures.
  • Aucune documentation n’est permise, à l’exception d’une feuille de référence uniforme fournie à tous les groupes du cours.
  • L'examen final est commun à tous les groupes, cumulatif, et évalue l'ensemble des concepts décrits dans la fiche du cours.
  • L'examen final se fait sur l'ordinateur portable de l'étudiante ou de l'étudiant :
    • L'usage d'un environnement contrôlé (SafeExamBrowser) est obligatoire.
    • L'étudiant(e) est responsable d’installer et de vérifier le bon fonctionnement de l’environnement d’examen avant le jour de l’évaluation. Tout problème doit être signalé à l’enseignante ou l'enseignant au moins 5 jours ouvrables avant l’examen.

À propos du double seuil : 

  • Une note moyenne pondérée de 50% est exigée pour l’ensemble des évaluations à caractère individuel. Ce seuil est une condition nécessaire à la réussite du cours mais ne la garantit pas.



Double seuil
Note minimale : 50



Dates des examens intra
Groupe(s) Date
1 20 juin 2025



Date de l'examen final
Votre examen final aura lieu pendant la période des examens finaux, veuillez consulter l'horaire à l'adresse suivante : https://www.etsmtl.ca/programmes-et-formations/horaire-des-examens-finaux


Politique de retard des travaux
Tout travail (devoir pratique, rapport de laboratoire, rapport de projet, etc.) remis en retard sans motif valable, c’est-à-dire autre que ceux mentionnés dans le Règlement des études (1er cycle, article 7.2.5/ cycles supérieurs, article 6.5.2) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignante ou l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.



Absence à une évaluation

Afin de faire valider une absence à une évaluation en vue d’obtenir un examen de compensation, l’étudiante ou l’étudiant doit utiliser le formulaire prévu à cet effet dans son portail MonÉTS pour un examen final qui se déroule durant la période des examens finaux ou pour tout autre élément d’évaluation surveillé de 15% et plus durant la session. Si l’absence concerne un élément d’évaluation de moins de 15% durant la session, l’étudiant ou l’étudiante doit soumettre une demande par écrit à son enseignante ou enseignant.

Toute demande de validation d’absence doit se faire dans les cinq (5) jours ouvrables suivant la tenue de l’évaluation, sauf dans les cas d’une absence pour participation à une activité prévue aux règlements des études où la demande doit être soumise dans les cinq (5) jours ouvrables avant le jour de départ de l’ÉTS pour se rendre à l’activité.

Toute absence non justifiée par un motif majeur (voir articles 7.2.6.1 du RÉPC et 6.5.2 du RÉCS) entraînera l’attribution de la note zéro (0).




Infractions de nature académique
Les clauses du « Règlement sur les infractions de nature académique de l’ÉTS » s’appliquent dans ce cours ainsi que dans tous les cours du département. Les étudiantes et les étudiants doivent consulter le Règlement sur les infractions de nature académique (www.etsmtl.ca/a-propos/gouvernance/secretariat-general/cadre-reglementaire/reglement-sur-les-infractions-de-nature-academique) pour identifier les actes considérés comme étant des infractions de nature académique ainsi que prendre connaissance des sanctions prévues à cet effet. À l’ÉTS, le respect de la propriété intellectuelle est une valeur essentielle et tous les membres de la communauté étudiante sont invités à consulter la page Citer, pas plagier ! (www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).

Systèmes d’intelligence artificielle générative (SIAG)
L’utilisation des systèmes d’intelligence artificielle générative (SIAG) dans les activités d’évaluation constitue une infraction de nature académique au sens du Règlement sur les infractions de nature académique, sauf si elle est explicitement autorisée par l’enseignante ou l’enseignant du cours.



Documentation obligatoire

S.O.




Ouvrages de références

Référence optionnelle

LAZARD, Emmanuel. Pratique performante du langage C, Ellipses, 2013.

Manuel de référence qui aborde l'intégralité de la matière. Les concepts y sont abordés par des exemples. Beaucoup de conseils sont donnés afin d'acquérir une méthode de programmation performante et d'éviter les pièges communs. 

Références utiles

DELANNOY, Claude. Programmer en langage C - Cours et exercices corrigés, 5e édition, Eyrolles, 2014.

Un autre bon ouvrage de référence qui couvre en grande partie la matière abordée dans ce cours de façon très pédagogique et illustrée par beaucoup d'exemples. 

MILLER, Lawrence H. et Alexander E. QUILICI. The Joy of C – Programming in C, 3e édition, John Wiley & Sons, 1997.

Excellent manuel sur le C complet. Rien n’est laissé au hasard. Tous les étudiants auraient avantage à connaître ce bouquin. Il a été utilisé très longtemps dans le cours INF155.

KOENIG, Andrew. C traps and pitfalls, 5e édition, Addison-Wesley, 1989.

Un tout petit livre qui aborde les embûches courantes rencontrées par le programmeur en C. Bien que notre cours dépasse largement les notions présentées dans ce livre, celui-ci recèle des informations que tout étudiant doit savoir à la fin du cours.

HARBISON III, P. SAMUEL & Guy L. STEELE Jr. C – A reference manual, 5e édition, Prentice Hall, 2002.

Ce livre décrit le langage C et un style de programmation axé sur la portabilité et la maintenance. Il ne se veut pas un guide d’apprentissage de la programmation en C. En plus d’être extrêmement précis, il discute de la norme C99. Il est très avancé et dépasse très largement les notions présentées dans le cours.




Adresse internet du site de cours et autres liens utiles

https://ena.etsmtl.ca/course/view.php?id=542




Autres informations

Les séances de cours et de travaux pratiques des cours-groupes dont le mode d'enseignement est hybride sont offertes entièrement à distance. L'étudiante ou l'étudiant inscrite à un tel cours-groupe n'a donc pas besoin de se déplacer à l'École durant la session, sauf lors des évaluations en présence identifiées à la section "Évaluation".