CSI 2514. STRUCTURES DE DONNÉES
automne 2003

(3 hrs de cours par semaine, 1,5 hrs de tutoriel par semaine, 3 crédits)

Introduction aux types abstraits de données. Arbres, arbres binaires de recherche, arbres équilibrés. Algorithmes de tri et de recherche. Exemples simples d'analyse de complexité. Algorithmes simples sur les graphes: recherche en profondeur, recherche en largeur, arbre minimal recouvrant, algorithme du plus court chemin. Préalable: CSI 1501 ou CSI 1502 


Objectifs du cours
Présenter, de façon systématique, les structures de données le plus utilisées, en soulignant leures propriétés abstraites. Revue de méthodes d'implantation de ces structures de données. Discuter des algorithmes typiques qui traitent chaque type de structure, et analyser leur performance. 

Enseignant 

Dr. Stan Matwin
bureau: SIT5100


email: stan@site.uottawa.ca
 

Heures de bureau:  mercredi 15h30 - 17h30 
 

Le site web du cours

 
Il y a un forum électronique du cours. Ce forum sert d'outil de communication et consultation parmi les enseignants (assistants d'enseignemnt, chef assistant, profs) et les étudiants, ainsi qu'un mécanisme , et entre-aide   parmi les étudiants. Le forum est partagé par les étudiants de CSI 2514 et CSI 2114. 
Les instruction d'utilisation du forum seront affichees sous peu. 
 

Manuel du cours

Michael T. Goodrich & Roberto Tamassia, Data Structures and Algorithms in Java , Wiley, 2000
(Ce livre est disponible dans la librairie Agora) 

Notes du cours détaillées seront disponibles au site web du cours 

Il y a un excellent site web du manuel http://loki.cs.brown.edu:8081/webdsa/ avec des demos en ligne, le "dépannage`` de certains exercices, ainsi que les transparents en anglais.
 

Autres sources

D.E. Knuth, Sorting and Searching , vol. 3 of The Art of Computer Programming, Addison Wesley, 1973. 

T.A. Standish: Data Structures in Java. Addison Wesley. 
S.Sahni: Data Structures, Algorithms, and Applications in Java.

Cours

lundi 16:00 - 17:30    CBY B102 
mercredi 14:30-16:00    CBY B102

Laboratoire

LAB 1    mercredi, 13:00 - 14:30    STE 0131   
LAB 2    mercredi 13:00 - 14:30    STE 2052   

 

Barême

Le maximum de 100 points peuvent être acquises pendant le cours. Les points sont partagés de façon suivante: 
 
 


Travaux à domicile [TD] 25 points
Examen de mi-session (livres fermés - 90 min.) [MD] 30 points
Examen final [FN] 45 points

L'examen final comprendra tout le matériel, focalisant sur le matériel non-inclu dans l'examen de mi-session. 

Veuillez remarquer que l'examen de mi-session aura lieu le   dimanche 26 octobre (heure sera annoncee)

L'examen final aura lieu pendant la session de décembre 2003. 

Il y aura cinq devoirs, chacun des devoirs vaudra 100 points. Tous les devoirs seront annoncés sur le site Web du cours: cliquez ici pour les énoncés des devoirs.  Les dates ci-dessous sont approximatives:
 

publie
du
19 septembre
26 septembre
26 septembre
10 octobre
10 octobre
17 octobre
29 octobre
12 novembre
19  novembre
26 novembre

 

La politique de l'École demande que tout étudiant passe la composante examen du cours, c'est à dire qe tout etudiant[e] obtienne au mons la moitie des point des deux examens.

Tous les devoirs de programmation seront soumis sur une disquette. La soumission pour les devoirsde programmation  sera un programme complet en Java, testé et documenté. 

Les devoirs en retard ne seront pas acceptés. 

Sujets et lecture recommendée

La majorité de matériel est présenté dans le manuel du cours. Les notes du cours ne remplacent pas le manuel. Il faut certainemnt lire attentivement le matériel juste avant et apres chaque cours. 
 


# Sujet
1 Introduction; l'organisation du cours. Listes liees en Java
2 Piles, files, files avec double tete (sections 4.1-4.5). 
3 Techniques d’analyse des algorithmes (sections 3.1-3.7).
4 Vecteurs, listes, sequences (sections 5.1-5.6) 
5 Arbres (sections 6.1-6.4). 
6 Heaps et files prioritaires (sections 7.1 et 7.3)
7 Arbres de recherche (sections 9.1-9.2)
8 Dictionnaires (sections 8.1 - 8.3)
9 Graphes (sections 12.1-12.7). 
10 Tris (sections 10.1-10.6) 

 
 
Quelques ressources intéressantes:
1. Applet de HeapSort
http://www2.hawaii.edu/~copley/665/HSApplet.html
2. Arbres binaires de recherche et arbres AVL
http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html
3. Applet des 2-4 arbres
http://www.cs.mu.oz.au/aia/Tree234.html



Attention: la date d'abandon du cours est le 4 novembre

Bonne chance!