Logo ÉTS
Session
Cours
Responsable(s) Anis Boubaker

Se connecter
 

Sauvegarde réussie
Echec de sauvegarde
Avertissement
École de technologie supérieure

Responsable(s) de cours : Anis Boubaker


PLAN DE COURS

Hiver 2021
INF147 : Programmation procédurale (4 crédits)


Modalités de la session d’hiver 2021


Pour assurer la tenue de la session d’hiver 2021, les modalités suivantes seront appliquées :


La plupart des cours de la session d'hiver seront donnés à distance. Les autres seront donnés en présence si la situation socio-sanitaire le permet. Cette information est disponible sur l’horaire de la session d’hiver diffusé sur le site de l’ÉTS ainsi que sur Cheminot.

L’étudiant inscrit à un cours à distance doit avoir accès à un ordinateur, un micro, une caméra et un accès à internet, idéalement de 10Mb/s ou plus. L’étudiant doit ouvrir sa caméra et/ou son micro lorsque requis, notamment pour des fins d’identification ou d’évaluation.


Les cours à distance pourraient être enregistrés, à la discrétion de l’ÉTS, afin de les rendre disponibles aux étudiants inscrits aux cours.


La notation des cours sera la notation régulière prévue aux règlements des études de l'ÉTS.


Les examens intra se feront normalement à distance. Les examens finaux se feront normalement en présence si la situation socio-sanitaire le permet.


Pour les examens (intra, finaux) qui devaient se faire à distance, leur surveillance se fera à l’aide de la caméra et du micro de l’ordinateur et pourrait être enregistrée. Ceci est nécessaire pour se conformer aux exigences du Bureau canadien d’agrément des programmes de génie (BCAPG) afin d’assurer la validité des évaluations.

Le contexte actuel oblige bien sûr l’ÉTS à suivre de près l’évolution de la pandémie de COVID-19, laquelle pourrait entraîner, avant ou après le début de la session d’hiver 2021, un resserrement des directives et recommandations gouvernementales. Nous vous assurons que l’ÉTS se conformera aux règles en vigueur afin de préserver la santé publique et que, si requis, elle pourrait aller jusqu’à interdire l’accès physique au campus universitaire et ordonner que toutes les activités d’enseignement et d’évaluation soient exclusivement données à distance pour tout ou partie de la session d’hiver 2021.

Des exigences additionnelles pourraient être spécifiées par l’ÉTS ou votre département, suivant les particularités propres à votre programme.

En vous inscrivant ou en demeurant inscrit, vous acceptez les modalités particulières de la session d’hiver 2021.


Nous vous rappelons que vous avez jusqu’au 17 janvier 2021 pour vous désinscrire de vos cours et être remboursé.


Pour les nouveaux étudiants inscrits au programme de baccalauréat uniquement, vous avez jusqu’au 31 janvier 2021 pour vous désinscrire de vos cours et être remboursé.




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
Acquérir les notions et l’expérience de programmation procédurale nécessaires pour solutionner efficacement des problèmes reliés au génie électrique.

Étude du langage C en appliquant les notions de programmation structurée à la résolution de problèmes de base reliés au génie électrique. Programmation de base : syntaxe, constantes, variables, types, conversion de types, opérateurs et expressions, structures de contrôle et décision, fonctions et passage de paramètres, macros-fonctions, construction de modules, gestion dynamique de la mémoire, pointeurs, entrées-sorties, fichiers. Introduction aux structures de données imbriquées : listes, chaînage dynamique, tableaux, piles, files. Introduction aux algorithmes de tri et de fouille. Sensibilisation au développement de programmes portables de qualité. Introduction aux environnements de programmation et aux tests unitaires.

Séances de laboratoire axées sur l'application des notions de programmation.



Objectifs du cours

Ce cours a pour objectif de procurer une connaissance moderne de la programmation afin qu’un étudiant puisse solutionner des problèmes reliés à sa discipline.

Le langage de programmation utilisé est le C ANSI 99..

De façon plus spécifique, ce cours devra permettre à l’étudiant de :

  • acquérir les notions de programmation de base;
  • acquérir une connaissance du langage C ;
  • utiliser et implémenter des types de données abstraits (pile, file et liste)



Stratégies pédagogiques

3 heures de présentation par semaine sous forme de cours magistral par vidéo-conférence,

3 heures de laboratoire par semaine

Les laboratoires visent :

  •       L'assimilation des notions vues au cours à l’aide d’exercices;
  •       La mise au point des programmes donnés en travaux pratiques (si les exercices sont finis).



Utilisation d’appareils électroniques

Micro-ordinateur.




Horaire
Groupe Jour Heure Activité
01 Lundi 13:30 - 16:30 Laboratoire
Mardi 13:30 - 17:00 Activité de cours
02 Mardi 09:00 - 12:00 Laboratoire
Jeudi 09:00 - 12:30 Activité de cours
03 Lundi 18:00 - 21:00 Laboratoire
Jeudi 18:00 - 21:30 Activité de cours



Coordonnées de l’enseignant
Groupe Nom Activité Courriel Local Disponibilité
01 Éric Thé Activité de cours Eric.The@etsmtl.ca B-2568
01 Éric Thé Laboratoire Eric.The@etsmtl.ca B-2568
01 Hind Errahmouni Laboratoire hind.errahmouni.1@ens.etsmtl.ca
02 Éric Thé Activité de cours Eric.The@etsmtl.ca B-2568
02 Éric Thé Laboratoire Eric.The@etsmtl.ca B-2568
02 Hind Errahmouni Laboratoire hind.errahmouni.1@ens.etsmtl.ca
03 Yannick Roy Activité de cours ymyannick@gmail.com B-2564
03 Rachel Takla Laboratoire Rachel.Takla@etsmtl.ca



Cours

Ce tableau est donné à titre indicatif. Il se peut que votre enseignant modifie l’ordre de présentation des notions pour des raisons pédagogiques.

 

COURS

MATIÈRE

1 à 4

Description première de la qualité de programmation attendue : commentaires de spécifications et de stratégie, aération, indentation, utilisation de constantes symboliques et choix des identificateurs, portabilité.

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érativescomparaison et compatibilité des types numériques, opérateurs binaires.

Environnements de programmation : chaine de compilation-assemblage-exécution, présentation de divers environnements de programmation
(ex. : Éclipse, Visual Studio, etc.).

Commandes au préprocesseur : #define, #include, et #if..#endif.

Procédures et fonctions : déclaration, commentaires standards de déclaration et d’implémentation, paramètres effectifs et paramètres formels, valeur de retour, passage par valeur, portée et durée de vie des variables, factorisation.

Passage par adresse : variables pointeurs (déclaration et assignation).

Macros-fonctions : avantages, déclaration et utilisation.

Tableaux : déclaration, initialisation, accès aux éléments, passage en paramètre, algorithmes de base (ex. : min, max, etc.), déclarations de types (avec typedef).

Introduction aux enregistrements (struct) : déclaration, accès aux champs, affectation et passage en paramètre.

Utilisation de modules externes : inclusion et utilisation de modules externes dans un projet.

Tests unitaires : définition, avantages, création de test, jeux de données et cas limites.

5 à 8

Algorithmes de base sur tableau (suite) : tris (sélection, insertion bulle) et fouilles (linéaires et binaires).

Pointeurs et adresses : arithmétique des adresses (démontrer l’utilisation de sizeof) et pointeurs génériques (void *).

Classes d’allocation : auto, static et extern. La pile et le tas (stack && heap).

Allocation dynamique  : utilisation des fonctions d’allocation dynamique (malloc, calloc, realloc et free), allocation de tableaux dynamiques ».

Chaînes de caractères: chaînes littérales et fonctions offertes par le langage ().

Implémentation de modules externes : modules de déclarations (.h) et de définitions (.c), définitions de types et implémentations des fonctions nécessaires à une architecture bien faite, encapsulation des données et des traitements.

Type de données abstraits : les piles (t_pile) et les files (t_file), première implémentation sur tableaux de ces modules de type.

9 à 13

Type de données abstraits (suite) :  les listes (t_liste), implémentation sur tableaux.

 

Chaînage dynamique : références chainées (nœud), chainage simple et double.

 

Piles et files : implémentations version chaînage dynamique.

 

Listes chaînées (simple et double) : intérêt, fonctionnement et implémentations (avec et sans position courante implicite).

Fichiers textes et binaires : le FILE * et ses fonctions classiques (fopen, fclose, feof, … ).

 

Notions complémentaires présentées selon les besoins des travaux pratiques (si nécessaires).

Total : 39 heures



Laboratoires et travaux pratiques

3 heures et demie de cours par semaine.

3 heures de laboratoire par semaine.

Les laboratoires visent :

  • l’assimilation par l’expérience des notions vues au cours;
  • la mise au point de programmes donnés en travaux pratiques.

 

La séance de laboratoire pourra être jumelée avec celle du cours de façon à ce que chaque rencontre hebdomadaire se compose d’une période de théorie et d’une période de laboratoire.




Utilisation d'outils d'ingénierie

Nous utiliserons principalement le compilateur Visual C++ en évitant soigneusement toute librairie et toute fonction qui ne soient pas ANSI et en mettant l’accent sur la portabilité du code.




Évaluation

Les dates de remise des travaux pratiques dans ce tableau sont données à titre indicatif. En cours de session, votre enseignant-e vous fera part à l’avance de tout changement à l’horaire d’évaluation en ce qui concerne les travaux pratiques.

                     

Évaluation

Pondération

Gr.01

Gr.02

Gr.03

Examen intra 1

10 %

2 fév.

4 fév.

4 fév.

Travail #1

10 %

7 fév.

7 fév.

7 fév.

Examen intra 2

15 %

9 mars

11 mars

11 mars

Travail #2

15 %

14 mars

14 mars

14 mars

Travail #3

15 %

11 avril

11 avril

11 avril

Examen final

35 %

Période des examens finaux

À propos des travaux pratiques :

  • Les travaux pratiques visent à mettre en application, dans le cadre d'un problème réaliste, les concepts et les méthodes de programmation enseignés pendant les cours théoriques. Il est attendu des étudiant-e-s de produire des travaux qui permettent de résoudre le problème de l'énoncé MAIS SURTOUT de les réaliser selon les standards de qualité et les bonnes pratiques enseignés (respect des normes, décomposition en sous-programme/modules, etc.). La cohérence et l'optimalité des algorithmes implémentés constituent également des critères importants qui seront considérés. En tout état de cause, la note attribuée à l'exécution correcte du programme ne pourra excéder 40% de la note globale d'un travail pratique.
     
  • Pour chaque travail pratique, l’enseignant-e indiquera sur l’énoncé s’il doit être réalisé en équipe et, si tel est le cas, la taille de l’équipe. Une équipe ne doit remettre qu’un seul rapport.
     
  • Il est à noter que pour les travaux en équipe, chaque membre recevra une note inférieure ou égale à la note obtenue par l'équipe. Cette note individuelle est directement proportionnelle à l'implication de l'individu. La méthode d’évaluation de l’implication de chaque individu est laissée à la discrétion de l’enseignant-e.

À propos des examens Intra :

  • Chaque examen Intra est d'une durée de 1h30. 

À propos de l'examen final :

  • L'examen final est d'une durée de 3 heures.
  • Aucune documentation n'est permise, outre une même feuille de référence fournie en annexe, pour tous les groupes du cours.
  • Aucun appareil électronique n’est permis.
  •  L’examen final aura lieu en présence si les conditions le permettent.

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
# Intra Groupe(s) Date
1 1 2 février 2021
1 2, 3 4 février 2021
2 1 9 mars 2021
2 2, 3 11 mars 2021



Date de l'examen final
Votre examen final aura lieu pendant la période des examens finaux, veuillez consulter l'horaire à l'adresse suivante : http://etsmtl.ca/Etudiants-actuels/Baccalaureat/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.7 b / cycles supérieurs, article 6.5.4 b) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.



Absence à un examen
Dans les cinq (5) jours ouvrables suivants, la tenue de son examen, l’étudiant devra justifier son absence d’un examen durant le trimestre auprès de la coordonnatrice – Affaires départementales qui en référera au directeur du département ou du SEG. Pour un examen final, l’étudiant devra justifier son absence auprès du Bureau du registraire. Dans tous les cas, l’étudiant doit effectuer sa demande en complétant le formulaire prévu à cet effet qui se trouve dans son portail Mon ÉTS/Formulaires. Toute absence non justifiée par un motif majeur (maladie certifiée par un billet de médecin, décès d’un parent immédiat, Activité compétitive d’un étudiant appartenant à un club scientifique ou un club sportif d’élite de l’ÉTS ou au programme « Alliance sport étude » ou autre) à un examen 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 étudiants doivent consulter le Règlement sur les infractions de nature académique (https://www.etsmtl.ca/docs/ETS/Gouvernance/Secretariat-general/Cadre-reglementaire/Documents/Infractions-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 les étudiants sont invités à consulter la page Citer, pas plagier ! (https://www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).



Documentation obligatoire

S.O.




Ouvrages de références

Le choix d’un livre est laissé à la discrétion de l’étudiant. Voici quelques livres portant sur le langage C et diverses références plus spécialisées

 

 

MANUEL RECOMMANDÉ :

 

MILLER, Lawrence H. & Alexander E. QUILICI. The Joy of C – Programming in C, Wiley, 1997.

Excellent manuel sur le C complet. Rien n’est laissé au hasard. Tous les étudiants auraient avantage à connaître ce bouquin. Très longuement utilisé dans le cours INF125.

 

 

RÉFÉRENCES PLUS SPÉCIALISÉES :

  • DRIX, Philippe. Le langage C ANSI – Vers une pensée objet en Java, 3e éd., InterEditions, 1993. Ce livre s’adresse à un lecteur connaissant déjà la programmation (préférablement en Pascal) et l’amène aux portes de la programmation orientée objet. Son approche et ses objectifs correspondent très bien à la mentalité du cours. Son seul défaut est qu’il n’aborde pas les structures de données.
  • HARBISON III, Samuel P. & Guy L STEELE JR. C – A reference manual, 5e éd., 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, ce qui est rare dans les livres de C pour l’instant.
  • BRASSARD, Gilles & Paul BRATLEY. Algorithmique – Conception et analyse, Masson, 1987. Un manuel avancé dépassant largement les objectifs de notre cours. Son intérêt se situe au niveau des algorithmes touchant les arbres et les graphes. Si vous souhaitez approfondir ces sujets ou étudier la notion d’algorithmie, alors ce livre devrait vous intéresser.
  • 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.



Adresse internet du site de cours et autres liens utiles

L'enseignant en informera les étudiants s'il y a lieu.