Wat maakt BJOC speciaal?
Programmeren kan fantastisch zijn. Je bent niet alleen creatief maar ook inventief bezig. Daarnaast
geeft programmeren een hoeveelheid controle die je niet terugziet in de meeste andere activiteiten.
Jijzelf bent degene die bepaalt of je programma werkt, in plaats van bijvoorbeeld een docent. Het is
een spel waar je vaardigheid in moet krijgen, zoals schaken, maar dan zonder het competitieve aspect.
Dit is de beste reden om informatica als vak te leren en wij willen dat alle kinderen de
vreugde van programmeren kunnen ervaren.
Computer Science Principles
BJOC is gebaseerd op het kader van de Amerikaanse AP CS
Principles, wat draait om zeven 'Grote Ideeën' (dingen om te leren) en zes "Goeie Gewoontes met
Computational Thinking" (dingen om te doen):
Er is veel overlap tussen de Ideeën en Oefeningen. Creativiteit is een idee, maar creëren is een
toepassing. Je moet het eerste taartdiagram zien als de teksten gegeven in het lesmateriaal van het
curriculum, en het tweede taartdiagram moet je zien als hoe verwacht wordt dat de leerlingen hun tijd
gaan besteden. De cirkels in het midden van de taartdiagrammen wijzen op het idee dat programmeren en
creëren het centrum van BJC vormen, en overlappen met alle andere punten.
Grote Ideeën
- Creativiteit wordt door de leerlingen toegepast in hun programmeerprojecten, maar
we bespreken het punt niet zoveel als de andere onderwerpen.
- Abstractie wordt door ons gezien als het centrale idee van informatica, en we
leggen de nadruk op het gebruik van abstractie in de context van programmeren. Dit omvat zowel het
abstraheren van functies als van data, om de implementatie van een abstract data-type los te
koppelen van zijn gebruik.
- Data en Informatie is belangrijk en wordt uitvoerig behandeld, maar waar mogelijk
neemt deze behandeling de vorm aan van activiteiten met programmeren in plaats van, bijvoorbeeld,
het gebruik van commerciële databasesoftware.
- Algoritmes, net als met creativiteit wordt hierover impliciet geleerd tijdens het
programmeren. Er wordt dus niet vaak over algoritmes gesproken als een apart onderwerp, behalve dan
bij een aantal onderwerpen zoals het analyseren van algoritmes en asymptotische volgordes van groei.
- Programmeren, BJC legt een zware nadruk op dit punt. Wij geloven dat
Snap!, de programmeertaal die we gebruiken, ons in staat stelt om een diverse samenstelling
van beginners te bereiken, die in de eerste instantie niet geïnteresseerd in programmeren hoeven te
zijn. We denken dit omdat Snap! het gemak van visual programmeren combineert met de kracht
die eerder alleen gevonden kon worden in geavanceerde, traditionele programmeertalen. (meer hierover
onderaan de pagina.) We gaan ver voorbij de CS Principles vereisten, met de geavanceerde technieken
van recursie en functies van hogere ordes.
- Het Internet , dit is ook een belangrijk onderwerp dat veel behandeld wordt.
Leerlingen leren bijvoorbeld veilig om te gaan met informatie op het internet.
- Globale Impact, hierop ligt na Abstractie de grootste nadruk ligt. Dit begrip omvat
de sociale betrekkingen van programmeren. We gebruiken lezingen en discussies om verschillende
aspecten van dit onderwerp te verkennen in ieder hoofdstuk van de lessen. Details over de
onderwerpen en leerdoelen staan verderop in deze tekst.
Goeie Gewoontes met Computational Thinking
- Connecting Computing kan betekenen dat je het programmeren aan hobby's of aan de
industrie verbindt, of misschien zelfs aan de wetenschap. Maar nog belangrijker, voor ons, is dat
leerlingen programmeren verbinden aan hun sociale toepassingen, onze tweede grootste focus.
- Computational Artifacts Maken, de term “Computational Artifacts” slaat
op video's,
presentaties, blogs, programma’s, muziek, spreadsheets -- en wat je nog meer met de computer kan
creëren. Creëren vinden wij het belangrijkste aan de Oefeningen en we zien computerprogramma's als de
belangrijkste artefacten die de leerlingen zullen maken, omdat er 2 dingen gemaakt worden als een
leerling een programma schrijft. De leerling is geïnteresseerd in het product, een spel bijvoorbeeld, en
past zijn creativiteit toe in het ontwerp van het spel. Maar zij maakt de spel door. Maar de leerling
laat ook creativiteit zijn in het ontwerpen van de structuur van het programma. Die laatste is echte
informatica.
- Abstraheren,
net als dat het idee van abstractie onafscheidelijk is van het idee van
programmeren, is het beoefenen van abstractie onafscheidelijk van programmeren. We
moedigen leerlingen constant aan om lagen van abstractie toe te passen in de structuur van een
programmeerproject.
- Problemen en Artefacten Analyseren, Bijna net zo
belangrijk als het analyseren van programma’s: debugging, het voorspellen van het gedrag van
iemands code en het in acht nemen van de efficiëntie. Maar we benadrukken dat deze
vaardigheid niet het uiteindelijke doel is; uiteindelijk is het de bedoeling dat men op zijn of haar
werk programma’s kan maken. We zijn lang niet zo geïnteresseerd in het analyseren van “artefacten” als
we zijn in het analyseren van programma’s.
- Communiceren en Samenwerken zijn belangrijk, maar bij BJOC ligt er
minder de nadruk op. Zoals de meeste
CSP curricula, gebruiken wij pair programming, zodat leerlingen constant overleggen met hun partners en
het werk verdelen. Aan het begin van de les onderwijzen we het process van pair programming, en in de
discussie van sociale toepassingen van programmeren moeten leerlingen hun ideeën overleggen, maar
communiceren en samenwerken zijn niet exclusieve leerpunten voor het vak informatica.
Visueel Programmeren
Snap!, de programmeertaal ontworpen om deze
les te ondersteunen, maakt gebruik van hetzelfde ontwerp als Scratch waar blokken met code aan elkaar worden gezet.
De visuele onderwijsmethode van Scratch maakt het laagdrempelig, waardoor het al op veel
scholen zelfstandig gebruikt wordt door achtjarigen. De vormen en kleuren van de blokken
herinneren de gebruikers aan de categorieën waarin de blokken vallen.
Het blok met een C-vorm is bijvoorbeeld een lus, en omsluit ook visueel de code die herhaald wordt. De
groene blokken worden gebruikt om te tekenen en de blauwe blokken om objecten te bewegen.
Omdat Scratch ontworpen is om gebruikt te worden door achtjarigen, hebben de makers cruciale onderdelen voor
het leren van informatica weggelaten. Bij Snap! zijn de nodige
mogelijkheden voor abstractie toegevoegd, zonder de zorgvuldig ontworpen visuele metaforen te verstoren
waar Scratch zo goed gebruik van maakt.
Uitbreidingsmogelijkheden
Voor leerlingen die erop staan om te programmeren met tekst, geeft Snap! toegang tot een
Javascript-omgeving waarin dit mogelijk is:
(Op de afbeelding is maar 1 regel code te zien, maar er zit geen limiet aan de lengte of complexiteit van de
Javascriptfunctie die gedefinieerd wordt door het blok.) Met deze functionaliteit krijg je het beste van
beide werelden, met respect voor het (zinloze, vinden wij) argument over visuele talen tegenover
traditionele talen. We leren geen Javascript bij BJOC, maar het is een mogelijkheid als verrijkende
activiteit, indien gewenst.
Daarnaast, omdat Snap! op elke moderne browser beschikbaar is, kunnen leerlingen mobiele apps maken
voor iOS of Android door een snelkoppeling te maken naar de URL van het project op het bureaublad van het
betreffende apparaat. Vanaf een browser kan geen gebruik gemaakt worden van informatie op de
telefoons, zoals contactlijsten of GPS locaties ( speciale mobiele versies zijn in de maak), maar dingen
zoals gameprojecten werken prima.
Snap! kan ook verbonden worden met bepaalde robots en sensoren (Finch, Hummingbird, Sphero, Lego
NXT, Wiimote, LEAP Motion, Arduino, etc.) door kleine applicaties te installeren op de computer.
Maatschappelijke invloed van programmeren
Wij zijn van mening dat iedere technologie voor- en nadelen heeft. Het zijn mensen die
beslissen hoe ze de risico's minimaliseren en de voordelen maximaliseren. Daarom is bij elk van deze
onderwerpen ons doel om alle vormen van vooroordelen te ontwijken. We kijken naar alle invalshoeken van een
onderwerp. We nemen als voorbeeld het gebruik van gecopyright werk. Een liedje luisteren zonder dat je
ervoor betaald hebt, wordt vaak gezien als iets negatiefs. Als er niet betaald wordt voor dat liedje,
verdient de artiest geen geld. Toch zijn er ook andere manieren om geld te verdienen, bijvoorbeeld door een
concert te geven of merchandise te verkopen. Op die manier wordt het liedje eerder een advertentie voor de
artiest, die dus gewoon gratis kan zijn.
Over het algemeen hopen wij dat leerlingen optimistisch kijken naar de voordelen van technologie, maar
daarnaast ook kritisch nadenken. We herinneren leerlingen er ook aan
dat beslissingen over het gebruik van nieuwe technologie gemaakt worden door mensen, zijzelf daarbij
inbegrepen als ze besluiten van informatica hun carrière te maken, dus ze zouden zich niet hulpeloos moeten
voelen bij confrontatie met een veronderstelde technische noodzaak.
We gebruiken het boek Blown to Bits (gratis te
lezen) als onderdeel van de cursus. Aangezien het boek een aantal jaar oud is nu, wordt het aangevuld met
recentere teksten. Het boek is bedoeld voor
volwassen lezers en is geschreven in het Engels. Om het toch in deze cursus te gebruiken zijn er korte
fragmenten gebruikt. Deze fragmenten zijn ook goed geschikt om klassikaal te lezen. Het materiaal is gratis
te gebruiken, zoals alles in deze cursus.