React!

Projecttitel: React!
Vakgroep/Dienst: Toegepaste Wiskunde, Informatica en Statistiek (WE02)
Promotor: Prof. Christophe Scholliers
Projectmedewerkers:

Korte beschrijving van het onderwijsinnovatieproject

React - robotHet vak functioneel en logisch programmeren leert studenten de concepten van de functionele programmeertaal Haskell. Dit omvat basisconcepten zoals luie uitvoering, algebraïsche datatypes, polymorfisme, type classen maar ook meer geavanceerde concepten zoals continuaties, functoren, monoids, monads en monad omvormers. Bovenop deze concepten is het zo dat de notie van assignment niet bestaat in pure functionele talen. Programmeren zonder deze notie is voor studenten bijzonder moeilijk aangezien dit voor vele studenten de allereerste keer is dat ze geconfronteerd worden met zo een programmeermodel. Het is dan ook nodig dat de studenten zich verdiepen in deze programmeertaal door het maken van allerhande oefeningen.

Vaak zijn het type oefeningen die studenten moeten oplossen echter zeer theoretisch van aard, bijvoorbeeld oefeningen over lijsten, het implementeren van de lambda calculus enzoverder. Het is dan ook bijzonder moeilijk voor studenten om in te zien hoe deze meer theoretische concepten ook hun nut hebben in het programmeren van dagdagelijkse programma's.

Samenvattend is het doel van dit onderwijsproject studenten te stimuleren om diepe kennis te vergaren over theoretische concepten door deze praktisch toe te passen voor het programmeren van robots. Bovendien is het gebruik van robots niet beperkt tot het aanleren van functionele programmeertalen. Deze robots zouden dus in een latere fase ook kunnen worden ingezet voor andere vakken.

Beschrijf hoe het onderwijsinnovatieproject aansluit bij één van de twee thema’s ‘activerend leren’ en ‘multidisciplinariteit’

Om studenten te engageren en hun ondersteuning te bieden voor activerend leren schuiven we het gebruik van robots naar voor. Het gebruik van robots heeft twee voordelen: Ten eerste zal het gebruik van robots een stimulerende rol hebben bij het leerproces van de studenten. In plaats van geconfronteerd te worden met veelal theoretische oefeningen zullen de studenten geconfronteerd worden met praktische problemen die ze ook graag zullen willen oplossen. Ten tweede zal het gebruik van robots ook zeer duidelijk tonen aan de studenten dat zelfs hoog reactieve systemen op functionele wijze kunnen worden geprogrammeerd. Met de opkomst van reactieve system zoals webapplicaties, multi-touch input, Kinect 3d camera’s en RFID technologie is het dan ook zeer belangrijk dat onze studenten deze concepten onder de knie krijgen.

Doelstellingen van het project + tijdsbesteding

Het doel van het onderwijsinnovatie project is om oefeningen te maken voor het onderwijzen van functioneel programmeren aan de hand van robots. We voorzien hierin 3 fasen.

1 Onderzoeken van de geschiktheid van de robots

Hoewel er reeds een heel groot aantal robots bestaan om kinderen te leren programmeren, valt het nog te onderzoeken of deze robots ook geschikt zijn om deze te programmeren vanuit Haskell. Hiervoor is er reeds een eerste evaluatie gemaakt van de markt wat ons drie kandidaat-robots heeft opgeleverd. Hoewel deze drie robots programmeerbaar zijn, moeten we nog uitzoeken of de primitieven die deze robots ondersteunen voldoende zijn om deze ook vanuit Haskell te programmeren.
Een eerste robot, de MBOT, biedt een grafische programmeertaal aan die gecompileerd wordt naar C. Dit betekent dat het in principe vrij makkelijk is om deze te herprogrammeren en aan te sturen vanuit Haskell.
Een tweede robot (Eddison) gebruikt een soort assembler taal wat het wat moeilijker maakt om deze te programmeren.  Deze robot werd al uitgetest en voldoet niet aan de vereisten.
Tenslotte, is er de WowWee MiP robot die programmeerbaar is vanuit objective-C. Het valt echter nog af te wachten of deze robot ook te programmeren valt met andere linux platformen dan OSX.
Elk van deze robots beschikt over een voldoende aantal sensoren die nodig zijn om het interessant te maken om deze robots te programmeren vanuit Haskell.

2 Ontwikkelen van de software technologie om robots te programmeren in Haskell

Parallel aan het onderzoeken van de robottechnologie zullen we een bibliotheek ontwikkelen voor het programmeren van de robots vanuit de Haskell programmeertaal. Deze bibliotheek zal basisconcepten uit reactief functioneel programmeren bevatten. We zullen de nadruk leggen op het ontwikkelen van een didactische bibliotheek die het mogelijk maakt om de bibliotheek zelf ook te onderwijzen. Nadat de studenten in eerste instantie gebruik hebben gemaakt van de bibliotheek zal in een tweede fase de werking van de bibliotheek zelf ook onderwezen worden. Daarom zal deze bibliotheek niet focussen op efficiëntie.

3 Ontwikkelen van ondersteunend materiaal

Om de studenten snel van start te laten gaan met de ontwikkelde bibliotheek zal er allerhande ondersteunend materiaal ontwikkeld worden. Dit gaat van kleine voorbeeld-applicaties oefeningen, leesmateriaal over de robots, tot slides die tijdens de hoorcolleges gegeven zullen worden. Verder zullen er posters ontwikkeld worden om bepaalde opdrachten met de robots te kunnen testen. We denken hier in eerste instantie aan het printen van posters met dikke zwarte lijnen die gevolgd moeten worden door de robots.