IFT-10541_A

11
PLAN DE COURS Hiver 2009 IFT-10541 A - Structures de données Informations générales Crédits : 4 Temps consacré : 4-0-2-6 Formule pédagogique : LT Préalable(s) : IFT-17582 Concomitant(s) : aucun Site Web : https://cours.ift.ulaval.ca/2009h/10541 Intranet Pixel : https://pixel.fsg.ulaval.ca Enseignant(s) : Alikacem, Abderrahim [email protected] Responsable : Alikacem, Abderrahim [email protected] Description sommaire Notion de type abstrait: encapsulation, dissimulation de l'information; séparation du comportement et de l'implantation. Description en termes de type abstrait et représentation en mémoire des structures de données. Notion de pointeur et d'allocation dynamique de la mémoire. Structures de données classiques et leur implantation en C: les listes, les piles, les files (avec et sans priorité), les arborescences, les graphes et les tables de dispersion. Algorithmes de tri et de recherche. Analyse de la complexité des algorithmes: complexités spatiale et complexité temporelle; notation «grand O», comportement du meilleur cas, du cas moyen et du pire cas. Passage de la programmation modulaire et structurée à la programmation par objets. Introduction au langage orienté objet Java. Travaux de programmation effectués en C et en Java. Horaire et disponibilités Plages normales : Mardi 08h30 à 12h20 PLT-3775 Dépannages : Vendredi 08h30 à 10h20 PLT-3920 Disponibilité de l'enseignant : Mercredi 08h30 à 15h30 PLT-3960 (du 14 janv. au 22 avril) Objectifs 1/11

Transcript of IFT-10541_A

Page 1: IFT-10541_A

PLAN DE COURS Hiver 2009

IFT-10541 A - Structures de données

Informations générales

Crédits : 4Temps consacré : 4-0-2-6

Formule pédagogique : LTPréalable(s) : IFT-17582

Concomitant(s) : aucunSite Web : https://cours.ift.ulaval.ca/2009h/10541

Intranet Pixel : https://pixel.fsg.ulaval.caEnseignant(s) : Alikacem, Abderrahim [email protected] : Alikacem, Abderrahim [email protected]

Description sommaire

Notion de type abstrait: encapsulation, dissimulation de l'information; séparation du comportement etde l'implantation. Description en termes de type abstrait et représentation en mémoire des structures dedonnées. Notion de pointeur et d'allocation dynamique de la mémoire. Structures de donnéesclassiques et leur implantation en C: les listes, les piles, les files (avec et sans priorité), lesarborescences, les graphes et les tables de dispersion. Algorithmes de tri et de recherche. Analyse de lacomplexité des algorithmes: complexités spatiale et complexité temporelle; notation «grand O»,comportement du meilleur cas, du cas moyen et du pire cas. Passage de la programmation modulaire etstructurée à la programmation par objets. Introduction au langage orienté objet Java. Travaux deprogrammation effectués en C et en Java.

Horaire et disponibilités

Plages normales : Mardi 08h30 à 12h20 PLT-3775Dépannages : Vendredi 08h30 à 10h20 PLT-3920

Disponibilité de l'enseignant : Mercredi 08h30 à 15h30 PLT-3960 (du 14 janv. au 22avril)

Objectifs

1/11

Page 2: IFT-10541_A

Une application informatique utilise généralement très intensément les données qui lui sont liées. Lareprésentation et l'organisation de ces données sont donc vitales à l'efficacité de l'application qui s'ensert. Conséquemment, à partir de contraintes reliées à une application, il faut que l'informaticien etl'informaticienne soient en mesure d'effectuer un choix de structures qui rencontrent ces contraintes.Ce cours a pour but de présenter à l'étudiant et l'étudiante différents types de structures de données :linéaires, non linéaires, dynamiques, etc., chacune répondant à un type de besoins. Il a pour butégalement de relever l'importance de la spécification rigoureuse des structures de données, le pourquoide l'étude de la complexité des algorithmes qui les manipulent et amener à effectuer des choix éclairéspour la mise en oeuvre de ces structures. Enfin, ce cours servira comme tremplin pour le transfert desconnaissances de la programmation modulaire et structurée à la programmation orientée objet.

Importance dans le programmeCe cours est obligatoire dans tous nos programmes de formation de 1er cycle en informatique et engénie logiciel. Les données étant souvent au cœur des applications informatiques, leur organisation estnécessaire à leur manipulation efficace. Bien que certaines structures de données de base soientoffertes dans les langages de programmation (tels les tableaux par exemple), le développement delogiciel de grande envergure nécessite souvent l'adaptation de leur modèle d'implantation afin derencontrer certaines contraintes déterminantes pour l'application. Cette tâche de conception destructures de données adaptées et de modèles d'implantation inhérents à l'environnement et auxbesoins des applications qu'elles visent à desservir est indissociable de la tâche d'un informaticien.

Objectifs spécifiques

À l'issue du cours, l'étudiant sera en mesure : 1. de résoudre des problèmes en programmant efficacement des structure de donnéesutiles;

a. modéliser les structures de données en terme de types abstraits;b. décider adéquatement d'un modèle pour leur représentation enmémoire;c. implanter leurs opérations de base étant donné le modèle choisi;d. construire des algorithmes pour la résolution des problèmes en sebasant sur l'interface des types abstraits.

2. de manipuler des structures de données de base tels les listes, les arbres et lesgraphes;

a. les décrire en terme de types abstraits;b. implanter leurs algorithmes de gestion (opérations de base);c. évaluer la complexité de ces algorithmes.

3. de comparer en terme de complexité et utiliser judicieusement différentsalgorithmes de tri et de recherche.

4. de passer de la programmation modulaire et structurée à la programmation orientéeobjet .

Habiletés transversales qui seront acquises :

gestion adéquate des différentes classes de la mémoire utile lors de l'exécution d'unprogramme;

application des méthodes standard de résolution de problème tels la récursivité, le retourarrière, etc.;

2/11

Page 3: IFT-10541_A

analyse de la complexité théorique d'un algorithme et la vérifier expérimentalement;• conception de solutions abstraites en distinguant spécification et implémentation;• maîtrise du langage C;• bonne connaissance de la syntaxe du langage Java.•

Contenu

Semaine 1 (12 janvier)

Présentation du cours• Structures de données et programmation• Types de données abstraits

Définition♦ Encapsulation de données et abstraction♦ Formalisme de spécifications♦ Modèles d'implantation♦ Exemple: le type liste ordonnée, implantation dans un tableau de la classeautomatique

Semaine 2 (19 janvier)

Les pointeurs• Modèles d'implantation par chaînage dynamique•

Semaine 3 (26 janvier)

Retour au type liste ordonnée: implantation par deslistes simplement chaînées♦ listes doublement chaînées (listes bidirectionnelles)♦ les listes circulaires (anneaux)♦

Gestion dynamique de la mémoire:Organisation de la mémoire et politiques d'allocation♦ Morcellement de la mémoire et ramasse-miettes ♦

Semaine 4 (2 février)

Les piles Introduction et exemples d'application♦ Description en termes de type abstrait et implantation♦

Les filesIntroduction♦ Description en termes de type abstrait et implantation♦ Les files prioritaires♦

Rappel sur la récursivité •

Semaine 5 (9 février)

Les graphes (1ère partie):Description en termes de type abstrait♦ Modèles d'implantation♦ Clôture transitive, algorithme de Warshall, algorithme de Floyd♦

3/11

Page 4: IFT-10541_A

Parcours d'un graphe: algorithme de parcours par contagion, par sondage♦ Tri topologique♦

Semaine 6 (16 février)

Les graphes (2ième partie):Composantes connexes d'un graphe ♦ Plus court chemin: algorithme de Dijkstra, algorithme de Bellman-Ford ♦ Une application des graphes: les réseaux (flots)♦

Semaine 7 (23 février)

Algorithmes: complexité, compromis espace-temps et notation asymptotique• Les algorithmes de recherche et leur complexité•

Semaine 7 (2 mars) : Semaine de lecture

Semaine 9 (9 mars)

Les arbres binaires (1ère partie)Description en termes de type abstrait et implantation:

Dans un tableau◊ Par chaînage dynamique◊

Parcours d'arbres♦ Arbres binaires complets ou feuillus♦

Semaine 10 (16 mars)

Les arbres binaires (2 ième partie)Arbres ordonnés. Arbres de tri et de recherche♦ Arbres AVL et principaux algorithmes pour leur manipulation♦ Algorithme de rebalancement♦

Semaine 11 (23 mars)

Arbres cousus ou enchaînés• Arbres n-aires ou généralisés• Arbres-B et ses variantes• Arbre de Huffman: introduction à la compression de données•

Semaine 12 (30 mars)

Tables de dispersion• Fonctions de dispersion• Résolution de conflits (collisions)

par chaînage externe♦ Résolution de conflits par chaînage interne♦ Résolution de conflits par regroupement♦

Semaine 13 (6 avril)

Les tris: Définitions•

4/11

Page 5: IFT-10541_A

Tris internes versus tris externes• Rappel de quelques algorithmes de tris simples et de leur complexité• Tris complexes et leur complexité

tri par monceau (HeapSort),♦ tri dans un arbre binaire (TreeSort)♦ tri rapide (QuickSort)♦ tri fusion (MergeSort)♦

Semaine 14 (13 avril)

Du type abstrait à la programmation par objetsPrésentation de la programmation orienté objet♦ Un langage orienté objet: Java

Présentation◊ Environnement et syntaxe◊

Semaine 15 (20 avril)

JavaTableaux♦ Chaînes de caractères♦ Classes enveloppes (wrapper)♦ Classe Vector ♦ Packages♦ Documentation♦

Modalités d'évaluation

Examen Date Heure

Pondérationde

la notefinale

Document(s) autorisé(s)

Test #1 Mardi 3 février 2009 11h00 à12h20 5.00% Aucun

Examenintra

Vendredi 27 février2009

18h30 à21h20 27.00% Notes de cours

Test #2 Mardi 24 mars 2009 11h00 à12h20 5.00% Aucun

Test #3 Mardi 21 avril 2009 10h30 à12h20 5.00% Aucun

Examenfinal

Vendredi 24 avril2009

18h30 à21h20 28.00% Notes de cours

Travail Équipes Date Heure Pondération de la note finale

TP#1 1 à 2 Lundi 23 février 2009 17h00 10.00%

5/11

Page 6: IFT-10541_A

TP#2 1 à 2 Lundi 23 mars 2009 17h00 10.00%

TP#3 1 à 2 Lundi 20 avril 2009 17h00 10.00%

Politiques sur les examens

Concernant une absence à un examen, le plus rapidement possible, et ce dans un délai maximal de 3jours ouvrables l'étudiant doit utiliser le formulaire Web à cet effet qu'il ou elle trouvera sur songuichet étudiant. Sans quoi, une note de 0 sera automatiquement allouée pour cet examen.

Seuls motifs acceptables pour s'absenter à un examen :

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 cedernier), suite à une consultation médicale. Ce billet doit être présenté à la direction dudépartement (tel qu'indiqué dans les instructions associées au formulaire Web à remplir), quile déposera au dossier de l'étudiant. L'enseignant n'intervient pas dans ce processus mais en estinformé automatiquement, d'où la nécessité pour l'étudiant de remplir ce formulaire Weble plus rapidement possible, car dans l'attente, une note de 0 est automatiquement attribuéeà l'étudiant pour cette épreuve.

1.

mortalité d'un proche, à être documenté par une preuve de décès de la personne et une lettred'une tierce personne attestant du lien de parenté ou autre entre l'étudiant et la personnedécédée. Ces pièces doivent également être présentées à la direction du département (telqu'indiqué dans les instructions associées au formulaire Web à remplir). L'enseignantn'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 dansl'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 duRouge et Or ou d'équipes nationales, sur approbation préalable de la direction duDépartement), à un travail, à un conflit d'horaire avec d'autres cours ou examens, à deshoraires de voyage conflictuels (selon des billets d'avion déjà achetés par exemple), ou à desmotifs religieux quelconques n'est acceptable. Les conflits d'horaire doivent être résolus autout début de la session, avant la fin de la période de modification de choix de cours, parl'étudiant lui-même. Un étudiant inscrit à l'un de nos cours après cette date est réputé ne pasavoir de conflit d'horaire pour passer ses examens.

Toute absence justifiée à un examen entraîne l'obligation pour l'étudiant de passer un examenreporté. Cet examen se déroulera normalement durant le week-end (soit entre le vendrediaprès-midi et le dimanche soir) de la première semaine de cours de la session académiquesuivante. L'étudiant a l'obligation de se rendre disponible à cette date, sans quoi ilobtiendra la note de 0 pour cet examen. Les examens reportés de l'automne 2008 aurontlieu le samedi 17 janvier 2009, ceux de l'hiver 2009 doivent avoir lieu le samedi 9 mai et ceuxde l'été 2009 devraient normalement avoir lieu le samedi 5 septembre.

2.

Politiques sur les travaux

6/11

Page 7: IFT-10541_A

Dans le cadre d'un travail, toute communication entre équipes est strictement défendue.•

Toute personne prise à plagier, à tricher, activement ou passivement, ou à contrevenir auxdirectives données dans le cadre d'un examen ou d'un travail noté et contributoire à la notefinale du cours, peu importe la pondération attribuée à l'examen ou au travail en question, feraface aux conséquences de ses gestes, qui peuvent aller jusqu'à l'exclusion de son programmede formation. Une politique stricte de tolérance zéro est appliquée en tout temps et sous toutescirconstances. 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.

Consignes sur les examens

Dans le cas de cours à plusieurs sections, les examens se dérouleront au même moment pourpermettre d'offrir un examen commun à toutes les sections du cours.

Les calculatrices ainsi que les ordinateurs portables seront interdits lors des examens.• Toute documentation sera interdite lors des tests en classe et au laboratoire.• Toute révision de note devra être demandée au professeur dans un délai de 10 jours ouvrablesaprès l'affichage des résultats d'un examen.

Consignes sur les travaux

Tout travail pratique non remis dans les délais prévus se verra pénalisé suivant les modalitésqui seront indiquées dans l'énoncé du travail pratique (la date et l'heure d'échéance serontindiquées sur l'énoncé du travail).

Toute révision de note devra être demandée au professeur dans un délai de 10 jours ouvrablesaprès la remise du travail corrigé.

Échelle des cotes

Échelle des cotes

A+ [ 92.00 - 100 ] A [ 88.00 - 91.99 ] A- [ 84.00 - 87.99 ] Réussite

B+ [ 80.00 - 83.99 ] B [ 76.00 - 79.99 ] B- [ 73.00 - 75.99 ] Réussite

C+ [ 70.00 - 72.99 ] C [ 67.00 - 69.99 ] C- [ 64.00 - 66.99 ] Réussite

D+ [ 62.00 - 63.99 ] D [ 60.00 - 61.99 ] Réussite

E [ 0.00 - 59.99 ] Échec

X Abandon sans échec(dans les délais prévus)

7/11

Page 8: IFT-10541_A

Politique sur les cotes

L'enseignant se réserve le droit d'ajuster quelque peu cette répartition des cotes afin de réfléterl'évaluation juste des étudiants du cours.

La note de passage est de 60%. Révision de cote : selon les règlements du premier cycle.

Modalités sur les laboratoires

Des laboratoires sont mis à votre disposition par le département d'informatique et de génie logicielpour des accès facultatifs 24h sur 24, 7 jours sur 7. Ils sont situés au 3920-PLT, 3928-PLT et3966-PLT. La description des équipements mis à votre disposition dans ces laboratoires peut êtreconsulté ici: http://www.ift.ulaval.ca/enseignement/laboratoires_d_enseignement/.

Méthodologie

À la maison

Lecture et résolution des exercices proposés dans le semainier sur le site Web du cours.• Réalisation des 3 travaux pratiques obligatoires à faire durant toute la session (à effectuerobligatoirement en équipe de 2 personnes). Ils seront corrigés, commentés et notés (ilscontribueront à la note finale). Ces travaux peuvent être également faits aux laboratoires quivous sont assignés tout le long de la session.

En classe (4 heures par semaine)

Présentation de la matière par le professeur.• Les étudiants et les étudiantes interviennent durant le cours pour demander des explicationssupplémentaires relativement à un sujet traité en cours, à une lecture faite à la maison, à unesolution d'un exercice donné ou bien au travail pratique en cours.

Au laboratoire (2 heures par semaine)

Mise en pratique, par petit groupe, des concepts vus en classe avec un environnement deprogrammation en langage C et en Java. Programmation d'exercices et de certaines parties des travauxpratiques dont vous aurez au préalable conçu l'algorithme. Les inscriptions à ces laboratoires doiventse faire auprès de A. Alikacem (voir coordonnées sur la première page de ce syllabus).

Logiciels

Les logiciels Visual C++ 6.0 (Windows) et Eclipse (Windows et Linux) sont les compilateurs officielsdans le cadre de notre cours en ce qui a trait à la programmation en C. Les étudiants peuvent utiliserd'autres environnements de programmation en C, comme .Net par exemple. Dans tous les cas, laréalisation de programmes portables est une des exigences dans le cours.

8/11

Page 9: IFT-10541_A

Eclipse est également un environnement suggéré pour la programmation en Java. C'est unenvironnement de développement intégré (un IDE) devenant réellement utile qu'une fois les bases dulangage maîtrisées. Pour démarrer l'apprentissage de Java, l'utilisation de l'éditeur TextPad, disponibleà l'adresse : www.textpad.com, est fortement suggérée.

De plus, et pour effectuer les travaux de programmation, chaque équipe doit utiliser un compteSubversion, un système d'archivage, de gestion de versions et de partage de fichiers entre utilisateursautorisé. La procédure pour l'obtention d'un comptes Subversion sur le serveur départemental, uncompte par équipe, sera expliquée en temps opportun (avant le début du premier travail pratique).

Bibliographie

Algorithmes et structures de données en C.

T.A Standish (1995). Data Structures, Algorithms & Software Principles in C. Addison-Wesley. ISBN: 0-201-59118-9.

Autres références

Robert Sedgewick (2002). Algorithms in C (Parts 1-5). Addison-Wesley. En Français :"Algorithmes en langage C", trad. par J.M. Moreau, InterEditions, 1990.

Michel Divay (1999). Algorithmes et structures de données. Cours et exercices en langageC. Dunod.

Geoff Whale (1996). Data Structures and abstraction using C. PWS Publishing company.• Van Wyk, C. J., (1988). Data Structures and C Programs. Addison-Wesley.• Weiss, M. A., (1997). Data Structures and Algorithm Analysis in C. Addison Wesley.• E. Horowitz, S. Sahni, S. Anderson-Freed (1993). Fundamentals of data structures in C,Computer Science Press.

Programmation en Java. Tous les ouvrages cités ci-après sont adaptés à la dernière version (1.5)du JDK.

Deitel & Deitel (2005). Java, how to program, sixth edition. Prentice Hall. ISBN: 0-13-148398-6.

Autres références

Cay Horstmann (2005). Java concepts, fourth edition. John Wiley.• C. Thomas Wu (2006). An Introduction to Object-Oriented Programming with Java, 4/e.Mcgraw-Hill.

Bruce Eckel (2006). Thinking in Java, 4th edition. Cette version est disponible gratuitementà partir d'ici : http://mindview.net/Books/TIJ4 (en anglais seulement).

Manuel de cours

A. Alikacem, M. Aoun-Allah, D. Genest, J. Harvey. IFT-10541: Structures de données (versionrévisée : été 2003). Manuel de cours. Notez bien: La vente de notes de cours se fera durant la premièresemaine de la session au local 3370 du pavillon Pouliot. Les heures sont de 8h à 19h du lundi au jeudiet de 8h à 17h le vendredi. La vente se poursuivra par la suite chez Zone, au local 0128 du pavillon

9/11

Page 10: IFT-10541_A

Adrien-Pouliot.

Le livre Penser en Java, la version française de Thinking in Java de Bruce Eckel (2ième édition)téléchargeable gratuitement à partir d'ici : http://penserenjava.free.fr/. Malgré que cet ouvrage en est àsa 4ième édition (disponible uniquement en anglais), cette seconde édition couvre très bien les objectifsde la partie Java dans notre cours.

Politique sur l'utilisation d'appareils électroniques pendant une séance d'évaluation

L'utilisation d'appareils électroniques (cellulaire ou autre appareil téléphonique sans fil, pagette,baladeur, agenda électronique, etc.) est interdite au cours d'une séance d'évaluation et de toute autreactivité durant laquelle l'enseignant l'interdit.

De plus, seuls certains modèles de calculatrices sont autorisés durant les séances d'évaluation.

Pour l'année 2008-2009, les modèles suivants sont autorisés :

Hewlett Packard HP 20S, HP 30S, HP 32S2, HP 33S

Texas Instrument TI-30Xa, TI-30XIIB, TI-30XIIS, TI-36X,BA35

Sharp EL-531*, EL-546*, EL-520*Casio ASIO FX-300 MS, FX-300W Plus* Calculatrices Sharp: sans considération pour les lettres qui suivent le numéro

Dans tous ces cas, la calculatrice doit être validée par une vignette autocollante émise par la COOPétudiante ZONE.

Information spécifique aux étudiants de l'École d'actuariatLes calculatrices autorisées lors des examens sont uniquement les modèles répondant auxnormes de la Society of Actuaries et de la Casualty Actuarial Society pour leurs examens,soit les modèles Texas Instruments suivants :

BA-35 (solaire ou à pile)• BA II Plus• BA II Plus Professional• TI-30Xa• TI-30X II (IIS ou IIB)• TI-30X MultiView (XS ou XB)•

Politique sur le plagiat et la fraude académique

L'Université Laval possède des dispositions relatives au plagiat et à la fraude académique. Le« Règlement disciplinaire à l'intention des étudiants de l'Université Laval » est disponible à cetteadresse http://www.ulaval.ca/sg/reg/Reglements/Disc. Ce texte encadre les activités sanctionnées surle plan du plagiat, de la tricherie et de la fraude académique. Ces mesures ont été mises en place afinde protéger l'intégrité académique au sein de l'institution « dans le but de préserver la crédibilité desattestations ou des diplômes délivrés et afin de s'assurer que les relevés de notes et les diplômestémoignent de la compétence et de la formation réelle des étudiants ». Parmi les infractions

10/11

Page 11: IFT-10541_A

académiques, l'article 28 répertorie différentes infractions reliées au plagiat:

copier un document;• utiliser l'oeuvre d'autrui, en tout ou en partie, sans en mentionner la source;• soumettre le même travail dans deux cours différents à l'insu des enseignants;• etc.•

Ce règlement s'attribue à toutes les activités exigées de l'étudiant dans le cadre de son cours et de sonprogramme d'études. Les conséquences peuvent mener à une réprimande, une mise en probation,l'attribution d'une cote « R », une suspension d'inscription à l'Université, le congédiement, uneexpulsion ou au rappel du diplôme de l'individu.

11/11