Alternatieve programmeermodellen

Hoewel het kernprogramma van VO informatica imperatief programmeren als uitgangspunt neemt, hebben leerlingen de mogelijkheid om zich te verdiepen in alternatieve programmeerparadigma’s in een keuzethema. In deze cursus bestuderen we declaratieve programmeermodellen. Dat wil zeggen: programmeermodellen die de computer niet vertellen hoe we ons doel willen bereiken (imperatief), maar simpelweg wat we willen bereiken (declaratief). Dit zorgt voor een heldere en compacte programmeerstijl.

Na een overzicht van programmeermodellen in het algemeen, en de verschillen tussen imperatief en declaratief programmeren, duiken we in twee modellen in het bijzonder: functioneel programmeren en logisch programmeren.

Functioneel programmeren kenmerkt zich door het gebruik van pure functies en onveranderlijke datastructuren. Hierdoor weten we dat onze programma’s geen onverwachte zijeffecten kunnen vertonen. Het gevolg is dat we makkelijker over onze programma’s kunnen redeneren. Daarnaast zorgt een sterk typesysteem er voor dat geschreven programma’s van nature correct zijn, niet zullen falen tijdens de uitvoer, en dat herstructureren van code eenvoudiger is.

Logisch programmeren stelt ons in staat berekeningen te maken aan de hand van relaties. We schrijven programma’s door een databank van feiten en regels op te stellen, en deze databank vervolgens te ondervragen.

Beide programmeermodellen vereisen een radicaal andere manier van denken bij het ontwikkelen van en redeneren over programma’s. Vaardigheden die helpen bij het oplossen van een breed scala aan problemen. We sluiten de cursus af met het maken van een interactief spel in de pure functionele programmeertaal Elm.

Doelen

  • De kenmerken van imperatief en declaratief programmeren evalueren.
  • Functionele en logische programma’s evalueren en ontwikkelen.
  • Onderstaande concepten begrijpen en toepassen.

Concepten

  • expressies, waardes
  • (hogere orde) functies
  • herschrijven
  • partiële functie applicatie (currying)
  • annonieme functies (lambdas)
  • (algebraïsche) data types
  • onveranderlijkheid (immutability)
  • puurheid, referentiële transparantie
  • recursie
  • type, type systeem, type inferentie
  • polymorfie
  • interactie
  • zijeffecten
  • model-view-update
  • commando’s, subscripties
  • relaties
  • feiten
  • regels
  • ondervragingen

Voorkennis

Ervaring met de basiselementen uit programmeertalen is gewenst. Het gaat om begrippen als keuze, herhaling, recursie, functie en procedure, zoals behandeld bij een cursus imperatief programmeren. Kennis van object-georiënteerd programmeren is zeker niet nodig. Kennis van HTML en CSS komt van pas maar zijn niet noodzakelijk.

Vorm

De cursus is taakgestuurd opgezet. Er is een tweewekelijkse cyclus van oriëntatie (hoorcollege), zelfstudie en nabespreking (responsiecollege).

Bijeenkomsten

Elke twee weken hebben wij een bijeenkomst van 3 uur, waarbij we gedurende
het eerste uur reflecteren op de opdrachten van de vorige keer (responsiecollege), en
de volgende twee uren nieuwe stof behandelen (hoorcollege).
Het bespreken van de opdrachten doen we aan de hand van jullie eigen ingeleverde werk. Het behandelen van nieuwe stof doen we interactief: de docent geeft een overzicht van concepten, ideeën, en toepassingen waarbij ruimte is voor tussentijdse opdrachten, vragen, en discussie.

Zelfstudie

Na iedere bijeenkomst gaat iedereen aan de slag met de leertaken. Deze bestaan uit zowel lees- als werkopdrachten. Elke leertaak heeft een vaste structuur, waarin de leerdoelen en de aan te leveren producten zijn gespecificeerd. De producten dienen 48 uur voor de volgende bijeenkomst ingeleverd te worden via de elektronische leeromgeving, zodat wij die tijdens de volgende bijeenkomst kunnen behandelen.

Tijdens de zelfstudieperiode is het mogelijk om vragen te stellen op het forum. Maak hier goed gebruik van! Schroom niet om uw medestudenten te helpen waar u kunt. Uiteraard zal de docent hierin helpen en sturen.

Locatie

De bijeenkomsten vinden plaats op locatie bij Boswell Beta in Utrecht. Bij striktere Corona maatregelen zullen we uiteraard uitwijken naar digitale bijeenkomsten.

Literatuur

Richard Feldman (2020), Elm in Action, Manning Publications, ISBN 9781617294044
Online lesmateriaal op digitale leeromgeving

Tentaminering

Aan het einde van de cursus volgt een tentamen in drie delen.

  1. Deel één is een schriftelijk tentamen. Hierbij mag u gebruik maken van alle middelen die wij tijdens de cursus hebben gebruikt. Dat geldt ook voor materiaal op internet. U dient het tentamen wel zelf te maken. Hulp van uw medestudenten is niet toegestaan!
  2. Deel twee een eindopdrachten. U ontwikkelt samen met een medestudent een interactieve webapplicatie. U krijgt hiervoor een aantal weken de tijd. Hierbij mag u gebruik maken van alle leermiddelen, online materiaal en kunt u vragen stellen en ervaringen uitwisselen op het forum van de elektronische leeromgeving.
  3. Deel drie is een mondeling. We bespreken samen uw eindopdracht en uw tentamen. Hoewel dit gesprek onderdeel is van de toetsing, heeft het een karakter van een inhoudelijke (werk)bespreking van collega-programmeurs.

Voor elk van deze drie onderdelen krijgt u een cijfer. Wanneer u voor alle onderdelen minstens een 5½ heeft behaald, is het eindcijfer het gemiddelde van de drie resultaten. In andere gevallen is het eindcijfer het laagste van de drie.

Docent

Tim Steenvoorden (OU).

Logo in4all_sidebar