Académique Documents
Professionnel Documents
Culture Documents
PLAN DE COURS
GLO-1901 : Introduction à la programmation avec Python
NRC 91437 | Automne 2018
Ce cours introduit les principaux paradigmes de programmation servant à la résolution de problèmes en informatique. Il
couvre notamment les programmations procédurale, fonctionnelle, orientée objet et événementielle. Pour illustrer ces
paradigmes, il utilise le langage Python.
Plage horaire
Sur Internet
- 00h00 à 00h00 Du 4 sept. 2018 au 14 déc. 2018
Il se peut que l'horaire du cours ait été modifié depuis la dernière synchronisation avec Capsule. Vérifier l'horaire dans Capsule
Site de cours
https://sitescours.monportail.ulaval.ca/ena/site/accueil?idSite=99128
Coordonnées et disponibilités
Marc Parizeau
Professeur
PLT-1138.B
marc.parizeau@gel.ulaval.ca
Tél. : 418-656-2131 poste 7912
Session d'été
Lundi 08h00 à 16h00
Mardi 08h00 à 16h00
Mercredi 08h00 à 16h00
Jeudi 08h00 à 16h00
Vendredi 08h00 à 16h45
Objectifs
L'objectif principal de ce cours est de former l'étudiant aux notions de base de la programmation par objets avec comme
support le langage Python. À l'issue de ce cours, l'étudiant sera en mesure de:
1. résoudre des problèmes de programmation en maniant efficacement les éléments fondamentaux de procédure:
les blocs séquentiels,
conditionnels,
et répétitifs;
2. effectuer la décomposition fonctionnelle d'un problème;
3. intégrer les concepts orientés objets dans la résolution d'un problème:
notion de classe et d'objet,
d'encapsulation,
de méthode et passage de message,
d'héritage,
et de polymorphisme;
4. écrire des programmes Python pour entre autres réaliser:
des interfaces graphiques,
du calcul scientifique.
Contenu du cours
1. Types de données et opérations: nombres, chaînes de caractères, listes, dictionnaires, tuples et fichiers.
2. Énoncés et syntaxe de base: affectation, expressions, énoncés séquentiels, conditionnels et répétitifs, entrées/sorties,
documentation du code; notion de complexité algorithmique.
3. Fonctions: décomposition fonctionnelle, pré- et post conditions, arguments, itérateurs, fonction lambda, fonctions
génératrice; notion de récursion
4. Classes et objets: notions d'encapsulation, d'héritage, de composition, de surdéfinition d'opérateurs, d'espace de noms
et de polymorphisme; portée des identifieurs.
5. Modules: architecture d'un programme Python, création et usage d'un module, espaces de noms, importation de
modules; aperçu de la librairie standard: dates et heure, nombres aléatoires, encodage unicode, expressions
régulières, sérialisation, journalisation, itérateurs, etc.
6. Exceptions: mécanismes de traitement des erreurs et tests unitaires.
7. Interfaces graphiques: notion de programmation événementielle; introduction à «tkinter».
8. Programmation orientée objet: retour sur les classes et les hiérarchies de classes; notion de «design pattern»;
introduction à UML.
9. Programmation fonctionnelle: retour sur les «lambda», les fonctions génératrices et les «itertools».
10. Calcul scientifique: tableaux multidimensionnels, matrices et calcul matriciel; introduction à «numpy/matplotlib».
11. Python vs C/C++: processus de compilation et d'édition des liens; typage statique des données, expression, pointeur,
fonction et arguments; énoncés séquentiels, conditionnels et répétitifs; classes et objets.
Déroulement du cours
Chaque semaine, l'étudiant doit procéder de façon autonome à trois types d'activités:
1. Étudier des notes de cours thématiques qui lui permettent non seulement d'exécuter les exemples illustrant les
concepts théoriques, mais également de les modifier afin de pouvoir répondre lui-même à des questions de type « que
se passerait-il si je faisais ceci au lieu de cela? ».
2. Faire des exercices interactifs qui permettent d'assimiler les notions présentées dans les notes de cours. Ces exercices
s'effectuent via une interface web spécialement conçue à cette fin. L'étudiant résoud le problème posé en écrivant ses
énoncés Python dans l'interface web, puis il exécute son code dans cette interface afin de le tester. En pressant
simplement un bouton, il peut ensuite soumettre sa solution à un serveur qui la corrigera automatiquement en lui
fournissant, le cas échéant, des indications sur la nature de ses erreurs. L'étudiant peut alors modifier sa solution puis
la soumettre de nouveau jusqu'à la satisfaction des exigences de l'exercice.
3. Tester ses connaissances avec des épreuves chronométrées (quiz) qui simulent sur une durée plus courte le
© Université Laval Page 4 de 9
3. Tester ses connaissances avec des épreuves chronométrées (quiz) qui simulent sur une durée plus courte le
déroulement des examens en ligne.
En tout temps, les étudiants peuvent poser des questions via un forum de discussion. Les exercices et les quiz peuvent être
complétés à n'importe quelle heure du jour ou de la nuit.
Contenu et activités
Le tableau ci-dessous présente les semaines d'activités prévues dans le cadre du cours.
Titre Date
Contenu et activités du cours
Tout le contenu du cours est accessible directement sur son site web spécialisé.
Note : Veuillez vous référer à la section Contenu et activités de votre site de cours pour de plus amples détails.
Évaluations et résultats
Modalités d'évaluation
Sommatives
Mode de
Titre Date Pondération
travail
Exercices hebdomadaires À déterminer Individuel 20 %
Examen partiel Le 20 oct. 2018 de Individuel 25 %
13h30 à 16h30
Examen final Le 15 déc. 2018 de Individuel 35 %
13h30 à 16h30
Travaux pratiques À déterminer En équipe 15 %
Participation au forum de discussion Dû le 7 déc. 2018 à Individuel 5%
23h59
Les dates limites pour compléter les exercices sont spécifiées sur le site web du cours.
Mode de travail : Individuel
Pondération : 20 %
Remise de l'évaluation : https://python.gel.ulaval.ca
Directives de l'évaluation :
Toutes les directives pour la réalisation des exercices se trouvent sur le site web du cours.
Examen partiel
Date et lieu : Le 20 oct. 2018 de 13h30 à 16h30 , ---
Mode de travail : Individuel
Pondération : 25 %
Remise de l'évaluation : https://python.gel.ulaval.ca
Examen final
Date et lieu : Le 15 déc. 2018 de 13h30 à 16h30 , ---
Mode de travail : Individuel
Pondération : 35 %
Remise de l'évaluation : https://python.gel.ulaval.ca
Travaux pratiques
Date de remise : À déterminer
Les dates limites pour les travaux pratiques sont spécifiées sur le site du cours.
Mode de travail : En équipe
Pondération : 15 %
Remise de l'évaluation : https://python.gel.ulaval.ca
Directives de l'évaluation :
Toutes les directives pour la réalisation des travaux pratiques se trouvent sur le site web du
cours.
Outre les examens, l'évaluation sommative du cours comporte des exercices interactifs, des travaux pratiques à faire en
individuellement ou en équipe, et une composante de participation au forum de discussion. Il est attendu que les étudiants
non seulement utilisent le forum pour poser des questions, mais également qu'ils répondent à certaines des questions de
leurs camarades.
Notez bien que la note de passage est fixée à 50 % et qu'elle s'applique autant à la note totale qu'à la moyenne des deux
examens.
La réalisation de l'ensemble des travaux fait appel au langage Python 3. Ils peuvent être effectués à l'université ou à la
maison, avec un ordinateur au choix de l'étudiant. L'étudiant devra cependant tenir compte des consignes particulières
pouvant limiter le choix de l'environnement logiciel.
La présence à l'université n'est pas obligatoire ni pour réaliser, ni pour soumettre les travaux. Elle est cependant nécessaire
pour les examens.
Tout étudiant qui commet une infraction au Règlement disciplinaire à l'intention des étudiants de l'Université Laval dans le
cadre du présent cours, notamment en matière de plagiat, est passible des sanctions qui sont prévues dans ce règlement. Il
est très important pour tout étudiant de prendre connaissance des articles 23 à 46 du Règlement disciplinaire. Celui-ci peut
être consulté à l'adresse suivante:
http://ulaval.ca/reglement-disciplinaire
Plagiat
Tout étudiant est tenu de respecter les règles relatives au plagiat. Constitue notamment du plagiat le fait de:
i. copier textuellement un ou plusieurs passages provenant d'un ouvrage sous format papier ou électronique sans mettre
ces passages entre guillemets et sans en mentionner la source;
ii. résumer l'idée originale d'un auteur en l'exprimant dans ses propres mots (paraphraser) sans en mentionner la source;
© Université Laval Page 7 de 9
ii. résumer l'idée originale d'un auteur en l'exprimant dans ses propres mots (paraphraser) sans en mentionner la source;
iii. traduire partiellement ou totalement un texte sans en mentionner la provenance;
iv. remettre un travail copié d'un autre étudiant (avec ou sans l'accord de cet autre étudiant);
v. remettre un travail téléchargé d'un site d'achat ou d'échange de travaux scolaires.
L'Université Laval étant abonnée à un service de détection de plagiat, il est possible que l'enseignant soumette vos travaux
pour analyse.
Matériel didactique
Matériel obligatoire
Tout le matériel didactique nécessaire est disponible sur le site web du cours.
URL : Tout le matériel didactique nécessaire est disponible sur le site web du cours.
Aucun manuel n'est obligatoire pour ce cours, mais un livre de référence sur le langage Python serait néanmoins utile. De
nombreuses alternatives existent en librairie ou en-ligne sur Internet.
Logiciels
Tous les logiciels nécessaires pour compléter les travaux du cours sont libres et disponibles gratuitement sur Internet. Voir
le site web du cours pour de plus amples détails.
Médiagraphie et annexes
Bibliographie
De très nombreux ouvrages existent sur la programmation et le langage Python, dont certains sont disponibles gratuitement
sur Internet.
Les notes de cours thématiques et la documentation en ligne disponible sur le site web du cours suffisent généralement
pour bien réussir ; aucun manuel n'est obligatoire pour ce cours.
Par ailleurs, voici quelques références qui ont servi initialement à la préparation des notes de cours :
Logiciels
De nombreux outils logiciels sont disponibles pour programmer en Python. Voici la liste des outils recommandés pour le
cours: