forked from BJOC-NL/bjoc-nl.github.io
-
Notifications
You must be signed in to change notification settings - Fork 2
/
waarom_bjoc.html
251 lines (231 loc) · 16.7 KB
/
waarom_bjoc.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
<!DOCTYPE html>
<html lang="nl">
<head>
<link rel="icon" href="afb/BJOC-NL-logo.png" type="image/png">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js+css/llab/loader.js"></script>
<title>Beauty and Joy of Computing</title>
</head>
<body>
<div style="float:right; padding:20px;">
<h4> <a href="index.html" class="blbtn">Terug naar de hoofdpagina</a> </h4>
</div>
<h2>Wat maakt BJOC speciaal? OUDE VERSIE</h2>
<p> 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 <strong> alle kinderen</strong> de
vreugde van programmeren kunnen ervaren.
</p>
<div class="CSPpeach">
<h3>Computer Science Principles</h3>
<p> BJOC is gebaseerd op het kader van de Amerikaanse <a
href="https://advancesinap.collegeboard.org/stem/computer-science-principles" target="_blank"> AP CS
Principles</a>, wat draait om zeven 'Grote Ideeën' (dingen om te leren) en zes "Oefeningen met denken
als een computer" (dingen om te doen):
<br>
<img class="noshadow" src="./afb/waarom_bjoc/ap_cs_principles.png" alt="Geen Afbeelding" />
</p>
<p> Elk curriculum dat dit kader volgt moet al deze punten onderwijzen, maar het kan de
hoeveelheid nadruk die op de punten wordt gelegd aanpassen. (De taartpunten in de grafieken zijn niet
daadwerkelijk kwantitatief, het is een suggestie hoe BJOC is opgebouwd.)
</p>
<p> 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.
</p>
<h4> De Grote Ideeën</h4>
<p> Ten eerste, de Grote Ideeën. BJC legt een zware nadruk op het punt <strong>Programmeren</strong>. Wij
geloven dat Snap<em>!</em>, 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<em>!</em> 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.
</p>
<p> We zien <strong>Abstractie</strong> 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.
Onze tweede grootste nadruk ligt op de <strong> Globale Impact</strong>, 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.
Op twee van de vier onderwerpen die overblijven wordt minder nadruk gelegd dan op de anderen. Leerlingen
passen <strong>Creativiteit</strong> toe in hun programmeerprojecten, maar we bespreken het punt niet zoveel
als de andere onderwerpen. Op dezelfde manier ontwikkelen leerlingen <strong>Algoritmes</strong> tijdens het
programmeren, maar er wordt niet vaak over algoritmes gesproken als een apart onderwerp, behalve dan als het
analyseren van algoritmes en asymptotische volgordes van groei wordt onderwezen.
De laatste onderwerpen, <strong>Data en Informatie</strong> en <strong>Het Internet</strong>, zijn
belangrijk en worden 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.
</p>
<h4> Oefeningen</h4>
<p> Nu, over de oefeningen: De term <strong>“Computational Artifacts”</strong> 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.
Net als dat het idee van abstractie onafscheidelijk is van het idee van programmeren,
is het <strong>beoefenen van abstractie</strong> onafscheidelijk van programmeren. We moedigen leerlingen
constant aan om lagen van abstractie toe te passen in de structuur van een programmeerproject.
<strong>"Connecting Computing”</strong> 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.
Bijna net zo belangrijk als het analyseren van programma’s: <strong> debugging, het voorspellen van het
gedrag van iemands code en het in acht nemen van de efficiëntie</strong>. 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.
De twee laatste oefeningen, <strong>communiceren</strong> en <strong>samenwerken</strong> zijn belangrijk,
maar bij BJC 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.
</p>
</div>
<h2>Visueel Programmeren</h2>
<div class="visualgreen">
<p> <a href="http://snap.berkeley.edu/" target="_blank">Snap<em>!</em></a>, de programmeertaal ontworpen om deze
les te ondersteunen, maakt gebruik van hetzelfde ontwerp als <a href="scratch.mit.edu"
target="_blank">Scratch</a> waar blokken met code aan elkaar worden gezet.
</p>
<p> 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.
<br />
<img height="200" class="indent" src="afb/waarom_bjoc/b1.png" alt="Geen Afbeelding" />
</p>
<p> 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.
</p>
<p> Omdat Scratch ontworpen is om gebruikt te worden door achtjarigen, hebben de makers cruciale onderdelen voor
het leren van informatica weggelaten. Bij Snap<em>!</em> zijn de nodige
mogelijkheden voor abstractie toegevoegd, zonder de zorgvuldig ontworpen visuele metaforen te verstoren
waar Scratch zo goed gebruik van maakt.
</p>
</div>
<div class="visualcyan">
<p> Voor abstractie van functies kunnen de gebruikers van Snap<em>!</em> hun eigen blokken bouwen. <br />
<img height="300" src="afb/waarom_bjoc/vierkant_blok.png" alt="Geen Afbeelding" />
<img height="300" src="afb/waarom_bjoc/maak_blok.png" alt="Geen Afbeelding" />
<img height="100" src="afb/waarom_bjoc/b2.png" alt="Geen Afbeelding" />
</p>
<p>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:</p>
<p><img src="afb/waarom_bjoc/b3.png" width="500" alt="Geen Afbeelding">
<img src="afb/waarom_bjoc/demo-tree-growing.gif" width="300" alt="Geen Afbeelding"></p>
</div>
<div class="visualpurple">
<p> Omdat blokken van Snap<em>!</em> andere blokken of scripts als invoer kunnen gebruiken, en omdat de notatie
voor anonieme functies erg simpel is, kunnen we de nog krachtigere functies
van hogere orde aanleren:<br />
<img height="150" class="indent" src="afb/waarom_bjoc/b4.png" alt="Geen Afbeelding" />
</p>
<p> Deze functionaliteit, eersteklasprocedures, maakt Snap<em>!</em> krachtiger dan de meeste
traditionele programmeertalen. De visuele representatie maakt de data van de procedure duidelijker voor
leerlingen, zoals in deze lijst van procedures:</em>
<br />
<img class="indent" src="afb/waarom_bjoc/b5.png" alt="Geen Afbeelding" />
</p>
</div>
<div class="visualyellow">
<p>
Als laatste, omdat lijsten ook eersteklasdata zijn in Snap<em>!</em>, kunnen we abstracte datatypes
bouwen en deze gebruiken in nog grotere datastructuren, zoals deze driehoek:
<br />
<img height="200" src="afb/waarom_bjoc/lijstpunten.png" alt="Geen Afbeelding" />
</p>
</div>
<div class="visualsalmon">
<h4>Uitbreidingsmogelijkheden</h4>
<p> Voor leerlingen die erop staan om te programmeren met tekst, geeft Snap<em>!</em> toegang tot een
Javascript-omgeving waarin dit mogelijk is:
<br />
<img height="150" class="indent" src="afb/waarom_bjoc/b6.png" alt="Geen Afbeelding" />
</p>
<p>(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.
</p>
<p> Daarnaast, omdat Snap<em>!</em> 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.
</p>
<p> Snap<em>!</em> 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.
</p>
</div>
<div class="socialorange">
<h2>Maatschappelijke invloed van programmeren <a name="social"> </a></h2>
<p>
Hier zijn de onderwerpen die worden behandeld in de hoofdstukken van BJOC:
<table width="100%">
<tbody>
<tr>
<td>
<ul class="tight">
<li>Privacy en zoekmachines</li>
<li>Games en geweld</li>
<li>Ideeën bezitten (copyright en patenten)</li>
<li>Versleuteling van gegevens</li>
<li>Innovatie</li>
<li>
Computers en Gemeenschappen
<ul>
<li>Sociale media</li>
<li>Cyberpesten</li>
</ul>
</li>
<li>Computers en oorlog</li>
<li>Computers en werk</li>
</ul>
</td>
<td>
<a href="http://bitsbook.com/" target="_blank"><img src="afb/waarom_bjoc/boek.png"
height="250px" alt="Geen Afbeelding" /></a>
</td>
</tr>
</tbody>
</table>
</p>
<p> Wij zijn van mening dat <em>iedere</em> technologie voor- en nadelen heeft en dat <em>mensen</em> 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 alternatieve perspectieven op het
onderwerp. We nemen bijvoorbeeld niet aan dat het gebruiken van gecopyright werk slecht is; omdat veel
leerlingen dit ook doen, we proberen een andere kant van het verhaal te bekijken waarom het wel oké zou
kunnen zijn, en dan kijken we naar andere manieren om artiesten en schrijvers te ondersteunen. Daarnaast
bevat de cursus meerdere bronnen voor extra leesmateriaal over ieder onderwerp.
</p>
<p> Over het algemeen hopen wij dat leerlingen optimistisch kijken naar de voordelen van technologie, maar
daarnaast ook kritisch kunnen nadenken over iedere soort technologie. 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.
</p>
<p> We gebruiken het geweldige <a href="http://bitsbook.com/" target="_blank"><em>Blown to Bits</em></a> als
tekstboek voor dit onderdeel van de cursus. (Er is geen tekstboek voor de technische onderdelen van de
cursus, naast de online materialen die wij verzorgen.) Het boek is bedoeld voor volwassen lezers, en is in
het Engels, dus gebruiken we korte fragmenten. Net als de rest van het lesmateriaal is ook dit boek gratis
online beschikbaar, met een Creative commons BY-NC-SA license.
</p>
<p> Het boek is een aantal jaar oud nu, dus we vullen het aan met recentere lezingen, waarbij we kijken naar
onderwerpen die relevant zijn voor de leerlingen. Leerlingen kiezen hun eigen onderwerpen uit waarmee ze
verder de diepte in willen; dit is een van de manieren waarop de cursus aantrekkelijk is voor een breed
publiek. We starten lessen met “Programmeren in het nieuws,” waarbij artikelen van de krant van die ochtend
worden behandeld, een met een positieve ondertoon en een ander over een probleem. Na wat door de leraar
gekozen voorbeelden om het idee te illustreren, moedigen we de leraren aan om de leerlingen afwisselend
artikelen mee te laten nemen.
</p>
</div>
</body>
</html>