forked from BJOC-NL/bjoc-nl.github.io
-
Notifications
You must be signed in to change notification settings - Fork 2
/
bjoc_uitleg.html
216 lines (190 loc) · 14 KB
/
bjoc_uitleg.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
<!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?</h2>
<div class="visualpurple">
<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>
<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 "Goeie Gewoontes met
Computational Thinking" (dingen om te doen):
<br>
<img class="noshadow" src="./afb/waarom_bjoc/ap_cs_principles.png" alt="Geen Afbeelding" />
</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> Grote Ideeën</h4>
<ol>
<li><strong>Creativiteit</strong> wordt door de leerlingen toegepast in hun programmeerprojecten, maar
we bespreken het punt niet zoveel als de andere onderwerpen.
</li>
<li><strong>Abstractie</strong> 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.
</li>
<li><strong>Data en Informatie</strong> 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.
</li>
<li><strong>Algoritmes</strong>, 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.
</li>
<li><strong>Programmeren</strong>, BJC legt een zware nadruk op dit punt. 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.
</li>
<li><strong>Het Internet </strong>, dit is ook een belangrijk onderwerp dat veel behandeld wordt.
Leerlingen leren bijvoorbeld veilig om te gaan met informatie op het internet.
</li>
<li><strong>Globale Impact</strong>, 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.
</li>
</ol>
<h4> Goeie Gewoontes met Computational Thinking</h4>
<ol>
<li><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.
</li>
<li><strong>Computational Artifacts Maken</strong>, 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.
</li>
<li><strong>Abstraheren</strong>,
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.
</li>
<li><strong>Problemen en Artefacten Analyseren</strong>, 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.
</li>
<li> <strong>Communiceren</strong> en <strong>Samenwerken</strong> 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.
</li>
</ol>
</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="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> <img class="imageRight" src="afb/waarom_bjoc/boek.png" height="250px" alt="Geen Afbeelding" />
Wij zijn van mening dat <em>iedere</em> technologie voor- en nadelen heeft. Het zijn <em>mensen</em> 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.
</p>
<p> 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.
</p>
<p> We gebruiken het boek <a href="http://bitsbook.com/" target="_blank"><em>Blown to Bits</em></a> (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.
</p>
</div>
</body>
</html>