acétates - Université Laval

publicité
Département d'informatique
Introduction
à l’algorithmique
et à la
programmation
IFT-21937
Syllabus
Clermont Dupuis
Bureau :
3976, pavillon Pouliot
Tél. :
656-7522 (418)
Adresse électronique :
[email protected]
©
Université Laval
Automne 2008
A. Cours
Titre
: Introduction à l’algorithmique et à la programmation
Sigle
: IFT-21937
Nombre de crédits : 3 crédits
Session
: Automne 2008
Salle et horaire
: Travaux dirigés
ME 14h30-16h30 Salle : PLT-3920
VE 14h30-16h30 Salle : PLT-3920
Cours magistraux JE 8h30-11h30 Salle : PLT-2783
B. Professeur
: Dupuis, Clermont
: 3976, pavillon Pouliot
: Jeudi 14h30-16h30
Vendredi 8h30-11h30
Nom et prénom
Bureau
Disponibilités
C. Description et objectifs du cours
Description :
Introduction à l’algorithmique et à la programmation. Débuter en Python.
Instructions conditionnelles et itératives. Fichiers et entrées sorties. Séquences –
chaînes de caractères, listes et tuples. Dictionnaire. Ensembles. Fonctions.
Récursivité. Erreurs et exceptions. Modules et packages. Applications en mode
interactif et interfaces graphiques. Analyse d’algorithmes. Applications diverses.
Travaux pratiques en PYTHON.
Préalables :
aucun.
Objectifs:
Au terme de ce cours, l’étudiant(e) sera apte à résoudre des problèmes simples en
développant des algorithmes corrects par rapport à leur spécification. Ils pourront
mettre en œuvre ces algorithmes à l’aide du langage de programmation Python et
présenter des programmes corrects, structurés, modulaires, lisibles et bien
documentés.
D. Méthodologie
Cours : Il est prévu à chaque semaine environ 3 heures de cours magistraux et 2
heures de travaux dirigés.
Travail personnel :
L’étudiant sera fortement invité à approfondir les concepts vus en classe à
travers des exercices suggérés.
Travaux dirigés en laboratoire :
Les travaux dirigés en laboratoire sont obligatoires. Des équipes d’au plus
deux étudiants seront formées au début du trimestre. Les travaux devront être
remis obligatoirement au professeur en quittant la séance de laboratoire ou au
plus tard à 17h30 dans la boîte postale du professeur.
Travaux pratiques :
La réalisation de travaux pratiques représente une part importante de
l’apprentissage. Ils consistent en travaux de programmation ou en problèmes
à résoudre qui, la plupart du temps, sont une application concrète des
concepts présentés dans le cours, et vérifiant la compréhension de la matière.
Trois travaux pratiques seront exigés. Des équipes d’au plus deux étudiants
seront formées au début du trimestre. Les travaux remis en retard ne seront
pas acceptés.
Un exemple de présentation d’un travail pratique est disponible sur le site
WEB du cours. Ce mode de présentation des travaux devra être respecté à la
lettre.
E. Evaluation des apprentissages
Examens
Date
Contenu
I
JE 16 octobre 2008
Chap. I à VI
II
JE 11 décembre 2008 toute la matière
Travaux pratiques Date de remise
JE 2 octobre 2008
II
JE 6 novembre 2008 "
III
MA 16 décembre 2008
ME ou VE de chaque semaine.
35%
35%
Modalités
I
Travaux dirigés en laboratoire
Pondération
Pondération
Équipe de 2 max.
5%
10%
"
10%
Modalités
Pondération
Équipe de 2 max.
5%
Note : Une attention particulière sera portée à la participation active des étudiants.
A+ [97-100]
B+ [85-89[
C+ [73-77[
D+ [63-66[
E [0-60[
A [93-97[
B [81-85[
C [69-73[
D [60-63[
A-[89-93[
B-[77-81[
C- [66-69[
Réussite
Réussite
Réussite
Réussite
Échec
Concernant une absence à un examen, le plus rapidement possible, l’étudiant devra
utiliser le formulaire Web à cet effet qu’il ou elle trouvera sur son guichet étudiant.
Sans quoi, une note de 0 sera automatiquement allouée pour cet examen.
Seuls motifs acceptables pour s’absenter à un examen :
1. incapacité pour l’étudiant de passer l’examen durant la plage horaire de cet
examen, à être mentionné comme tel par un billet précis d’un médecin (incluant les
coordonnées de ce dernier), suite à une consultation médicale. Ce billet doit être
présenté à la Direction du département (tel qu’indiqué dans les instructions associées
au formulaire Web à remplir), qui le déposera au dossier de l’étudiant. L’enseignant
n’intervient pas dans ce processus mais en est informé automatiquement, d’où la
nécessité pour l’étudiant de remplir ce formulaire Web le plus rapidement
possible, car dans l’attente, une note de 0 est automatiquement attribuée à l’étudiant
pour cette épreuve.
2. mortalité d’un proche, à être documenté par une preuve de décès de la personne et
une lettre d’une tierce personne attestant du lien de parenté ou autre entre l’étudiant et
la personne décédée. Ces pièces doivent également être présentées à la Direction du
département (tel qu’indiqué dans les instructions associées au formulaire Web à
remplir). L’enseignant n’intervient pas dans ce processus mais en est informé
automatiquement, d’où la nécessité pour l’étudiant de remplir ce formulaire Web
le plus rapidement possible, car dans l’attente, une note de 0 est automatiquement
attribuée à l’étudiant pour cette épreuve.
Aucune justification d’absence reliée à des événements sportifs (sauf pour les athlètes
du Rouge et Or, sur approbation préalable de la Direction du Département), à un
travail, à un conflit d’horaire avec d’autres cours ou examens, à des horaires de voyage
conflictuels (selon des billets d’avion déjà achetés par exemple), ou à des motifs
religieux quelconques n’est acceptable. Les conflits d’horaire doivent être résolus au
tout début de la session, avant la fin de la période de modification de choix de cours,
par l’étudiant lui-même. Un étudiant inscrit à l’un de nos cours après cette date est
réputé ne pas avoir de conflit d’horaire pour passer ses examens.
Toute absence justifiée à un examen entraîne l’obligation pour l’étudiant de passer un
examen de reprise. Cet examen se déroulera normalement durant le week-end (soit
entre le vendredi après-midi et le dimanche soir) de la première semaine de cours de la
session académique suivante. L’étudiant a l’obligation de se rendre disponible à
cette date, sans quoi il obtiendra la note de 0 pour cet examen.
IMPORTANT :
 Dans le cadre d’un travail, toute communication entre équipes est strictement
défendue.
 Toute personne prise à plagier, à tricher, activement ou passivement, ou à
contrevenir aux directives données dans le cadre d’un examen ou d’un travail noté
et contributoire à la note finale du cours, peu importe la pondération attribuée à
l’examen ou au travail en question, fera face aux conséquences de ses gestes, qui
peuvent aller jusqu’à l’exclusion de son programme de formation. Une politique
stricte de tolérance zéro est appliquée en tout temps et sous toutes circonstances.
Tous les cas seront référés à la direction du Département.
 L’étudiant trouvera sur son guichet étudiant la politique départementale relative
aux examens; il ou elle est réputé(e) en avoir pris connaissance.
F. Contenu
1.
Introduction à l’algorithmique
Définition et formulation d’un algorithme. Applications à différents types de
problèmes. Opérations élémentaires. Choix d’un algorithme. Efficacité d’un
algorithme. Analyse en pire cas et analyse en moyenne. Décomposition
fonctionnelle : identification des tâches principales à accomplir et découpage
en sous-tâches. Méthodologie de résolution de problème.
2.
Introduction à la programmation
Introduction à l’architecture des ordinateurs. Aperçu des langages machine et
des langages de programmation. Notion de programme. Spécification
fonctionnelle. Étapes dans la vie d’un programme. Qualités d’un programme.
Historique et avantages du langage Python. Environnement de programmation
en Python.
3.
Débuter en Python
Affichage des résultats d’un programme. Commentaires. Opérateurs. Nombres
entiers. Nombres réels. Chaînes de caractères. Représentation des données.
Nombres décimaux, nombres binaires et nombres hexadécimaux. Table ASCII.
Identificateurs. Variables. Absence de déclaration de variables. Initialisation de
variables simples. Opérateur d’affectation. Opérateurs arithmétiques unaires et
binaires. Conversion de types numériques. Priorité des opérateurs. Lecture et
écriture en mémoire. Identification des erreurs de logique et de syntaxe. Lecture
des données au clavier. Exemples de programmes simples en Python. Fonctions
intégrées. Gestion de la mémoire.
4.
Instructions conditionnelles et itératives
Comparaison de données à l’aide des opérateurs relationnels. Expressions
booléennes. Opérateurs logiques : « et » logique, « ou » logique et la négation.
Les blocs. La structure alternative : clause « if » avec ou sans « else ». Les
opérateurs conditionnels. La structure répétitive : la clause « while ». Présence
de sentinelles. Structures imbriquées.
5.
Fichiers et entrées / sorties
Sauvegarde des programmes dans des fichiers. Compilation. Lecture et écriture
de données dans des fichiers. Formatage des données en sortie.
6.
Séquences : chaînes de caractères
Définition de séquences. Opérations sur les séquences. Instruction for.
Fonctions permettant de manipuler des chaînes de caractères. Comparaison de
chaînes de caractères. Formatage. Exemples d’application.
7.
Séquences : listes et tuples
Définition d’une liste. Opérations sur les listes. Fonctions permettant de
manipuler les listes. Instruction for. Tuples. Exemples d’application. Copies
superficielles et en profondeur.
8.
Dictionnaires
Définition d’un dictionnaire. Opérations sur les dictionnaires. Accès,
suppression et ajout d’éléments du dictionnaire. Fonctions permettant de
manipuler les dictionnaires. Clés de dictionnaire. Exemples.
9.
Ensembles
Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et
ajout d’éléments d’un ensemble. Fonctions permettant de manipuler les
ensembles. Exemples.
10.
Procédures et fonctions
Procédures et fonctions. Modularité et ses avantages. Librairies de fonctions
existantes. Définition d’une fonction avec ou sans paramètres. Modification des
valeurs des paramètres. Transmission des données par valeur. Valeurs par
défaut des paramètres. Variables globales et variables locales. Valeurs de
renvoi d’une fonction. Commentaires. Attributs d’une fonction. Ordre avec
lequel les fonctions sont déclarées. Transmission de fonctions comme
paramètre. Exemples.
11.
Récursivité
Définition récursive d’un problème. Critère d’arrêt et convergence.
Performance des algorithmes récursifs. Résolution d’un problème à l’aide de la
récursivité.
12.
Erreurs et exceptions
Erreurs syntaxiques et sémantiques. Mise en œuvre de la gestion des erreurs.
Définition d’une exception, détection et traitement des exceptions, gestion du
contexte, levée des exceptions, assertions. Test unitaire. Test de la boîte
blanche. Exemples.
13.
Modules et packages
Modules, fichiers, chemin d’accès à un module, espaces de noms, importation
de modules ou d’attributs de modules, packages, exemples.
14.
Applications en mode interactif et interfaces graphiques
Interface graphique, étapes de développement dans une application, insertion de
textes dans une fenêtre, positionnement des composantes graphiques à
l’intérieur de la fenêtre, création de boutons, boîtes de dialogue, saisie de
données, affichage de résultats dans la fenêtre principale, boutons avec options
multiples, menus, gestion d’événements de type souris ou clavier.
G. Logiciels
L’interpréteur Python (logiciel libre) sera utilisé dans le cadre de ce cours.
H. Bibliographie
Manuel obligatoire (notes de cours)
Aucun manuel n’est obligatoire mais des notes de cours seront fournies au fur
et à mesure de leur disponibilité.
Références sur le langage Python
Matthieu Brucher, Python Les fondamentaux du langage La programmation pour
les scientifiques. ENI, Collection Ressources informatiques, 2008, 352p.
Wesley J. Chun, Au cœur de Python Version 2.5 Volume 1 Notions fondamentales.
Campus Press, 2007, 645p.
Wesley J. Chun, Au cœur de Python Version 2.5 Volume 2 Notions avancées.
Campus Press, 2007, 337p.
Brad Dayley, Le guide de survie Python L'essentiel du code et des commandes.
CampusPress, 2007, 261p.
Tony Gaddis, Starting out with Python. Addison Wesley, 2009, 482p.
Mark Lutz, Learning Python. O’Reilly, 2008, 700p.
Alex Martelli, Python in a nutshell A Desktop Quick Reference. O’Reilly, 2006,
695p.
Gérard Swinnen, Apprendre à programmer avec Python.
http://www.ulg.ac.be/cifen/inforef/swi .
Tarek Ziadé, Python Petit guide à l’usage du développeur agile. Dunod, 2007, 187p.
Tarek Ziadé, Programmation Python Syntaxe, conception et optimisation. Eyrolles,
2006, 537p.
Important: les personnes intéressées par l’un de ces ouvrages doivent euxmêmes les commander auprès de la librairie Zone de l’université Laval.
H. Date de dernière mise à jour
Ce document a été mis à jour pour la dernière fois le 21 juillet 2008.
Téléchargement