Hier vind je de praktische opdrachten.
Praktische opdrachten zijn meestal tussen de vier en acht weken werk.
Je hebt veel vrijheid en kunt er echt iets moois van maken.
Voorbeelden
Voorbeelden van werkstukken die andere leerlingen hebben gemaakt.
GitHub is een online platform waar je code kunt opslaan, delen en samen aan projecten kunt werken. Een soort “Google Drive voor programmeercode”. Via GitHub Classroom krijg je van je docent een link naar een opdracht. Die opent een eigen map (repository) waarin je kunt werken. Met GitHub Codespaces kun je die map rechtstreeks in je browser openen zonder iets te installeren, je kunt er meteen programmeren, uitvoeren en testen.
Belangrijk: Bij het inloggen moet je een username aanmaken, zorg dat minimaal je voornaam hier herkenbaar in voor komt.
Let op: Je werk wordt niet automatisch opgeslagen op GitHub. Je moet committen en syncen om je werk op te slaan en naar GitHub te uploaden. Doe dit regelmatig, vooral voordat je Codespaces afsluit, zodat je niets kwijtraakt.
In deze fase maak je het plan voor je eigen website. Je mag zelf kiezen over welk onderwerp je werkt, iets wat jij interessant vindt, maar het onderwerp moet wel eerst goedgekeurd worden door de docent. Denk dus goed na over wat je wilt doen en zorg dat het haalbaar is. Je werkt aan een informatieve website. Denk dus zeker na of alles wat je wilt maken wel kan. Je kan geen spel/interactieve dingen in je website krijgen. Denk aan wat je vorige periode hebt geleerd en hoe je dit nu kan toepassen.
Je dient de ontwerpfase twee keer in als PDF door het bestand toe te voegen aan je GitHub-mapje “Ontwerpfase”: de eerste versie op de vrijdag na de herfstvakantie, en de tweede bij het einde van het PO, zijn deze te laat ingeleverd krijg je cijfer aftrek. Verwijder de eerste versie niet wanneer je de tweede uploadt, ook hier volgt cijfer aftrek. Hoe beter je tweede ontwerp overeenkomt met je uiteindelijke website én hoe meer gelijkend je eerste ontwerp is met de tweede versie, hoe hoger je score zal zijn. Maak dus vanaf het begin een realistisch en goed doordacht plan.
Werk aan het document in een editor naar keuze. Enkele voorbeelden zijn Google Docs, Pages of Microsoft Word.
Let op: als je de IMac’s op school afsluit worden alle lokale bestanden verwijderd. Werk dus bijvoorbeeld via Google Drive, of mail je bestand op het einde van de les naar jezelf op Magister.
Het document bevat vier onderdelen. Eerst beschrijf je je onderwerp en wat je erover wilt vertellen. Schrijf dit in duidelijke zinnen of korte opsommingen. Vermeld ook hoe je die informatie wilt verdelen over de verschillende pagina’s van je website.
Daarna maak je een sitemap. Dat is een schema dat toont hoe de verschillende pagina’s van je website met elkaar verbonden zijn. Het geeft een overzicht van de structuur van je site en helpt je nadenken over de navigatie.
Online vind je veel voorbeelden.
Een handige app om hieraan te werken is
draw.io
. Als je klaar bent kan je je diagram opslaan als een .png bestand en die invoegen in je ontwerpfase.
Vervolgens voeg je een kleurenstaal toe. Gebruik hiervoor de [Figma Color Palette Generator](
https://www.figma.com/color-palette-generator/
om een kleurenpalet te maken dat past bij jouw onderwerp. Noteer bij elke kleur de juiste HEX-waarde en bewaar die goed, zodat je dezelfde kleuren later in de echte website kunt gebruiken.
Tot slot maak je één of meerdere wireframes
online
of op papier. Dat zijn schetsen van hoe je webpagina’s eruit zullen zien. Je geeft aan waar tekst, afbeeldingen, knoppen en menu’s komen. Begin met één goed uitgewerkte wireframe, bijvoorbeeld van je homepage.
Online vind je veel voorbeelden.
Als je tijd hebt, maak er dan meerdere, zodat ook andere pagina’s al een duidelijk ontwerp hebben. Maak deze ontwerpen erg algemeen, zodat verschillende pagina’s dezelfde lay-out/wireframe kunnen krijgen. Je kan volgende tool gebruiken om je layout te helpen bouwen:
Hulpmiddel: Div en Float
Het cijfer dat je voor je PO krijgt wordt vanuit verschillende invalshoeken bepaald:
Minimale eisen (pass/fail)
Ontwerpfase
Code structuur
Visueel resultaat
Techniek
Inzet en Planning
Minimale eisen
Voordat je een cijfer krijgt voor je PO, wordt gekeken of je werk voldoet aan de minimale eisen. Werk dat niet voldoet aan de minimale eisen krijgt het cijfer 1,0. De minimale eisen zijn:
De inhoud van je webshop is moreel verantwoord: het is niet beledigend, visueel gewelddadig of op andere manieren onfatsoenlijk.
Je maakt minimaal 1 hoofdpagina en 3 subpagina’s (meer mag).
Je gebruikt het stappenplan dat bij deze opdracht gegeven is.
Natuurlijk mag je overleggen met klasgenoten en mag je op internet kijken hoe je bepaalde dingen kunt maken. Let wel op dat je geen plagiaat pleegt. Je moet alle code zelf kunnen uitleggen en binnen een korte tijd kunnen aanpassen naar een gevraagde variant, anders krijg je een 1.
Ontwerpfase
Enkele punten waarop gelet kan worden bij de beoordeling van de ontwerpfase zijn
Inhoud is logisch verdeeld over verschillende pagina’s
Er is een sitemap aanwezig waar duidelijk wordt hoe pagina’s naar elkaar linken
Er is een passend en mooi kleurenstaal toegevoegd
Er zijn 1-3 wireframes uitgewerkt over hoe de lay-out van verschillende pagina’s eruit moet zien.
Het gehele document is duidelijk en mooi vorm gegeven
Code structuur
Enkele punten waarop gelet kan worden bij de beoordeling van de code structuur zijn
De homepage is te vinden op index.html
De bestandenstructuur is logisch en duidelijk. Elk bestand heeft een logische naam.
Indentatie en commentaar toegevoegd waar nodig
CSS-klassen en ID’s hebben duidelijke en begrijpelijke namen
Er zijn geen ongebruikte code of ongebruikte bestanden aanwezig
Je linkt niet naar afbeeldingen op andere websites, alle afbeeldingen die je gebruikt heb je lokaal opgeslagen. Je afbeeldingen hebben een passende resolutie, zodat ze niet blokkerig zijn (te lage resolutie) of langzaam laden (te hoge resolutie).
CSS bevindt zich niet in de HTML-pagina, maar in een los CSS-bestand. Je gebruikt één CSS-bestand voor je hele website.
Visueel Resultaat
Enkele punten waarop gelet kan worden bij de beoordeling van visueel resultaat zijn
De vormgeving ziet er aantrekkelijk uit en nodigt uit om verder te kijken op je website.
De vormgeving wijkt (sterk) af van de template.
De website is goed te bekijken op gangbare browsers en computers met verschillende schermresoluties.
De uitlijning van de verschillende onderdelen op je website is netjes.
Techniek
Enkele punten waarop gelet kan worden bij de beoordeling van techniek zijn
Je laat zien dat je de in de les aangereikte technieken begrijpt en op een nette manier kan toepassen, hierbij hoort zeker het gebruik van floats om een nette layout te maken, die afwijkt van de template.
Je laat zien dat je in staat bent om zelf nieuwe dingen kunt toevoegen die voortbouwen op wat je al geleerd hebt.
Je hebt 1-3 verschillende pagina lay-outs over je website. Hoe meer verschillende (goede/correcte/logische) layouts hoe beter je score.
Je navigatie op je site werkt naar behoren en volgt je sitemap uit de ontwerpfase
Je gebruikt moeilijkere elementen op een correcte en logische manier op je webpagina zoals: een tabel, span, div, padding, border, margin, float en clear
Inzet en planning
Je toont inzet tijdens de lessen
Het werk is verdeeld over de weken waarin aan de opdracht kon worden gewerkt, dit blijkt onder andere uit de commits in Github.
De deadline voor inleveren vind je in de lesplanner.
Je kunt vragen stellen tot de laatste les voor de deadline.
Je zorgt dat alle bestanden in die nodig zijn om je website correct te laten werken in GitHub staan, dit zijn ten minste: index.html, 3 html-bestanden voor de subpagina’s en style.css. Als je plaatjes gebruikt, dan staan die er ook bij. Verder staan in het mapje ontwerpfase zowel ontwerpfase versie 1 als versie 2.
Uit de versiegeschiedenis in GitHub blijkt wanneer je wat gedaan hebt.
De laatste versie van je PO die op het moment van de deadline in GitHub staat, wordt gebruikt voor de beoordeling.
Gebruik van AI bij het maken van je website:
Je mag AI gebruiken om je te helpen bij het maken van je praktische opdracht, maar er gelden belangrijke voorwaarden:
Je moet alle code die je gebruikt kunnen uitleggen. Tijdens de beoordeling kan ik vragen stellen over jouw bestanden. Kun je het niet uitleggen, dan beschouw ik het als niet-eigen werk en krijg je een 1. Er is geen herkansing voor dit PO.
Je moet kleine aanpassingen in de code snel zelf kunnen uitvoeren. AI mag je ondersteunen, maar jij moet begrijpen wat er gebeurt. Dit wordt getest doormiddel van het vragen om een kleine aanpassing door te voeren.
Gebruik vooral de template die je al gekregen hebt. Laat AI deze template niet volledig aanpassen. Als je de structuur te veel verandert, kan de docent je later niet goed helpen.
Neem slechts kleine stukjes code over. Vraag AI bijvoorbeeld om uitleg, een stukje CSS of een oplossing voor één specifiek probleem. Als je grote blokken code overneemt, is de kans groot dat je het niet begrijpt en dat merk ik direct tijdens de beoordeling.
Kort samengevat: AI is een hulpmiddel, geen vervanging van jouw eigen inzicht. Gebruik het slim, neem kleine stukken over en zorg dat je altijd weet wat je code doet. Succes!
Je hebt de code van de voorbeeldwebsite en kunt deze aanpassen.
Je kan je wijzigen aan de site commiten en synchen, zodat je werk niet verloren gaat.
Je begrijpt dat we nu met verschillende HTML bestanden werken, elk voor een eigen pagina. Je kan zelf nieuwe bestanden toevoegen en deze aan de hoofdpagina linken.
Je ziet style.css en ziet dat hierin alle CSS gaat voor alle pagina’s.
Je hebt plaatjes bij je teksten gezocht, omgezet naar de juiste resolutie en op je website gezet. Alle plaatjes moet je opslaan, je linkt niet naar plaatjes op andere websites, die kunnen immers verwijderd worden. Duidelijke alt-teksten en bestandsnamen voor elke afbeelding.
Je hebt plaatjes bij je teksten gezocht, omgezet naar de juiste resolutie en op je website gezet. Alle plaatjes moet je opslaan, je linkt niet naar plaatjes op andere websites, die kunnen immers verwijderd worden. Duidelijke alt-teksten en bestandsnamen voor elke afbeelding.
Je hebt ervoor gezorgd dat je subpagina’s goed bereikbaar zijn, en vanuit de subpagina de hoofdpagina terug bereikbaar is.
Je hebt slordigheden in de lay-out, kleuren en inhoud gerepareerd.
Je hebt gezorgd dat je HTML en CSS goed leesbaar zijn (geen herhaling, namen van classes die aangeven wat erin zit in plaats van hoe het eruit ziet, uit logische onderdelen opgebouwd, inclusief commentaar, …)
Je hebt gecontroleerd of de lay-out werkt op een groter venster, een kleiner venster, een ander apparaat en andere browser.
Namen van bestanden/klassen zijn duidelijk en consequent
Geen ongebruikte bestanden of code
Indentatie en commentaar waar nodig
Ontwerpfase_v2.pdf ingeleverd op Github in mapje Ontwerpfase
Je hebt een aantal extra dingen toegevoegd die je website nog mooier maken. Denk bijvoorbeeld aan animaties met CSS, een responsive design (=website heeft een andere indeling op apparaten met een kleiner scherm), een fotogalerij, visuele effecten als je met je muis ergens overheen beweegt, vernieuwingen in het ontwerp van een gebruikte voorbeeldwebsite etc.
Eigen voorstellen worden overwogen.
Aan het einde van stap 9 heb je een perfecte website met één of enkele opvallende functies die je zelf hebt toegevoegd.
De opdracht in het kort is: Maak in groepjes van twee je eigen spel in JavaScript. Je gebruikt de startcode en maakt gebruik van de p5js-library. Om jezelf hierop voor te bereiden doe je eerst deel 1 van de opdracht.
Je schrijft je in via GitHub Classroom via de onderstaande link (login met je github account). Letop: De teamnaam die je kiest bevat de namen van alle leerlingen in je team, bijvoorbeeld jolanda-klaas
Nadat je jezelf helemaal ingeschreven hebt, krijg je automatisch toegang tot een repository met startcode. Er is één repository per team. Elk teamlid heeft lees- en schrijfrechten in de repository.
In dit eerste deel van het PO leren jullie samenwerken aan code en ontwerpen jullie jullie eigen game.
Programmeurs werken bijna nooit alleen. In echte softwareprojecten werken meerdere programmeurs tegelijk aan dezelfde code. Daarom gebruiken we een systeem zoals Git om veranderingen bij te houden en samen te werken.
Deel 1 bestaat uit twee onderdelen.
Git-oefening
Eerst maken jullie een korte oefening waarin jullie leren samenwerken met Git.
Jullie werken per twee leerlingen in dezelfde repository maar ieder op een eigen computer.
Deze oefening is belangrijk, omdat jullie Git ook gebruiken tijdens het maken van jullie game, en dat in team werken aan dezelde code soms problemen kan opleveren.
Na de Git-oefening beginnen jullie met het ontwerpen van jullie eigen game.
Je bent vrij om zelf te kiezen welke game je gaat maken. Je docent moet de game die je kiest goedkeuren. Enkele voorbeelden van een game die je kunt maken zijn: Tennis, Flappy Bird, Snake (voorganger van Slither.io), een Break Out Game (zoals Arkanoid), een race spelletje, een eenvoudige platform game (zoals pacman), een puzzelspel enzovoort.
Jullie bepalen samen:
of het spel singleplayer of multiplayer (2 spelers) wordt
Je maakt deze opdracht in een team van twee personen. De docent geeft aan hoe de teams gemaakt worden. Je bepaalt zelf hoe je het werk binnen je team verdeelt, zolang iedereen een gelijkwaardige bijdrage levert.
Je krijgt van de docent startcode voor deze opdracht. Deze staat klaar in een repo op GitHub. Er is één repo per team.
Het cijfer dat je voor je PO krijgt wordt vanuit verschillende invalshoeken bepaald:
Minimale eisen
Voordat je een cijfer krijgt voor je PO, wordt gekeken of je werk voldoet aan de minimale eisen. Werk dat niet voldoet aan de minimale eisen krijgt het cijfer 1,0. De minimale eisen zijn:
De inhoud is moreel verantwoord: het is niet beledigend, visueel gewelddadig of op andere manieren onfatsoenlijk.
Natuurlijk mag je overleggen met klasgenoten en mag je op internet kijken hoe je bepaalde dingen kunt maken. Let wel op dat je geen plagiaat pleegt. Je mag maximaal 5 regels code overnemen van andere leerlingen of internet en je schrijft in het commentaar erbij waar je het voorbeeld vandaan hebt. Dat geldt ook voor code die je zelf vertaalt naar het Nederlands. Overtypen van code uit een Youtube-video of een tutorial van internet volgen en dat resultaat inleveren is niet toegestaan.
Je gebruikt de startcode die je krijgt.
Je gebruikt het stappenplan dat bij deze opdracht gegeven is.
Werking en aantrekkelijkheid
Spel start op
Het spel werkt (hoe klein ook)
Behaalde punten zijn zichtbaar bij game-over
Het doel en de bediening van het spel is duidelijk
Aantrekkelijk uiterlijk
Prettige bediening
Eenvoudig om mee te beginnen en moeilijker als je verder komt
Techniek
De code volgt de lijn van het template
De code is netjes en duidelijk leesbaar
De code bevat geen dubbele stukken code
Je hebt de technieken gebruikt die in de programmeerlessen zijn aangeboden.
Je hebt dingen toegevoegd waarvan je zelf hebt uitgezocht hoe ze werken
Proces
Je toont inzet tijdens de lessen
De taakverdeling is duidelijk en alle teamleden dragen in gelijke mate bij.
Het werk is verdeeld over de weken waarin aan de opdracht kon worden gewerkt, dit blijkt onder andere uit de commits in Github.
Extra bepalingen voor je cijfer
Je krijgt één cijfer per team, maar de docent kan daarvan afwijken.
Als de teamleden geen gelijkwaardige bijdrage hebben geleverd, dan kun je een individueel cijfer krijgen. Tip: Zorg dat je een gelijkwaardige bijdrage levert binnen het team.
Als het ingeleverde werk van een hoger niveau is dan wat je begrijpt, dan kan de docent extra vragen stellen over je opdracht en op basis daarvan je cijfer bijstellen. Tip: Zorg dat jij en je teamleden je eigen en elkaars werk begrijpen.
Fraude wordt gemeld aan de examencommissie, daarna bepaalt de examencommissie wat er met je cijfer gebeurt. Tip: Vermeld altijd de bronnen die je gebruikt hebt en zorg dat duidelijk is welk stuk van je werk op welke bron is gebaseerd. Van Youtube video’s of AI-chats kun je de linken bijvoegen.
Gebruik van AI bij het maken van je game:
Je mag AI gebruiken om je te helpen bij het maken van je praktische opdracht, maar er gelden belangrijke voorwaarden:
Je moet alle code die je gebruikt kunnen uitleggen. Tijdens de beoordeling kan ik vragen stellen over jouw bestanden. Kun je het niet uitleggen, dan beschouw ik het als niet-eigen werk en krijg je een 1. Er is geen herkansing voor dit PO.
Je moet kleine aanpassingen in de code snel zelf kunnen uitvoeren. AI mag je ondersteunen, maar jij moet begrijpen wat er gebeurt. Dit wordt getest doormiddel van het vragen om een kleine aanpassing door te voeren.
Gebruik vooral de template die je al gekregen hebt. Laat AI deze template niet volledig aanpassen. Als je de structuur te veel verandert, kan de docent je later niet goed helpen.
Neem slechts kleine stukjes code over. Vraag AI bijvoorbeeld om uitleg, een stukje CSS of een oplossing voor één specifiek probleem. Als je grote blokken code overneemt, is de kans groot dat je het niet begrijpt en dat merk ik direct tijdens de beoordeling.
Kort samengevat: AI is een hulpmiddel, geen vervanging van jouw eigen inzicht. Gebruik het slim, neem kleine stukken over en zorg dat je altijd weet wat je code doet. Succes!
De deadline voor inleveren vind je in de lesplanner.
Je kunt vragen stellen tot de laatste les voor de deadline.
Je zorgt dat alle bestanden in die nodig zijn om je spel te spelen in GitHub staan, dit zijn ten minste: index.html, style.css en script.js. Als je plaatjes gebruikt, dan staan die er ook bij.
Uit de versie historie in GitHub blijkt wanneer je wat gedaan hebt.
De laatste versie van je PO die op het moment van de deadline in GitHub staat, wordt gebruikt voor de beoordeling.
Startcode
Je krijgt van de docent een kopie van onderstaande startcode.
Stappenplan
Werk de planning af van boven naar beneden. Vul de planning aan en stel bij terwijl je aan de opdracht werkt.
De voorbeelden hieronder helpen je op weg. Ze zijn niet compleet. Je moet zelf nadenken over wat er mist of hoe je ze aanpast voor jouw spel.
1. Speler bewegen
Voeg dit toe aan beweegAlles(). De speler beweegt met pijltjestoetsen of WASD. keyIsDown kijkt of een bepaalde toets is ingeduwd. Je kan op
deze site
zien welke toets aan welk nummer is gekopperd.
// beweeg omhoog
if(keyIsDown(UP_ARROW)||keyIsDown(87)){// 87 = W
spelerY=spelerY-5;}// voeg zelf de andere drie richtingen toe
In plaats van altijd 5 te gebruiken kan je hier ook een variabele van maken die je later aanpast om de snelheid aan te kunnen passen van je speler.
Zorg dat de speler niet buiten het scherm kan. Gebruik een && in de if zodat de beweging alleen plaatsvindt als de speler nog binnen de grenzen is.
Wat moet de grenswaarde zijn? De grenzen kan je vinden in createCanvas() daar definieer je hoe groot je speelveld is. Denk ook aan de grootte van de speler en waar die start.
2. Afbeelding gebruiken
Maak een map afbeeldingen/ in je repository en zet daar je plaatje in.
Voeg bovenaan sketch.js een variabele toe:
varspelerAfbeelding;
Laad de afbeelding in preload() (voeg deze functie toe boven setup()). Als je meerdere plaatjes wilt voeg je die allemaal toe in dezelfde preload() functie. Elk plaatje heeft wel zijn eigen variabele nodig.
Het template heeft al SPELEN, GAMEOVER en spelStatus. Voeg een derde toestand toe bovenaan:
constINTRO=0;// nieuw
constSPELEN=1;constGAMEOVER=2;varspelStatus=INTRO;// begin op het startscherm
Vul in draw() de lege blokken in:
if(spelStatus===INTRO){// teken een startscherm
background(0);fill('white');textAlign(CENTER,CENTER);textSize(40);text('???',width/2,height/2-40);textSize(20);text('Druk op SPATIE om te starten',width/2,height/2+20);}if(spelStatus===GAMEOVER){background(0);fill('red');textSize(50);textAlign(CENTER,CENTER);text('GAME OVER',width/2,height/2-40);fill('white');textSize(20);text('Punten: '+???,width/2,height/2+20);text('Druk ENTER om opnieuw te spelen',width/2,height/2+60);}
Verwerk de toetsen in keyPressed():
functionkeyPressed(){if(spelStatus===INTRO&&key===' '){spelStatus=SPELEN;}if(spelStatus===GAMEOVER&&keyCode===ENTER){// reset alle variabelen naar beginwaarden
punten=???;health=???;spelerX=???;spelerY=???;spelStatus=???;}}
Vergeet niet ook de vijanden en kogel te resetten.
5. Vijanden
Gebruik arrays voor de x- en y-posities van alle vijanden. Voeg bovenaan toe:
Beweeg de vijanden in beweegAlles() van de rechterkant van het scherm richting de linkerkant van het scherm. Dit doe je met een loop over alle elementen in de array:
for(vari=0;i<vijandenX.length;i++){vijandenX[i]=vijandenX[i]-vijandenSnelheid;// Als de vijand aan de rand van het scherm is gekomen moet hij terug naar de andere kant
if(vijandenX[i]<???){vijandenX[i]=???;vijandenY[i]=???;}}
Als je vijanden naar je speler toe wilt bewegen kijk dan naar code snippet 8 en pas bovenstaande code daarmee aan.
Teken ze in tekenAlles():
for(vari=0;i<vijandenX.length;i++){???}
6. Botsing (rechthoek)
Twee rechthoeken botsen als ze elkaar overlappen in zowel x- als y-richting. Voeg dit toe aan verwerkBotsing():
De array groeit elke keer als je schiet. Je kan erover nadenken om te checken wanneer een kogel buiten beeld is, en die dan te verwijderen. Zo gaat je spel beter werken.
In welke richting schiet jouw speler? Pas de beweging aan. Vergeet de kogels ook te tekenen in tekenAlles() en botsingen te verwerken in verwerkBotsing().
8. Richting bepalen
Soms wil je iets laten bewegen richting een ander punt. Bijvoorbeeld: een kogel richting de muis, of een vijand richting de speler. Je berekent het verschil in x en y, en schaalt dat bij tot de gewenste snelheid met behulp van de stelling van Pythagoras.
vardx=doelX-beginX;// verschil in x
vardy=doelY-beginY;// verschil in y
varafstand=sqrt(dx*dx+dy*dy);// afstand tussen de twee punten
varsX=dx/afstand*snelheid;// stap in x-richting
varsY=dy/afstand*snelheid;// stap in y-richting
Voor een kogel richting de muis sla je sX en sY op bij het afvuren. Voor vijanden die richting de speler bewegen gebruik je hetzelfde idee in de bestaande loop.
Wat gebeurt er als afstand gelijk is aan 0? Wanneer kan dat voorkomen en hoe voorkom je een fout?
Uitlegvideo’s
O3. Webshop
Je gaat je eigen webshop maken!
Opdrachtbeschrijving
De opdracht in het kort is: Maak in groepjes van twee je eigen webshop. Je gebruikt de startcode en breidt de database uit met jouw producten. De api en het website deel pas je aan waar dat nodig is.
Je bent vrij om zelf te kiezen wat je in je webshop gaat verkopen. Je docent moet goedkeuren wat je verkoopt. Je kunt denken aan kleding, producten die te maken hebben met je idool, zelfgemaakte sieraden, tweedehandsspullen enzovoort. Het hoeven niet persé bestaande producten te zijn.
Je maakt deze opdracht in een team van twee personen. De docent geeft aan hoe de teams gemaakt worden. Je bepaalt zelf hoe je het werk binnen je team verdeelt, zolang iedereen een gelijkwaardige bijdrage levert. Je krijgt één cijfer per team, maar de docent kan hiervan afwijken als teamleden geen gelijkwaardige bijdrage hebben geleverd.
Je krijgt van de docent startcode voor deze opdracht. Deze staat klaar in een repo op GitHub. Er is één repo per team.
Je maakt code in Gitpod. Elk teamlid heeft zijn eigen Gitpod omgeving.
Elke week (liefst vaker) slaan alle teamleden hun tussentijdse werk op in de repo op GitHub. Zo zorgen jullie ervoor dat de laatste werkende versie van jullie opdracht steeds op GitHub staat.
Deze opdracht maak je alsof het een echt project is. Je maakt eerst een planning. Daarna kijk je wekelijks of je nog volgens plan loopt. Als je niet volgens plan loopt, dan stuur je bij. In de les word je hiermee geholpen, maar uiteindelijk moet jij zorgen dat je op tijd klaar bent en een goed resultaat oplevert.
Het cijfer dat je voor je PO krijgt wordt vanuit verschillende invalshoeken bepaald:
De technische kwaliteit van de database (vwo 40%, havo 60%)
De technische kwaliteit van de aanpassingen in de api en het website-deel (vwo 20%, havo 10%)
Uitbreidingen die je hebt toegevoegd (vwo 20%, havo 10%)
Inzet, planning en samenwerking (20%)
Minimale eisen
Voordat je een cijfer krijgt voor je PO, wordt gekeken of je werk voldoet aan de minimale eisen. Werk dat niet voldoet aan de minimale eisen krijgt het cijfer 1,0. De minimale eisen zijn:
De inhoud van je webshop is moreel verantwoord: het is niet beledigend, visueel gewelddadig of op andere manieren onfatsoenlijk.
Natuurlijk mag je overleggen met klasgenoten en mag je op internet kijken hoe je bepaalde dingen kunt maken. Let wel op dat je geen plagiaat pleegt. Je mag maximaal 5 regels code overnemen van andere leerlingen of internet en je schrijft in het commentaar erbij waar je het voorbeeld vandaan hebt. Dat geldt ook voor code die je zelf vertaalt naar het Nederlands. Overtypen van code uit een Youtube-video of een tutorial van internet volgen en dat resultaat inleveren is niet toegestaan.
Je gebruikt de startcode die je krijgt.
Je gebruikt het stappenplan dat bij deze opdracht gegeven is.
Een download in zip-formaat van je opdracht mag maximaal 50 MB groot zijn.
Database
Enkele punten waarop gelet kan worden bij de beoordeling zijn
Je database is genormaliseerd, dat betekent dat je redundante gegevens hebt voorkomen door het gebruik van meerdere tabellen.
Je database bevat minimaal tien producten
Je neemt ten minste vijf eigenschappen van producten op.
Je database bevat minimaal vijf tabellen.
Je database bevat minimaal één relatie van de vorm 1:n en minimaal één relatie van de vorm n:m.
Je SQL-code is toegankelijk, dat wil zeggen niet complexer dan nodig, logisch georganiseerd en waar nodig voorzien van commentaar.
API en web
Enkele punten waarop gelet kan worden bij de beoordeling zijn.
De API is aangepast, zodat hij alle informatie uit de database kan doorgeven aan je website.
De html en scripts in je website zijn aangepast, zodat ze alle data die de api levert netjes laten zien.
Uitbreidingen
Enkele punten waarop gelet kan worden bij de beoordeling zijn.
Je hebt functies toegevoegd waaruit blijkt dat je heel goed begrijpt hoe de database, api en website samenwerken. Je kunt bijvoorbeeld denken aan het aanbrengen van filters waarmee je snel producten kunt zoeken, of een zoekfunctie.
Je hebt substantiële (grote) toevoegingen gedaan aan de html/css van het web-site gedeelte, zowel wat betreft de layout als de functionaliteit. Je kunt bijvoorbeeld denken aan een uitbreiding van meerdere pagina’s met nuttige informatie voor kopers.
…
Inzet, planning en samenwerking
Je toont inzet tijdens de lessen
De planning is vooraf gemaakt, gevolgd en als nodig bijgesteld.
De taakverdeling is duidelijk en alle teamleden dragen in gelijke mate bij.
Het werk is verdeeld over de weken waarin aan de opdracht kon worden gewerkt, dit blijkt onder andere uit de commits in Github.
De deadline voor inleveren vind je in de lesplanner.
Je kunt vragen stellen tot de laatste les voor de deadline.
Je zorgt dat alle bestanden in die nodig zijn om je spel te spelen in GitHub staan, dit zijn ten minste: index.html, style.css en script.js. Als je plaatjes gebruikt, dan staan die er ook bij.
Uit de versie historie in GitHub blijkt wanneer je wat gedaan hebt.
De laatste versie van je PO die op het moment van de deadline in GitHub staat, wordt gebruikt voor de beoordeling.
Maak tabellen en velden (CREATE TABLE commando) in je database waarin alle informatie kan worden opgeslagen die je over je producten wilt tonen. Tip: je kunt een multipliciteitendiagram gebruiken als tussenstap voor je database-ontwerp
Herhaal stap 2 t/m 4 om je webshop verder te verbeteren.
Voor en goed cijfer is het belangrijk dat je laat zien dat je uitstekend begrepen hebt hoe je een webshop moet opzetten.
Uitlegvideo’s (have en vwo)
O4. Robot
Je gaat je robot programmeren!
Opdrachtbeschrijving
De opdracht in het kort is: programmeer een apparaat naar keuze met behulp van een toestandsdiagram.
Je schrijft je in via het onderstaande formulier dat de docent aanlevert (login met je google account van school voor toegang). Je teamnaam is de voornamen van iedereen die in je groepje zit.
Je bent vrij om zelf te kiezen voor welk van de aangeboden apparaten je een programma gaat maken. Je docent moet je keuze goedkeuren. De apparaten die je kunt programmeren zijn:
Stoplichtenplein (havo) De opdracht voor dit apparaat Maak een programma waarmee de stoplichten zo op groen, oranje en rood springen dat auto’s en voetgangers zo efficient mogelijk over de kruising kunnen.
Het stoplichtenplein Je mag het plein uitbreiden met sensoren die auto’s waarnemen.
Arcade game box (havo en vwo) De opdracht voor dit apparaat Maak een game die zo boeiend mogelijk is.
De arcade box Je mag gebruik maken van alle mogelijkheden die de hardware in de arcadebox biedt. Dit zijn 4 knoppen met dimbare verlichting, een speaker en een display met twee regels van zestien karakters en de mogelijkheid om zelf een beperkt aantal karakters te ontwerpen.
Alphabot2 rijdende robot (havo en vwo) De opdracht voor dit apparaat Maak een programma dat de alphabot zo snel mogelijk de uitgang van een doolhof laat vinden.
De alphabot Je moet mimimaal de beide motoren en één type afstandssensor van de alphabot2 gebruiken. De afstandssensoren waar je uit kunt kiezen zijn de ultrasone afstandssensor voorop, de twee infrarode aftandssensoren schuin links- en rechtsvoor en de lijnvolgsensoren onderop. Je kunt je oplossing uitbreiden door meerdere sensortypen te gebruiken. Je kunt je programma ook uitbreiden door het display, de speaker of de RGB-leds onderop te gebruiken om te laten merken wat de alphabot aan het doen is.
Het doolhof Het doolhof bestaat uit en pad met doodlopende vertakkingen. In het doolhof zitten geen rondjes. De paden worden gevormd door vierkanten van ongeveer 30x30 cm. Aan de randen van de paden staan muren. De muren bestaan uit stukken van ongeveer 30 centimeter lang. De stukken muur sluiten recht op elkaar aan of maken een hoek van ongeveer 90 graden. In de midden van het pad is er een strook zwart tape op de vloer gemaakt. Dit tape bevat vertakkingen en is steeds ongeveer 15 cm van een muur verwijderd.
Drone (experimenteel voor vwo in 22/23, vwo vanaf 23/24) De opdracht voor dit apparaat Laat de drone zo snel mogelijk van de startplek naar de finish plek vliegen. Onderweg staan opstakels.
De drone Je gebruikt commando’s om de drone te laten opstijgen en landen en om de drone in een bepaalde richting te laten vliegen. Je gebruikt de afstandssensor voor op de drone om de afstand tot opstakels te meten.
Het parcours Het parkcours wordt telkens opgebouwd en afgebroken in de gang. De drone mag niet buiten het parcours vliegen, geen obstakels of muren raken en tijdens het vliegen mogen er geen personen binnen de grenzen van het parcours aanwezig zijn. Er is een vast punt waar de drone start en een zone waar de drone eindigt. De drone vliegt op vaste afstand van de grond (ongeveer 1 meter). De obstakels bevinden zich op de hoogte waar de drone vliegt. Tijdens de opdracht werk je in overleg met de docent het parcours verder uit.
In overleg met je docent mag je ook een eigen apparaat kiezen of een bestaand apparaat uitbreiden.
Je maakt deze opdracht in een team van twee personen. De docent geeft aan hoe de teams gemaakt worden. Je bepaalt zelf hoe je het werk binnen je team verdeelt, zolang iedereen een gelijkwaardige bijdrage levert. Je krijgt één cijfer per team, maar de docent kan hiervan afwijken als teamleden geen gelijkwaardige bijdrage hebben geleverd.
Je krijgt van de docent startcode voor deze opdracht. Deze staat klaar in een repo op GitHub. Er is één repo per team.
Je maakt code in de Arduino IDE. Je zorgt dat alle teamleden even veel coderen.
Elke les sla je je tussentijdse werk op in de repo op GitHub. Dat doe je door de nieuwe versies van je bestanden met de hand te uploaden in de webpagina, want de Arduino IDE heeft geen automatische koppeling met GitHub.
Deze opdracht maak je alsof het een echt project is. Je maakt eerst een planning. Daarna kijk je wekelijks of je nog volgens plan loopt. Als je niet volgens plan loopt, dan stuur je bij. In de les word je hiermee geholpen, maar uiteindelijk moet jij zorgen dat je op tijd klaar bent en een goed resultaat oplevert.
Het cijfer dat je voor je PO krijgt wordt vanuit vier invalshoeken bepaald:
minimale eisen
uiterlijk
techniek
inzet, planning en samenwerking
Minimale eisen
Voordat je een cijfer krijgt voor je PO, wordt gekeken of je werk voldoet aan de minimale eisen. Werk dat niet voldoet aan de minimale eisen krijgt het cijfer 1,0. De minimale eisen zijn:
De inhoud van je opdracht is moreel verantwoord: het is niet beledigend, visueel gewelddadig of op andere manieren onfatsoenlijk.
Natuurlijk mag je overleggen met klasgenoten en mag je op internet kijken hoe je bepaalde dingen kunt maken. Let wel op dat je geen plagiaat pleegt. Je mag maximaal 5 regels code overnemen van andere leerlingen of internet en je schrijft in het commentaar erbij waar je het voorbeeld vandaan hebt. Dat geldt ook voor code die je zelf vertaalt naar het Nederlands. Overtypen van code uit een Youtube-video of een tutorial van internet volgen en dat resultaat inleveren is niet toegestaan.
Je gebruikt de startcode die je krijgt.
Je gebruikt het stappenplan dat bij deze opdracht gegeven is.
Een download in zip-formaat van je opdracht mag maximaal 50 MB groot zijn.
Werking en aantrekkelijkheid
Je apparaat start op
Je apparaat reageert op de omgeving
De bediening van je apparaat is eenvoudig en logisch
Het nut/doel van je apparaat is duidelijk
Het apparaat bevat diverse functionaliteiten / mogelijkheden
Je hebt uitbreidingen op het apparaat gemaakt
…
Techniek
De code volgt de lijn van de startcode
De code is netjes en duidelijk leesbaar
De code bevat geen dubbele stukken code
Je hebt de technieken gebruikt die in de lessen zijn aangeboden.
Je hebt dingen toegevoegd waarvan je zelf hebt uitgezocht hoe ze werken
…
Inzet, planning en samenwerking
Je toont inzet tijdens de lessen
De planning is vooraf gemaakt, gevolgd en als nodig bijgesteld.
De taakverdeling is duidelijk en alle teamleden dragen in gelijke mate bij.
Het werk is verdeeld over de weken waarin aan de opdracht kon worden gewerkt.
Arduino IDE
om je code voor de arduino te bewerken en in je apparaat te laden.
Er is geen automatische koppeling tussen Arduino IDE en GitHub. Dat betekent dat je je bestanden via de webinterface van GitHub moet downloaden en uploaden.
Startcode
Als je van je docent je een kopie van de startcode hebt ontvangen, dan kun je aan de slag met de stappen uit het README.md bestand.
Je hebt je GitHub-inlognaam aan de docent doorgegeven, zodat die een Github-repo kan aanmaken.
Je hebt gekozen wat je gaat maken en dat aan de docent doorgegeven, bij een eigen idee moet de docent het goedkeuren.
Je hebt thuis een computer of laptop (Arduino werkt niet op een iPad) waarop je de gratis Arduino software hebt geïnstalleerd, of je hebt er rekening mee gehouden dat je een paar uur per week op school op een computer kan werken.
Je hebt de startcode voor je project uitgeprobeerd. Je vindt de startcode in het .ino bestand in de map die hoort bij wat je gaat maken.
Je hebt het toestandsdiagram in code omgezet, zodat alle toestanden doorlopen kunnen worden met jouw circuit. Daarbij heb je het door de docent aangeleverde projectcode als startpunt gebruikt. Nog niet alle sensoren of actuatoren van je apparaat hoeven het te doen, zolang alle toestanden maar doorlopen kunnen worden. De laatste versie van je code sla je steeds op op GitHub.
Je hebt de code van je toestandsdiagram uitgebreid, zodat alle sensoren en actuatoren van je project het doen. Je apparaat werkt nu volledig en zoals beschreven in het toestandsdiagram. De laatste versie van je code sla je steeds op op GitHub.
Je hebt je ontwerp uitgebreid met extra ideeën en deze heb je verwerkt in je toestandsdiagram en in je code. De laatste versie van je toestandsdiagram en code sla je steeds op op GitHub.
Maak een video die de werking van je project demonstreert.
Het is een video met geluid (uitleg tijdens de demonstratie) in .mp4 of .mov formaat van maximaal 20MB of .txt bestand met link naar youtube. De video duurt maximaal 2 minuten.
Uitlegvideo’s
Er zijn op dit moment (nog) geen uitlegvideo’s bij deze opdracht.
O5. Marble Mania Knikkerbaan
Je maakt een interactieve module voor een grotere knikkerbaan.
Opdrachtbeschrijving
In het vakgebied van informatica wordt heel veel projectmatig gewerkt. Een van de manieren om dit te doen is Agile. Bij deze opdracht ga je in groepen van 3 of 4 leerlingen projectmatig werken aan een knikkerbaan die verbonden is met een computer. Hierbij ga je veel kennis en vaardigheden die bij het vak informatica hebt opgedaan toepassen en integreren. Er vindt op twee momenten een beoordeling plaats.
Een module voor een knikkerbaan.
Het is de bedoeling dat je bovenaan knikkers kunt ontvangen en ze onderaan weer laat vallen, zodat een volgende module ze weer kan opvangen. Ook moet de knikkerbaan om kunnen gaan met verschillen in de snelheid waarmee nieuwe knikkers aangeleverd worden en ervoor zorgen dat er geen knikkers vastlopen.
Klik hier voor de basislayout.
Deze module is interactief: hij maakt gebruik van Arduino, heeft minimaal een teller, een snelheidsmeter (sensors), een poortje en een wissel (actuators). De module staat via USB in verbinding met een website die op een computer draait. De basis van de opdracht wordt aan je gegeven met uitleg hoe je de basis van de knikkerbaan moet maken, inclusief een teller (onderbrekingssensor) en een poortje (servomotor -> actuator).
De knikkerbaanmodule mag natuurlijk meer sensors en actuators krijgen. Je kunt natuurlijk meer tellers toevoegen en meer poortjes, je kunt ook denken aan een kleurensensor, afstandssensor, krachtsensor, gewichtsensor etc. Of als actuators: ledjes, een RGB-ledstrip, display, buzzer, andere bewegende onderdelen (bijv. met behulp van een 360-gradensensor). Als je twijfelt of iets kan / mag, vraag even aan je docent.
Een kleine webpagina.
Deze webpagina is een widget waarmee je de statusgeschiedenis van je knikkerbaanmodule kunt weergeven, maar ook het gedrag van de knikkerbaan kunt aanpassen / configureren. Je krijgt informatie van de knikkerbaan, maar geeft ook informatie terug waarop de knikkerbaan moet reageren. Je kunt dus informatie van de sensors zien en het functioneren van de actuators beïnvloeden. De widget kan later door de docent opgenomen worden in een grote webpagina waar een overzicht te zien is van alle modules van de uiteindelijke knikkerbaan.
Verslaglegging van planning, voortgang en samenwerking.
We verwachten dat je minimaal aan het begin van elke sprint de todo lijst en sprint planning bijwerkt in de map planning. Aan het einde van elke sprint verwachten we een korte video die het behaalde resultaat laat zien, deze zet je in het mapje demo. Daarnaast willen we dat ieder teamlid in gelijke mate bijdraagt.
De laatste les van de week van sprint 3 wordt de knikkerbaan zonder widget beoordeeld. Er wordt beoordeeld op uiterlijk, functionaliteit, techniek en planning. Dit deelcijfer telt voor 50% mee in het totaalcijfer van S13.
De laatste les van de week van sprint 5 wordt de widget beoordeeld. Ook bij deze beoordeling wordt naar uiterlijk, de functionaliteit, techniek en planning gekeken. Belangrijk is dat de widget en de knikkerbaan echt met elkaar communiceren. Mocht je aan het einde van sprint 5 nog substantiële verbeteringen hebben gedaan aan de knikkerbaan, dan kan je eerste deelcijfer met maximaal 1 punt opgehoogd worden.
GitHub - zodat iedereen aan de code kan werken en alles wel netjes op één plek staat. Daarnaast maken we gebruik van extra functies van GitHub om goed projectmatig te kunnen werken.
Intekenen kan per groepje hieronder. De eerste kiest de teamnaam, andere joinen bij het team:
Je werkt bij deze opdrachten in sprints. Een sprint is een periode van twee weken waarbij je met elkaar afspreekt wat er aan het einde van de twee weken af is en wie dit doet. Halverwege de sprint kun je daar eventueel een kleine wijziging in aanbrengen.
Voor iedere sprint hebben wij in algemene termen opgeschreven wat er af moet zijn. Dit vind je terug in de individuele sprint in de map planning.
De opdracht wordt op de volgende aspecten beoordeeld, waarbij de vragen niet uitputtend beschreven zijn:
Knikkerbaan
Hoeveel uitbreidingen zijn er aan de basis toegevoegd?
Hoe functioneert de knikkerbaan?
Werkt de knikkerbaan soepel?
Hoe is de totale afwerking?
Hoe is de kwaliteit van de code?
Is de code een rommeltje of is het netjes?
Hoe objectgeoriënteerd is het geheel van de code?
Widget
Hoe ziet de widget eruit?
Hoe slag je de ontvangen en verzonden gegevens op?
Doet de widget wat het moet doen?
Hoeveel interactiviteit met de knikkerbaan wordt hierdoor mogelijk?
Doe je iets met de geschiedenis van de ontvangen en verzonden gegevens?
Hoe objectgeoriënteerd is het geheel van de code?
Is de code netjes?
Samenwerking en planning
Hoe was de inzet van de groepsleden.
Heeft ieder groepslid evenveel bijgedragen?
Heeft iedereen zicht op het hele project, ook als iemand anders daar vooral aan heeft gewerkt?
Is er planmatig in sprints gewerkt?
Hoe is de verslaglegging van de planning?
Er wordt verwacht dat elk teamlid een gelijkwaardige bijdrage levert. Je mag taken verdelen, maar iedereen heeft in ieder geval aan een deel van de code zelf meegeschreven. Aan het einde van de opdracht wordt van alle teamleden verwacht dat zij dezelfde kennis hebben van alle onderdelen van de opdracht. Bij twijfel kan de docent dit toetsen in een kort gesprek met de teamleden en onderzoeken welke commits door teamleden zijn gedaan. Het staat de docent vrij om aan groepsleden verschillende cijfers toe te kennen op basis van hoe en wat zij controleerbaar aan het project hebben bijgedragen.