softwarematerial

Computational thinking

Wat is Computational Thinking?

We bekijken enkele voorbeelden:

Als je een trap wil stofzuigen kun je het beste van boven naar beneden werken. Als je een vloer schildert (zie Donald Duck), zorg dan dat je bij een deur eindigt. Denk voor je iets doet na over de volgorde en gevolgen van acties.

Stel ik plan een trip met vrienden met het OV naar een event in een andere stad. Ik kan dat opsplitsen in:

Om een groot ‘probleem’ op te lossen is het handig het probleem in kleinere problemen op te lossen.

Je ziet dat computational thinking ook ‘buiten de computer’ speelt.

Training

Hieronder een aantal opdrachten waarmee je zogenaamde ‘computational thinking’ wordt uitgedaagd.

Binair 1

De digitale wereld is opgebouwd uit nullen en enen, ‘0’ en ‘1’ is alles wat een computer kent. Oh ja? Ja.
Deze opdracht introduceert het binaire tellen:

Binair 2

Kun je tot 31 tellen op 1 hand? Typ ‘count to 31 on one hand’ in je favoriete zoekmachine. Tot hoever zou je dan kunnen tellen als je twéé gebruikt?

Getal raden: hoger lager

Hoger lager.

Project Euler Challenge 79

De uitdagingen van Project Euler zijn vaak problemen die het best met een computer op te lossen zijn. Euler79 is echter ook zonder hulp van een laptop op te lossen: op whiteboard bijvoorbeeld!

Misschien vind je nog wel andere Euler-challenges waar je bijvoorbeeld een flow chart voor een mogelijke oplossing voor kunt verzinnen.

Maken van een Algoritme / Flow Chart

fig:flowchart

Als je software bouwt ontwerp je vaak een algoritme dat een probleem oplost.
Dit algoritme kun je op verschillende manieren beschrijven. Wij willen voor de oriëntatie dat je flow charts maakt. Schrijf deze op white board (eventueel op papier) en lever een foto daarvan in.

Een goede oefening in het maken van een algoritme is de opdracht ‘algo01’. In het document wordt eerst iets uitgelegd over ‘flow charts’, daarna maak je een algoritme voor Kruisje-Rondje:

Voor mensen die nooit hebben geprogrammeerd is Kruisje Rondje een prima keuze, maar als je al ervaring hebt, of heel goed bent: 4 op een rij, dammen, schaken, rubik’s cube zijn mogelijke alternatieven! (als je 1 van deze kiest zul je die misschien niet helemaal af krijgen) Misschien kun je zelf nog iets anders verzinnen wat jou meer uitdaging geeft: Overleg dan met je docent.

Renteberekening

Gegeven een startsaldo (bijvoorbeeld 234 euro), een rentepercentage en een aantal (zeg n) jaren. Maak een flow chart voor een programma dat berekent hoeveel het saldo na ‘n’ jaar is.

Deelbaarheid

Maak een algoritme dat het kleinste getal bepaalt dat groter is dan 1000 en dat deelbaar is door 37.

Algemener: Maak een algoritme dat het kleinste getal bepaalt dat groter is dan een gegeven waarde (de ‘threshhold’) en dat deelbaar is door een te geven ‘deler’.

Priem 1

Maak een flow chart voor een algoritme dat van een getal bepaalt of het een priemgetal is.

Priem 2

Maak een flow chart voor een programma dat alle priemgetallen tussen 1000 en 2000 opsomt. 

Flash card

Een flash card programma is een programma dat jou helpt bij het leren van (bijvoorbeeld) Franse woordjes.

Flash Cards waren van oudsher op papier of karton gemaakt. Op de voorkant kan dan bijvoorbeeld het Nederlandse woord staan en op de achterkant het Franse woord.

Simpele vorm: neem een willekeurig kaartje, laat dit zien, laat gebruiker een woord invoeren, antwoord of dat de goede vertaling is, en dat een aantal malen herhalen!

Het wordt wat uitdagender als jouw algoritme bijhoudt hoeveel vragen er al zijn gesteld, hoeveel daarvan er goed beantwoord waren en hoeveel procent dat is.

Als je hiermee bezig bent kom je vragen tegen. beantwoord deze zoals je zelf denkt dat goed is. Praat erover met anderen om je heen waar dat nodig is om tot goede beslissingen te komen.

Stamboom

Gegeven een stukje stamboom. Van de personen in de stamboom is gegeven of ze mannelijk danwel vrouwelijk zijn en verder wie hun (biologische) vader en moeder zijn.

Tafeltjes

Een standaardoefening voor programmeurs is het tonen van de tafeltjes, dus iets als:

1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
en zo voort.

Maak hier een flow chart voor.

Rekenspelletje

Programma verzint 2 willekeurige getallen, gebruiker moet het product bereken en invoeren. Programma geeft aan of dit goed is of fout. Maak hier een flow chart voor.

Anagram 1

Bepaal of 2 strings anagrammen van elkaar zijn. Maak hier een flow chart voor.

Anagram 2

Genereer alle anagrammen van een gegeven string. Maak hier een flow chart voor. Als je niet weet wat een anagram is: je weet vast wel een manier om dat uit te vinden?

Koffieautomaat

Denk eens na over wat een koffieautomaat doet. Hij wacht op muntjes, registreert je keuze, maakt dan wat jij gekozen hebt. Maak hier een flow chart voor.

De niet-koffieautomaat

In het dagelijks leven heb je nog met meer apparaten te maken. Kun je er een verzinnen met een interessant ‘gedrag’? Maak er een flow chart voor. Bijvoorbeeld: printer, scanner, copier.

Eigen opdracht verzinnen

Misschien kun je zelf iets verzinnen met and / or

Bronnen