De Schoonheid en Vreugde van Programmeren

i&i is sinds aantal maanden 'eigenaar' van de Nederlandstalige versie van The Beauty and Joy of Computing. Maar Eigenaar is niet het perfecte begrip. Deze lesmethode is met een grote groep vrijwilligers vertaald naar het Nederlands, alle voorbeelden zijn niet alleen vertaald maar ook gelokaliseerd. Het materiaal is afkomstig uit de VS en heeft daar een grote gebruikersgroep. Met deze vertaling hoopt de vakvereniging i&i dat wij een positieve bijdrage leveren aan het leren programmeren in het Nederlands. Minder 'cognitive load' en daardoor meer energie voor mooie en leuke dingen!  Onze visie op Digitale geletterdheid vind je hier. Meer overleg kan via het ieni-forum!

Waarom kan de Schoonheid en Vreugde fantastisch zijn?

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. Daarom hebben we ’the beauty and joy of computing’ vertaald naar De Schoonheid en Vreugde van Programmeren.

Computer Science Principles en basisprincipes van de Schoonheid en Vreugde van Programmeren

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)

Computer Science Principles en basisprincipes van de Schoonheid en Vreugde van Programmeren
Computer Science Principles en basisprincipes van de Schoonheid en Vreugde van Programmeren

Er is veel overlap tussen de Ideeën en Oefeningen. Creativiteit is een idee, maar creëren is een toepassing.

Grote Ideeën

  • Creativiteit komt vooral terug in de programmeerprojecten
  • 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 kent een belangrijke plek in deze lesmethode.
  • 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, De schoonheid en Vreugde van Programmeren legt hier de nadruk. Wij geloven dat Snap!, de programmeertaal die we gebruiken, ons in staat stelt om een diverse samenstelling van beginners te bereiken.
  • Het Internet 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, dezew term  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. . Maar zij maakt de spel door. Maar de leerling laat ook creativiteit zijn in het ontwerpen van de structuur van het programma.
  • Abstraheren, net als dat het idee van abstractie onafscheidelijk is van het idee van programmeren, is het beoefenen van abstractie onafscheidelijk van programmeren.
  • 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.
  • Communiceren en Samenwerken zijn belangrijk, maar bij BJOC ligt er minder de nadruk op. Aan het begin van de les onderwijzen we het process van pair programming.

Visueel Programmeren met De Schoonheid en Vreugde van 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 vormen en kleuren van de blokken herinneren de gebruikers aan de categorieën waarin de blokken vallen.

Voorbeeld code van Snap!. De Schoonheid en Vreugde van Programmeren
Voorbeeld code van Snap!

Het blok met een C-vorm is 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.

Voorbeeld code van Snap!. De Schoonheid en Vreugde van Programmeren
Code van onderstaande boom
Voorbeeld project in Snap!. De Schoonheid en Vreugde van Programmeren
Boom op basis van Snap!

Uitbreidingsmogelijkheden

Voor leerlingen die erop staan om te programmeren met tekst, geeft Snap! toegang tot een Javascript-omgeving waarin dit mogelijk is zoals je hieronder kunt zien.

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.

Snap! werkt ook met Finch, Hummingbird, Sphero, Lego NXT, Wiimote, LEAP Motion en Arduino!

Javascript-omgeving met Snap!
Javascript-omgeving met Snap!

Maatschappelijke invloed van programmeren met De Schoonheid en Vreugde 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.

We gebruiken het boek Blown to Bits (gratis te lezen) als onderdeel van de cursus. 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.

naar is niet het perfecte begrip. Deze lesmethode is met een grote groep vrijwilligers vertaald naar het Nederlands, alle voorbeelden zijn niet alleen vertaald maar ook gelokaliseerd. Het materiaal is afkomstig uit de VS en heeft daar een grote gebruikersgroep. Met deze vertaling hoopt de vakvereniging i&i dat wij een positieve bijdrage leveren aan het leren programmeren in het Nederlands. Minder 'cognitive load' en daardoor meer energie voor mooie en leuke dingen!
Blown to Bits, second edition, een rode draad van De Schoonheid en Vreugde van Programmeren.