Het ontwikkelen van een crash course programmeren

Sinds ik bij de Hogeschool Rotterdam werk, zo’n twee jaar nu, wil ik me meer bezig houden met het programmeeronderwijs. Voor de eerstejaars studenten van dit cohort (2011 – 2012) is het de bedoeling dat het programmeren nogmaals wordt aangeboden in een verkorte (en dus ook een versnelde) vorm. En dit mag ik doen! En ik zou ik niet helemaal zijn, als ik het niet weer net wat anders wilde aanpakken zoals het nu gebeurd.

Ik ben van mening dat ook als iets goed gaat (en zeker als iets niet goed gaat), je altijd moet blijven zoeken naar hoe het beter kan. Zo ook met deze kans voor een crash course programmeren. Ik krijg de kans om het materiaal anders in te delen en zelfs om mijn eigen tentamens te maken. Hoe leuk dit ook voor mij is, is het duidelijk wel veel meer werk dan als ik gewoon het huidige materiaal gebruik. Ik ben daar niet goed in, andermans slides gebruiken. Elke docent verteld toch zijn eigen verhaal. De stof is hetzelfde, maar de voorbeelden en context kan verschillen. Daarbij komt ook nog eens dat ik mijn slides niet altijd gebruik om informatie op te zetten, maar vaak ook om mijn verhaal kracht bij te zetten. Een recente discussie met een student ging over het feit of het wel of niet ideaal zou zijn als slides een autonome informatiebron moeten vormen. Ik vind dat er een informatiebron moet zijn, dat wel, maar dat dit niet perse de slides hoeven te zijn. Maar goed, ik ga dus weer aan de slag met mijn eigen slides, mijn eigen werkvorm, mijn eigen opgaven en een eigen tentamen. :)

De stof

De lesstof is Java binnen het kader van de vakken INFPRG00 en INFPRG01 (Programmeren 00 en 01). Programmeren 0 houdt in de basis. Hierbij kan je denken aan variabelen, types, een klasse, if, for, while, switch dat soort dingen. Bij Programmeren 1 gaan we dieper in op het OO-programmeren en de OO-structuur.

Het is geen rocket science, maar ik kan me heel goed voorstellen dat als het niet goed overkomt, dat de basis dan niet de juiste fundering geeft voor de verdere programmeercarrière van de studenten. Daarom wil ik niet alleen de lesstof overbrengen. Ik denk ook niet dat dat de taak is van een docent. Ik denk dat de docent moet zorgen voor een omgeving waarin de student het beste kan leren en zeker ook kan leren leren. En dat laatste wil juist ik gaan proberen, een omgeving maken waar de studenten kunnen leren leren programmeren. Dit is een stap verder dan ze alleen te leren programmeren. Ik denk zelf dat het leren programmen niet perse van de docent af hoeft te komen. Maar om te zorgen dat ze leren leren programmeren denk ik wel dat een didactische aanpak een goede invulling kan geven.

De werkvorm

Tja, hoe ga ik dat dan aanpakken? De stof moet ook in vijf weken worden gegeven. En daarbij in het achterhoofd houdend dat het om de inhoud van twee vakken gaat. Als ik het huidige materiaal neem en dat ga geven, dan red ik het in ieder geval niet. Hoe ga ik het dan doen? Hoe krijg ik voor elkaar dat de studenten zo goed mogelijk leren, en hopelijk zelfs nog op hun eigen tempo? Zeker dat laatste is een factor wat niet onderschat mag worden. Als de lessen te traag gaan of te snel dan raak je je concentratie sneller kwijt. Maar hoe kan je inspelen op ieders afzonderlijke tempo?

Socioconstructivisme

Over het leren van mensen zijn binnen de wetenschap diverse onderzoeken uitgevoerd en filosofische kentheoriëen ontwikkeld. Het constructivisme gaat uit van het feit dat mensen hun eigen kennis moeten creëren. Kennis van de werkelijkheid is, volgens het constructivisme, een ervaring. Die ervaring moet ieder zelf ervaren om het als kennis te kunnen opnemen. Het socioconstructivisme, of sociaal constructivisme gaat een stap verder en zegt dat het opdoen van de kennis op deze manier een sociale motivatie heeft. Door het met elkaar te doen, zal men sneller de kennis kunnen ervaren. Dit komt onder andere door het moeten uitleggen (dus zelf weten, snappen en vertalen), het in aanraking komen van verschillende invalshoeken en het afwegen van andere argumenten, dus het er dieper over nadenken. Dit alles zou moeten zorgen voor een omgeving voor de lerende om heel actief en vooral zelf creërend te werk te gaan bij het opdoen van kennis.

Laat dit nou precies zijn waarvan ik denk dat dit mijn heel goed zou kunnen helpen bij deze crash course. ;)

De werkvorm

Geleidt door het socioconstructivisme wil ik mijn lessen gaan indelen, waarbij ik de volgende doelen wil bereiken:

  • De student moet in zijn eigen tempo de stof eigen kunnen maken.
  • De student moet leren leren programmeren, dit houdt in dat de student niet alleen de stof op moet nemen, maar ook moet begrijpen hoe hij nieuwe stof het beste eigen kan maken.
  • De student moet door middel van verschillende opgaven, een stijgend niveau of complexiteit kunnen ervaren om zo in te zien hoe, met dezelfde structuur en kennis van de syntax, nieuwe, complexere problemen vereenvoudigd kunnen worden en uiteindelijk opgelost kunnen worden.
  • De student moet gemotiveerd zijn om verder te willen komen.
  • De student moet regelmatig feedback krijgen op de voortgang en de aanpak.
  • De student moet te allen tijde antwoorden kunnen inzien van de opgaven, zodat hij daarvan leert en eventueel zichzelf kan verbeteren.
  • De student moet voldoende bronnen van kennis tot zijn beschikking hebben.
  • De student werkt in een groep om zo van elkaar te leren en directe feedback te kunnen krijgen.

Ik zal niet ontkomen aan het ‘uitleggen’ van bepaalde onderdelen. Dit wil ik wel beperken, om de studenten die verder zijn dan de stof dat uitgelegd wordt, ook bezig te houden. Ik wil dus voornamelijk de studenten aan het werk zetten in groepen. Het uitleggen wil ik zeker niet overslaan, maar gerichter doen per groep studenten. Ik wil de niveaus bepalen en aan de hand daarvan opgaven maken. Studenten die het snel oppakken, eisen minder aandacht en vooral minder uitleg. Studenten waarbij het minder snel gaat, of waarbij het leren leren nog niet goed gaat, krijgen meer aandacht. Doordat studenten ook elkaar kunnen helpen zullen zij ook snel, korte feedback krijgen op de stof en het leren zelf. Door de niveaus te bepalen, kunnen de studenten hun eigen voortgang volgen. En ik kan studenten bijsturen die achter dreigen te lopen en zelfs studenten die veel verder zijn inschakelen om studenten die achterlopen te helpen.

Het aller belangrijkst is vooral dat de student bewust is dat hij zelf verantwoordelijk is voor zijn eigen leren. Door dit duidelijk te hebben, hoop ik dat de studenten zelf achter de kennis aangaan. Door zelf kennis te zoeken, leren we beter dan door het voorgeschoteld te krijgen. Een goede balans van interactie met peers (sociaal), interactie met de stof (materie) en interactie met de docent zorgt voor de omgeving waarin het leren leren het beste werkt.

Het tentamen

Ik wil de feedback niet alleen tijdens de lessen geven, maar ook na het tentamen. Studenten kunnen het tentamen wel inzien, maar daarmee wordt niet duidelijk feedback gegeven, er wordt alleen duidelijk welke fouten er zijn gemaakt. Vaak wordt er niet terug gekoppeld hoe de student het heeft gedaan of wat hij volgende keer beter kan doen. Ik denk dat als het tentamen in categorieën verdeeld wordt, dat daarmee duidelijker kan worden terug gekoppeld aan de student op welk gebied hij meer aandacht moet vestigen. Ook bij een voldoende is het zo dat deze informatie de student ook verder kan helpen in de toekomst. Het moet niet over zijn na een vak, maar het behalen van het tentamen is, in het geval van het programmeren voor de eerstejaars, een basis om verder te komen. Door ook feedback te geven als het tentamen is afgerond, kan de student rekening houden met zijn sterke en minder sterke punten op het gebied van het zojuist behaalde vak.

Multiple choice of openvragen?

Ook zal binnen het tentamen de moeilijkheidsgraad stijgen. Hier hou ik rekening met de taxonomie van Bloom en met name de eerste drie lagen: kennis reproductie, kennis begrijpen en kennis toepassen. Deze komen terug in de vorm van directe vragen naar de kennis en het toepassen van de kennis binnen een case. Ik neig zelf naar een multiple choice tentamen, maar het risico is dat, als dit verteld wordt aan de student, de student minder moeite doet om te leren, omdat hij denkt dat een MC-toets makkelijker is dan een toets met openvragen. Hier ben ik het niet mee eens, zeker niet als er meer dan vier antwoorden zijn. Ook kan dit euvel natuurlijk worden aangepakt een goed, overeenkomend oefententamen te geven.

Uiteraard is een ander voordeel dat het nakijken van een MC-toets een stuk sneller gaat. Echter is dit in tegenstelling tot het maken ervan, wat weer veel meer tijd kost dan het maken van een openvragen toets.

Conclusie

Door op de socioconstuctivistische manier te werk te gaan, denk ik op een effectieve manier een omgeving voor de studenten te kunnen maken waarin zijn kunnen leren leren programmeren. Ik denk dat het succes vooral ook afhangt van de feedback en snelheid en dat is nu juist wat op deze manier kan worden bereikt en kan worden aangepast per student. De werkvorm biedt een hoop flexibiliteit, maar zal ook heel veel voorbereiding vragen.

Het is voor mij ook een experiment, maar door eerdere ervaringen denk ik dat het wel de jusite manier is om de studenten van deze tijd te benaderen. Ook het gebruik van sociale media kan hierbij helpen. Ik denk dat Twitter en Facebook media zijn die kunnen worden gebruikt om de student te bereiken.

Wordt vervolgd… :)

  7 comments for “Het ontwikkelen van een crash course programmeren

  1. Sajia
    9 juni 2012 at 18:40

    Hoi Bob,

    Ik vind dit een heel goede idee, it is going to work. Een ding dat ik wil vragen, is de lesstof alleen in Java taal? niks voor studenten die beter willen worden in .Net?

    Groetjes
    Sajia

    • Bob
      9 juni 2012 at 21:01

      Ik moet nog toetsen of het nog werkt :-). Ik probeer niet te veel op d e taal in te gaan, maar we gebruiken Java. Overigens zijn de lessen net zo goed toe te passen op C#.

      • Radek Slupik
        10 september 2012 at 19:43

        Java is nogal gericht op OOP, word er ook aandacht besteed aan b.v. functional programming met b.v. Haskell, Erlang of een Lisp-dialect? Dit kan een andere kijk geven op de structuur van programma’s, of in ieder geval kleine delen daarvan (natuurlijk kunnen meerdere paradigms gemixt worden).

        Verder een mooie blogpost.

      • Bob
        10 oktober 2012 at 18:52

        Op dit moment niet. Hier zijn we wel mee bezig en hoogstwaarschijnlijk gaat dit, als dit gegeven gaat worden, gebeuren in de hogere jaren.

  2. 21 augustus 2012 at 14:54

    hi ik wilde vragen ben u goed in progameren ik ben bezig met school en moet als opdracht iets bedenken en dan laten maken maar eerst moet ik progameren kunt u mij helpen in dat grtjes kito [...]

  3. Koen
    4 april 2013 at 12:07

    Hallo Bob, Uitstekende post ”
    Het ontwikkelen van een crash course programmeren”. Ik ben een programmeercourse aan ‘t ontwikkelen voor de Hogeschool Leiden. Jouw post was motiverend. Kun je wat vertellen (post?) over hoe het verder is gegaan?
    Koen

    • Bob
      4 april 2013 at 23:05

      Hoi Koen, bedankt voor je reactie. De cursus is afgerond. De studenten hebben het als heel positief ervaren. Ook het opnemen van de lessen werkte heel goed. Het is als docent wel wennen om niet gelijk conclusies te trekken als er mensen een keer niet zijn. Blijkt dat vele het dan thuis alsnog terug kijken en vooral kijken naar de stukjes die ze nog niet goed beheersen. Zoals het bedoeld was.

      De toets was een MC toets. Kostte wat tijd om op te zetten, maar dan is het nakijken ook zo gelukt weer. Dat scheelde en je kan toch op alle niveaus toetsen.

      Mocht je meer willen weten, stuur anders even een email :). Succes! Ben ook erg benieuwd naar hoe jij het gaat doen en je ervaringen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Zoals de meeste websites gebruiken we cookies om een meer persoonlijke en snelle service te bieden.

Wij gebruiken cookies zodat onze website meer efficiënt kan functioneren, om de prestaties te verbeteren en, eventueel, om op maat reclame van onze partners aan te bieden. Als u doorgaat gaan we ervan uit dat u akkoord gaat alle cookies te krijgen van onze website.

To accept cookies please Click To Continue