(Mijn bacheloreindwerk - ga het hier even kort neerschrijven)
Programmeertaal: Java
Moeilijkheid: NOVICE - EXPERT
Titel: Sorteeralgoritmen visualiseren en dynamisch inladen
Uitgebreid:
- Maak een desktop applicatie (die werkt op Windows, MAC OS X en Linux) die meerdere sorteeralgoritmen gelijktijdig kan visualiseren (multithreading dus).
- Zorg ervoor dat studenten hun eigen algoritme kunnen schrijven (die al-dan-niet fouten bevat) en deze kunnen "inpluggen" in je applicatie om te kunnen visualiseren.
(Bijvoorbeeld via het @runtime inladen van JAR files of .class files etc)
- Zorg dat er nuttige visualisaties beschikbaar zijn voor elk soort algoritme. Bijvoorbeeld HeapSort heeft nood aan een visualisatie van een heap. (Zorg uiteraard ook voor animaties bij een "swap" tussen 2 elementen).
- Zorg dat verschillende soorten data gesorteerd kan worden (strings, integers, user-made types (klassen die de "Comparable" interface geimplementeerd hebben bvb).
- Voorzie datageneratoren voor de bovenvernoemde standaard types.
( - Voorzie ook een PDF handleiding zodat studenten je applicatie kunnen gebruiken.)
- Voorzie ook basisklassen die de studenten kunnen helpen om hun algoritmen te implementeren.
Moeilijkheden:
- Je hebt meerdere algoritmen die gelijktijdig moeten uitgevoerd worden = multithreading. MAAR ook elk algoritme kan meerdere visualisaties hebben, die moeten dus gesynchroniseerd hun acties uitvoeren. Dus als het algoritme een "swap" uitvoert, dan moet elk van zijn visualisaties dit tonen.
- Dynamische layout, niet elke visualisatie neemt evenveel plaats in op de GUI, je moet dus berekenen waar je alles plaatst, maar het moet wel duidelijk zijn welke visualisatie bij welk algoritme hoort.
- Robuustheid. Studenten kunnen fouten in hun algoritme hebben, zorg ervoor dat deze correct opgevangen en getoond worden en dat het programma niet ineens crashed.
- Zorg voor een "debug-mode" waar je stap voor stap door het algoritme kan "steppen" om alles traag in zijn werk te zien gaan. (Kan ook dus gebruikt worden om fouten te vinden)
Extra:
- Multilanguage support
- ...
NOTE: Er was een gelijkaardige opdracht voor het visualiseren van graafalgoritmen, als dat je beter ligt

.
Greetz,
Dave