Terug naar de hoofdpagina

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):
Geen Afbeelding

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

  1. Creativiteit wordt door de leerlingen toegepast in hun programmeerprojecten, maar we bespreken het punt niet zoveel als de andere onderwerpen.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Het Internet , dit is ook een belangrijk onderwerp dat veel behandeld wordt. Leerlingen leren bijvoorbeld veilig om te gaan met informatie op het internet.
  7. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
Geen Afbeelding

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.

Voor abstractie van functies kunnen de gebruikers van Snap! hun eigen blokken bouwen.
Geen Afbeelding    Geen Afbeelding    Geen Afbeelding

Deze functie is essentieel voor het grote idee van abstractie, maar zorgt er ook voor dat we recursie kunnen aanleren, waardoor een klein programma een complex resultaat kan opleveren:

Geen Afbeelding    Geen Afbeelding

Uitbreidingsmogelijkheden

Voor leerlingen die erop staan om te programmeren met tekst, geeft Snap! toegang tot een Javascript-omgeving waarin dit mogelijk is:
Geen Afbeelding

(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  

Geen Afbeelding 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.