Studiewijzer onderwijsdeel Datastructuren en Algoritmen.

© Harry Broeders.

onderwijsdeel: Datastructuren en Algoritmen.
onderwijseenheid: SYSO1
code onderwijsdelen SYSO1I0T1 en SYSO1I0P1
studiebelasting: 112 SBU
semester / kwartaal: IH3 SYSO / 1
contacturen: 3 uur/week college en 2 uur/week practicum
toetsing: tentamen (cijfer) en practicumbeoordeling (O/V)
benodigde voorkennis: Programmeervakken uit H1 en H2.
verantwoordelijke docent: Harry Broeders

Inleiding

In de vorige semesters heb je datastructuren zoals array en struct leren gebruiken. Deze datastructuren worden statisch genoemd omdat hun grootte tijdens het compileren wordt bepaald en vast is. In de praktijk heb je al snel behoefte aan zogenaamde dynamische datastructuren waarvan de grootte tijdens het uitvoeren van het programma kan wijzigen. In de vorige semesters heb je ook al kennisgemaakt met enkele dynamische datastructuren (string, vector, tree). Tijdens dit onderwijsdeel worden alle klassieke dynamische datastructuren behandeld. Daarbij ligt de nadruk op de eigenschappen en het gebruik van deze datastructen. Van enkele datastructuren wordt ook de implementatie behandeld. In de vorige semesters heb je al enkele bekende algoritmen leren kennen. In dit onderwijsdeel zul je leren hoe het met behulp van templates mogelijk is om algoritmen zoals zoeken en sorteren generiek te definiëren. Een generiek algoritme is een algoritme dat onafhankelijk is van de gebruikte datastructuur.

In H1 heb je de basisaspecten van object georiënteerd programmeren (OOP) geleerd aan de hand van de programmeertaal C++. In deze onderwijseenheid wordt dieper op deze programmeertaal ingegaan. Het opvangen van fouten door middel van exceptions wordt besproken en ook namespaces en run-time type information komen aan de orde.

In de C++ ISO/ANSI standaard is een verzameling generieke algoritmen en datastructuren opgenomen die in deze onderwijseenheid worden behandeld.

Je zult na afloop van het dit onderwijsdeel in staat zijn om standaard algoritmen en datastructuren te gebruiken. Je kunt programma's die gebruik maken van deze algoritmen en datastructuren ontwerpen, implementeren en testen. Je kunt uitgaande van de eisen die aan een programma gesteld worden de juiste standaard algoritmen en datastructuren selecteren.

Globale leerdoelen

Als je dit onderwijsdeel met een voldoende hebt afgesloten:

Literatuur

Data Structures and Problem Solving Using C++, 2/E, Mark Allen Weiss, ISBN: 0-201-61250-X, Addison Wesley, Copyright: 2000, 879 pp 

Broeders, Sheets De voorgaande link verwijst naar een pdf bestand. en voorbeeldprogramma's. De link voor dit plaatje verwijst naar een file in ZIP formaat.
De sheets zijn beschikbaar in het PDF formaat, verkleind tot 9 per pagina. De voorbeedprogramma's zijn opgenomen in een Borland C++ Builder 6 project group.

Broeders, Dictaat Algoritmen en Datastructuren. De voorgaande link verwijst naar een pdf bestand. Dit dictaat is verkrijgbaar in de winkel van de THR en bevat:

Toetsing en beoordeling.

Er worden voor deze onderwijseenheid twee deelresultaten vastgesteld waarbij het eerste resultaat (tentamen) een cijfer (1..10) is en het tweede resultaat (practicum) een O(nvoldoende) of V(oldoende) is. Het eindresultaat wordt dan het cijfer van het tentamen als het tweede resultaat een V is en een 1 als het tweede resultaat een O is. Bij het tentamen mag je boeken en het dictaat gebruiken. Het tentamen bestaat uit open vragen.

Het practicum wordt beoordeeld met Onvoldoende of Voldoende. Alle opdrachten worden afzonderlijk beoordeeld met een voldoende of onvoldoende aan de hand van:

Om het practicum met een voldoende af te sluiten moeten alle opdrachten voldoende zijn.

Weekplanning theorie.

les inhoud boek
1 Inleiding H6. Algorithm Analysis.
2 Overzicht datastructuren -
3 Toepassingen van een stack H12. Stacks and Compilers.
4 Implementaties van een stack H16. Stacks and Queues.
5 Advanced C++ (o.a. vector, namespace) nog niet in voorgaande semesters behandelde delen van H1 t/m H4 en Appendix A.
6 Advanced C++ (exceptions) -
7 Advanced C++ (vervolg exceptions casting, RTTI). -
8 Design Patterns (Functor, Adaptor, Iterator) nog niet in voorgaande semesters behandelde delen van H5
9 STL inleiding (string, overzicht, sequentiële containers) H7. The Standard Template Library.
10 STL container adapters en associatieve containers H7. The Standard Template Library.
11 STL iterators, inleiding algoritmen H7. The Standard Template Library.
12 STL algoritmen en functie objecten H9. Sorting Algorithms.
13 Behandelen vraagstuk (galgje) of uitloop -
14 Toepassingen: Spelletjes H8. Recursie. H11. Fun and Games.
15 Toepassingen: Schaken (min-max algoritme, alpha-beta pruning) H11. Fun and Games.
16 Toepassingen: Compressie H13. Utilities.
17 Toepassingen: Simulatie Internet Provider 1 H14. Simulation.
18 Graphs H15. Graphs and Paths.
19 Algoritmen voor graphs (kortste pad) H15. Graphs and Paths.
20 Implementatie: Hashing 1 H20. Hash Tables.
21 Implementatie: Binary Heap1 H21. A Priority Queue: The Binary Heap.

1 Deze onderwerpen zijn in het najaar van 2003 niet behandeld.

Globale planning practicum.

week opdracht
1 Homemade gelinkte lijst (toepassen van dynamisch geheugen, recursieve data en recursieve algoritmen).
2 Vergelijken van bubble sort O(n2) en quick sort (n·log n). Bepalen van de orde van een zelf ontworpen functie om het meerderheidselement in een array te bepalen (toepassen van algoritme analyse).
3 Fouten afvangen bij een generieke stack (toepassen van exceptions).
4 Quick sort generiek maken (toepassen van templates, functiepointers en functors).
5 Opsporen van fraude (toepassen van map, iteratoren en algoritmen).
6 Boter Kaas en eieren (toepassen van minimax algoritme met alpha-beta pruning en transposition table).
7 Uitloop.

Gedetailleerde planning theorie.

Les 1. Algemene inleiding en algorithm analysis.

Les 2. Overzicht van de belangrijkste datastructuren.

Les 3. Toepassingen van een stack.

Les 4. Implementaties van een stack.

Les 5 Advanced C++ (o.a. vector, namespace).

Les 6. Advanced C++ (exceptions).

Les 7. Advanced C++ (vervolg exceptions, casting, RTTI).

Les 8. Design Patterns (Functor, Adaptor, Iterator).

Les 9. STL inleiding (string, overzicht, sequentiële containers).

Les 10. STL container adapters en associatieve containers.

Les 11. STL iterators, inleiding algoritmen.

Les 12. STL algoritmen en functie objecten.

Les 13. Behandelen vraagstuk (galgje) of uitloop.

Les 14. Toepassingen: Spelletjes.

Les 15. Toepassingen: Schaken (min-max algoritme, alpha-beta pruning).

Les 16. Toepassingen: Compressie.

Les 17. Toepassingen: Simulatie Internet Provider.

<<nog invullen!>>1

Les 18. Graphs.

Les 19. Algoritmen voor graphs (bijvoorbeeld: korste pad).

Les 20. Implementatie: Hashing.

<<nog invullen!>>1

Les 21. Implementatie: Binary Heap.

<<nog invullen!>>1