Het gebruik van FP op een meeloopdag voor middelbare scholieren Paul de Mast.

Slides:



Advertisements
Verwante presentaties
Het schrijven van een practicum verslag
Advertisements

Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Vooronderzoek visual knowledge building Op welke manier construeren leerlingen kennis aan de hand van beelden?
Autisme en Mindmap Thuis en op School
Stijn Hoppenbrouwers Software Engineering les 1 Algemene inleiding en Requirements Engineering.
Hoofdstuk 8: Recursie.
Hogere-ordefuncties nEen lijst langs lopen en met elk element iets doen nEen lijst langs lopen en sommige elementen selecteren map filter.
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Probleem gestuurd onderwijs
Eigenschappen van het vermenigvuldigen van gehele getallen
In de juiste volgorde Initiatief Bijstellen Analyse Evaluatie
Hogere-orde functies: herhaald patroon? Parametrizeer! product :: [Int]  Int product [ ]= product (x:xs)= 1 product xs x * and :: [Bool]  Bool and [
Programmerend denken Algoritmen.
Presentatie vergelijkingen oplossen Deel 2
Projectmanagement Week 8 31 maart Agenda De PM tools van het kernproject Planning Begroting Statusrapport Actie- en besluitenlijst Afronding van.
Functies als Getallen Jan Martin Jansen.
Hogere-ordefuncties nVoeg de elementen van een lijst samen nCombineer twee functies foldr :: (a  b  b)  b  [a]  b [a] (.) :: (b  c)  (a  b)  a.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
Imperatief programmeren nProgramma bestaat uit nRunnen is opdrachten gegroepeerd in methoden één voor één uitvoeren te beginnen met main.
Functioneel Programmeren Daan Leijen. Wat gaan we doen? 3 fundamentele principes van computatie Equationeel redeneren IO-monad GUI's in Haskell (wxHaskell)
Iedereen coach naar Jef Clement.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 4.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Werkverslag. Inhoudsopgave Pag.1 wat hebben we gedaan in deze lessen?
Klik ergens op het witte deel van deze pagina om verder te gaan
Deel XI Eerste echte e-commerce applicatie 1 Internetapplicaties Deel 11: Eerste echte e-commerce applicatie: Ontwerp.
PHP & MYSQL LES 01 PHP BASICS. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Programmeren met If This Then That (IFTTT)
Voor praktijkonderwijs
Sparkle een bewijssysteem voor Clean Maarten de Mol Katholieke Universiteit Nijmegen 11 januari 2002.
Op weg naar het voortgezet onderwijs
Pag. Software Engineering: SCRUM 2 Schedule Generator Zjef Van de Poel, Alexander De Cock, Adam Cooman, Matthias Caenepeel
Experimentele kans javascript.
CONTROLESTRUCTUREN (DEEL 1)
Onderzoekend Vermogen
Leesmanieren. Leesmanieren Leesmanieren Zoekend lezen Oriënterend lezen Globaal lezen Precies lezen Studerend lezen Kritisch lezen.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Bouw de hoogste toren Door Stef en Feline. inhoud Hoe hebben wij het gebouwd Wat vonden wij leuk hier aan Wat vonden wij hier moeilijk aan Wat voor materialen.
UML 1. Use cases1. Use cases. Het probleem: Hoe inventariseer ik wensen en eisen voor mijn project? Hoe leg ik ze vast? Hoe geef ik vorm en structuur.
Praktijkdiagnose 15 oktober Welkom Aanleiding Doelstelling Doelgroep Programma Ervaringen tot nu toe Vervolg 2.
Sleutels, codes en aanwijzingen
“Goed voor de maatschappij maar te moeilijk voor ons” Een studie naar attituden van 14- en 15-jarige havo/vwo leerlingen Martijn Luub.
Les 3 - Operators Workshop Php Basic. ICT Academy Php Basic Content Operators Wiskundig Toewijzing Vergelijking.
Bijeenkomst September 2015
Referentiekader rekenen. Uit: /
Stelling: Planning & Control (P&C) is iets van financiën !
CKO werkdag Halverwege de cyclus Kijken naar eigen werk en werk van anderen Aanpak uitwisselen Werkbladen maken in mixgroepen.
WDA voor het vmbo Wiskundige Denkactiviteiten
Kennismaking met programmeren
Programmeren met Reeksen
Rekenbingo Negatieve getallen
Gameprogrammeren: Keuzeopdrachten
Sleutels, codes en aanwijzingen
Gameprogrammeren: Expressies
Gemaakt door Evy, Odeke en Amy
Kennismaking met programmeren
Onderzoekend leren Hoe zien opdrachten voor onderzoekend leren bij wiskunde er uit? Tool IE-2: Het vergelijken van gestructureerde en ongestructureerde.
Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver
Kennismaking met programmeren
Sleutels, codes en aanwijzingen
Sleutels, codes en aanwijzingen
B B O Probleem of uitdaging Besluit of oplossing beeld vorming
Slim tellen.
Stadsgids en paardensprong
Slim tellen.
Breuken delen Breuken delen Breuken delen © André Snijers.
<naam bedrijf> & <naam school>
Voorkennis Wiskunde Les 11 Hoofdstuk 5: §5.3 en §5.4.
Je maakt kennis met grote getallen.
Transcript van de presentatie:

Het gebruik van FP op een meeloopdag voor middelbare scholieren Paul de Mast

Doelstelling: –Realistisch beeld geven van studeren bij de AIM –Mix van werkvormen en inhoud moet overeenkomen met het curriculum Doelgroep: Doelstelling meeloopdag

–Overzicht curriculum / onderwijsmodel –Projectmanagement –Website bouwen –Programmeren –Mini proftaak Onderdelen meeloopdag

Onderdeel programmeren Afgelopen jaren vaak een praktijkles Delphi of Java: –Alleen wat stoeien met een GUI-builder –Beeldvorming van programmeeronderwijs klopte niet –Probleem: voorkennis is divers Een poging met FP: –Onbekendheid van FP is soms een voordeel –Een 'echt' programma kan vaak kleiner zijn

Gekozen probleemstelling Moet eenvoudig te begrijpen zijn. Probleemstelling moet wel interessante aspecten bevatten. Iets grafisch wordt vaak leuk gevonden, maar moeilijk om in 1 uur tijd vorm te geven. Voordelen FP benutten

Probleemstelling: Flippo-24 Los de volgende puzzel op: gebruik deze 4 getallen allen precies 1 keer + - * / je mag deze operatoren willekeurig vaak gebruiken 24

Twee iteraties: 1.flippo1 :: [Getal] -> Bool 2.flippo2 :: [Berekening] -> Oplossingen

Aspecten van het probleem -Er zijn een aantal abstracties mogelijk (aantal getallen, gebruikte operaties, eindwaarde). -Gebruik van recursie is aan de hand van dit probleem goed uit te leggen -Aantal instanties van het probleem zijn eenvoudig: 1,2,3,4 -Aantal instanties van het probleem zijn lastiger: 1,6,6,8

Leerlingen laten bedenken… –Geen van de getallen mag dubbel gebruikt worden –Alle getallen moeten gebruikt worden –Het eindresultaat (24) is een geheel getal, maar de tussenresultaten hoeven geen gehele getallen te zijn:(8 / 3) * (10 - 1) = 24 –Hoe zit het met delen door 0? –Hoe zit het met het aantal mogelijke expressies?

Flippo1 flippo1 :: [Real] -> Bool flippo1 [] =False flippo1 [x]=x == 24.0 flippo1 xs =or[flippo1 [f x y : removeMembers xs [x, y] ] \\x<- xs,y<- removeMember x xs,f<- operaties ]

Flippo2 koppel :: Operatie Berekening Berekening-> Berekening koppel f (x, s) (y, t) = ( f x y, "(" +++ s +++ vertaal f +++ t +++ ")" ) berekening beschrijving van de nieuwe berekening :: Berekening:==(Real, String)

Flippo2 :: Operatie:== (Real Real -> Real) operaties::[ Operatie ] operaties=[(+), (-), (*), (/)] vertaal::Operatie -> String vertaal f | f == 12.0= "+“ | f == 4.0= "-“ | f == 32.0= "*“ | otherwise= "/"

Flippo2 flippo2 :: [Berekening] -> [String] flippo2 []= [] flippo2 [(24.0, s)]= [s] flippo2 [(ander,s)]= [] flippo2 xs = flatten[ flippo2 [koppel f x y : removeMembers xs [x, y] ] \\x<- xs,y<- removeMember x xs,f<- operaties ]

Ervaringen -In de weinige tijd mag niets fout: -Clean project al helemaal opgestart -Warnings uit zetten -Weinig problemen meer met diversiteit in voorkennis, maar les wordt wel meer gewaardeerd door leerlingen die wel eens geprogrammeerd hebben. -Leerlingen begrijpen het verhaal t/m flippo1 goed, maar daarna haakt een gedeelte af. -Gehoorde opmerkingen: -Wat een vage taal! -Waar is de GUI-(builder)? -Kun je die "cannot unify errors" ook uitzetten? -cool -Waardering door leerlingen: een ruime 7