Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het...

83
Rendement van objectgeori¨ enteerd programmeeronderwijs Ernst Koldenhof Johan Jeuring Sandra Ruth [email protected] 1 juli 2011 Dit onderzoek is uitgevoerd met financiering van Kennisnet in het kader van de Stimuleringsregeling Educatief Onderzoek. 1

Transcript of Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het...

Page 1: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Rendementvan

objectgeorienteerd programmeeronderwijs

Ernst KoldenhofJohan JeuringSandra Ruth

[email protected]

1 juli 2011

Dit onderzoek is uitgevoerd met financiering van Kennisnet in het kader van deStimuleringsregeling Educatief Onderzoek.

1

Page 2: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Inhoudsopgave

1. Inleiding 4

2. Context 4

3. Leren programmeren 5

4. Welke factoren spelen een rol in leren? 74.1. Attitude van de leerlingen . . . . . . . . . . . . . . . . . . . . . . . . . 74.2. Onderwijs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.2.1. De leerdoelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2.2. De lesmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . 84.2.3. Perceptie docent . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2.4. Perceptie leerlingen . . . . . . . . . . . . . . . . . . . . . . . . 9

5. Onderzoeksmethode 95.1. Attitude van de leerlingen . . . . . . . . . . . . . . . . . . . . . . . . . 95.2. Onderwijs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5.2.1. De leerdoelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.2.2. De lesmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.2.3. Perceptie docent . . . . . . . . . . . . . . . . . . . . . . . . . . 115.2.4. Perceptie leerlingen . . . . . . . . . . . . . . . . . . . . . . . . 11

5.3. Vakinhoudelijke vorderingen . . . . . . . . . . . . . . . . . . . . . . . 115.3.1. De tussentijdse toets . . . . . . . . . . . . . . . . . . . . . . . . 125.3.2. De eindtoets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6. Resultaten 146.1. Attitudetesten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.2. Onderwijs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

6.2.1. De leerdoelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.2.2. De lesmethode . . . . . . . . . . . . . . . . . . . . . . . . . . . 176.2.3. Perceptie docent en leerlingen . . . . . . . . . . . . . . . . . . 19

6.3. Vakinhoudelijke vorderingen . . . . . . . . . . . . . . . . . . . . . . . 206.3.1. School 1: Den Bosch . . . . . . . . . . . . . . . . . . . . . . . . 206.3.2. School 2: Arnhem . . . . . . . . . . . . . . . . . . . . . . . . . . 236.3.3. School 3: Culemborg . . . . . . . . . . . . . . . . . . . . . . . . 256.3.4. School 4: Almere . . . . . . . . . . . . . . . . . . . . . . . . . . 29

7. Conclusies en verder onderzoek 31

A. Analyse Fundament 36A.1. Hoofdstuk 1: objecten in BlueJ . . . . . . . . . . . . . . . . . . . . . . . 36A.2. Hoofdstuk 2: de schildpad . . . . . . . . . . . . . . . . . . . . . . . . . 37A.3. Hoofdstuk 3: klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38A.4. Hoofdstuk 4: objecten met objectrelaties . . . . . . . . . . . . . . . . . 39A.5. Hoofdstuk 5: collecties . . . . . . . . . . . . . . . . . . . . . . . . . . . 40A.6. Hoofdstuk 6: keuzes en herhalingen . . . . . . . . . . . . . . . . . . . 41A.7. Hoofdstuk 7: gebruikersinterface . . . . . . . . . . . . . . . . . . . . . 42

B. Analyse Enigma 44B.1. Deel 1 - Hoofdstuk 4: Visueel Programmeren met Java . . . . . . . . . 44B.2. Deel V - Hoofdstuk 1: Objectgeorienteerd programmeren met Java . 51

2

Page 3: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

C. Concepten en structuren in de lesmethoden 55C.1. Fundament: concepten en structuren van het lesmateriaal . . . . . . . 55C.2. Enigma: concepten en structuren van het lesmateriaal . . . . . . . . . 57

D. Attitudetesten 61D.1. Vragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61D.2. Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

D.2.1. Den Bosch - test voorafgaand . . . . . . . . . . . . . . . . . . . 64D.2.2. Den Bosch - test naderhand . . . . . . . . . . . . . . . . . . . . 65D.2.3. Arnhem - test voorafgaand . . . . . . . . . . . . . . . . . . . . 66D.2.4. Arnhem - test naderhand . . . . . . . . . . . . . . . . . . . . . 67D.2.5. Culemborg - test voorafgaand . . . . . . . . . . . . . . . . . . 68D.2.6. Culemborg - test naderhand . . . . . . . . . . . . . . . . . . . . 69D.2.7. Almere - test voorafgaand . . . . . . . . . . . . . . . . . . . . . 70D.2.8. Almere - test naderhand . . . . . . . . . . . . . . . . . . . . . . 71

E. De toetsen 71E.1. Voorbeeld tussentijdse toets . . . . . . . . . . . . . . . . . . . . . . . . 71E.2. Voorbeeld eindtoets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

3

Page 4: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

1. Inleiding

Bij de invoering van de vernieuwde tweede fase van het vak Informatica in hetvoortgezet onderwijs in 2007 is het aantal uren beschikbaar voor informatica toe-genomen. Hierdoor is er meer ruimte om aandacht te besteden aan de verschil-lende onderwerpen die bij informatica een rol spelen. Programmeren speelt eenbelangrijke rol binnen het vak, en op alle scholen die informatica aanbieden wordtde nodige aandacht aan programmeren besteed.

Dit rapport is een verslag van een onderzoek waarin we bestuderen hoe leerlin-gen leren programmeren, op welke manier verschillende scholen het program-meeronderwijs aanbieden, en wat we kunnen zeggen over het rendement van ditprogrammeeronderwijs. Samen met docenten van vier scholen uit het voortgezetonderwijs kijken naar hoe het onderwijs in objectgeorienteerd programmeren isopgezet, hoe de leerlingen het onderwijs ervaren, en wat de resultaten van hetonderwijs zijn. Om de variatie in het onderwijs enigermate te beperken, heb-ben we scholen uitgezocht die gebruik maken van een van de twee lesmethodenEnigma [6] of Fundament [11]. We zullen uitgebreid stil staan bij de factoren dieeen rol spelen bij het leren programmeren, en we zullen analyseren in hoeverre diefactoren terugkomen in deze lesmethoden, en in het onderwijs waarbinnen vandeze lesmethoden gebruik wordt gemaakt.

2. Context

Informatica is met haar ruim 10 jaar een van de jongste vakken in het middelbaaronderwijs. Het vak wordt over het algemeen verzorgd door docenten die een le-rarenopleiding binnen een ander vak hebben gevolgd en omgeschoold zijn binnende CODI-opleiding (Consortium Omscholing Docenten Informatica), of door on-bevoegde leraren. De universitaire lerarenopleiding informatica bestaat pas eenaantal jaren, en heeft nog maar weinig leraren informatica opgeleverd.

De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerstontwikkeld binnen de CODI opleiding, en daarna door docenten, op individuelebasis, of binnen teams van auteurs. Vakdidactisch onderzoek op het gebied vande informatica gebeurt op slechts zeer weinig plekken: informatica is een jongvakgebied, en vakdidactiek informatica nog jonger. Dit geldt niet alleen voor Ne-derland, maar ook voor het buitenland. In de Verenigde Staten wordt informaticaal iets langer op middelbare scholen aangeboden, maar in Groot-Brittanie is infor-matica pas later op middelbare scholen geıntroduceerd. Er zijn veel bijeenkomstenwaarop informatie over informatica-onderwijs wordt uitgewisseld, binnen Neder-land bij de jaarlijkse bijeenkomst van de vereniging I & I en het NIOC (NederlandsInformatica Onderwijs Congres), en internationaal op de SIGCSE en ITICSE bijeen-komsten. Maar vakdidactisch onderzoek wordt op beperkte schaal uitgevoerd, eninternationaal zijn er slechts een aantal spelers actief in het vakgebied [7, 9, 3]. Ge-zien de leeftijd van het vakgebied is het belangrijk om onderzoek uit te voeren dateen aantal eerste stappen zet, leidt tot goede vervolgvragen, en dat helpt om hetarsenaal aan onderzoeksmethoden uit te breiden.

4

Page 5: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

3. Leren programmeren

Leren programmeren is moeilijk: het resultaat van programmeervakken of -onder-delen is vaak minder goed dan leerlingen verwachten [20]. Daarbij is de spreidingvan de vaardigheden onder de leerlingen vaak groot: naast leerlingen die grotemoeite hebben met het vak, maken sommige leerlingen zich het programmerenzeer snel eigen. Al jarenlang proberen onderzoekers de oorzaken van de variabeleleeropbrengst te verklaren en te zoeken naar mogelijkheden om het leren program-meren te verbeteren [21]. Dit hoofdstuk beschrijft een aantal belangrijke manierenom tegen het leren programmeren aan te kijken.

Merrienboer en Paas [16] kijken naar hoe experts programma’s ontwikkelen en ge-bruiken deze observaties om te bepalen welke kennis en vaardigheden nodig zijnvoor het programmeren. Zij hebben mede uit deze observaties de 4C/ID methodeontwikkeld.

Andere onderzoekers volgen vooral beginnende programmeurs tijdens het lerenprogrammeren. Perkins et al. [19] observeren dat beginners bij het leren program-meren twee soorten reacties kunnen vertonen t.o.v. de opdrachten en leerstof. Deeerste soort reactie is die van iemand die niet meer weet wat hij of zij moet doen, enals reactie daarop maar helemaal niets doet. Deze zogenaamde stop-reactie wordtdoor sommigen gekoppeld aan karaktereigenschappen van de beginnende pro-grammeur. Zo koppelen Murphy et al. [17] dit gedrag aan het zelfbeeld van debeginnende programmeur die in het geval van een stop-reactie denkt dat hij/zijopdrachten niet kan omdat hij/zij niet slim genoeg is. De leerling hanteert eenbeeld waarbij kennis en vaardigheden een vaste eigenschap is (fixed mindset). Deandere soort reactie is die van een leerling die ondanks het feit dat hij of zij geenduidelijk aanwijzingen heeft wat hij of zij precies moet doen, wel verder gaat. Hier-bij volgt of ontwikkelt de leerling een eigen strategie. Een leerling met dit gedragnoemt Perkins een mover. Een mover maakt veel meer vorderingen dan een stopper.Volgens Murphy bezit een mover een zelfbeeld waarbij hij of zij meent dat door in-spanning de meeste problemen te overwinnen zijn (growth mindset). Murphy steltdat een docent en een leermethode (en met name de opgaven binnen de leerme-thode) een belangrijk sturend aandeel hebben in het bepalen van dit zelfbeeld. Eenleerling kan in verschillende stadia van een opdracht gestimuleerd worden om vaneen fixed mindset naar een growth mindset te gaan.

Het bestuderen van de verschillende competenties die beginnende programmeursbeheersen is een derde manier om naar het leren programmeren te kijken. Lahti-nen [12] kijkt naar de prestaties van programmeurs, en laat zien dat deze prestatiesin verschillende categorieen kunnen worden ingedeeld. Deze categorieen volgenniet precies de veelgebruikte Bloom-taxonomie [5], en leerlingen die uiteindelijkgoed kunnen programmeren scoren op alle Bloom-niveaus even goed. Dit is eenindicatie dat de Bloom-taxonomie niet altijd de beste indeling is om aan te gevenop welk niveau een leerling programmeervaardigheden beheerst. Lister et al. [13],Whalley et al. [27], en Lopez et al. [14] analyseren een aantal toetsen en testresul-taten van leerlingen zowel met de Bloom-taxonomie als de SOLO-taxonomie [27].De SOLO-taxonomie lijkt een beter passende indeling in niveaus te geven. Ver-der laten zij zien dat het kunnen lezen van programma’s en het in eigen woordenkunnen beschrijven van programma’s een noodzakelijke voorwaarde is om eenprogramma te kunnen schrijven. Om een programma in eigen woorden te kunnenbeschrijven is kennis van de basisprogrammeerconstructies noodzakelijk. Boven-dien moet een leerling deze constructies op de juiste manier aan elkaar kunnenrelateren. Het leren programmeren verbetert door eerst programma’s te leren le-

5

Page 6: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

zen, dan te beschrijven, en tenslotte te schrijven.

Leren programmeren gebeurt in een context, bestaande uit voorbeelden, toepas-singen, en opgaven. Het eerste niveau in de Bloom-taxonomie kan niet bereiktworden zonder een context waarin vaardigheden uit de hogere Bloom-niveausgebruikt worden. Bij het bestuderen van het leren programmeren is het daarombelangrijk te bepalen waar en hoe de context (voorbeelden, toepassingen, opga-ven) terugkomt. De 4C/ID-methode en de SOLO-taxonomie besteden explicietaandacht aan de context van het leren programmeren.

In de bovenstaande onderzoeken wordt geen onderscheid gemaakt tussen proce-durele talen en objectgeorienteerde talen. Vooral onderwerpen als types, arrays,iteraties, conditionele constructies, en combinaties daarvan worden onderzocht engetoetst. Het gebruik van objecten in relaties of verwijzingen is echter een belang-rijk onderdeel van de meeste moderne (versies van) programmeertalen. Het lerenprogrammeren in een objectgeorienteerde programmeertaal vergt naast vaardig-heden in het procedureel programmeren een aantal andere vaardigheden [21].

Hoe leren leerlingen programmeren in het Nederlandse voortgezet onderwijs?Hoewel de tijd en inspanningen op dit gebied nogal verschillen per school [8],speelt het onderdeel programmeren over het algemeen een bescheiden rol in hetvak Informatica. Door de urenuitbreiding van het vak bij de vernieuwing vande tweede fase is programmeren belangrijker geworden, en de eindtermen in hetexamenprogramma [25] bieden de mogelijkheid om het programmeren verder teverdiepen.

Er zijn voor het schoolexamenvak Informatica drie methoden beschikbaar: Infor-matica Actief [4], Enigma [6] en Fundament [11]. Alle drie methoden maken ge-bruik van Java als programmeertaal, maar op een verschillende manier, en metverschillende ontwikkelomgevingen. Informatica Actief behandelt vooral de les-stof van JavaLogo, waarin met name programma’s met een visueel resultaat, zoalsgrafische afbeeldingen, worden ontwikkeld, net als in de programmeertaal LOGO.Informatica Actief gebruikt vooral het procedurele gedeelte van Java en en in min-dere mate het objectgeorienteerde deel. In Enigma maken twee hoofdstukkengebruik van Java. De eerste behandelt net als Informatica Actief met name hetprocedurele aspect van het programmeren, en de tweede behandelt het objectge-orienteerd programmeren. De module van Fundament die objectgeorienteerd pro-grammeren behandelt heet BlueJ en gebruikt ook de BlueJ ontwikkelomgeving1.Deze methode behandelt direct objectgeorienteerde begrippen zoals object, me-thode, klasse, etc.

Omdat programmeren een steeds belangrijkere component in het informaticaon-derwijs wordt, is het belangrijk om te bepalen hoe leeropbrengst gemeten kan wor-den, en wat de leeropbrengst is van onderwijs dat gebruik maakt van een speci-fieke lesmethode. Leeropbrengst wordt standaard via toetsen gemeten. Hiervoormoeten we toetsen opstellen die onafhankelijk zijn van de verschillende lesmet-hoden. De vragen van deze toetsen zouden eventueel bij een schriftelijk examengebruikt kunnen worden.

In dit onderzoek vergelijken we de leeropbrengst van de onderdelen over object-georienteerd programmeren uit de lesmethoden Fundament en Enigma.

1http://www.bluej.org/

6

Page 7: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Onderzoeksvragen. In dit onderzoek bestuderen we de volgende vragen:

1. Welke factoren spelen een rol in het leren programmeren?

2. Wat is de leeropbrengst van het onderwijs dat gebruik maakt van de verschil-lende methoden?

De eerste vraag beantwoorden we middels een literatuurstudie. De tweede vraaghangt af van de eerste, en beantwoorden we middels een arsenaal aan methodendat we introduceren in hoofdstuk 5 over de gevolgde onderzoeksmethode.

4. Welke factoren spelen een rol in leren?

Om lesmethoden en leeropbrengsten met elkaar te vergelijken bepalen we eersteen aantal belangrijke factoren die de leeropbrengst beınvloeden. Niet alleen delesmethode beınvloedt de leeropbrengst van een vak, maar ook factoren zoals demotivatie van een leerling, docent, leerdoelen, exameneisen, en faciliteiten. Weonderscheiden twee categorieen in deze factoren:

• de attitude van de leerling t.o.v. het vak informatica;

• het informaticaonderwijs. Deze categorie verdelen we onder in:

1. de leerdoelen;

2. de lesmethode;

3. het curriculum dat de docent voor het vak heeft vastgesteld;

4. de perceptie van de leerlingen van de lessen.

In de volgende paragrafen gaan we kort op elk van deze factoren in.

4.1. Attitude van de leerlingen

Uit onderzoek van Perkins et al. [19] en Murphy et al. [17] blijkt dat de houding vaneen leerling een grote invloed heeft op zijn of haar vakinhoudelijke vorderingen.Zij identificeren zogenaamde movers en stoppers [19], waarbij een mover ondanksonzekerheden in de oplossingsstrategie vorderingen maakt, en een stopper een ne-gatieve attitude heeft t.o.v. het maken van fouten. Verder stellen Murphy et al. datde methode en de docent invloed hebben op de houding van de leerling t.o.v. delessen.

4.2. Onderwijs

De uitgangspunten en vorm van het onderwijs hebben een belangrijke invloed opde resultaten. We onderscheiden vier subcategorieen die we apart bekijken: deleerdoelen van het onderwijs, de lesmethode die gebruikt wordt, de intentie ende uitgangspunten waarmee de docent les geeft, en tenslotte hoe leerlingen hetonderwijs ervaren.

7

Page 8: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

4.2.1. De leerdoelen

De eindtermen van het vak informatica staan beschreven in de handreiking bij hetexamenprogramma Informatica voor het VO [25, 23]. Het onderdeel (objectge-orienteerd) programmeren wordt als volgt gedefinieerd:

Subdomein B3: SoftwareEindterm 7: De kandidaat beheerst eenvoudige datatypen, programmastructurenen programmeertechnieken. Daarnaast bevat het kernprogramma een introductieop objectgeorienteerd programmeren. Uit dit programmeerparadigma beheersende leerlingen de onderstaande begrippen:

• object

• objectklasse

• attributen en methoden.

Leerlingen kunnen deze begrippen toepassen bij de ontwikkeling van een object-georienteerd of visueel programma. Met laatstgenoemd begrip wordt een pro-gramma bedoeld met een grafische user interface. Deze interface bevat scherm-objecten als knoppen, invulvelden, selectievelden, enzovoorts. De schermobjectenkennen attributen zoals plaats, kleur en opschrift en methoden die user events af-handelen. In het kernprogramma voldoet het dat leerlingen het objectbegrip kun-nen verbinden met schermobjecten en een visueel programma kunnen schrijven.In het verdiepingsprogramma van het VWO leren de leerlingen bovendien:

• een OO-programma te schrijven met logische objecten (die enkel in het ge-heugen van de computer staan en niet als schermobject zichtbaar zijn)

• collectieobjecten in het programma te gebruiken. Collectieobjecten zijn ob-jecten die bestaan uit een verzameling van andere objecten, zoals de array ende array list (Java).

Daarnaast leren VWO-leerlingen “netjes” te programmeren. Hiermee wordt be-doeld dat deze leerlingen in een (OO-)taal leren programmeren die tenminste va-riabele typering afdwingt. De programmeertaal uit het kernprogramma hoeft dezeeigenschap niet noodzakelijk te bezitten. Als gevolg van het voorgaande verdienthet aanbeveling HAVO-leerlingen die opteren voor de HBO-opleidingen Informa-tica en Technische Informatica ook dit verdiepingsprogramma aan te bieden.

Tenslotte biedt het project in de verdiepingsprogramma’s de gelegenheid het bo-venstaande in een praktische context toe te passen.

4.2.2. De lesmethode

Een informaticalesmethode bestaat uit tekst- en oefenmateriaal. De onderwer-pen die de methode aanbiedt moeten aansluiten bij het informatica examenpro-gramma, en de opgaven moeten daarnaast aansluiten bij het niveau en de interes-ses van leerlingen in het voortgezet onderwijs.

Omdat we naar het objectgeorienteerd programmeren kijken, betreft het oefen-materiaal met name het schrijven van programma’s. Voor het schrijven van pro-gramma’s is instrumentarium nodig. Hieronder verstaan we de ontwikkelom-geving, de inrichting van deze omgeving, en de manier waarop deze omgevingwordt gebruikt. Een ontwikkelomgeving kan mogelijk goede ondersteuning ge-ven aan beginnende programmeurs, die bij het schrijven van programma’s tegen

8

Page 9: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

allerlei problemen aan kunnen lopen. Een didactische aanpak en een bepaaldeontwikkelomgeving kunnen elkaar ondersteunen of juist tegenwerken.

4.2.3. Perceptie docent

De leerdoelen voor het onderdeel objectgeorienteerd programmeren laten veel in-vullingsruimte aan de docent. De docent stelt het programma voor het onderdeelvast, en geeft daar invulling aan. De context waarin de lessen en toetsen plaatsvin-den wordt grotendeels door de docent bepaald.

Ames en Archer [1] laten zien dat sturing van een docent invloed heeft op de mo-tivatie en vakinhoudelijke vorderingen van een leerling. Murphy et al. [17] gevenaan hoe een docent een leerling met een fixed mindset kan beınvloeden.

4.2.4. Perceptie leerlingen

Naast de manier waarop de docent de lessen vormgeeft, heeft ook de perceptievan de lessen door de leerling invloed op de vakinhoudelijke resultaten. Een grootverschil tussen deze twee leidt in het algemeen tot slechte resultaten.

5. Onderzoeksmethode

We volgen de lessen informatica bij vier scholen in het voortgezet onderwijs. Descholen zijn geselecteerd via Enigma gebruikersgroep, via contacten bij de vereni-ging I&I, en via de uitgever van Fundament. Twee scholen maken gebruik van deFundament methode en twee van de Enigma methode. Het betreft de scholen:

School Stad Methode DocentStedelijk Gymnasium ’s Hertogenbosch Enigma Jochum van WeertArentheem College Arnhem Enigma Harmen LafeberLek en Linge Culemborg Fundament Ernst KoldenhofTrinitas Gymnasium Almere Fundament Chris Trauschke

5.1. Attitude van de leerlingen

Om de attitude van leerlingen te testen gebruiken we attitudetesten. Deze ne-men we af aan het begin en aan het eind van de periode waarin het onderwijsplaatsvindt. Zo meten we de aanvankelijke attitude van leerlingen ten opzichtevan objectgeorienteerd programmeren en de verandering daarin na het onderwijs.Middels de attitudetesten bepalen we ook het voorkennisniveau van de leerlingen.

De attitudetest vraagt naar:

1. algemene informatie, zoals naam, profiel en klas;

2. motivatie om het keuzevak Informatica in het vakkenpakket op te nemen;

3. programmeertalen waarmee een leerling reeds kennis heeft gemaakt;

4. hoe een leerling kennis heeft gemaakt met programmeren;

9

Page 10: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

5. de verwachting van de moeilijkheidsgraad van programmeren ten opzichtevan andere onderwerpen binnen het vak Informatica;

6. de verwachting over hoe leuk het programmeren is ten opzichte van andereonderwerpen binnen het vak Informatica;

7. een omschrijving van een aantal begrippen uit het objectgeorienteerd pro-grammeren;

8. hoe een leerling tegen informatica aankijkt, gerelateerd aan zelfvertrouwen,bruikbaarheid, populariteit, geslacht, en interesse.

Onderdelen 2–4 zijn alleen opgenomen in de test voorafgaand aan het onderwijs.Deze onderdelen worden gebruikt om het voorkennisniveau van de leerling tebepalen. Onderdeel 8 is gebaseerd op de attitudetest van Heersink et al. [10]. Dezetest is aangepast aan het niveau van leerlingen in het voortgezet onderwijs, envertaald. Ook zijn een aantal (dubbele) vragen verwijderd zodat leerlingen slechtstwee pagina’s vragen in hoeven te vullen. De gehele attitudetest is opgenomen inappendix D.1.

5.2. Onderwijs

5.2.1. De leerdoelen

We verifieren dat het beschreven curriculum, de leerdoelen uit het examenprogram-ma informatica, aan bod komt in het onderwijs.

5.2.2. De lesmethode

Om de lesmethoden met elkaar te vergelijken analyseren we de lesmethoden opverschillende manieren. We kijken naar:

• de begrippen die aan bod komen, en de manier waarop ze aan bod komen;

• het onderwerp en niveau van de vragen en opdrachten;

• in hoeverre suggesties uit de literatuur over programmeeronderwijs wordengevolgd.

We gaan beneden kort in op het niveau van de vragen en opgaven, en de suggestiesuit de literatuur over programmeeronderwijs.

Het niveau van de vragen en opgaven. Het niveau van de vragen en opgavenproberen we te plaatsen in de Bloom/SOLO-taxonomie en de 4C/ID categorisatie:

1. vragen en opgaven waarvan de antwoorden direct uit de lestekst te halenzijn. Dit zijn vragen op Bloom-niveau 1;

2. vragen en opgaven waarvan de antwoorden niet direct uit de lestekst te ha-len zijn maar waarvoor begrip van het betreffende onderwerp nodig is omhet antwoord te formuleren. Dit zijn vragen op Bloom-niveau 2;

3. vragen en opgaven waarbij de kennis van het onderwerp moet worden toe-gepast in een situatie die sterk lijkt op een situatie die in de methode behan-deld is. Bloom-niveau 3, Merrienboer Low-road, SOLO Unistructural;

10

Page 11: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

4. vragen en opgaven waarbij de kennis van het onderwerp moet worden toe-gepast in een situatie die niet lijkt op een situatie die in de methode behan-deld is. Bloom-niveau 3, Merrienboer High-road, SOLO Multistructural.

Suggesties uit de literatuur. We analyseren in hoeverre de methode de volgendeaanwijzingen voor het onderwijs uit de literatuur volgt.

1. Het oefenen met het lezen en het in eigen woorden beschrijven van pro-gramma’s [13, 27, 14].

2. In de 4C/ID methode zoals die door Merrienboer en Paas is ontwikkeld [16],wordt aan een groot project gewerkt waarbij uitgewerkte voorbeelden en op-lossingen voor deelproblemen worden aangeboden.

3. Het volgen van de 4C/ID methode is misschien niet altijd haalbaar in hetprogrammeeronderwijs in het VO, maar het organiseren van een bepaaldevorm van samenwerking is vaak wel mogelijk. Wanneer leerlingen samenaan een softwareproduct werken, communiceren ze over programmastruc-turen, oplossingsstrategieen, en het oplossen van fouten. Dit lijkt sterk oppair programming, en heeft een positief leereffect [18, 22, 15, 24].

4. Het tegengaan van eventueel stop-gedrag van een leerling, en het bevorderenvan move-gedrag. Dit kan door het aanbieden van opgaven waarin de leer-ling oefent met het lezen en in eigen woorden beschrijven van programma’svoordat een leerling zelf programma’s schrijft, door meer aandacht te beste-den aan fouten en hoe daar mee om te gaan, en in het algemeen door meeraandacht te besteden aan het programmeerproces [2].

5.2.3. Perceptie docent

De docent heeft een ideaalbeeld van het vak Informatica, en vult het vak zowelwat betreft inhoud als vorm grotendeels naar eigen inzicht in. Een docent kan aansommige onderwerpen meer tijd besteden of extra lesmateriaal gebruiken. Om tecompenseren voor deze factor in de leeropbrengst, voor zo ver mogelijk, voeren welesobservaties uit, en interviewen we de docent. Hiermee schatten we in hoeverrede docenten zich aan de methode houden en op welke punten zij eigen lesstofinschakelen, en krijgen we inzicht in het gerealiseerde curriculum.

5.2.4. Perceptie leerlingen

De perceptie van het onderwijs van de leerlingen wordt bepaald middels een in-terview met verschillende leerlingen. Naast inzicht in het beschreven en gereali-seerde curriculum krijgen we zo ook inzicht in het gepercipieerde curriculum.

5.3. Vakinhoudelijke vorderingen

Om inzicht te krijgen in de vorderingen van de leerlingen nemen we twee toetsenaf. De inhoud van de eerste, tussentijdse, toets wordt afgestemd op de tot dan toebehandelde stof. De toetsen bestaan uit verschillende typen opgaven. Vanwegehet grote aantal begrippen en de beperkte tijd voor een toets zijn er verschillendetoetsen beschikbaar waarin een deelverzameling van de begrippen aan bod komt.

11

Page 12: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

We hebben vier verschillende tussentijdse toetsen gemaakt, en twee verschillendeeindtoetsen.

5.3.1. De tussentijdse toets

Iedere school gebruikt zijn eigen versie van de tussentijdse toets.

De tussentijdse toets bestaat uit 7 onderdelen, zie Appendix E.1 voor een voor-beeld.

1. Herken constructies. In dit type opgave laten we de code van een klasse zien,en vragen we de leerling aan te geven op welke regels bepaalde constructiesstaan. De opgave heeft als doel te toetsen of een leerling herkent waar be-paalde begrippen geımplementeerd worden. Dit is een typisch voorbeeldvan een vraag op het eerste Bloom-niveau en heeft SOLO-niveau Unistruc-tural.

2. Omschrijf begrippen. In dit type opgave vragen we de leerling om een aantalbegrippen te omschrijven. Dit lijkt op een onderdeel uit de attitudetest dievooraf bij de leerling is afgenomen. Omdat er tijdens de toets beperkte tijdbeschikbaar is en de leerling genoeg tijd moet krijgen om een omschrijvinggoed te kunnen formuleren, vragen we in dit onderdeel niet alle begrippen.We hebben de begrippen over de verschillende versies van de toets verdeeldzodanig dat we denken dat de verschillende versies even moeilijk zijn. Dezeopgaven zijn op het tweede Bloom-niveau. Het is niet duidelijk op welkSOLO-niveau deze opgave zit.

3. Herken en beschrijf fouten. Fouten herkennen is een belangrijke vaardigheidbij het programmeren. Dit en het volgende onderdeel gaan over het her-kennen van fouten. In deze vragen laten we een klasse zien met een aantalfouten. De leerling moet aangeven in welke regels de fouten voorkomen enbeschrijven op welke manier de fouten kunnen worden gecorrigeerd. Hier-voor moet een leerling de begrippen en de bijbehorende constructies ken-nen. Het is moeilijk om aan dit onderdeel een Bloom-niveau toe te kennen.Deze vraag koppelt het eerste Bloom-niveau (kennen/weten) aan het tweedeBloom-niveau (begrijpen). Zonder begrip van de constructies kan een leer-ling niet bepalen of er een fout is gemaakt en zonder detailkennis weet hij/zijniet waar die fout gemaakt is. In de SOLO taxonomie is dit het Multistructu-ral niveau.

4. Herken fouten. Ook in dit onderdeel laten we een klasse zien waarin een aan-tal detailfouten zijn gemaakt. De fouten worden middels begrippen gegeven.Nu hoeft een leerling alleen maar aan te geven op welke regel welke foutenvoorkomen. De vragen in dit onderdeel gaan meer over programmadetails.De vragen hebben SOLO-niveau Multistructural, en zijn niet eenduidig ineen Bloom-niveau te plaatsen.

5. Implementeer een programma aan de hand van een eenvoudig klassendia-gram. In dit onderdeel krijgt een leerling een eenvoudig klassendiagram enmoet hij/zij het bijbehorende programma implementeren. Het klassendia-gram bevat in dit geval alleen de definities van attributen, setters en getters,en een constructor. Deze vraag test de volgende twee vaardigheden:

a) het lezen van een klassendiagram;

b) het implementeren van een klasse: het definieren van de attributen, de

12

Page 13: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

constructor en de methoden.

Het lezen van een klassendiagram kan eigenlijk alleen worden beoordeeldaan de hand van de implementatie van de klasse. Dit is echter weer afhanke-lijk van de implementatie-vaardigheid. We beoordelen de vaardigheid vanhet lezen van het klassendiagram niet apart in onze toetsen. Deze vraag ligtop het derde Bloom-niveau en op het Relational SOLO-niveau.

6. Implementeer een programma aan de hand van een klassendiagram met ge-koppelde klassen. In dit onderdeel moet een leerling, net als in het vorigeonderdeel, gegeven een klassendiagram een programma implementeren. Al-leen nu bestaat het klassendiagram uit twee gekoppelde klassen met daarineen collectie van geassocieerde objecten. Ook deze vraag ligt op het derdeBloom-niveau en het Relational SOLO-niveau.

7. Maak een klassendiagram. Aan de hand van een voorbeeld moet een leerlingzelf extra klassendiagrammen maken. Deze vraag ligt op het vierde Bloom-niveau en blijft op het Relational SOLO-niveau.

De begrippen die we in deze tussentijdse toets gebruiken, kiezen we uit de begrip-penlijst van de BlueJ module van Fundament en uit de Enigma methode op basisvan de stof die tot op dat moment behandeld is.

5.3.2. De eindtoets

In de eindtoets toetsen we een grotere hoeveelheid begrippen, en laten we de tweefoutherkenningsonderdelen weggelaten. Een voorbeeld van een eindtoets staat inAppendix E.2.

De eindtoets bevat de volgende onderdelen:

1. Herken constructies. Dit onderdeel is hetzelfde als in de tussentijdse toets.

2. Omschrijf begrippen. Dit onderdeel is op dezelfde manier opgezet als onder-deel 2 uit de tussentijdse toets.

3. Gecombineerde opdracht 1. In deze gecombineerde opdracht moet een leer-ling een constructie herkennen, een begrip omschrijven en een fout herken-nen.

4. Gecombineerde opdracht 2. In deze gecombineerde opdracht moet een leer-ling een constructie herkennen en een begrip omschrijven.

5. Implementeer een programma aan de hand van een klassendiagram. In ditonderdeel implementeert een leerling een programma aan de hand van tweeklassendiagrammen, net als bij twee van de onderdelen van de tussentijdsetoets. Het klassendiagram bestaat uit twee gekoppelde klassen met daarineen collectie van geassocieerde objecten.

De begrippen die we in de eindtoets gebruiken, kiezen we uit de begrippenlijstvan Fundament of uit de begrippenlijst van Enigma.

De onderdelen en vragen zijn zo opgezet dat ze kunnen worden vergeleken metde onderdelen van de tussentoets.

13

Page 14: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

6. Resultaten

6.1. Attitudetesten

We presenteren de resultaten van de attitudetesten, en dan met name de verschil-len en overeenkomsten tussen de attitudetesten die voor en na het programmeer-onderwijs worden afgenomen.

School 1: Den Bosch (Enigma). In de attitudetest voorafgaand aan het on-derwijs geeft slechts een klein deel, ongeveer 20%, van de leerlingen aan dat zeverwachten dat objectgeorienteerd programmeren moeilijker zal zijn dan andereonderwerpen binnen het informaticaonderwijs. Aan het einde van het program-meeronderwijs is dit verschoven naar 50%. De verhouding tussen de leerlingendie dit onderdeel makkelijker of even moeilijk vinden is ongeveer 1:1, zowel voorals na het onderwijs.

Aan het begin van het programmeeronderwijs vinden leerlingen programmereneen leuker (ruim 80%) of even leuk (iets minder dan 20%) onderdeel van informa-tica, in vergelijking met andere informatica onderwerpen. Na afloop vinden deleerlingen het programmeren minder leuk: 35% van de leerlingen vindt program-meren een minder leuk onderwerp, 25% vindt het nog even leuk, en 40% vindtprogrammeren nog steeds een leuker onderdeel van informatica dan andere on-derdelen.

In de eerste test geven leerlingen aan veel zelfvertrouwen in, en een hoge motiva-tie voor, programmeren te hebben. In de tweede test is dit ook nog grotendeelshet geval, hoewel de trend negatief is. Dit blijkt het duidelijkst uit antwoorden opde vraag of een leerling zichzelf in staat acht om hoge cijfers (7 of hoger) te ha-len voor het programmeeronderdeel. Na afloop van het programmeeronderwijsbeantwoorden iets minder leerlingen deze vraag positief.

Voorafgaand aan het onderwijs denken leerlingen dat jongens en meisjes evengoed kunnen programmeren, hoewel zij het met deze uitspraak wat minder eenszijn dan met uitspraken over motivatie. In de tweede test geven leerlingen aandat jongens meer programmeervaardigheden hebben dan meisjes. De leerlingenschatten het nut van programmeren voor een mogelijke vervolgstudie en/of hetdagelijks leven voorafgaand aan het programmeeronderwijs positiever in dan naafloop.

School 2: Arnhem (Enigma). Meer dan de helft van de leerlingen (55%) denktvoorafgaand aan het programmeeronderwijs dat objectgeorienteerd programme-ren moeilijker zal zijn dan andere onderdelen van het informaticaonderwijs. Aanhet eind van de periode is dit licht gedaald tot ongeveer 48% van de leerlingen.

De mening van de leerlingen over hoe leuk het onderdeel programmeren is invergelijking met andere onderdelen van het vak Informatica verandert niet gedu-rende het onderwijs; ongeveer 60% van de leerlingen is van mening dat objectge-orienteerd programmeren leuker is dan andere onderdelen, ongeveer 20% denktdat het even leuk is, en de overige 20% denkt dat het minder leuk is. Uit de ant-woorden op vraag 1 van de meerkeuzevragen, zie appendix D.1, D.2.3 en D.2.4,blijkt echter wel dat leerlingen naderhand het leren programmeren veel minderleuk vinden.

14

Page 15: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Uit de antwoorden op vraag 2 en 20 blijkt dat het zelfvertrouwen van de leerlingenwat betreft programmeren afgenomen is gedurende de periode. Vraag 14 laat ziendat zij aan het eind van de periode ook denken minder hoge cijfers te halen dandat zij aan het begin van de periode dachten.

Vragen 3, 11, 12, 17, 18, 21, 24 en 25 laten zien dat leerlingen voorafgaand aanhet onderwijs denken dat jongens en meisjes even goed kunnen presteren op hetgebied van programmeren. Na afloop van het onderwijs denken zij echter datjongens beter kunnen programmeren dan meisjes.

Uit vragen 9 en 10 blijkt dat leerlingen aan het begin van de periode de program-meeruitdagingen leuker en het programmeren interessanter vinden dan aan heteinde van de periode.

Voorafgaand aan het programmeeronderwijs denken leerlingen voor het overgrotedeel dat leerlingen die goed zijn in programmeren net zo populair zijn als andereleerlingen. Aan het einde van de periode is dit beeld echter veranderd, zie vraag5 en 23. Nu denkt ruim 75% van de leerlingen dat zij minder populair zijn danandere leerlingen.

Als laatste valt nog op dat leerlingen een beetje positiever zijn geworden over hetnut van programmeren voor hun vervolgstudie (vraag 7, 19 en 22) gedurende deperiode.

School 3: Culemborg (Fundament). Meer dan de helft van de leerlingen (58%)denkt voorafgaand aan het programmeeronderwijs dat objectgeorienteerd pro-grammeren moeilijker zal zijn dan andere onderdelen van het informaticaonder-wijs. Aan het eind van de periode is dit iets gedaald, tot ongeveer 48% van deleerlingen.

Aan het begin van de onderwijsperiode lijkt ruim 55% van de leerlingen pro-grammeren leuker dan andere informatica onderdelen, maar aan het eind vande periode is dit gezakt naar 35%. Ook het aantal leerlingen dat programmereneven leuk leek is gedaald, van 36% naar ongeveer 18%. Er zijn dus veel leer-lingen die programmeren aan het einde van het programmeeronderwijs minderleuk vinden: van 8% naar 47%. Bij vraag 1 van de meerkeuzevragen (zie appen-dix D.1, D.2.5 en D.2.6) blijkt echter dat leerlingen naderhand niet veel negatieverzijn over hoe leuk het is om te leren programmeren.

Vraag 2 en 20 laten zien dat het zelfvertrouwen van leerlingen wat betreft pro-grammeren zeer licht is afgenomen gedurende de periode. Vraag 14 laat zien datde leerlingen aan het eind van de periode denken hogere cijfers te kunnen halenvoor programmeren dan dat zij aan het begin van de periode verwachtten.

Vraag 3, 11, 12, 17, 18, 21, 24 en 25 laten zien dat leerlingen voorafgaand aan hetprogrammeeronderwijs van mening zijn dat jongens en meisjes even goed kunnenpresteren op het gebied van programmeren. Na afloop van het programmeeron-derwijs vinden zij dit nog steeds. Vraag 3 en 11 laten zelfs een lichte verhogingzien van het percentage leerlingen dat het eens is met de stelling dat jongens enmeisjes even goed kunnen presteren op het gebied van programmeren

Vraag 9 en 10 laten zien dat leerlingen aan het begin van de periode de program-meeruitdaging iets leuker en het programmeren iets interessanter vinden dan aanhet einde van de periode.

Gedurende de periode is het beeld van leerlingen over de populariteit van leerlin-

15

Page 16: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

gen die goed zijn in programmeren ten opzichte van andere leerlingen niet gewij-zigd (zie vraag 5 en 23).

Als laatste valt nog op dat leerlingen licht positiever zijn geworden over het nutvan programmeren voor hun vervolgstudie (vraag 7, 19 en 22) gedurende de peri-ode.

School 4: Almere (Fundament). Ruim 77% van de leerlingen denkt vooraf-gaand aan het programmeeronderwijs dat objectgeorienteerd programmeren evenmoeilijk is als de andere onderdelen van het informaticaonderwijs. Geen enkeleleerling denkt dat het makkelijker zal zijn. Aan het eind van de periode denktruim 61% van de leerlingen nog dat het objectgeorienteerd programmeeronder-wijs even moeilijk is als de overige onderdelen. 15% van de leerlingen is nu vanmening dat het moeilijker is dan andere onderwerpen.

Aan het begin van de periode denkt ruim 55% van de leerlingen dat programme-ren leuker is dan andere onderwerpen. Aan het eind van de onderwijsperiode isdit gestegen naar ruim 61%. Zowel aan het begin als aan het eind van de periodedenkt geen enkele leerling dat programmeren minder leuk is dan andere onder-werpen. Vraag 1 van de meerkeuzevragen (zie appendix D.1, D.2.7 en D.2.8) laatook zien dat leerlingen aan het eind van de onderwijsperiode het programmerenleuker vinden.

Vraag 2 en 20 laten zien dat het zelfvertrouwen van leerlingen in het program-meren zeer licht is toegenomen gedurende de periode. Vraag 14 laat zien dat deleerlingen aan het eind van de periode denken hogere cijfers te kunnen halen voorprogrammeren dan dat zij aan het begin van de periode verwachten.

Vraag 3, 11, 12, 17, 18, 21 en 24 laten zien dat leerlingen gedurende de onder-wijsperiode van mening veranderen over de relatieve geschiktheid van jongens enmeisjes op het gebied van programmeren; ze denken aan het eind van de periodedat jongens en meisjes net zo gekwalificeerd zijn. Ook het idee dat jongens heelgoed zijn in een studie waarvoor programmeren belangrijk is heeft aan het eindeminder aanhang.

Vraag 9 en 10 laten zien dat leerlingen aan het einde van de onderwijsperiode deprogrammeeruitdaging iets leuker en het programmeren iets interessanter vindendan aan het begin van de onderwijsperiodeperiode.

Uit de antwoorden op vraag 5 en 23 volgt dat gedurende de onderwijsperiodeis het beeld van leerlingen over de populariteit van leerlingen die goed zijn inprogrammeren ten opzichte van andere leerlingen niet gewijzigd.

Als laatste valt nog op dat leerlingen een klein beetje positiever zijn geworden overhet nut van programmeren voor hun vervolgstudie (vraag 7, 19 en 22) gedurendede onderwijsperiode.

6.2. Onderwijs

6.2.1. De leerdoelen

De leerdoelen van het examenprogramma, zowel de begrippen als de vaardighe-den, zijn verwerkt in de twee lesmethoden die op de scholen worden gebruikt.Uiteraard moeten deze ook terug komen in leerdoelen en het programma dat de

16

Page 17: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 1: Aantal opgaven per Bloom/SOLO-categorie en hoofdstuk van Funda-ment

docent heeft opgesteld.

6.2.2. De lesmethode

Begrippen. Voor beide lesmethoden hebben we een lijst gemaakt van de begrip-pen die in de methode voorkomen, zie Appendix C.1 voor de begrippen in Fun-dament, en Appendix C.2 voor de begrippen in Enigma. De manier waarop diebegrippen voorkomen wordt gegeven in Appendix A voor Fundament en in Ap-pendix B voor Enigma.

Onderwerp en niveau van opdrachten. Voor iedere methode hebben we perhoofdstuk de vragen ingedeeld in de categorieen beschreven in hoofdstuk 5.2.2.Vervolgens hebben we voor elk hoofdstuk het aantal vragen per categorie bepaald.De resultaten van deze indeling voor de Fundament methode staan in Figuur 1, envoor de Enigma methode in Figuur 2.

Zoals in Figuur 1 te zien is, maakt de Fundament methode veel gebruik van vra-gen in de categorieen 1 en 3. Opvallend is hierbij dat de verdeling niet bij allehoofdstukken gelijk is. In sommige hoofdstukken komen bepaalde categorieenzelfs helemaal niet voor. Vooral categorie 2 is veel afwezig. Figuur 2 laat zien datEnigma het meest gebruik maakt van vragen in de categorieen 1 en 2, maar deverdeling over de categorieen is niet bij alle paragrafen gelijk. Vragen uit categorie4 komen niet in alle hoofdstukken voor.

Suggesties uit de literatuur. Veel van de in hoofdstuk 5.2.2 genoemde suggestiesuit de literatuur zijn niet in de Fundament lesmethode terug te vinden.

1. De methode geeft veel voorbeeldprogramma’s, maar geen opgaven om ineigen woorden te beschrijven wat een programma doet, of in welke stappeneen programma zijn doel bereikt.

17

Page 18: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 2: Aantal opgaven per Bloom/SOLO-categorie en paragraaf van Enigma

2. De Fundament methode geeft veel voorbeelden en kleine opgaven in eencontext, maar het ontwikkelen van software in een (ruime, grote) contextzoals aanbevolen door de 4C/ID methode wordt in de Fundament methodeniet toegepast.

3. Door de eenvoudige en korte voorbeelden geeft deze methode nauwelijks demogelijkheid tot verregaande samenwerking tussen leerlingen, waardoor decommunicatie tussen leerlingen over de lesstof mogelijk beperkt blijft.

4. De methode geeft geen voorbeelden of oefeningen met als doel de leerstijlvan de leerling te te veranderen. Er zijn geen aanwijzingen te vinden dieaangeven hoe een negatieve houding ten opzichte van het maken van foutendoor een leerling verbeterd kan worden. Ook geeft de methode geen opga-ven die het maken van fouten en het analyseren van deze fouten illustreert.

Bij Enigma zijn een aantal van de suggesties wel terug te vinden in de methode.

1. De Enigma methode geeft een aantal voorbeeldprogramma’s met daarbij be-horende opdrachten om te omschrijven wat er gebeurt in het programma ofin een specifieke methode.

2. De methode geeft veel opgaven waarin een leerling een klein programmamoet ontwikkelen (slechts enkele met uitwerking), maar biedt geen grootproject aan.

3. De methode raadt nergens aan om een opgave samen met een andere leerlingte maken. Er zijn wel enkele, iets grotere, opgaven die goed in teams vanleerlingen opgelost zouden kunnen worden.

4. De methode biedt leerlingen niet expliciet een manier om hun leergedrag teveranderen. Er zijn geen opgaven die het maken en analyseren van foutenillustreren.

18

Page 19: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Instrumentarium. De BlueJ-module van Fundament methode gebruikt een ge-lijknamige ontwikkelomgeving die sterk visueel is ingesteld en op verschillendemanieren objectgeorienteerde begrippen visualiseert. De methode begint directmet de objectgeorienteerde begrippen zoals objecten, klasse, methode, constructoretc. De visualisatie van de ontwikkelomgeving sluit daar goed bij aan. De Enigmamethode maakt gebruik van de Java-Editor2. Dit is een rijke, geıntegreerde omge-ving voor Java, speciaal ontwikkeld voor het onderwijs.

6.2.3. Perceptie docent en leerlingen

School 1: Den Bosch. De docent in Den Bosch is de enige docent met een (re-cent) afgeronde Computer Science Education opleiding die deelneemt aan het on-derzoek. Hij gebruikt de Enigma-methode om het onderwijs te structureren, envolgt de methode redelijk nauwkeurig. De leerlingen maken vooral de praktischeopdrachten uit de methode, de wat meer theoretische vragen worden overgesla-gen.

In de lessen ontwikkelt de docent vaak een programma, waarna de leerlingen zelfaan de slag mogen met een oefening, terwijl de docent rondloopt en eventuelevragen beantwoordt. Er is een leerling die veel andere leerlingen helpt.

De leerlingen zijn in het algemeen redelijk enthousiast over zowel de methode alshet onderwijs. Opvallend is dat de helft van de geınterviewde leerlingen aangeeftmogelijk later iets met informatica te willen doen.

School 2: Arnhem. In Arnhem wordt ook gebruik gemaakt van de Enigma me-thode, maar eerder ter ondersteuning dan ter structurering. De leerlingen gevenaan dat ze hoofdstukken uit de methode hebben gelezen voor de theoretische ach-tergrond, maar dat in het onderwijs niet veel gebruik wordt gemaakt van de me-thode.

De vorm van het onderwijs lijkt op de vorm in Den Bosch: eerst een programmaklassikaal ontwikkelen (bij de lesobservatie wordt dit gedaan door een leerling),en daarna zelfstandig aan een programmeeropdracht werken. In Arnhem wordengevorderde leerlingen in grotere mate dan in Den Bosch ingezet bij het onderwijs.

De leerlingen zijn in het algemeen tevreden over de methode, hoewel ze die weiniggebruiken, en het onderwijs. Ze lijken niet veel tijd aan het vak te besteden, en ge-ven aan dat het een relatief makkelijk vak is. De docent geeft aan dat er een aantalstoppers tussen de leerlingen zit, en dat het niet lukt die reactie te veranderen.

School 3: Culemborg. De docent in Culemborg volgt de informatica lerarenop-leiding in Utrecht, en heeft als onderdeel van zijn opleiding vorig jaar een pilotvoor het onderhavige onderzoek uitgevoerd. Hij gebruikt en volgt de BlueJ mo-dule van Fundament. Wel heeft de docent zelf afsluitende opdrachten bij iederhoofdstuk ontwikkeld.

Ook in Culemborg volgt het onderwijs de vorm waarin eerst klassikaal een onder-werp besproken wordt of een programma wordt ontwikkeld, en daarna gaan deleerlingen zelfstandig aan de slag met het ontwikkelen van een programma. InCulemborg wordt iets meer aandacht besteed aan begripsvorming.

2http://www.javaeditor.org/

19

Page 20: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 3: Het herkennen van constructies in de tussentijdse en eindtoets

In het algemeen zijn de leerlingen tevreden over de methode, maar een aantalgeven aan dat ze wat te veel in een keurslijf worden gedrukt, en dat het lastig isom van de methode af te wijken. De leerlingen waarderen de lessen.

School 4: Almere. Ook de docent in Almere volgt de informatica lerarenoplei-ding in Utrecht, en gebruikt de BlueJ module van Fundament.

In Almere zijn de theorielessen gescheiden van de lessen waarin de studenten zelf-standig aan het werk gaan met het schrijven van een programma.

De leerlingen waarderen de lessen en docent, maar geven aan het vak redelijkmakkelijk te vinden.

6.3. Vakinhoudelijke vorderingen

6.3.1. School 1: Den Bosch

Herken constructies. De resultaten in de tussentijdse toets en in de eindtoetsvan het herkennen van verschillende programmeerconstructies zijn weergegevenin Figuur 3.

De leerlingen herkennen in de eindtoets sommige constructies beter, en andereconstructies juist slechter dan in de tussentijdse toets. ’Klasse’ en ’scope’ zijn metrespectievelijk 29 en 33% hogere resultaten de positieve uitschieters. ’Methoden’en ’argumenten van methoden’ zijn met respectievelijk 16 en 19% lagere resultatende negatieve uitschieters. Leerlingen herkennen de in de eindtoets nieuwe con-structies redelijk tot goed, uitgezonderd het voorspellen van het resultaat van eenmethode (30%).

Herken fouten. Het herkennen van fouten in code is enkel getoetst in de tussen-toets. De resultaten hiervan staan in Figuur 4.

20

Page 21: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 4: Het herkennen van fouten in de tussentijdse toets

In de afbeelding is te zien dat leerlingen fouten goed herkennen. Meer dan 60%van de leerlingen haalt alle fouten uit de code.

Omschrijf begrippen. Het omschrijven van begrippen in eigen woorden is ge-toetst in zowel de tussentijdse toets als de eindtoets. De resultaten hiervan wordenvergeleken in Figuur 5.

In de afbeelding is te zien dat leerlingen in het algemeen begrippen goed kunnenomschrijven. Alleen het begrip ‘compileren’ kost de nodige moeite: slechts ietsmeer dan 30% van de leerlingen geeft een goede omschrijving. Er is geen vooruit-gang in de resultaten tussen de tussen- en eindtoets.

Code begrijpen. Het onderdeel waarin leerlingen aan moeten geven wat er ge-beurt op bepaalde regels in een programma is getoetst in zowel de tussentijdsetoets als de eindtoets. De resultaten staan in Figuur 6.

De leerlingen presteren redelijk tot goed op dit onderdeel. Opvallend is wel datde score bij het omschrijven van wat er in een specifieke methode gebeurt sterkis afgenomen (45%) ten opzichte van de tussentijdse toets. Ieder onderdeel wordtdoor minstens 50% van de leerlingen goed beantwoord.

Zelf code schrijven. In de eindtoets moeten de leerlingen ook zelf enkele stukkencode schrijven. De resultaten staan in Figuur 7.

Meer dan 65% van de leerlingen kan goed een array implementeren, een type ge-ven, en voorspellen welke waarden een array zal bevatten. Leerlingen hebbenmeer problemen met het aanpassen van waarden in arrays; nog maar 50% van deleerlingen kan dit goed doen. Ook brengt maar iets meer dan 50% van de leerlin-gen het gebruik van een for-loop tot een goed einde te brengen.

21

Page 22: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 5: Het omschrijven van begrippen in de tussentijdse en eindtoets

Figuur 6: Het begrijpen van code in de tussentijdse en eindtoets

22

Page 23: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 7: Het zelf schrijven van code in de eindtoets

6.3.2. School 2: Arnhem

In Arnhem zijn geen theoretische toetsen afgenomen. Leerlingen hebben hier eenpraktische opdracht gemaakt. Aan de hand van deze praktische opdracht heeft dedocent een inschatting gemaakt van de competenties van de leerlingen.

Herken constructies. Op basis van het onderwijs in de periode heeft de docenteen inschatting gemaakt van het percentage leerlingen dat bepaalde constructiesherkent. De resultaten staan in Figuur 8.

Leerlingen herkennen constructies in het algemeen goed. ‘Scope’ is een duidelijkenegatieve uitschieter, maar de docent tekent hierbij aan dat dit ook niet in de lesis behandeld. ’Array, ’constructor’, ’parameter’ en ’retourwaarde’ vallen in demiddenmoot met ongeveer 30 a 40%. De overige constructies scoren 80 of 90%.

Herken en beschrijf fouten. Leerlingen zijn niet goed in het herkennen en be-schrijven van fouten. Veel leerlingen houden er een trial-and-error strategie op na,waarbij zij weinig tot geen aandacht besteden aan de foutmeldingen die de compi-ler geeft. Indien zij op het internet een werkende oplossing vinden doen ze meestalgeen moeite om uit te vinden waarom die oplossing werkt.

Omschrijf begrippen. De inschatting van het percentage leerlingen dat bepaaldebegrippen correct kan omschrijven staan in Figuur 9.

De leerlingen kunnen enkele basisbegrippen, zoals ’methode aanroepen’, ’klasse’,en ’variabele’ goed omschrijven. Ook zijn de leerlingen goed in het omschrijvenvan een ’for-loop’. De leerlingen scoren redelijk goed op het omschrijven van de

23

Page 24: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 8: Het herkennen van constructies

Figuur 9: Het omschrijven van begrippen

24

Page 25: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

begrippen ’object’ en ’retourwaarde’. Op de overige onderdelen scoren zij aan-zienlijk lager.

Code begrijpen. Leerlingen kunnen goed voorspellen wat er gebeurt in voor-beeldcode. Ze herkennen de declaratie en het gebruik van variabelen goed, enkunnen globale en een lokale variabelen goed onderscheiden. Het verschil tussenpublic en private vinden leerlingen moeilijk. De docent merkt hierbij op dat deleerlingen een erg pragmatische instelling hebben, en het nut van dit onderscheidniet inzien. Het herkennen van for-loops levert geen problemen op. Arrays vanenkel Strings of integers worden ook goed herkend, maar zodra een array waar-den van datatypen met meer structuur bevat vinden de leerlingen het lastiger omeen array te begrijpen. De leerlingen onderkennen dat het nodig is om importstatements te gebruiken, maar ze kunnen slecht uitleggen waarom. De leerlingenervaren EventListeners als moeilijk, met name omdat keyBoardEvents en mouseE-vents verschillend afgehandeld worden in AS3; hetgeen verwarring schept. Verderheerst er verwarring onder de leerlingen over de begrippen formele (bij declaratievan een methode) versus actuele (bij aanroep van een methode) parameter.

Zelf code schrijven. Leerlingen vinden het moeilijk om vanuit het niets een pro-gramma te implementeren. Het aanpassen van een bestaand programma gaat zebeter af. Veel leerlingen ervaren problemen met de syntax; ook na veel oefeningenmaken ze nog veel syntax-fouten. Daarnaast verwarren leerlingen AS3 syntax metde syntax van PHP, de programmeertaal die ze vorig jaar hebben gebruikt. Veelleerlingen gebruiken for-loops zonder problemen, mede omdat er veel met for-loops is geoefend. Arrays leveren problemen op voor de leerlingen, zeker als zeobjecten met meer structuur bevatten. EventListeners spelen een wat bijzondererol: leerlingen kunnen deze vaak via trial-and-error wel toepassen, maar begrijpenniet goed waarom deze op een bepaalde plaats toegepast moeten worden.

6.3.3. School 3: Culemborg

Herken constructies. De resultaten in de tussentijdse toets en de eindtoets op devragen van de categorie herken constructies staan in Figuur 10.

Leerlingen herkennen de meeste begrippen in de eindtoets even goed of beter danin de tussentijdse toets. Alleen de resultaten voor de begrippen methode en refe-rentie wijken af. 50% van de leerlingen herkennen de nieuwe begrippen Extendst/m Event goed.

Herken fouten. De resultaten van de antwoorden op de vragen uit de categorieherken fouten staan in Figuur 11. We hebben deze categorie alleen getoetst in detussentijdse toets.

Fouten in een methode, een type, en een opdrachtregel herkennen ongeveer 80%van de leerlingen goed. Ze herkennen fouten in een parameter en variabele veelminder goed.

Omschrijf begrippen. De resultaten van de antwoorden op de vragen uit de ca-tegorie omschrijf begrippen in de eindtoets zijn vergelijkbaar met die van de tus-sentijdse toets, zie Figuur 12.

25

Page 26: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 10: De resultaten van de tussentijdse- en eindtoets

Figuur 11: Het percentage goed herkende fouten

26

Page 27: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 12: Resultaten begripsomschrijving

Herken en beschrijf fouten. De resultaten van de antwoorden op de vragen uitde categorie herken en beschrijf fouten staan in Figuur 13.

Fouten in een methode en een klasse worden door minstens 70% van de leerlin-gen goed herkend en beschreven. Het herkennen en beschrijven van fouten in deconstructor gaat minder goed.

Implementeer klassendiagrammen. De resultaten van de vraag waarin een klas-sendiagram geımplementeerd moet worden staan in Figuur 14 en 15.

De leerlingen scoren goed bij het implementeren van een eenvoudig klassendia-gram, maar minder goed bij het implementeren van gekoppelde klassen. De eind-toets laat duidelijk progressie zien voor gekoppelde klassen, maar de gemiddelde

Figuur 13: Het percentage goed beschreven fouten

27

Page 28: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 14: Implementatie van eenvoudige klassen

Figuur 15: Implementatie van gekoppelde klassen.

28

Page 29: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 16: Het herkennen van constructies in de tussentijdse en eindtoets

score blijft onder de 50%.

6.3.4. School 4: Almere

Herken constructies. De resultaten in de tussentijdse toets en in de eindtoets vanhet herkennen van verschillende programmeerconstructies staan in Figuur 16.

De leerlingen scoren beter in de eindtoets dan in de tussentijdse toets: bij de tus-sentijdse toets zijn de minimale en maximale score respectievelijk 25% en 35%; bijde eindtoets ligt dit op 38% en 67%. Opvallend is dat het herkennen van een re-tourwaarde niet verbetert.

Herken fouten. Het herkennen van fouten in programma’s is enkel getoetst in deeindtoets. Slechts 36% van de leerlingen weet de typeringsfout te vinden.

Omschrijf begrippen. Het omschrijven van begrippen in eigen woorden is ge-toetst in zowel de tussentijdse toets als de eindtoets. De resultaten worden verge-leken in Figuur 17.

Leerlingen omschrijven begrippen redelijk tot goed in eigen woorden. Zowel bijde tussentijdse als de eindtoets ligt de laagste score rond de 40%. Bij de tussentijdsetoets liggen de hoogste scores wel een stuk hoger dan bij de eindtoets (respectie-velijk 60 en 48%).

Zelf code schrijven. In de tussentijdse toets en in de eindtoets moeten leerlingenzelf enkele programma’s schrijven. De resultaten staan in Figuur 18.

De leerlingen gebruiken variabelen in het algemeen redelijk goed: iets meer dan60% scoort hier goed op. Het gebruik van basistypen, als int en double, en van

29

Page 30: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 17: Het omschrijven van begrippen in de tussentijdse en eindtoets

Figuur 18: Het zelf schrijven van code in de tussentijdse en eindtoets

30

Page 31: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

de if-else constructie gaat minder goed: hier geeft slechts ongeveer 30% van deleerlingen een goed antwoord. De overige onderwerpen scoren allemaal 43%.

7. Conclusies en verder onderzoek

In dit hoofdstuk geven we zowel de conclusies van het onderzoek over het lerenobjectgeorienteerd programmeren in het voortgezet informaticaonderwijs, als overhet proces dat we gevolgd hebben. Daarnaast geven we enkele suggesties voorverder onderzoek.

Onderzoek naar informaticaonderwijs. Binnen Nederland wordt weinig of geengestructureerd onderzoek gedaan naar informaticaonderwijs. Standaardwerkenover onderzoek naar informaticaonderwijs zijn niet te vinden in Nederlandse uni-versitaire bibliotheken. Er zijn geen leerstoelen gewijd aan onderzoek naar infor-maticaonderwijs, hoewel dit wel een onderdeel van de taak van Prof. dr. Erik Ba-rendsen (RUN) is (en voor zijn emeritaat van Prof. dr. Bert Zwaneveld (OUNL)).De complexiteit, de omvang, en het belang van het informaticaonderwijs recht-vaardigen een leerstoel in Nederland.

Toren van Babel. Het heeft ons veel moeite gekost om scholen te vinden die ge-bruik maken van een van de twee methoden Enigma en Fundament, en die meewillen werken aan het onderzoek. Naar aanleiding van onze vraag om aan het on-derzoek deel te nemen hebben we redelijk veel reacties gehad, maar veel docentenmaken slechts zeer beperkt gebruik van de methode. Veel docenten ontwikkeleneigen onderwijsmateriaal, gebruiken andere programmeertalen, of andere ontwik-keltools. Wij zijn vele programmeertalen en ontwikkelomgevingen tegengekomen:Java, Python, PHP, JavaScript, AS3, Scratch, Alice, GreenFoot, etc. Heel vaak heb-ben docenten zelf onderwijsmateriaal ontwikkeld voor deze programmeertalen of-omgevingen. Hoewel deze ‘Toren van Babel’ situatie aantrekkelijke kanten heeft,denken we dat wat minder variatie in onderwijsmateriaal dat op meer plekkenwordt gebruikt kan leiden tot beter uitgewerkte lessen, en tot onderwijs met eenbeter rendement.

Attitude. De attitudetesten laten zien dat ongeveer 50% van de leerlingen nahet volgen van programmeeronderwijs van mening is dat objectgeorienteerd pro-grammeren een moeilijker onderdeel is van het vak Informatica dan andere onder-delen. Hoe leerlingen hier voorafgaand aan het onderwijs over denken verschiltsterk per school. Interessant is verder dat op beide scholen die de Enigma-methodegebruiken de leerlingen na het onderwijs van mening zijn dat jongens beter kun-nen programmeren dan meisjes. Aan het begin van de onderwijsperiode is dit niethet geval. Op een school die Fundament gebruikt is geen verandering zichtbaarop dit vlak, terwijl op de andere school een lichte verbetering te zien is. Tenslottevalt op dat op de meeste scholen leerlingen het programmeren na afloop van hetprogrammeeronderwijs gemiddeld genomen minder leuk vinden/inschatten danervoor. Almere is hierbij een duidelijke uitzondering.

Leerdoelen. De eindtermen voor het onderdeel programmeren van (de handrei-king bij) het vak Informatica zijn nogal globaal en vrijblijvend gesteld (VWO leer-lingen leren ‘netjes’ programmeren, bijvoorbeeld). Een meer gedetailleerde be-schrijving van de leerdoelen zou de zeer grote variatie in het informaticaonderwijsmogelijk wat in kunnen perken. Een nadere specificatie van de eindtermen zouhet mogelijk moeten maken de eindtermen te vertalen naar standaardtoetsen. Derecent ontwikkelde programmeertaalonafhankelijke toetsen ontwikkeld voor het

31

Page 32: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Amerikaanse CS1 [26] bieden hier mogelijk houvast.

Lesmethode. We hebben twee lesmethoden geanalyseerd: Enigma en Fundament.De beknopte informaticaleerdoelen voor wat betreft objectgeorienteerd program-meren komen aan bod in beide lesmethoden. Enigma heeft opgaven met een rede-lijk gelijke verdeling over de Bloom/SOLO-categorien, terwijl de verdeling bij deBlueJ-module van Fundament sterk schommelt. Opvallend is ook dat vergelekenmet Enigma, Fundament minder mogelijkheden biedt voor leerlingen om zich metbehulp van opgaven verder te verdiepen in de lesstof. Ook volgt Fundament wei-nig of geen suggesties ten aanzien van programmeeronderwijs die gegeven zijn inde literatuur, terwijl Enigma enkele suggesties (deels) heeft geımplementeerd.

De perceptie van de docenten. Hoewel wij op verschillende manieren gezochthebben naar docenten die een van de twee onderzochte methoden in hoge matevolgen, gebruiken de docenten de methoden op zeer verschillende manieren: vanachtergrondmateriaal dat eventueel geraadpleegd kan worden, tot leidend bij delessen. Twee van de vier docenten gebruiken volledig eigen opdrachten, en de an-dere twee maken hun eigen keuze in de opdrachten waaraan de leerlingen moetenwerken. Aan de ene kant is het indrukwekkend hoeveel materiaal de informati-cadocenten ontwikkelen, aan de andere kant is het zorgwekkend dat de docen-ten zoveel tijd moeten besteden aan het ontwikkelen van materiaal voor hun vak.Daarnaast is het de vraag of iedere informaticadocent wel de nodige competentiesheeft in het ontwikkelen van onderwijsmateriaal, mede gegeven het feit dat veelinformaticadocenten niet informatica hebben gestudeerd, maar geschoold zijn ineen ander vak, en daarna omgeschoold zijn.

De perceptie van de leerlingen. De leerlingen vinden informatica in het algemeeneen leuk vak, en ze waarderen zowel de docent als het onderwijs. Hoewel ze inde attitudetesten aangeven het programmeren moeilijk te vinden na afloop vanhet onderwijs, geven ze in de interviews vooral aan dat informatica een relatiefeenvoudig vak is, dat niet veel van hun vraagt buiten de lesuren om. Leerlingendie het vak moeilijk tot zeer moeilijk vinden zijn in de interviews in de minder-heid. Ook de lesuren zelf worden soms als een ‘rustpunt’ gekarakteriseerd. Deinterviews wekken soms de indruk dat de leerlingen niet genoeg uitgedaagd wor-den. Informatica lijkt een vak te zijn waar leerlingen met zeer grote verschillen inniveaus instromen.

Vakinhoudelijke vorderingen. Op beide scholen die gebruik maken van de BlueJ-module van Fundament herkennen leerlingen constructies beter aan het einde vande onderwijs periode. Bij het herkennen van fouten treedt een groot verschil op.In Culemborg herkent ongeveer 60% van de leerlingen de fouten, terwijl dit inAlmere op slechts 36% ligt. De prestaties op het gebied van het omschrijven vanbegrippen blijven gedurende de periode ongeveer gelijk op beide scholen. Hetzelf schrijven van code, al dan niet aan de hand van een klassendiagram, vindenleerlingen op beide scholen lastig: minder dan 50% van de leerlingen beheerst ditgoed.

Op beide scholen die gebruik maken van de Enigma-methode herkennen leerlin-gen de verschillende constructies goed. Er is echter een groot verschil in het her-kennen van fouten: dat gaat veel beter in Den Bosch dan in Arnhem. In het om-schrijven van begrippen scoren leerlingen op beide scholen weer goed, zij het datleerlingen op beide scholen de begrippen public, private en import lastig vinden.Verder begrijpen leerlingen programma’s over het algemeen goed. In de resultatenvoor het zelf schrijven van code valt weinig lijn te ontdekken.

De relatie tussen een methode en vakinhoudelijke vorderingen valt lastig te ma-

32

Page 33: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

ken: de resultaten op scholen die dezelfde methode gebruiken lijken net zoveeluiteen te lopen als de resultaten op scholen die een verschillende methode gebrui-ken.

Aanbevelingen en suggesties voor verder onderzoek. Gezien de grote variatiein zowel onderwijsvorm als -inhoud in het voortgezet informaticaonderwijs is hetmoeilijk vergelijkend onderzoek uit te voeren. Het huidige onderzoek is aan deene kant te klein opgezet, met vier klassen op vier verschillende scholen, waar-door het niet mogelijk is om statistisch valide resultaten te verkrijgen, en aan deandere kant te groot, waardoor te veel factoren een rol spelen in het onderzoek.Het onderzoek roept wel een aantal vragen op, en we denken dat onderzoek on-der grotere groepen leerlingen met kleinere onderzoeksvragen goede mogelijkhe-den heeft. Zo denken we dat het goed is om de volgende onderwerpen nader teonderzoeken.

• Hoe kan verklaard worden dat leerlingen het programmeren na afloop vanhet onderwijs gemiddeld genomen minder leuk vinden/inschatten dan voorhet onderwijs?

• Kan meer aandacht aan het programmeerproces helpen bij het verminderenvan stop-gedrag bij de leerlingen?

• Waarom ervaren leerlingen informatica als een relatief eenvoudig vak?

• Hoe kunnen we informatica aanbieden zodat zowel de minder goede leer-lingen als de goede leerlingen goed worden bediend en uitgedaagd?

Verder denken we dat enkele onderwerpen op een hoger niveau zouden moetenworden opgepakt.

• De lesmethoden implementeren bijna geen of lang niet alle suggesties diein de literatuur worden gegeven voor het programmeeronderwijs. Mogelijkzouden nieuwe drukken van de lesmethoden meer expliciete aandacht aandie suggesties kunnen besteden.

• De leerdoelen van het vak Informatica zouden meer expliciet moeten wor-den geformuleerd. Meer expliciete leerdoelen maken het makkelijker omstandaardtoetsen te ontwikkelen, en bieden meer houvast bij de ontwikke-ling van lesmethoden.

• Er zou een leerstoel of een expertise-centrum, desnoods virtueel, moetenworden opgezet, waarin gestructureerd onderzoek wordt uitgevoerd naarinformaticaonderwijs.

Dankwoord. Dit onderzoek is gefinancierd door Stichting Kennisnet. Wij dan-ken de docenten Chris Trausche, Harmen Lafeber, en Jochum van Weert voor hunmedewerking. Pieter van der Hoeven heeft commentaar geleverd op dit rapport.Marja Flipse heeft nagedacht over de opzet van het onderzoek, en haar netwerkingezet om docenten te vinden die aan het onderzoek wilden deelnemen.

33

Page 34: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Referenties

[1] Carole Ames and Jennifer Archer. Achievement goals in the classroom: Stu-dents’ learning strategies and motivation processes. Journal of Educational Psy-chology, 80(3):260 – 267, 1988.

[2] Jens Bennedsen and Michael E. Caspersen. Exposing the programming pro-cess. In Reflections on the Teaching of Programming, volume 4821 of Lecture Notesin Computer Science, pages 6–16. Springer, 2008.

[3] Jens Bennedsen, Michael E. Caspersen, and Michael Kolling, editors. Reflecti-ons on the Teaching of Programming, Methods and Implementations, volume 4821of Lecture Notes in Computer Science. Springer, 2008.

[4] P. Bergervoet et al. Informatica Actief. Stichting Informatica Actief, 2007-...

[5] Bloom. Bloom’s taxonomy. http://www.odu.edu/educ/roverbau/Bloom/blooms_taxonomy.htm, 1956.

[6] Informaticacommunity Enigma. Enigma. Stichting Enigma, 2007.

[7] Sally Fincher and Marian Petre, editors. Computer Science Education Research.RoutledgeFalmer, 2004.

[8] Femke van Geel. Een overzicht van het programmeeronderwijsop middelbare scholen in nederland. Universiteit Twente, beschik-baar via http://www.utwente.nl/elan/huidige_studenten/overig/OvO/OvO-inf/Eindverslag%20INF.pdf, 2008.

[9] Orit Hazzan, Tami Lapidot, and Noa Ragonis. Guide to Teaching ComputerScience — An Activity-Based Approach. Springer, 2011.

[10] Daniel Heersink and Barbara M. Moskal. Measuring high school students’ at-titudes toward computing. In Proceedings of the 41st ACM technical symposiumon Computer science education, SIGCSE ’10, pages 446–450. ACM, 2010.

[11] J. van der Laan, A.H. Wesdorp, et al. Fundament Informatica. Instruct, 1999-...

[12] E Lahtinen. A categorization of novice programmers: A cluster analysis study.In Proceedings of the 19th annual Workshop of the Psychology of Programming In-terest Group, pages 32–41, 2001.

[13] Raymond Lister, Beth Simon, Errol Thompson, Jacqueline L. Whalley, andChristine Prasad. Not seeing the forest for the trees: novice programmersand the solo taxonomy. In Proceedings of the 11th annual SIGCSE conference onInnovation and technology in computer science education, ITICSE ’06, pages 118–122. ACM, 2006.

[14] Mike Lopez, Jacqueline Whalley, Phil Robbins, and Raymond Lister. Relati-onships between reading, tracing and writing skills in introductory program-ming. In Proceeding of the Fourth international Workshop on Computing EducationResearch, ICER ’08, pages 101–112. ACM, 2008.

[15] Charlie McDowell, Linda Werner, Heather E. Bullock, and Julian Fernald. Pairprogramming improves student retention, confidence, and program quality.Communications of the ACM, 49:90–95, 2006.

[16] Jeroen J.G. van Merrienboer and Fred G.W.C. Paas. Automation and schemaacquisition in learning elementary computer programming: Implications for

34

Page 35: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

the design of practice. Computers in Human Behaviour, 6:273–289, 1990.

[17] Laurie Murphy and Lynda Thomas. Dangers of a fixed mindset: implicationsof self-theories research for computer science education. In Proceedings of the13th annual SIGCSE conference on Innovation and technology in computer scienceeducation, ITICSE ’08, pages 271–275. ACM, 2008.

[18] Nachiappan Nagappan, Laurie Williams, Miriam Ferzli, Eric Wiebe, Kai Yang,Carol Miller, and Suzanne Balik. Improving the CS1 experience with pair pro-gramming. In Proceedings of the 34th SIGCSE technical symposium on Computerscience education, SIGCSE ’03, pages 359–362. ACM, 2003.

[19] D. N. Perkins, C. Hancock, R. Hobbs, G. Martin, and R. Simmons. Conditionsof learning in novice programmers. In E. Soloway and J.C. Spohrer, editors,Studying the novice programmer, pages 261–279. Hillsdale, NJ: Lawrence Erl-baum, 1986.

[20] Viera K. Proulx. Programming patterns and design patterns in the introduc-tory computer science course. In Proceedings of the 31st SIGCSE technical sym-posium on Computer science education, SIGCSE ’00, pages 80–84. ACM, 2000.

[21] Anthony Robins, Janet Rountree, and Nathan Rountree. Learning and tea-ching programming: A review and discussion. Computer Science Education,13(2):137–172, 2003.

[22] Norsaremah Salleh, Emilia Mendes, and John Grundy. Empirical studies ofpair programming for cs/se teaching in higher education: A systematic lite-rature review. IEEE Transactions on Software Engineering, 2010.

[23] Victor Schmidt. Handreiking schoolexamen informatica HAVO/VWO. 2007.

[24] Beth Simon and Brian Hanks. First-year students’ impressions of pair pro-gramming in CS1. J. Educ. Resour. Comput., 7, 2008.

[25] Nationaal expertisecentrum leerplanontwikkeling SLO. Eindexamenpro-gramma informatica HAVO/VWO. 2009.

[26] Allison Elliott Tew and Mark Guzdial. The FCS1: a language independentassessment of CS1 knowledge. In Proceedings of the 42nd ACM technical sympo-sium on Computer science education, SIGCSE ’11, pages 111–116. ACM, 2011.

[27] Jacqueline L. Whalley, Raymond Lister, Errol Thompson, Tony Clear, PhilRobbins, P. K. Ajith Kumar, and Christine Prasad. An australasian study ofreading and comprehension skills in novice programmers, using the bloomand solo taxonomies. In Proceedings of the 8th Austalian conference on Com-puting education - Volume 52, ACE ’06, pages 243–252. Australian ComputerSociety, Inc., 2006.

35

Page 36: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

A. Analyse Fundament

De module BlueJ van Fundament bestaat uit een boek en een CD waar projectenopstaan die als voorbeelden worden gebruikt, en soms als beginpunt van een oe-fening of opgave. We analyseren de methode hoofdstuksgewijs aan de hand vande volgende onderwerpen.

Instructie We analyseren welke instructie er wordt gegeven, en hoe deze aange-boden wordt. Het gaat ons hierbij niet alleen om de instructie betreffende de pro-grammeertaal Java of Java-specifieke programmeerbegrippen, maar ook om de in-structie over de ontwikkelomgeving BlueJ. Hieraan kunnen we zien waarin dezeontwikkelomgeving afwijkt van de standaard ontwikkelomgevingen zoals Eclipseen Netbeans.

Voorbeelden Voorbeelden spelen in deze methode een belangrijke rol. We inven-tariseren de voorbeelden en plaatsen deze in het kader van de leer/oefenstof.

Oefeningen We inventariseren de oefeningen die in deze methode worden voor-gedaan en/of uitgewerkt, en waar de leerling ook een bijdrage aan moet leveren.

Begrippen Daarna inventariseren we de begrippen die in het hoofdstuk voorko-men. Om eventuele verwarring te voorkomen geven we de begripsbeschrijvinginvan de methode.

Opgaven Net opgaven bedoelen we de vragen en opgaven die aan het einde vaneen hoofdstuk worden gegeven. We delen deze in de categorieen beschreven inparagraaf 5.2.2.

A.1. Hoofdstuk 1: objecten in BlueJ

Instructie

• De installatie en configuratie van de ontwikkelomgeving.

• De werking van de ontwikkelomgeving.

• Het maken van een object.

• Het sturen van een bericht naar het object.

• Het uitvoeren van een methode.

• Het tonen van de waarden van de attributen.

Voorbeelden

• Een televisie met afstandsbediening als voorbeeld van een object met attri-buten waarvan de waarden worden bewaard.

Oefeningen

• In deze oefeningen laat de methode zien hoe je objecten kan maken en ge-bruiken zonder dat je daarvoor een main klasse introduceert. Alles wordthier gedaan met behulp van de BlueJ ontwikkelomgeving.

• Het werken met een klasse, het creeren van objecten.

• Het veranderen van attributen van objecten door gebruik te maken van me-thoden die hier berichten worden genoemd.

36

Page 37: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Het creeren van een object met een constructor, en het gebruik van twee ver-schillende objecten.

Begrippen

Project Een project bestaat uit een aantal bestanden die bij elkaar horen.

Klasse Vanuit een klasse worden objecten worden geınstantieerd. Een klasse iseen blauwdruk van de objecten die je ermee kan maken.

Constructor Met een constructor maak je een object.

Instantie Een instantie is een ander woord voor object.

Bericht Een bericht is een opdracht die naar een object wordt gestuurd

Methode Een methode beschrijft een opdracht voor een object.

Boolean Een Boolean is een waarheidswaarde. De waarde kan alleen waar of nietwaar zijn.

Waarheidswaarde Een waarde die alleen waar of niet waar kan zijn.

Void Leeg. Een methode met als resultaat void retourneert geen waarde.

Toestand van een object De waarden van de attributen van een object.

int (integer) Een geheel getal.

private De waarde van een private attribuut is alleen binnen het betreffende objectte gebruiken, en niet daarbuiten.

Opgave naar categorie

1. vraag: 1,2,3,5,6,8,9,10 opgave 1,2,4

2. vraag: 4 en opgave: 3

3. opgave: 5,6

4. –

A.2. Hoofdstuk 2: de schildpad

Instructie

• Het maken van een instantie.

• Het werken met methoden en het uitvoeren van methoden.

• Uitleg van de werking van de methode van de klasse Schildpad: vooruit,setKleur, draaiRechts.

• Het maken van een nieuwe methode in de klasse Schildpad.

• Het tekenen van een vierkant.

• Het vertalen van broncode.

Voorbeelden

• De werking van de klasse Schildpad en de methoden daarvan.

• Het gebruik van argumenten en retourwaarden in deze methoden.

37

Page 38: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• De broncode van de klasse Schildpad samen met de methoden.

• De JavaDoc van de klasse Schildpad.

Oefeningen

• Het uitvoeren van de methoden (met argumenten en retourwaarden).

• Het maken van de methode maakVierkant().

• Het creeren van een methode aan de hand van een lijst met opdrachtregels.

• Het schrijven van JavaDoc.

Begrippen

Compileren We compileren om broncode naar een binary te vertalen.

Public Publieke methoden en variabelen kunnen ook buiten een klasse gebruiktworden.

Head De head van een methode is de kopregel van een methode met daarin: hetbereik (public of private), het type, de naam en de argumenten.

Body Een body is de lijst met opdrachten die worden uitgevoerd als een methodewordt uitgevoerd.

Overloading We gebruiken overloading voor het definieren van twee of meer me-thoden met dezelfde naam maar met andere argumenten. Zowel het aantalargumenten als het type van de argumenten mag verschillen.

Interface Een interface is een lijst met namen van berichten (methods) die je naareen object van een klasse die de interface implementeert kan sturen.

Argument Een argument is een waarde die je meegeeft als je een methode die eenargument verwacht aanroept.

Een methode aanroep Een methode aanroep is een opdrachtregel waarin een me-thode met de noodzakelijke argumenten wordt aangeroepen.

Retourwaarde Een retourwaarde is de waarde die een methode oplevert na uit-voering.

String Een string is een lijst characters.

Opgave naar categorie

1. vraag: 1,2,3,4,5,7 opgave 1,2,4

2. vraag: 6

3. vraag: 8 opgave: 1,2,3

4. opgave: 4,5,6

A.3. Hoofdstuk 3: klassen

Instructie

• Het maken van een klassendiagram.

• De regels voor de naam van een klasse, een methode en een variabele.

38

Page 39: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Het schrijven van de code van een klasse.

• Het aanmaken van een nieuw project.

• Het formatteren van de juiste lay-out van de code.

• Het toevoegen van commentaar in de code.

Voorbeelden

• De Klasse Bankrekening: klassendiagram en code.

• De klasse Leerling: klassendiagram en code.

Oefeningen

• Het ontwikkelen van een klassendiagram voor de klasse Bankrekening.

• Het implementeren van de constructor.

• Het implementeren van de methoden voor deze klasse: stort(), getSaldo(),neemOp().

• Het ontwikkelen van de klasse Leerling.

• Het implementeren van de constructor.

• Het implementeren van de getter- en setter-methoden voor deze klasse.

Begrippen

Attribuut Een gegeven van een object dat bij een object worden opgeslagen.

klassendiagram Een schema bestaande uit rechthoeken en pijlen met daarin denaam van een klasse, de naam en het type van de attributen, en de naam enhet type van de methoden.

Getter Een getter is een methode die de waarde van een attribuut teruggeeft (re-tourneert).

Setter Een setter is een methode die de waarde van een attribuut verandert.

Opgave naar categorie

1. vraag: 1,2,4,5,6,7,8 opgave: 1,2

2. –

3. vraag: 3,9 opgave: 3,4

4. –

A.4. Hoofdstuk 4: objecten met objectrelaties

Instructie

• De notatie met klassendiagrammen voor geassocieerde objecten: objecten dieeen relatie met elkaar hebben.

• Code voor geassocieerde objecten.

• Het importeren van een klasse in BlueJ.

• Het printen naar een terminal scherm.

39

Page 40: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Het creeren van een object bestaande uit andere objecten.

• Objecten bewaren in BlueJ.

• Het omzetten van getallen naar tekst en andersom.

Voorbeelden

• Bank als beheerder van bankrekeningen.

• Team bestaande uit leerlingen.

• De broncode om een associatie (relatie) te maken.

• Code om Strings aan elkaar te plakken.

Oefeningen

• Het maken van klassen met een relatie: geassocieerde klassen.

• Het maken van een object (of instantie) met een aanroep van de betreffendeconstructor in een andere klasse.

Begrippen

Associatie-relatie Een associatie-relatie tussen twee klassen krijgen we door in eenobject van de ene klasse een object van de andere klasse te gebruiken.

Referentie Een referentie verwijst naar een object.

Terminal scherm Een terminal scherm is een uitvoer scherm.

Concatenatie Concatenatie wordt gebruikt om Strings aan elkaar te plakken.

Opgave naar categorie

1. vraag: 1,2,3,4

2. –

3. vraag: 4 opgave: 1,2

4. opgave: 3,4,5

A.5. Hoofdstuk 5: collecties

Instructie

• Het maken van een ArrayList.

• Het toevoegen van een element aan een ArrayList.

• Het gebruiken van een for-herhalingsconstructie.

• Het noteren van een 1-n relatie (associatie) in een klassendiagram.

• De methode om het aantal elementen van een ArrayList op te halen.

• Het gebruiken van een if-constructie.

• Het formatteren van tekst met behulp van een methode van de klasse String(String.format).

Voorbeelden

40

Page 41: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• De ArrayList van leerlingen.

• De ArrayList in de klasse Team.

• De klasse en het klassendiagram van de klasse Cijferlijst.

• De beschrijving van een systeem: de elektronische winkel.

• Optellen in Java.

• Het berekenen van het gemiddelde met behulp van een ArrayList.

Oefeningen

• Het maken van een nieuwe versie van de klasse Team.

• Het maken van een systeem van gekoppelde klassen aan de hand van eenbeschrijving van dat systeem.

• Het opstellen van een klassendiagram aan de hand van zelfstandige naam-woorden in de beschrijving van een systeem. Het bepalen van de relaties, detypes, en de methoden.

• Het implementeren van de code aan de hand van het boven beschreven klas-sendiagram.

Begrippen

Collectie Een collectie is een object dat een variabel aantal andere objecten kanbevatten.

ArrayList Een ArrayList is een en collectietype.

Autoboxing Het automatisch construeren van een object van een bepaald type.

Autounboxing Het automatisch construeren van het type van een object.

Variabele Een variabele is een referentie naar een plaats in het geheugen waargegevens kunnen worden opgeslagen. Een variabele heeft een naam en eentype.

Lokale variabele Een lokale variabele is een variabele die alleen bekend is binneneen functie/methode.

Opgave naar categorie

1. –

2. vraag: 1,2

3. vraag: 3,4,5

4. opgave: 1,2,3

A.6. Hoofdstuk 6: keuzes en herhalingen

Instructie

• Het construeren van een willekeurig getal.

• Het gebruiken van een herhalingsconstructie.

• Het gebruiken van een if-constructie.

41

Page 42: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Voorbeelden

• Het construeren van een willekeurig getal in de klasse Dobbelsteen.

• Het implementeren van een herhaling met de for-constructie in de klasseSchildpad.

• Het creerem van andere geometrische figuren met de herhalingsconstructie.

• Het gebruik van de if-else-constructie in de KopOfMunt Klasse.

• Het gebruik van de if-constructie in de RaadSpel klasse.

• Een oplossingsstrategie in een analyse van de klasse Yahtzee.

Oefeningen

• Het werken met methoden waar herhalingsconstructies in zitten.

Begrippen/Syntax

Overloading Overloading wordt gebruikt om meerdere methoden te specificerenmet dezelfde naam, maar met een verschillend aantal of type argumenten.

Conditie Een conditie is een expressie die waar of niet waar kan zijn.

Vergelijkingsoperatoren Operatoren die de waarden van expressies met elkaarvergelijken:

a < b is a kleiner dan b?

a <= b is a kleiner dan of gelijk aan b?

a > b is a groter dan b?

a >= b is a groter dan of gelijk aan b?

a == b is a gelijk aan b?

a! = b is a verschillend van b?

Voor strings s1 en s2:

s1.equals(s2) is string s1 gelijk aan string s2?

s1.equalsIgnoreCase(s2 ) is string s1 gelijk aan string s2 onafhankelijk vanhoofdletters?

De waarde van een variabele a met 1 veranderen: a ++; a - -;.

Opgave naar categorie

1. vraag: 3,4,6,7,8

2. vraag: 1

3. vraag: 2,5,9

4. opgave: 1,2,3,4,5,6,7

A.7. Hoofdstuk 7: gebruikersinterface

Instructie

42

Page 43: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Het importeren van een bibliotheek.

• Het uitbreiden van een klasse (extends).

• Het implementeren van een interface (implements).

• Hoe een programma wordt gemaakt aan de hand van een stappenplan.

• Hoe een programma kan opstarten zonder de BlueJ ontwikkelomgeving.

Voorbeelden

• Een opstartklasse met javax.swing en JFrame maken.

• Het gebruik van Jbutton en JTextField uit JPannel.

• Het koppelen van de opstartklasse aan de JPannel Klasse.

• Het gebruik van een ActionListener.

• De implementatie van een ActionListener.

• Gebruikersinterface voor het Raadspel.

Begrippen

Extend Extends wordt gebruikt om een klasse te introduceren die een andereklasse uitbreidt met nieuwe attributen en/of methoden.

Implements Implements wordt gebruikt om te specificeren dat een klasse de me-thoden van een interface implementeert.

Statische methode Een statische methode wordt aangeroepen zonder een object.

Opstart methode De opstart methode is de statische methode main die wordtaangeroepen als een Java applicatie wordt gestart.

Container Een container is een omvattend object dat verschillende deelobjectenkan bevatten.

Event Een event is een gebeurtenis waarop de applicatie kan reageren.

Event-handling Event-handling is het afhandelen van een event.

ActionListener Een ActionListener is een object dat in staat is een bepaald soortevents af te handelen.

Gebruikersinterface Een gebruikersinterface is software waarmee gebruikers com-municeren met een programma.

Opgave naar categorie

1. vraag: 1,2,3,4,5,6,7

2. –

3. opgave: 1,2

4. opgave: 3

43

Page 44: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

B. Analyse Enigma

De Enigma methode bestaat uit een theorieboek en een verwerkingsboek. In hettheorieboek worden de verschillende onderwerpen uitgelegd en wordt er verwe-zen naar de opgaven uit het opdrachtenboek. Net zoals in de analyse van BlueJanalyseren we de methode hoofdstuksgewijs, aan de hand van de onderwerpeninstructie, voorbeelden, oefeningen, begrippen, en opgaven.

B.1. Deel 1 - Hoofdstuk 4: Visueel Programmeren met Java

4.1: Algoritmen.

Instructie

• Het gebruik van een Programma Structuur Diagram (PSD) om algoritmen tebeschrijven.

• Het weergeven van ’keuze’-opdrachten in een PSD.

• Het weergeven van ’zolang’-opdrachten in een PSD.

• Het weergeven van ’totdat’-opdrachten in een PSD.

• Het weergeven van ’sequentie’-opdrachten in een PSD.

Voorbeelden

• Het maken van een appeltaart aan de hand van een recept als voorbeeld vaneen algoritme waarin sequentieel stappen worden doorlopen.

Oefeningen

• Het schrijven van een aantal ’sequentie’-opdrachten om een toetscijfer uit terekenen in een PSD.

• Het schrijven van een ’keuze’-opdracht om een ’voldoende’ of ’onvoldoende’als resultaat te geven aan de hand van het toetscijfer in een PSD.

• Het schrijven van een ’zolang’-opdracht om de tafel van vijf op het schermte tonen in een PSD.

• Het creeren van een object met een constructor en het gebruik van twee ver-schillende objecten.

Begrippen

Algoritme Een algoritme beschrijft een berekening.

Computerprogramma Een computerprogramma bestaat onder andere uit een al-goritme dat door een computer uitgevoerd kan worden.

Programma Structuur Diagram Een Programma Structuur Diagram is een ma-nier om een algoritme te beschrijven.

Sequentie Een sequentie is een opeenvolging van componenten.

Logische Expressie Een logische expressie levert als resultaat waar of niet waarop. Vaak bestaat zo’n expressie uit een vergelijkingsopdracht.

44

Page 45: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Functioneel ontwerp Een functioneel ontwerp is een beschrijving van het doel vaneen programma.

Technisch ontwerp Een technisch ontwerp is een beschrijving van hoe een pro-gramma geımplementeerd wordt.

Opgaven naar categorie

1. opgave 2, 5

2. opgave 1a, 3, 4

3. opgave 1b, 6, 7, 8, 9, 10

4. opgave –

4.2: Visueel programmeren met Java.

Instructie

• Het maken van een nieuwe applet in JavaEditor.

• Het maken van een User Interface met het ontwerpformulier van JavaEditor.

• De werking van JavaEditor.

• Het maken van een event-handler.

VoorbeeldenGeen.

Oefeningen

• Met behulp van JavaEditor een applet maken dat met een druk op de knoptekst van het ene tekstveld naar een ander tekstveld verplaatst.

• Het aanbrengen van een eventHandler voor de ’verplaats’-knop.

Begrippen

User Interface Een User Interface is de interface tussen een gebruiker en een pro-gramma, en maakt vaak gebruik van menu’s, knoppen, invulvelden, en ani-maties.

Integrated Development Environment (IDE) Een IDE is een ontwikkelomgevingwaarin veel componenten waar programmeurs gebruik van maken zijn geın-tegreerd.

Applet Een Applet is een programma.

Attributen Attributen bevatten de kenmerken van een object.

Event Een event is een gebeurtenis.

Event-handler Een event-handler is een programma-onderdeel dat er voor zorgtdat er iets gebeurt als er een event binnenkomt.

Commentaar Commentaar bestaat uit tekst tussen /* en */ of achter //, en be-schrijft de code.

String String is het type van een variabele waar tekst in opgeslagen kan worden.

45

Page 46: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

get en set De methoden get en set worden gebruikt om waarden van attributenop te vragen, of waarden in attributen op te slaan, respectievelijk.

Opgaven naar categorie

1. opgave 11, 12b, 12c, 12d, 12e, 13a

2. opgave 12a

3. opgave 13b

4. opgave –

4.3: Java-programma’s nader bekeken.

Instructie

• Toekenning in Java.

• Naamgeving van variabelen en methoden in Java.

• Herhaling met een while-loop.

• Het gebruik van operanden.

• Het aanroepen van methoden met en zonder argumenten.

• Conversie van enkele typen.

Voorbeelden

• Een rente-applet waarmee de rente over een aantal termijnen berekend kanworden. Deze applet gebruikt een event-handler, meerdere velden, en her-haling in de code.

Oefeningen

• beginkapitaal = Integer.parseInt(beginkapitaalVeld.getText()).Deze code wordt stap voor stap doorlopen, waarbij aandacht wordt besteedaan methode-aanroepen en resultaattypen.

Begrippen

Toekenning (assignment) Een toekenning geeft een variabele een waarde.

Expressie Een expressie levert een resultaat op.

Variabele Een variabele wijst naar een plaats in het geheugen.

Reserved words Een reserved word is een woord dat in Java een speciale betekenisheeft.

Type Een type beschrijft het soort waarden dat opgeslagen mag worden in eenvariabele.

Declaratie Een declaratie declareert de naam en het type van een variabele.

String String is het type van een variabele waar tekst in opgeslagen kan worden.

int int is het basistype in Java voor gehele getallen.

double double is het basistype in Java voor reele getallen.

46

Page 47: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Operatie Een operatie is meestal een binaire methode die tussen de twee operan-den wordt geschreven, bijvoorbeeld optellen.

Operand Een operand is een argument waar een operatie op werkt; in het gevalvan 4 + 3 zijn dat 4 en 3.

Herhalingslus Een herhalingslus is een lus die opdrachten herhaalt.

While While herhaalt een opdracht totdat een voorwaarde false is. Een while op-dracht wordt geschreven als while (voorwaarde) opdracht of opdrachten.

Boolean Boolean is het type met twee waarden: waar een niet waar.

Logisch Expressie Een logische expressie is een expressie dat een boolean waardeoplevert.

Argument Een argument is een waarde of variabele die tussen de haakjes bij eenmethode-aanroep geplaatst wordt.

Resultaattype Het resultaattype van een methode is het type van de waarde dieeen methode oplevert.

void void is het resultaattype van een methode die geen waarde oplevert, maarmogelijk wel een effect heeft.

Conversie Met behulp van conversie zetten we een waarde van het ene type naareen ander type om.

String.valueOf() String.valueOf() is een Java functie die een waarde van het typeint of double converteert naar het type String.

Integer.parseInt() Integer.parseInt() is een Java functie die een waarde van hettype String converteert naar het type int.

Double.parseDouble() Double.parseDouble() is een Java functie die een waardevan het type String converteert naar het type double.

Statement Een statement is een opdracht.

Samengesteld statement Een samengesteld statement is een statement dat state-ments bevat, zoals een while-opdracht.

Opgaven naar categorie

1. opgave 20, 21, 22, 23, 27

2. opgave 24, 25, 26, 28, 29, 30, 31

3. opgave 32, 33, 34

4. opgave 35, 36, 37

4.4: Herhaling en keuze.

Instructie

• Het combineren van declaraties en toekenning in een regel code.

• Het gebruik van een for-statement.

• Het gebruik van een do-while-statement.

47

Page 48: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Het gebruik van een if-else-statement.

• De vertaling van een PSD naar Javacode

Voorbeelden

• Een applet die een algoritme implementeert dat een decimaal getal omzet ineen binair getal. Illustreert de vertaling van een PSD naar Javacode.

• Een applet die overwerkuren berekent. Maakt gebruik van een if-else-state-ment.

Oefeningengeen

Begrippen

Relationele operatoren Een relationele operator vergelijkt waarden.

Initialiseren Bij de initialisatie van een variabele krijgt de variabele een begin-waarde.

Stuurvariabele Een stuurvariabele is de variabele die bij een herhalingslus wordtgebruikt om te bepalen hoe lang de herhaling doorgaat.

Stapopdracht Een stapopdracht is de opdracht die iedere stap wordt uitgevoerdin een herhalingslus en vaak de stuurvariabele wijzigt.

MOD De functie MOD levert de rest na deling op.

String.valueOf() De functie String.valueOf() zet een getal om in een string.

do-while-statement Het do-while-statement is een herhalingsopdracht die nauwverwant is aan het while-statement. Een do-while-statement voert de op-drachten minstens een keer uit, en berekent de conditie na het uitvoeren vande opdrachten.

if-else-statement Het if-else-statement is een samengesteld statement waarmeeeen keuze wordt gemaakt.

Opgaven naar categorie

1. opgave 38, 39, 40, 41, 42, 43, 44, 45

2. opgave 46, 47

3. opgave 48, 50

4. opgave 49

4.5: Variabelen en Operatoren.

Instructie

• De twee soorten variabelen: referenties naar een object, en waarden met eenprimitief type.

• De primitieve typen van Java.

• Het resultaat van rekenkundige operatoren bij operanden van verschillendetypen.

48

Page 49: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Het genereren van random getallen.

• De conversie van typen, zowel impliciet als expliciet.

• Het gebruik van logische expressies.

• Lokale en instance variabelen.

Voorbeelden

• Een doos als weergave van een variabele; de variabelenaam is een sticker opde doos, de inhoud van de doos is de waarde en de vorm van de doos is hettype.

• Een applet die het werpen van een dobbelsteen simuleert. Laat zien hoe eenrandom getal wordt verkregen en gebruikt.

OefeningenGeen.

Begrippen

Referenties Een referentie is een variabele die naar een object verwijst.

Primitieve typen Een variabele die een primitief type heeft verwijst niet naar eenobject, maar direct naar de waarde.

int int is een primitief type voor gehele getallen in Java, waarbij de waarde in 32bits wordt opgeslagen.

byte byte is een primitief type voor gehele getallen in Java, waarbij de waarde in8 bits wordt opgeslagen.

short short is een primitief type voor gehele getallen in Java, waarbij de waarde in16 bits wordt opgeslagen.

long long is een primitief type voor gehele getallen in Java, waarbij de waarde in64 bits wordt opgeslagen.

double double is een primitief type voor floating-point getallen in Java, waarbij dewaarde in 64 bits wordt opgeslagen.

float float is een primitief type voor floating-point getallen in Java, waarbij dewaarde in 32 bits wordt opgeslagen.

Rekenkundige operatoren Een rekenkundige operator is een operator waarmeerekenkundige expressies uitgedrukt kunnen worden, zoals optellen (+) enaftrekken (-).

Math.random() Math.random() is een methode uit de klasse Math die een ran-dom getal berekent.

Impliciete conversie Impliciet conversie converteert waarden van types impliciet.

Expliciete conversie (casting) Expliciete conversie converteert waarden van ty-pes expliciet.

boolean Boolean is het primitieve type met twee waarden: waar een niet waar.

Logische operatoren Een logische operator neemt twee boolean waarden als in-put, en berekent een boolean.

Relationele operatoren En relationele operator vergelijken twee waarden, en le-

49

Page 50: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

vert een boolean op.

Lokale variabele Een lokale variabele is een variabele die gedeclareerd is in eenmethode en kan alleen in die methode gebruikt worden.

Instance variabele Een instance variabele is een variabele die gedeclareerd is inhet begin van een klasse en kan in de hele klasse gebruikt worden.

Opgaven naar categorie

1. opgave 53, 56, 57, 61, 62a, 62b, 64

2. opgave 51, 52, 54, 55, 62c, 62d, 62e, 63

3. opgave 58, 59, 60, 65, 66, 67, 68

4. opgave 69, 70, 71

4.6: Strings.

Instructie

• Het vergelijken van twee strings.

• Het samenvoegen van meerdere strings.

• Een deel van een string selecteren.

• De lengte van een string berekenen.

• Het converteren van en naar strings.

Voorbeelden

• Een applet die controleert of een woord een palindroom is. Laat zien hoe deoperaties op waarden van het type String, een referentietype, verschillen vanoperaties op waarden van een primitief type in Java.

OefeningenGeen.

Begrippen

String Een string is een rij tekens.

s1.equals(s2) s1.equals(s2) vergelijkt de strings s1 en s2.

s1.length() s1.length() levert een int op die het aantal tekens in de string s1 repre-senteert.

s1.substring(intBegin, intEind) s1.substring(intBegin, intEind) selecteert het deelvan de string s1 tussen intBegin en intEind. Deze methode levert een Stringop.

Concatenatie Concatenatie is het aan elkaar plakken van twee strings.

String.valueOf() String.valueOf() converteert een int of een double naar een String.

Integer.parseInt() Integer.parseInt() converteert een String naar een int.

Double.parseDouble() Double.parseDouble() converteert een String naar een dou-ble.

50

Page 51: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Opgaven naar categorie

1. opgave 72, 74, 75, 77, 78, 79, 80

2. opgave 73, 76

3. opgave 81, 82

4. opgave 83, 84, 85

B.2. Deel V - Hoofdstuk 1: Objectgeorienteerd programmerenmet Java

1.1: Objectgeorienteerd programmeren.

Instructie

• Wat is een object.

• Wat is een klasse.

• De samenhang tussen object en klasse.

• Het maken van een eigen klasse.

• Het implementeren van een methode binnen een klasse.

• Het uitleggen van verschillende toegangsniveau’s van methoden.

• Het creeren van een object.

Voorbeelden

• Een stoel als voorbeeld van een object, waarbij kleur en vorm als eigenschap-pen genomen worden, en verplaatsen van of plaatsnemen op de stoel alsbewerking. Zitting, rugleuning en poten zijn ook eigenschappen, waarbijopgemerkt wordt dat deze ook als object gezien kunnen worden om te latenzien dat objecten uit andere objecten opgebouwd kunnen zijn.

Oefeningen

• Een dobbelspel-applet, waarbij een klasse Dobbelsteen gemaakt moet wor-den.

Begrippen

Programmeerparadigma Een programmeerparadigma beschrijft hoe klassen vancomputerprogramma’s gestructureerd kunnen worden.

Objectgeorienteerd paradigma Het objectgeorienteerd paradigma is het program-meerparadigma dat gebruik maakt van klassen en objecten. Java maakt hiergebruik van.

Object Een object is iets wat je in de werkelijkheid als een betekenisvolle eenheidonderscheidt, dat eigenschappen heeft, en wat bewerkingen kan ondergaan.

Klasse Een klasse beschrijft het model aan de hand waarvan objecten gemaaktworden.

Instantie Een instantie van een klasse is een invulling van een klasse.

51

Page 52: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Attribuut (veld) Een attribuut is een eigenschap van een klasse.

Methode Een methode is een bewerking van een klasse.

API (Application Programming Interface) Een API is een bibliotheek van stan-daardklassen, samengenomen in packages.

Package Een package is een aantal bij elkaar behorende klassen.

init init is de methode die als eerste wordt aangeroepen in een applet.

class class is een gereserveerd woord in Java dat het begin van de definitie vaneen klasse aangeeft.

Constructor De constructor is een speciale methode van een klasse waarin wordtvastgelegd wat er moet gebeuren bij de constructie van een nieuwe instantievan de klasse.

private private is een gereserveerd woord waarmee aangegeven wordt dat eenmethode alleen binnen de klasse aangeroepen kan worden.

public public is een gereserveerd woord waarmee aangegeven wordt dat een me-thode vanuit de eigen klasse maar ook vanuit andere klassen aangeroepenkan worden.

Data-hiding Data-hiding is het principe dat data niet door de buitenwereld te be-kijken is.

package package is een gereserveerd woord waarmee aangegeven wordt dat eenmethode toegankelijk is voor klassen binnen dezelfde package.

void void is een gereserveerd woord dat aangeeft dat een methode geen resultaatoplevert.

return-statement Het return statement bepaalt welke waarde teruggegeven wordtdoor een methode.

new new is een gereserveerd woord, waarmee een nieuwe instantie van een klassegemaakt wordt.

Opgaven naar categorie

1. opgave 4, 6, 7, 8, 11a, 14, 15, 20c, 20f, 20g

2. opgave 1, 2, 3, 5, 9, 10, 11b, 12, 13, 20a, 20b, 20d, 20e

3. opgave 16, 17b, 17c, 17d, 20h

4. opgave 17a, 17e, 17f, 18, 19

1.2: De Klasse-Applet.

Instructie

• Het importeren van packages.

• Overerving en overriding van methoden.

Voorbeelden

• Een dobbel-applet die een dobbelsteen simuleert. Voorbeeld waarin het im-

52

Page 53: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

porteren van packages, overriding en overerving gebruikt wordt.

OefeningenGeen.

Begrippen

import-statement Met behulp van een import-statement kan een programma eenandere klasse gebruiken.

extends extends is een gereserveerd woord dat aangeeft dat de klasse een uitbrei-ding is van een andere klasse, waarmee deze de methoden van die klasseerft.

add() De methode add() voegt objecten toe aan een applet.

Overerving (inheritance) Overerving is het overnemen van alle methoden en ei-genschappen van een bestaande klasse in een uitbreiding van deze klasse.

Overriding Overriding vervangt een geerfde methode door een andere methode.

Opgaven naar categorie

1. opgave 26, 32

2. opgave 21, 22, 23, 25, 27, 28

3. opgave 24, 29, 30, 31, 33

4. opgave –

1.3: Tekenen.

Instructie

• Het tekenen van rechthoeken, lijnen, ovalen en tekst.

• Het gebruik van standaardkleuren.

• Het maken van een andere kleur met behulp van RGB-waarden.

Voorbeelden

• Een verkeerslicht-applet. Voorbeeld van het tekenen van verschillende vor-men met verschillende kleuren.

OefeningenGeen.

Begrippen

paint() paint() is een methode in Java die iets op het scherm tekent.

drawLine() drawLine() is een methode met 4 argumenten (x- en y-coordinaten vanhet begin en eind van een lijn) om een lijn op het scherm te tekenen.

drawString() drawString() schrijft een tekst op het scherm.

drawRect() drawRect() tekent een rechthoek op het scherm.

drawOval() drawOval() tekent een ovaal op het scherm.

53

Page 54: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

fillRect() fillRect() tekent een gevulde rechthoek op het scherm.

fillOval() fillOval() tekent een gevulde ovaal op het scherm.

setColor() setColor() wijzigt de kleur van een figuur.

repaint() repaint() tekent het scherm opnieuw.

Opgaven naar categorie

1. opgave 35, 37a, 37b, 37c, 38, 42a, 42c

2. opgave 34, 36, 42d

3. opgave 37d, 39, 40

4. opgave 41, 42b, 42e

1.4: Arrays.

Instructie

• Wat is een array?

• Het maken van een array.

• Het toevoegen van een element aan een array.

• Het zoeken in een array.

Voorbeelden

• Een applet dat een lijst met boektitels toont. Voorbeeld van het gebruik vaneen array.

OefeningenGeen.

Begrippen

Array Een array is een lijst van gegevens van hetzelfde type.

Element Een element is een waarde in een array.

Index Een index is een positie in een array.

add() add() voegt een element toe aan een array.

removeAll() removeAll() verwijdert alle elementen uit een array.

length length is een veld van een array-object dat de lengte van de array bevat.

Opgaven naar categorie

1. opgave 43, 46, 48, 51, 56, 58c, 59a, 59c

2. opgave 44, 45, 47, 49, 50, 52

3. opgave 53, 54, 57, 58a, 58b

4. opgave 55, 58d, 59b

54

Page 55: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

1.5: Werken met arrays.

Instructie

• Het maken van een applet waarbij gebruik gemaakt wordt van een array.

• Het sorteren van een lijst met behulp van Bubble sort.

Voorbeelden

• Een applet om een lijst van cd’s samen te stellen. Illustreert hoe je met array’skan werken.

• Een ongesorteerde lijst met namen om de werking van Bubble sort te illustre-ren.

OefeningenGeen.

Begrippen

this this is een gereserveerd woord dat aangeeft dat een veld van het huidige ob-ject wordt bedoeld.

Bubble sort Bubble sort is een algoritme om elementen in een lijst te sorteren doorsteeds twee elementen die in de foute volgorde staan van plaats te verwisse-len.

Opgaven naar categorie

1. opgave 60, 64, 66, 68b, 69

2. opgave 63, 65, 67, 68a, 68c, 72, 74

3. opgave 62, 70, 71, 73, 75, 76

4. opgave 61, 77, 78

C. Concepten en structuren in de lesmethoden

C.1. Fundament: concepten en structuren van het lesmateriaal

Java Specifieke begrippen

• Package

• Project

• JavaDoc

• System.out.printnl

• toString()

• import (structuur van)

• class path

• Opstart classe

55

Page 56: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• methode init()

• autoboxing

Object gerelateerde begrippen en concepten

• Objecten & Instanties

• Toestand van een object

• Constructor

Methoden

• Methoden met argumenten (een String-argument)

• Methode met retourwaarde

• Overloading van methoden

• Getters en Setters

• Klassen

• Klassendiagram

• Interface

• Referenties

• Collecties

Algemene begrippen en concepten

• Statement

• Attributen (type attributen)

• Broncode

• Commentaar in de broncode

• Gebruikers interface

• Concateneren

Datatypen

• int (integer)

• boolean

• double

• String

Algemene structuren

• for-each-opdracht

56

Page 57: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• for-opdracht

• if-opdracht

• if-else-opdracht

• Het maken van een conditie

Events

• Event

• Event-handling

• ActionListener

C.2. Enigma: concepten en structuren van het lesmateriaal

Java Specifieke begrippen

• Void

• String.valueof()

• Integer.parseInt()

• Double.parseDouble()

• Random()

• equals()

• length()

• substring()

• Package

• Button

• Textfield

• Checkbox

• class

• static

• abstract

• final

• public

• private

• package

• protected

• return

• new

57

Page 58: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• import

• extend

• add()

• paint()

• drawLine()

• drawRect()

• drawOval()

• fillRect()

• fillOval()

• setColor()

• repaint()

• Methode init()

Object gerelateerde begrippen en concepten

• Declaraties

• Statements

• Samengestelde statements

• Impliciete conversie

• Expliciete conversie/casting

• Lokale variabele

• Instance variabele

• Objecten

• Klasse

• Instantie

• Attributen

• Klassedefinitie

• Constructor

• Data-hiding

Methoden

• Referenties

• Get en set

• Methoden

• API

58

Page 59: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Methoden

• Methoden aanroepen

• Methoden met argumenten

• Methoden met return-waarde

• Overerving/inheritance

• Overriding

• this

• Resultaattype

• Parameter

Algemene begrippen en concepten

• Algoritme

• Computerprogramma

• Procedures

• Programma Structuur Diagram

• User Interface

• Attributen

• Commentaar

• Toekenning/Assignment

• Expressie

– Logische expressie

• Reserved words

• Operatoren

– Relationele operatoren

– Rekenkundige operatoren

– Logische operatoren

• Operand

• Variabele

• Concatenatie

• bubblesort

• Datatypen

• array

– index

– elementen

59

Page 60: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

• Algemene structuren

• For-statement

• If-statement

Datatypen

• String

• int

• double

• boolean

• byte

• short

• long

• float

• Type

• Primitieve typen

Algemene structuren

• Opeenvolging

• Keuze

– if-else-statement

• Herhaling

– Herhalingslus

– while

– for-statement

– do-while-statement

• Logische expressie

Events

• Event

• Event-handler

• actionListener()

• event-handler

60

Page 61: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D. Attitudetesten

D.1. Vragen

Naam:Klas:Profiel:

Open vragen

1. Waarom heb jij voor Informatica gekozen?*

a) Het vak leek mij interessant

b) Andere vakken waren minder boeiend

c) Ik wil graag meer leren over informatica

d) Ik heb de kennis nodig voor een vervolgstudie

e) Ik wil later informatica studeren

f) Anders, nl:

2. Met welke programmeertalen heb je al eens kennisgemaakt?*

3. Hoe heb je voor het eerst kennisgemaakt met programmeren?*

a) Op school

b) Ik ging zelf op zoek

c) Via familie/vrienden

d) Ik heb er nog nooit wat mee gedaan

e) Anders, nl:

4. Wat vind jij van programmeren in vergelijking met andere onderwerpen bijhet vak Informatica?

a) Makkelijker / Even makkelijk / MoeilijkerWaarom?

b) Minder leuk / Even leuk / LeukerWaarom?

5. Schrijf achter ieder begrip wat je denkt dat het inhoudt.*

Object

Variabele

Parameter

Event

Klasse

Applicatie

Methode

61

Page 62: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Compiler

Constructor

New

MeerkeuzevragenOmcirkel het antwoord dat voor jou het meest waar is. Er is dus geen goed of foutantwoord!

1. Ik vind het leuk om te leren programmeren.Heel erg mee eens / Eens / Oneens / Heel erg oneens

2. Ik heb weinig zelfvertrouwen als het op programmeren aankomt.Heel erg mee eens / Eens / Oneens / Heel erg oneens

3. Jongens en meisjes kunnen allebei heel goed zijn in programmeren.Heel erg mee eens / Eens / Oneens / Heel erg oneens

4. Ik hoop dat ik in mijn studie gebruik kan maken van programmeren.Heel erg mee eens / Eens / Oneens / Heel erg oneens

5. Leerlingen die goed zijn in programmeren zijn net zo populair als andereleerlingen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

6. Ik gebruik GEEN programmeervaardigheden in mijn dagelijkse leven.Heel erg mee eens / Eens / Oneens / Heel erg oneens

7. Ik denk dat het leren programmeren belangrijk is voor mijn vervolgstudie.Heel erg mee eens / Eens / Oneens / Heel erg oneens

8. Ik kan echt goed leren progammeren.Heel erg mee eens / Eens / Oneens / Heel erg oneens

9. Ik vind de uitdaging van het oplossen van programmeerproblemen leuk.Heel erg mee eens / Eens / Oneens / Heel erg oneens

10. Ik vind programmeren interessant.Heel erg mee eens / Eens / Oneens / Heel erg oneens

11. Meisjes leveren net zulk goed programmeerwerk als jongens.Heel erg mee eens / Eens / Oneens / Heel erg oneens

12. Jongens leveren betere kwaliteit programmeerwerk dan meisjes.Heel erg mee eens / Eens / Oneens / Heel erg oneens

13. Een leerling die goed is in programmeren heeft waarschijnlijk ook veel hobby’sernaast.Heel erg mee eens / Eens / Oneens / Heel erg oneens

14. Ik kan hoge cijfers (7 of hoger) halen voor programmeertoetsen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

15. Ik wil graag programmeerwerk gebruiken om problemen op te lossen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

16. Als ik de kans zou krijgen om extra programmeerlessen te volgen, zou ik datdoen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

17. Ik denk dat meisjes NIET kunnen uitblinken in programmeren.

62

Page 63: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Heel erg mee eens / Eens / Oneens / Heel erg oneens

18. Jongens en meisjes kunnen later allebei heel goed zijn in een studie waarbijprogrammeren belangrijk is.Heel erg mee eens / Eens / Oneens / Heel erg oneens

19. Mijn gewenste vervolgstudie vraagt NIET om vaardigheden met program-meren.Heel erg mee eens / Eens / Oneens / Heel erg oneens

20. Ik heb er vertrouwen in dat ik problemen kan oplossen door computerpro-grammas te gebruiken.Heel erg mee eens / Eens / Oneens / Heel erg oneens

21. Programmeren is een gepast onderwerp om te leren voor jongens en meisjes.Heel erg mee eens / Eens / Oneens / Heel erg oneens

22. Kennis van programmeren zorgt er voor dat ik later mijn studie beter kandoen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

23. Leerlingen die goed zijn in programmeren zijn minder populair dan andereleerlingen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

24. Jongens en meisjes kunnen allebei even goed programmeerproblemen oplos-sen.Heel erg mee eens / Eens / Oneens / Heel erg oneens

25. Het is waarschijnlijker dat jongens het heel goed doen in een studie waarbijprogrammeren van belang is.Heel erg mee eens / Eens / Oneens / Heel erg oneens

Vragen gemarkeerd met een * zijn enkel opgenomen in de attitudetest die wordtafgenomen voorafgaand aan het programmeeronderwijs. Alle vragen zonder *zijn in beide attitudetesten opgenomen.

63

Page 64: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2. Resultaten

D.2.1. Den Bosch - test voorafgaand

64

Page 65: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.2. Den Bosch - test naderhand

65

Page 66: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.3. Arnhem - test voorafgaand

66

Page 67: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.4. Arnhem - test naderhand

67

Page 68: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.5. Culemborg - test voorafgaand

68

Page 69: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.6. Culemborg - test naderhand

69

Page 70: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.7. Almere - test voorafgaand

70

Page 71: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

D.2.8. Almere - test naderhand

E. De toetsen

E.1. Voorbeeld tussentijdse toets

1. In Figuur 19 staat de code voor de klasse Lid in een project vereniging. Ge-bruik deze code om de onderstaande vragen te beantwoorden.

71

Page 72: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

a) Op welke regel begint de constructor van de klasse Lid?

b) Op welke regels beginnen de setters?

c) Op welke regels zijn de attributen van de klasse gedefinieerd?

d) Wat is het type van het attribuut leeftijd?

e) Wat is het type van de methode getNaam()?

f) Wat is het type van de methode setNaam()?

g) Op welke regel begint de definitie van de klasse?

h) Hoeveel methoden heeft deze klasse?

i) Met welke methode kan ik de naam van een lid veranderen?

j) Welke methoden geven een retourwaarde als je ze aanroept?

k) Wat is het argument van de methode setLeeftijd?

l) Welk type heeft de constructor van de klasse Lid?

m) De klasse Lid maakt gebruik van een andere klasse. Welke klasse is dat?

n) Op welke regel staat een referentie?

o) Wat gebeurt er in regel 21?

p) Wat betekent het woord private in regel 10?

q) Wat betekent het woord public in regel 34?

2. Geef in eigen worden de betekenis van de onderstaande begrippen:

a) Object.

b) Retourwaarde van een methode.

c) Associatie.

d) Een klasse, een constructor en een methode bestaan uit een kop en eenbody. Wat staat er in de body van een methode?

e) Wat is de toestand van een object?

f) Wanneer moet je een klasse compileren?

3. In de code in Figuur 20 zijn fouten gemaakt. Geef aan wat er fout is en inwelke regel deze fout staat.

a) Wat is er verkeerd aan de structuur van deze klasse Fiets?

b) Wat is er fout aan de constructor?

c) In welke methode zit een fout en wat is die fout?

4. In de code in Figuur 21 zijn fouten gemaakt. Geef aan in welke regels deonderstaande fouten voorkomen.

a) In de kop van een van de methoden is een parameter vergeten.

b) Een type aanduiding in een getter komt niet overeen met het type vande retourwaarde.

72

Page 73: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

c) Een stringvariabele krijgt geen tekstwaarde maar de waarde van eenonbekende variabele.

d) Een opdrachtregel wordt niet goed afgesloten.

e) Een getter heeft een retourwaarde, maar een typeaanduiding die aan-geeft dat er geen waarde geretourneerd wordt.

f) Een setter heeft geen retourwaarde, maar een typeaanduiding die aan-geeft dat er een waarde geretourneerd wordt.

g) De kop van een methode wordt afsloten als een opdrachtregel.

5. In een project Winkel moet een klasse Schotel worden gemaakt. Geef de codevoor deze klasse gegeven het volgende klassendiagram gegeven is:

Schotel- nummer: int- naam: String- prijs: double+ Schotel(nr:int, nm:String, p:double)+ setNaam(nm:String)+ setPrijs(p:double)

6. Implementeer de klasse Servies volgens de klassendiagrammen in Figuur 22,waarin je onder andere schotels aan een servies kan toe voegen.

7. Welke klassen kan je nog meer verzinnen voor dit project? Zet deze klassenin het klassendiagram in Figuur 23.

E.2. Voorbeeld eindtoets

1. In Figuur 24 staat de code voor de klasse Bibliotheek. In deze klasse staannog niet alle methoden die normaal in deze klasse zouden moeten staan.Gebruik deze code om de onderstaande vragen te beantwoorden.

a) Op welke regel begint de definitie van de klasse?

b) Op welke regel begint de constructor van de klasse Bibliotheek?

c) Op welke regels zijn de attributen van de klasse gedefinieerd?

d) Op welke regels staan er referenties?

e) Wat is het type van het attribuut website?

f) Wat is het type van de methode getAdres()?

g) Op welke regels worden er objecten gemaakt?

h) Met welke methode kan ik de boekenlijst van deze bibliotheek uitbrei-den?

i) In welke methode worden alle objecten van de collectie gebruikt?

j) De klasse Bibliotheek gebruikt andere klassen. Welke klassen zijn dat?

k) Wat gebeurt er in regel 26?

l) Van welke klasse en van welke methode wordt er in regel 57 gebruik

73

Page 74: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

gemaakt?

m) Wat betekent het woord private op regel 16?

n) Wat betekent het woord public op regel 29?

o) Wat zou er gebeuren als op regel 53 private in plaats van public zoustaan?

p) Wat gebeurt er op regel 8 en waarom is die regel nodig?

q) Er is een object die weer uit andere objecten bestaat. Welk object is dat?

r) Hoeveel argumenten worden er in de constructor Bibliotheek gebruikt?

s) Welke argumenten van de constructor Bibliotheek worden ook weer alsargument van een andere klasse binnen deze constructor gebruikt?

2. In Figuur 25 staat de code van de klasse Applicatie. Gebruik deze code omde onderstaande vragen te beantwoorden.

a) Op welke regel begint de methode waarmee deze applicatie wordt ge-start?

b) Welke klasse wordt gebruikt om een scherm te maken?

c) Welke methode zorgt ervoor dat het scherm van de applicatie goedwordt afgesloten?

d) Op welke regel wordt de constructor van de klasse Applicatie aange-roepen?

3. Op Figuur 26 staat de code van de klasse Paneel. Gebruik deze code om deonderstaande vragen te beantwoorden.

a) De klasse Paneel is een uitbreiding van een andere klasse. Welke klasseis dat?

b) Er is ook een afspraak (belofte) gedaan over de methoden die in deklasse Paneel aanwezig moeten zijn. Met welke code wordt die afspraak(belofte) gemaakt?

c) In de klasse Paneel staan regels om te voorkomen dat de applicatiecrasht als er iets fout gaat. Waar staan die regels en leg uit hoe dezewerken.

d) Geef de regelnummers van de regels die controleren of er iets met deknop of met het tekstvak gedaan is.

e) Geef de regelnummers van de regels die er voor zorgen dat er iets ge-beurt als er op de knop wordt gedrukt.

4. Geef in eigen worden de betekenis van de onderstaande begrippen:

a) De interface van een object.

b) De argumenten of parameters van een methode.

c) Een object.

d) Een methode.

e) Een variabele.

74

Page 75: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

5. Gebruik de code uit Figuur 27 om de onderstaande vragen te beantwoorden.

a) In de kop van de herhalingsopdracht op regel 98 wordt 3 maal de vari-abele “teller” gebruikt. Leg uit wat er in deze 3 verschillende gevallengebeurt.

b) De code in deze afbeelding komt uit een klasse. Er komt in deze klassedus minstens twee keer de methode herhaalVierkant voor. Hoe heet dit,en schrijf op hoe je de methode aanroept die op regel 96 begint.

c) De methode die op regel 105 begint bevat een fout in de herhaal con-structie (de twee “for loops”). Welke fout is dat en hoe los je deze op?

6. De code uit Figuur 28 komt uit een klasse Cijferlijst. In dit fragment zie jetwee methoden die cijfers aan de cijferlijst toe voegen. De tekst die op hetscherm afgedrukt wordt is vervangen door -1-, -2- en -3-.

a) Geef de tekst die er in regel 24 op de plaats van -1- moet komen.

b) Geef de tekst die er in regel 28 op de plaats van -2- moet komen.

c) Geef de tekst die er in regel 44 op de plaats van -3- moet komen.

d) Leg uit waarom in de Figuur 28 op regel 19, “= =” gebruikt wordt terwijlop de regels 9, 10 en 23 “=” wordt gebruikt.

7. In Figuur 29 staat een klasse diagram. Maak met “Notepad++” de code voordeze twee klassen. Sla deze op in twee aparte Java bestanden met de naamvoornaamAchternaamNaamvandeklasse.java.

75

Page 76: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 19

76

Page 77: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 20

77

Page 78: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 21

78

Page 79: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 22

Figuur 23

Figuur 24

79

Page 80: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 25

80

Page 81: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 26

81

Page 82: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 27

Figuur 28

82

Page 83: Rendement van objectgeori enteerd programmeeronderwijs · De vakdidactiek informatica voor het voortgezet onderwijs is in Nederland eerst ontwikkeld binnen de CODI opleiding, en daarna

Figuur 29: Klassendiagram

83