Résumé de section
-
Le cours CSC 401 — Introduction à la Programmation est une formation initiale à la programmation, centrée sur la résolution de problèmes, la programmation structurée et la conception d'algorithmes. Il s'adresse à des débutants complets et ne suppose aucune expérience préalable du codage.
Le cours part des éléments les plus élémentaires du langage — types de données, expressions, variables et affectations — et conduit progressivement l'étudiant jusqu'à la conception de classes et aux principes fondamentaux de la programmation orientée objet. Entre ces deux extrémités, il couvre les structures conditionnelles et itératives, les fonctions et les modules, le traitement des chaînes de caractères, les entrées-sorties de fichiers, la gestion des exceptions, les listes simples et multidimensionnelles, ainsi que les espaces de noms et la portée des variables.
L'accent est mis sur la démarche de résolution de problèmes plutôt que sur la mémorisation de la syntaxe. Chaque notion est introduite par un problème concret que les outils déjà connus ne permettent pas de traiter correctement, ce qui motive l'introduction de la construction nouvelle. Cette approche, dite « le bon outil au bon moment », est celle du manuel de référence du cours.
La pratique est continue : chaque séance comporte un laboratoire de programmation, et des devoirs de programmation sont soumis chaque semaine ou toutes les deux semaines sur la plateforme pédagogique. Un projet intégrateur, réalisé dans la seconde moitié du trimestre, oblige l'étudiant à combiner plusieurs notions — classes, fichiers, exceptions et algorithmes — dans un programme complet, documenté et défendu lors d'une revue de code avec l'enseignant.
À l'issue du cours, l'étudiant est capable d'analyser un problème simple, de concevoir l'algorithme correspondant, de l'implémenter en Python de façon claire et robuste, et d'expliquer et justifier ses choix techniques.
-
Voir le syllabus
-
Voir le syllabus
-
Voir le syllabus
-
Voir le syllabus
-
Référence manuelle : Chapitre 2 — Perković, Introduction to Computing Using Python.
Contenus :
• Présentation du cours, de la démarche de résolution de problèmes et des outils
• Installation et prise en main de l'environnement de développement
• L'interpréteur Python : mode interactif et exécution de scripts
• Variables, affectations et règles de nommage
• Types de données fondamentaux : entiers, décimaux, chaînes de caractères, booléens
• Expressions arithmétiques, priorités des opérateurs et conversions de type
• Entrées et sorties élémentaires : lecture au clavier et affichage
• Premier contact avec les objets et les méthodes des types de base
Objectifs pédagogiques :
• Installer et utiliser l'environnement de développement de façon autonome
• Écrire, exécuter et corriger un premier programme
• Manipuler les types de données fondamentaux et prévoir le résultat d'une expression
• Lire un message d'erreur de l'interpréteur et en identifier la cause
-
Référence manuelle : Chapitre 3 — Perković, Introduction to Computing Using Python.
Contenus :
• Structures conditionnelles simples et doubles
• Expressions booléennes et opérateurs logiques
• Boucles sur les séquences : parcours d'une plage de valeurs et d'une chaîne
• Boucle conditionnelle et condition d'arrêt
• Définition de fonctions : paramètres, corps et valeur de retour
• Appel de fonction et passage des arguments
• Chaînes de documentation et commentaires utiles
• Décomposition d'un premier programme en fonctions
Objectifs pédagogiques :
• Écrire des structures conditionnelles correctes et lisibles
• Choisir la boucle adaptée à la nature du problème
• Définir et appeler des fonctions dotées de paramètres et d'une valeur de retour
• Organiser un programme court en plusieurs fonctions
-
Référence manuelle : Chapitre 4 — Perković, Introduction to Computing Using Python.
Contenus :
• Chaînes de caractères : indexation, découpage, concaténation
• Méthodes usuelles de traitement des chaînes
• Formatage des chaînes pour l'affichage
• Ouverture, lecture et écriture de fichiers texte
• Parcours d'un fichier ligne par ligne et extraction d'informations
• Fermeture des fichiers et bonne pratique du bloc de contexte
• Erreurs d'exécution courantes et notion d'exception
• Gestion des exceptions et production de messages d'erreur utiles
Objectifs pédagogiques :
• Manipuler des chaînes de caractères à l'aide des méthodes appropriées
• Lire et écrire des fichiers texte de façon correcte et robuste
• Anticiper les erreurs prévisibles et les traiter par un mécanisme d'exception
• Produire un programme qui ne s'interrompt pas brutalement en cas d'entrée invalide
-
Référence manuelle : Chapitre 5 — Perković, Introduction to Computing Using Python.
Contenus :
• Conditions multiples et enchaînements de tests
• Conditions imbriquées et simplification logique
• Modèles de boucles classiques : accumulation, comptage, recherche, filtrage
• Boucles imbriquées et déroulement des itérations
• Interruption et poursuite anticipée d'une boucle
• Construction d'un jeu d'essai pour valider une boucle
• Techniques élémentaires de recherche d'erreurs : affichage intermédiaire et exécution pas à pas
Objectifs pédagogiques :
• Écrire des enchaînements de conditions corrects et lisibles
• Reconnaître et appliquer les modèles de boucles classiques
• Maîtriser le déroulement de boucles imbriquées
• Diagnostiquer une boucle qui ne produit pas le résultat attendu
-
Référence manuelle : Chapitres 5 et 6 — Perković, Introduction to Computing Using Python.
Contenus :
• Création, modification et parcours d'une liste
• Méthodes usuelles des listes et opérations de découpage
• Objets modifiables et non modifiables : conséquences pratiques
• Listes de listes et représentation de données tabulaires
• Parcours d'une structure à deux dimensions par boucles imbriquées
• Autres conteneurs élémentaires et critères de choix
• Application : traitement d'un fichier de données organisé en lignes et colonnes
Objectifs pédagogiques :
• Créer et manipuler des listes à l'aide des méthodes appropriées
• Construire et parcourir des listes multidimensionnelles
• Anticiper les effets de la modification d'une liste passée en paramètre
• Choisir la structure de données adaptée à un problème donné
-
Référence manuelle : Chapitres 2 à 6 — Perković, Introduction to Computing Using Python.
Contenus évalués :
• Variables, types de données et expressions
• Structures conditionnelles et itératives
• Fonctions et organisation modulaire
• Chaînes de caractères, fichiers et exceptions
• Listes simples et multidimensionnelles
Format :
• Questions de compréhension et de prévision du résultat d'un code fourni
• Analyse et correction d'un programme comportant des erreurs
• Écriture de programmes courts résolvant un problème posé
• Lancement du projet intégrateur : présentation du cahier des charges et validation des sujets
-
Référence manuelle : Chapitre 7 — Perković, Introduction to Computing Using Python.
Contenus :
• Notion d'espace de noms
• Portée locale, portée englobante et portée globale
• Durée de vie des variables et cycle d'appel des fonctions
• Variables globales : usage, risques et alternatives
• Effets de bord et modification d'objets passés en paramètre
• Organisation d'un programme en modules et importation
• Diagnostic des erreurs de nom à partir des messages de l'interpréteur
Objectifs pédagogiques :
• Prévoir la valeur d'une variable en un point donné du programme
• Distinguer les différentes portées et en expliquer les conséquences
• Éviter les effets de bord involontaires
• Organiser un programme en plusieurs modules
-
Référence manuelle : Chapitre 8 — Perković, Introduction to Computing Using Python.
Contenus :
• Motivation : limites d'une organisation uniquement fondée sur les fonctions
• Notion de classe et notion d'instance
• Attributs d'instance et méthodes
• Constructeur et initialisation des attributs
• Création et manipulation d'objets
• Identification des classes pertinentes à partir d'un énoncé
• Première conception complète d'une classe simple
Objectifs pédagogiques :
• Expliquer la différence entre une classe et une instance
• Définir une classe avec ses attributs, ses méthodes et son constructeur
• Créer des objets et manipuler leurs attributs
• Identifier dans un énoncé les entités méritant d'être représentées par une classe
-
Référence manuelle : Chapitre 8 — Perković, Introduction to Computing Using Python.
Contenus :
• Principe d'encapsulation et protection des attributs
• Accesseurs et modificateurs : usage raisonné
• Méthodes spéciales : représentation textuelle d'un objet
• Comparaison et égalité entre objets
• Attributs de classe et attributs d'instance
• Invariants d'une classe et validation des données à l'initialisation
• Documentation d'une classe
Objectifs pédagogiques :
• Appliquer le principe d'encapsulation et justifier la protection de certains attributs
• Implémenter les méthodes spéciales usuelles
• Distinguer attribut de classe et attribut d'instance
• Garantir la cohérence interne d'un objet par validation à la construction
-
Référence manuelle : Chapitres 6 et 8 — Perković, Introduction to Computing Using Python.
Contenus :
• Classes conteneurs : regroupement et gestion d'un ensemble d'objets
• Opérations usuelles d'un conteneur : ajout, suppression, recherche, parcours
• Notion d'héritage et relation entre classe de base et classe dérivée
• Redéfinition d'une méthode et appel à la méthode de la classe parente
• Héritage et composition : critères de choix
• Organisation d'une application autour de plusieurs classes coopérantes
Objectifs pédagogiques :
• Construire une classe conteneur offrant les opérations nécessaires
• Implémenter une relation d'héritage correcte
• Redéfinir une méthode en conservant la cohérence du comportement
• Justifier le choix entre héritage et composition
-
Référence manuelle : Chapitres 2 à 8 — Perković, Introduction to Computing Using Python.
Contenus :
• Assemblage d'un programme complet : classes, fichiers, exceptions et algorithmes
• Qualité du code : nommage, indentation, commentaires, conventions de style
• Documentation d'un programme à destination d'un utilisateur
• Méthode de recherche d'erreurs sur un programme de taille moyenne
• Jeux d'essai et vérification systématique
• Revue de code : présentation du projet et justification des choix techniques
• Révision générale en vue de l'examen final
Objectifs pédagogiques :
• Assembler un programme complet intégrant plusieurs notions du cours
• Produire un code lisible et conforme aux conventions de style
• Documenter son programme de manière exploitable par un tiers
• Expliquer et justifier oralement ses choix techniques
-
Référence manuelle : Chapitres 2 à 8 — Perković, Introduction to Computing Using Python.
Contenus évalués :
• Ensemble des notions fondamentales de Python
• Fonctions, modules, espaces de noms et portée
• Chaînes de caractères, fichiers et exceptions
• Listes simples et multidimensionnelles
• Programmation orientée objet : classes, encapsulation, conteneurs et héritage
Format :
• Questions de compréhension et d'analyse de code portant sur l'ensemble du cours
• Conception et écriture d'un programme complet mobilisant plusieurs notions
• Remise finale du projet intégrateur et de sa documentation