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.
Hier vind je de lesplanner, geplande toetsen en inlevermomenten voor 6 vwo.
Vakoverzicht
PTA
De leerlingen raden we aan om vooral te kijken naar het vakoverzicht en de toets- en inlevermomenten hierboven op deze web-pagina. Voor wie het echt wil weten, is hier een linkje naar ons
PTA in Excel
, zoals we dat jaarlijks aanleveren aan de school.
4 havo
Hier vind je de lesplanner, geplande toetsen en inlevermomenten voor 4 havo.
Advies voor inleveren van Praktische Opdrachten: Lever een bijna af concept in vóór de laatste les voor de deadline, als er dan iets misgaat dan kun je nog een vraag stellen in de laatste les!
5 havo
Hier vind je de lesplanner, geplande toetsen en inlevermomenten voor 5 havo.
Advies voor inleveren van Praktische Opdrachten: Lever een bijna af concept in vóór de laatste les voor de deadline, als er dan iets misgaat dan kun je nog een vraag stellen in de laatste les!
4 vwo
Hier vind je de lesplanner, geplande toetsen en inlevermomenten voor 4 vwo.
Advies voor inleveren van Praktische Opdrachten: Lever een bijna af concept in vóór de laatste les voor de deadline, als er dan iets misgaat dan kun je nog een vraag stellen in de laatste les!
5 vwo
Hier vind je de lesplanner, geplande toetsen en inlevermomenten voor 5 vwo.
Advies voor inleveren van Praktische Opdrachten: Lever een bijna af concept in vóór de laatste les voor de deadline, als er dan iets misgaat dan kun je nog een vraag stellen in de laatste les!
6 vwo
Hier vind je de lesplanner, geplande toetsen en inlevermomenten voor 6 vwo.
Advies voor inleveren van Praktische Opdrachten: Lever een bijna af concept in vóór de laatste les voor de deadline, als er dan iets misgaat dan kun je nog een vraag stellen in de laatste les!
Je leert objectgeoriënteerd programmeren. Dat is een manier van programmeren waarbij data en logica gebundeld zijn in objecten. We leren dit voor zowel JavaScript als C++.
Inloggen met Google
❗️ Voordat je start Ga naar Replit met de volgende link:
https://replit.com/@Krisvan1/ObjectOrientedProgramming Fork de repository. Maak eventueel een account aan als je die nog niet hebt.
Elke opdracht kan je zelf testen door op de “Run” knop te drukken.
TIP: Je kan ook checken of je opdracht echt klopt door de Unit tests te runnen. Deze vind je of recht naast je console of links onder bij Tools.
T1. Web Design met HTML en CSS
Je leert hoe je informatie op een website zet met de programmeertalen HTML en CSS.
Je kunt uitleggen wat een URL is en waarvoor een webbrowser deze gebruikt en je kent de volgende vier onderdelen van een URL: protocol, server, map, bestand
Je kent het principe van tags zoals die in HTML gebruikt worden.
Je kent de basisstructuur van een HTML-pagina.
Je weet wat de begrippen parent, child en sibling betekenen en kunt de betekenis van deze begrippen toelichten. Je kunt deze begrippen toepassen op HTML.
Je kent de volgende tags: <html>, <head>, <body>, <p>, <ol>, <ul>, <li>, <h1> t/m <h6>, <br/>, <img />, <div>. Je kunt uitleggen wat deze tags doen en hoe je kunt ze gebruiken.
Je kunt eenvoudige stukken HTML interpreteren, dat wil zeggen dat je kunt uitleggen hoe een webbrowser omgaat met een eenvoudig stuk HTML.
Je kunt wijzigingen aanbrengen in een eenvoudig stuk HTML, de syntax van de HTML tags die daarvoor nodig zijn wordt daarbij gegeven in de vraag.
CSS
Je kunt uitleggen wat er binnen de informatica met Separation of Concern wordt bedoeld en hoe dat op HTML en CSS van toepassing is.
Je kunt uitleggen wat selectors, properties en values in CSS zijn en je kunt ermee werken. Dat wil zeggen dat je eenvoudige stukken CSS met selectors, properties en values kunt maken en de werking ervan kunt uitleggen.
Je kunt CSS selectors maken die bestaan uit een tag, class of id of een combinatie daarvan.
Je kent het verschil in selectiviteit tussen tags, classes en id’s, je kunt daarbij aangeven welke selectors meer of minder specifiek zijn.
Je kent van de volgende properties de betekenis en kunt deze toepassen in CSS: font-size, width, height, color, background-color.
Je kunt werken met kleuren en doorzichtigheid in CSS, door gebruik te maken van kleurnamen en rgba().
Je kunt de werking van boxen in CSS toelichten. Je kunt daarbij uitleggen wat de content, padding, border en margin van een box zijn.
Je kunt eenvoudige stukken CSS interpreteren, dat wil zeggen dat je kunt uitleggen hoe een webbrowser omgaat met een eenvoudig stuk CSS en hoe het eruit ziet in een webbrowser.
Je kunt wijzigingen aanbrengen in een eenvoudig stuk CSS, de properties die daarvoor nodig zijn worden beschreven in de vraag.
Je kunt binaire getallen omzet naar decimale getallen en andersom.
Je kunt binaire getallen omzet naar hexadecimale getallen en andersom.
Je kunt decimale getallen omzet naar hexadecimale getallen en andersom.
Je kunt uitrekenen uit hoeveel bits of bytes een kilobyte, megabyte, gigabyte of terabyte bestaat.
Je kunt uitleggen waarin de klassieke maten van kilo-, mega, gigabyte etc. afwijken van de SI-maten.
Je weet wat het verschil is tussen ASCII en Unicode en kunt uitleggen hoe ze tekst digitaliseren.
Je kunt uitleggen hoe het RGB-kleurenmodel en het CMYK-kleurenmodel werken, je kunt de verschillen tussen beide kleurenmodellen benoemen en je kunt de modellen gebruiken om kleuren te maken en kleuren te veranderen.
Je kent de betekenis van het begrip resolutie
Je kunt uitleggen hoe plaatjes worden opgeslagen door een computer
Je kent verschillende bestandsformaten voor plaatjes, zoals bmp, gif, jpg en png en de eigenschappen waarin ze van elkaar verschillen
Je kunt aangeven welk bestandformaat voor plaatjes het best geschikt is voor een beschreven situatie
Je kunt uitleggen hoe muziek wordt opgeslagen door een computer
Je kunt uitleggen hoe video wordt opgeslagen door een computer
Je kunt uitleggen wat een extensie is en waar deze voor dient
Je kunt uitleggen wat compressie is aan de hand van voorbeelden (tekst, geluid, plaatjes en video) en je kent het verschil tussen lossless en niet-lossless compressie.
Alleen vwo: Je kunt op basis van een beschrijving van een compressie algortime een klein voorbeeld comprimeren en decomprimeren.
Beeldbewerking
Je kunt het aantal pixels van een plaatje aanpassen
Je kunt een plaatje bijsnijden (Engels: crop)
Je kunt een plaatje in diverse bestand-formaten omzetten (bijvoorbeeld .jpg, .png, .gif)
Je kunt basisinstellingen van de kleuren in een plaatje aanpassen (bijvoorbeeld contrast)
Je kunt de achtergrond van een plaatje transparant maken, een vast kleur maken, vervangen door een ander plaatje.
Je begrijpt wat je kunt doen met lagen en je kunt dat uitleggen aan de hand van een gegeven situatie.
Je kunt uitleggen wat er binnen de informatica bedoeld wordt met het begrip grammatica.
Je kunt uitleggen wat een variabele is.
Je kunt uitleggen wat declareren en definiëren van een variabele is.
Je kunt uitleggen wat een datatype is
Je kent de datatypen boolean, number en string en begrijpt welke waarden erin opgeslagen worden
Je kunt uitleggen wat controlestructuren zijn en je kent de volgende voorbeelden: if-statement, for-loop, while-loop.
Je kunt uitleggen waar abstractie voor dient.
Je kunt uitleggen wat een functie is.
Je kunt uitleggen wat declareren, definiëren en aanroepen van een functie is.
Je kunt uitleggen wat een parameter van een functie is.
Je kunt uitleggen wat het resultaat van een functie is.
Je kunt uitleggen wat het verschil is tussen globale en lokale variabelen.
Je kunt de leesbaarheid van code verbeteren door gebruik te maken van commentaar, lay-out en structuur.
Javascript
je kunt commentaarregels gebruiken.
je kunt aangeven welke waarden bepaalde variabelen hebben aan het einde van een stukje computercode.
je kunt op basis van een stukje code zelf de bijbehorende schermuitvoer tekenen.
je kunt met behulp van naslagmateriaal zelf computercode schrijven om een vraag te beantwoorden.
je weet hoe je in een tekening animatie aanbrengt.
je begrijpt wat variabelen zijn en hoe je deze kunt gebruiken.
je begrijpt wat een logische expressie is en hoe je deze kunt gebruiken.
je begrijpt hoe de logische operatoren “en”, “of” en “niet” werken en je kunt deze gebruiken.
je begrijpt hoe de vergelijkingsoperatoren “groter dan”, “kleiner dan”, “groter-gelijk dan”, “kleiner-gelijk dan”, “gelijk aan” en “ongelijk aan” werken en je kunt deze gebruiken.
je weet wat de datatypen boolean, number en string zijn en kunt deze gebruiken.
je begrijpt hoe een if-statement werkt en hoe je deze kunt gebruiken.
je begrijpt hoe een while-loop en een for-loop werken en hoe je deze kunt gebruiken.
je kunt een while-loop omzetten naar een for-loop en andersom.
je begrijpt hoe een for-loop in een for-loop werkt en hoe je dit kunt gebruiken.
je begrijpt wat arrays zijn en hoe je deze kunt gebruiken.
je kunt een array doorlopen met een for-loop.
Alleen vwo: je kunt een twee-dimensionale array doorlopen met een for-loop in een for-loop
je begrijpt hoe een functie werkt en hoe je deze kunt gebruiken.
je begrijpt wat parameters van een functie zijn en hoe je deze gebruikt.
je begrijpt wat het resultaat van een functie is en hoe je dit gebruikt.
je begrijpt wat er op het syntaxblad Javascript staat en dit kunt toelichten en gebruiken.
je kunt uitleggen wat een flowchart is en waarvoor je deze gebruikt
je kunt flowcharts lezen, dat betekent dat je de output van een flowchart kunt bepalen als de input en de flowchart gegeven worden
je kunt een flowchart maken van een eenvoudig algoritme waarvan je een korte beschrijving en een voorbeeld van de input en de output krijgt. Een eenvoudig algoritme is een algoritme waarbij een rij wordt doorlopen, zoals bijvoorbeeld: zoek het grootste getal in een rij, bereken het gemiddelde van alle getallen in een rij, tel het aantal keer dat een bepaalde letter voorkomt in een tekst.
je kunt een flowcharts omzetten naar JavaScript code en JavaScript code kunnen omzetten naar een flowchart.
Je kunt uitleggen wat een relationele database is.
alleen vwo: Je kunt gegevens analyseren en structureren en relaties vastleggen in een multipliciteitsdiagram.
alleen vwo: Je kunt gegevens analyseren en structureren en vastleggen in een strokendiagram.
Je kunt een database voorzien van een voorbeeldpopulatie (dit betekent dat je gegevens in velden kunt invullen).
Je kunt het verschil tussen en 1:n, n:1 en n:m relatie uitleggen en je kunt in een gegeven voorbeeld aangeven van welke relatie sprake is.
Je kunt uitleggen wat redundantie is.
Je kunt uitleggen wat normaliseren is.
Je kunt een gegeven, niet volledig genormaliseerde database omzetten naar een database in de 3e normaalvorm (dit betekent dat je de redundante informatie kunt verwijderen door de database te splitsen in meerdere aan elkaar gerelateerde tabellen).
Je kunt voor een gegeven situatie een voorstel te doen voor een genormaliseerde database structuur.
Je kunt aangegeven welke (combinaties van) velden uniek zijn / als sleutel kunnen dienen.
Je weet waarvoor de primaire sleutel dient.
Je weet wat een verwijzende sleutel is.
Je weet hoe verwijzingen tussen verschillende tabellen met behulp van sleutels werken.
Je weet hoe in een database wordt aangegeven dat een veld geen waarde bevat.
Databases programmeren in khan:
Je kunt met CREATE TABLE een gegevensmodel omzetten in een database.
Je kunt met INSERT rijen aan een tabel toevoegen.
alleen vwo: Je kunt met DELETE rijen verwijderen uit een tabel.
Je kunt met SELECT gegevens uit een relationele database opvragen.
Je kunt de opgevraagde gegevens uit een relationele database oplopend en aflopend sorteren.
Je kunt voorwaarden stellen aan de op te vragen gegevens uit de database (WHERE) en gebruikmaken van operatoren (=, <, >, >=, <=, <>).
Je kunt gebruikmaken van LIKE bij het stellen van voorwaarden in de query.
alleen vwo: Je kunt gebruik maken van een subquery in combinatie met de voorwaarde IN.
Je kunt gebruikmaken van samengestelde voorwaarden (AND, OR) bij het stellen van voorwaarden in de query.
Je kunt gebruikmaken van omgedraaide voorwaarden (NOT) bij het stellen van voorwaarden in de query.
Je kunt gebruikmaken van NULL bij het stellen van voorwaarden in de query.
Je kunt gebruikmaken van aggregatiefuncties (COUNT, SUM, MAX, MIN, AVG) bij het opstellen van query.
Je kunt gebruikmaken van GROUP BY bij het groeperen van de resultaten van een query.
Je kunt voorwaarden stellen aan op te vragen gegroepeerde gegevens met HAVING
alleen havo: Je kunt bij een query over 2 of 3 tabellen de JOIN toepassen
alleen vwo: Je kunt bij een query over 2 of meer tabellen de JOIN toepassen
Je kunt een query maken met JOIN van een 1-op-n relatie
Je kunt een query maken met JOIN van een n-op-m relatie
alleen vwo: Je kent het verschil tussen cross join (JOIN zonder ON), inner join (JOIN ON), left outer join (LEFT JOIN ON) en kunt beslissen welke van deze drie je nodig hebt in een query.
Je kunt met behulp van een berekening kunt aantonen wat de hoofdreden is om het IP versie 4 protocol te vervangen door IPv6
Je kunt het verschil uitleggen tussen een LAN en een WAN.
Je kent de belangrijkste verschillen tussen communicatie over koperen verbindingen, glasvezelverbindingen en draadloze verbindingen
Je weet wat bij computernetwerken de termen lag / latency / latentie en bandbreedte betekenen en hoe ze de snelheid van een netwerkverbinding beïnvloeden.
Je kunt uitleggen waarvoor het het OSI-model is ontwikkeld
Je begrijpt het OSI-model / IP-stack. Je kunt de applicatielaag, transportlaag, netwerklaag, datalinklaag en fysische laag uitleggen.
Je kunt twee voordelen benoemen van het werken met een lagenmodel zoals het OSI-model of de IP-stack.
Je weet wat een MAC-adres is, bij welke laag het hoort en waarvoor het wordt gebruikt.
Je weet wat ARP is en waarvoor het dient.
Je weet wat het MAC broadcast adres is en waarvoor het dient.
Je weet wat een IP-adres is, bij welke laag het hoort en waarvoor het wordt gebruikt.
Je kunt met behulp van routeringstabellen het gedrag van een router bij een inkomend bericht beschrijven.
Je weet wat het IP broadcast adres is en waarvoor het dient.
Je weet wat een subnetmasker is en waarvoor dit dient.
Je kunt met behulp van het subnetmasker uitrekenen hoeveel apparaten er in een netwerk verbonden kunnen zijn.
Je weet wat het nadeel is van een subnetwerk met heel veel apparaten.
Je kunt de twee belangrijkste verschillen tussen TCP en UDP benoemen
Je weet wat TCP-poorten zijn en waarvoor deze dienen
Je kunt beschrijven hoe een pakketje van een apparaat in het ene subnet naar een apparaat in het andere subnet reist.
Je kent de functie van de volgende netwerkapparaten: router, modem, switch, wireless access point, repeater, firewall
Je kunt beredeneren tot op welk niveau van het OSI-model een netwerkapparaat werkzaam is.
Je kunt bij schematische weergave van een netwerk de verschillende netwerkapparaten herkennen en benoemen en IP-adressen en subnetmaskers bepalen of toewijzen.
Je weet wat de functie van een firewall is.
Je begrijpt wat een DNS is en waarvoor deze dient
Je kunt uitleggen wat de functie van een DHCP server is.
Oefentoets
Je kunt een deel van je kennis en vaardigheden testen met de volgende oefenopgaven:
Je leert objectgeoriënteerd programmeren. Dat is een manier van programmeren waarbij data en logica gebundeld zijn in objecten. We leren dit voor zowel JavaScript als C++.
Behorende bij reader Security met toegevoegd [paginanummer]:
H2:
Je kunt uitleggen wat authenticatie is. [44]
Je kunt uitleggen wat two factor authentication (2FA) is. [44]
Je kunt uitleggen hoe een botnet wordt opgezet en wat er mee wordt gedaan. [45]
Je kunt de sterkte van wachtwoorden kunnen bepalen of vergelijken. [46]
Je kun aan de hand van een wachtwoordformaat uitrekenen hoeveel mogelijkheden maximaal moeten worden gecontroleerd in een brute force attack, zowel met als zonder gebruik van een dictionary. [46 + overig materiaal]
Je kunt uitleggen wat phishing is. [52]
H3:
Je kunt uitleggen wat social engineering is [55]
Je kunt drie methoden om te hacken beschrijven. [59]
Je kent in de context van security de principes confidentiality, integrity, availability, kunt deze uitleggen en toepassen op een casus. [61]
Je kunt werken met de analogie van Alice, Bob en Eve (of Chris). [63]
H4:
Je begrijpt hoe de versleuteling met behulp van (Caesar)substitutie werkt en je kunt er een boodschap mee versleutelen en ontcijferen [65]
Je begrijpt hoe de versleuteling met behulp van transpositie werkt en je kunt met behulp van een gegeven transpositiemethode een boodschap versleutelen en ontcijferen [66]
Je begrijpt hoe de versleuteling met behulp van Vigenèresubstitutie werkt en je kunt er met een uitgeprinte hulptabel een boodschap mee versleutelen en ontcijferen. [72]
H5
Je kunt uitleggen wat versleuteling met m.b.v. een one time pad (of: eenmalig blokcijfer) inhoudt en waarom deze manier van versleutelen, onder de juiste voorwaarden, niet te kraken is. Je kent deze voorwaarden. [76]
Je weet wat de (binaire) XOR-operatie is, op welke wijze deze een rol kan vervullen bij versleuteling en kunt deze operatie toepassen [78]
Je kunt in grote lijnen uitleggen via welke vier stappen AES-encryptie werkt. [80 + overig materiaal]
H6
Je kunt het verschil tussen HTTP en HTTPS uitleggen. [86]
Je kunt uitleggen wat het verschil is tussen symmetrische en asymmetrische cryptografie en herkennen of een vorm van encryptie symmetrisch of asymmetrisch is. [89]
Je weet hoe sleuteluitwisseling m.b.v. Diffie-Hellman plaatsvindt en kunt dit voordoen met gegeven getallen p en g. [92]
Je kunt uitleggen welke stappen in de communicatie tussen browser en webserver plaatsvindt om een versleutelde verbinding tot stand te brengen. [93]
Je kunt aan de hand van de inhoud van een website beredeneren of het onverantwoord is om deze met behulp van HTTP te benaderen. [93]
Je begrijpt hoe de versleuteling met behulp van RSA werkt en je kunt er met gegeven eenvoudige sleutels m.b.v. je grafische rekenmachine een boodschap mee versleutelen en ontcijferen. [94 + overig materiaal]
Je kunt met een gegeven getal p en q m.b.v. je grafische rekenmachine zelf een publiek en privé sleutelpaar genereren. [overig materiaal]
Je kunt uitleggen welke twee functies encryptie met een public en private sleutelpaar heeft. [94 + overig materiaal]
Je kunt uitleggen wat een ‘man-in-the-middle-attack’ is. [96]
Je kan uitleggen welke de functies van een webcertificaat heeft en welke informatie het daarvoor bevat. [97]
Je weet welke stappen een browser uitvoert om een webcertificaat te controleren. [97]
Je weet wat een stamcertificaat / rootcertificate is. [98]
Je kunt de rol van certificaat-autoriteiten beschrijven. [100]
Behorend bij Informatica Actief of overig materiaal:
Je kunt uitleggen wat een cookie is en welke functie een cookie heeft.
Je kent de kenmerken van verschillende soorten malware (virussen, wormen, Trojaans paard, ransomware). Je weet onder andere hoe ze zich verspreiden, en wat hun typische doel of effect is.
Je kunt uitleggen wat een dictionary attack is.
Je kent de algemene kenmerken van een hash(functie).
Je kunt een paar voorbeelden geven van populaire hash-algoritmen
Je kent in de context van hashing de begrippen salting en collision
Je kunt verschillende toepassingen van hashing uitleggen, zoals wachtwoordverificatie, het controleren van de authenticiteit van data of het identificeren van bestanden.
Fork de repository. Maak eventueel een account aan als je die nog niet hebt.
Elke opdracht kan je zelf testen door op de “Run” knop te drukken.
TIP: Je kan ook checken of je opdracht echt klopt door de Unit tests te runnen. Deze vind je of recht naast je console of links onder bij Tools.
TIP: Onderaan deze pagina staat een cheat-sheet voor de syntax van JavaScript.
📦️ Classes
Creëer een object genaamd book dat de volgende eigenschappen heeft: title, author, en pages. Print de title en author van het boek naar de console.
Creëer een array genaamd books die meerdere boekobjecten bevat. Elk boekobject moet de eigenschappen title, author, en pages hebben. Loop door elk boek in de array en print de title en author naar de console.
Maak een class genaamd Book met eigenschappen: title, author, en pages. Deze class moet ook een methode hebben genaamd printDetails die de title en author van het boek print. Creëer een boek van deze class, noem het myBook, en roep de printDetails methode aan.
TIP:: Je kan een methode aanroepen door de naam van de class te gebruiken, gevolgd door een punt en de naam van de methode. Bijvoorbeeld: myBook.printDetails()
Creëer een array genaamd myBooks die instanties van de Book class bevat. Loop door elk boek in de array en roep de printDetails methode aan voor elk boek.
🗺️ UML Diagrams
Je hebt keuze! Kies uit een makkelijke of moeilijke opdracht.
Pak papier of je iPad erbij om een UML diagram te tekenen.
Je bent gevraagd om een basis UML klassendiagram te ontwerpen voor een bakkerij systeem. Het systeem moet producten en klanten bijhouden.
Vereisten
Product:
Elk product heeft een unieke productcode, een naam (bijv. brood, taart, croissant) en een prijs.
Producten kunnen worden verkocht of bijgevuld.
Klant:
Klanten hebben een unieke klantID, naam en een aankoopgeschiedenis (een lijst van gekochte producten).
Klanten kunnen producten kopen.
Taak
Ontwerp een UML klassendiagram dat de klassen, attributen, methoden en relaties vastlegt op basis van de verstrekte vereisten.
Achtergrond
Je hebt de taak om een basis UML klassendiagram te ontwerpen voor een bibliotheeksysteem. Het systeem moet boeken, leners en personeelsleden bijhouden.
Vereisten
Boek:
Elk boek heeft een uniek ISBN-nummer, een titel, een auteur, een publicatiejaar en een status (bijv. beschikbaar, uitgeleend, in onderhoud).
Boeken kunnen worden geleend of teruggebracht.
Lener:
Leners hebben een unieke ID, naam, adres en een lijst van boeken die ze hebben geleend.
Leners kunnen een boek lenen, mits ze geen achterstallige boeken hebben.
Leners kunnen een boek terugbrengen.
Personeel:
Personeelsleden hebben een ID, naam, functie (bijv. bibliothecaris, onderhoud, admin) en een werkschema.
Personeel kan boeken aan het systeem toevoegen of verwijderen.
Bibliothecarissen kunnen boeken uitlenen aan leners.
Onderhoudspersoneel kan een boek markeren als in onderhoud.
Relaties:
Een lener kan meerdere boeken lenen, maar elk boek kan op een bepaald moment slechts door één lener worden geleend.
Personeel kan meerdere boeken beheren, en elk boek kan door meerdere personeelsleden worden beheerd.
Geef bij elke relatie aan of het een één-op-één, één-op-veel of veel-op-veel relatie is.
Taak
Ontwerp een UML klassendiagram dat de klassen, attributen, methoden en relaties vastlegt op basis van de verstrekte vereisten.
Klant - Product: Een één-op-veel relatie aangezien een klant meerdere producten kan kopen, maar elk product op een bepaald moment slechts door één klant wordt gekocht (per transactie).
status: String of Enum (beschikbaar, uitgeleend, in onderhoud)
Methoden:
leenUit(): Void
brengTerug(): Void
Lener:
Attributen:
lenerID: String (Uniek)
naam: String
adres: String
geleendeBoeken: Lijst
Methoden:
leenBoek(boek: Boek): Void
brengBoekTerug(boek: Boek): Void
Personeel:
Attributen:
personeelID: String (Uniek)
naam: String
functie: String of Enum (bibliothecaris, onderhoud, admin)
werkschema: String
Methoden:
voegBoekToe(boek: Boek): Void
verwijderBoek(boek: Boek): Void
leenBoekUit(boek: Boek, lener: Lener): Void
markeerOnderhoud(boek: Boek): Void
Relaties
De volgende relatie zijn met pijlen getekend:
Lener - Boek: Een één-op-veel relatie aangezien een lener meerdere boeken kan lenen, maar elk boek kan op een bepaald moment slechts door één lener worden geleend.
Personeel - Boek: Een veel-op-veel relatie aangezien een personeelslid meerdere boeken kan beheren en elk boek kan door meerdere personeelsleden worden beheerd.
Fork de repository. Maak eventueel een account aan als je die nog niet hebt.
Elke opdracht kan je zelf testen door op de “Run” knop te drukken.
Maak een basis klasse genaamd Dier met de volgende attributen: naam, leeftijd, en gewicht. Deze klasse moet ook de methoden eten() en slapen() bevatten die respectievelijk "[naam] is aan het eten!" en "[naam] slaapt!" naar de console afdrukken.
Creëer een afgeleide klasse genaamd Vogel die erft van de Dier klasse. Deze klasse moet een extra attribuut vleugelspanwijdte en een methode vliegen() hebben. De vliegen() methode moet "[naam] is aan het vliegen met een vleugelspanwijdte van [vleugelspanwijdte] meters!" afdrukken.
Maak een andere afgeleide klasse genaamd Zoogdier die ook erft van de Dier klasse. Deze klasse moet een extra attribuut vachtkleur hebben en een methode rennen(). De methode rennen() moet "[naam] is aan het rennen!" naar de console afdrukken.
Maak een instantie van de Vogel klasse genaamd "Adelaar" met een leeftijd van 5, gewicht van 8 kg, en een vleugelspanwijdte van 2,3 meter. Laat de adelaar eten, slapen, en vliegen.
Maak vervolgens een instantie van de Zoogdier klasse genaamd “Leeuw” met een leeftijd van 3, gewicht van 190 kg, en een vachtkleur van “goudkleurig”. Laat de leeuw eten, slapen, en rennen.
TIP: Gebruik het cheat sheet als je niet meer weet hoe je alles moet typen
Een Virtueel Huisdier is een digitaal karakter dat je kunt voeden, spelen en zorgen. Je huisdier heeft bepaalde eigenschappen zoals honger en geluk. Je kunt acties uitvoeren om aan de behoeften van je huisdier te voldoen. Kijk in de replit voor alle stappen.
Klaar? Ga verder met Opdracht 3 van de reguliere opdrachten:
Je gaat oefenen met alles wat je tot nu toe geleerd hebt.
In het Ziekenhuis van Sint-Elisabeth draait alles om de zorg voor patiënten. Patiëntenprivacy staat hierbij hoog in het vaandel. Elk patiëntendossier bevat naast medische gegevens zoals leeftijd, medische geschiedenis en allergieën ook een geheime patiëntencode. Deze code is strikt voor intern gebruik en wordt niet met de patiënt gedeeld.
Het ziekenhuis kent verschillende afdelingen, maar Cardiologie en Neurologie zijn de meest bezochte. Elke doctor in het ziekenhuis is een specialist. Dr. Hartman, een ervaren cardioloog met 300 uitgevoerde operaties op zijn naam, werkt op de afdeling Cardiologie. Hij is bekend om zijn efficiëntie en gebruikt de getDetails methode om snel een patiëntendossier in te zien. Aan de andere kant is er Dr. Brein van de afdeling Neurologie, die gespecialiseerd is in neurologisch onderzoek en al 200 MRI-scans en CT-scans uitgevoerd heeft. Elke doctor heeft een lijst van patienten waarvoor hij zorgt.
Mevrouw Jansen, 67 jaar oud, komt voor haar jaarlijkse hartcontrole. Ze is allergisch voor penicilline en heeft vorig jaar een hartoperatie ondergaan. Terwijl Dr. Hartman haar dossier inziet met de getDetails methode, merkt hij op dat haar geheime patiëntencode, zoals het hoort, verborgen blijft.
Maak een UML Diagram van de verschillende classes, attributen en methoden.
TIP: Denk goed na wat de relatie is tussen de verschillende classes.
Je kunt de waarde van een objecteigenschap opvragen door de naam van het object gevolgd door een punt en daarna de eigenschapsnaam.
console.log(player.name);// John
Looping Through an Array of Objects
Een for loop herhaalt een reeks instructies een bepaald aantal keer. In dit geval loopt de loop door elk object in de players array en drukt de naam en score van elke speler af.
Uitleg loop:
i = 0: Initialiseert de tellervariabele i op 0.
i < players.length: De loop blijft draaien zolang i kleiner is dan het aantal items in de players array.
i++: Verhoogt de waarde van i met 1 na elke loop.
for(vari=0;i<players.length;i++){console.log(players[i].name+' has a score of '+players[i].score);}
Creating a Class
Een klasse definieert de eigenschappen (variabelen) en gedragingen (methoden) die zijn objecten (instanties) zullen hebben.
classPlayer{name;score;level;constructor(name,score,level){this.name=name;this.score=score;this.level=level;}increaseScore(amount){this.score+=amount;}increaseLevel(){this.level++;}printDetails(){console.log(this.name+' has a score of '+this.score+' and is on level '+this.level);}}
Creating an Instance of a Class
varplayer1=newPlayer('John',100,2);
Accessing Class Properties
console.log(player1.name);// John
Inheritance in JavaScript
Inheritance stelt je in staat om een nieuwe klasse te maken die is gebaseerd op een bestaande klasse. De nieuwe klasse erft eigenschappen en gedrag van de ouderklasse.
Private variabelen (zoals #saldo) zijn alleen toegankelijk binnen de klasse waarin ze zijn gedefinieerd. Getters en Setters zijn speciale methoden die respectievelijk worden gebruikt om waarden van deze private variabelen op te vragen of in te stellen.
classBankRekening{#saldo;// Prive variabele
constructor(){this.#saldo=0;}getSaldo(){console.log("Saldo opvragen");returnthis.#saldo;}setSaldo(bedrag){if(bedrag>=0){this.#saldo=bedrag;}else{console.log("Ongeldig saldo");}}}constrekening=newBankRekening();console.log(rekening.getSaldo());// Saldo opvragen + het huidige saldo
rekening.setSaldo(-1000);// Ongeldig saldo
Door het gebruik van getters en setters kunnen we ervoor zorgen dat de regels voor toegang tot of wijziging van data worden nageleefd.
Opdrachten
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.
Je bent vrij om zelf een onderwerp voor je website te bedenken. Je docent moet het onderwerp goedkeuren. Je kunt denken aan een hobby, sport, jouw favoriete lifestyle enzovoort. Misschien is het wel mogelijk om de website te gebruiken voor een schrijfopdracht voor een ander vak.
Je krijgt van de docent startcode voor deze opdracht. Deze staat klaar in een repo op GitHub.
Je maakt code in Replit (havo) of Gitpod (vwo).
Elke week (liefst vaker) sla je je tussentijdse werk op in de repo op GitHub. Zo zorg je ervoor dat de laatste werkende versie van je opdracht steeds op GitHub staat.
Deze opdracht maak je alsof het een echt project is. De stappen uit README.md in de starterscode zijn de basis van je planning. De voortgang hou je wekelijks bij in README.md. Als het niet volgens je plan gaat, dan stuur je bij. In de les kun je hulp vragen, maar uiteindelijk moet jij zorgen dat je op tijd klaar bent en een goed project oplevert.
Het cijfer dat je voor je PO krijgt wordt vanuit verschillende invalshoeken bepaald:
minimale eisen
uiterlijk
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.
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.
Vormgeving en inhoud
Enkele punten waarop gelet kan worden bij de beoordeling van vormgeving en inhoud zijn
De website bestaat uit mimimaal 4 pagina’s.
Uit de home-page (index.html) blijkt duidelijk wat er op je website te vinden is.
De vormgeving ziet er aantrekkelijk uit en nodigt uit om verder te kijken op je website.
De inhoud is compleet en informatief, de teksten heb je niet klakkeloos gekopieerd van een andere website.
De website is goed te bekijken op gangbare browsers en computers met verschillende schermresoluties. Het is een pre als je website er op een telefoon ook goed uitziet.
De uitlijning van de verschillende onderdelen op je website is netjes.
Je respecteert auteursrecht, daar waar je voorbeelden of plaatjes van anderen gebruikt geef je tenminste in commentaar de bron aan.
…
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.
Je laat zien dat je in staat bent om zelf nieuwe dingen kunt toevoegen die voortbouwen op wat je al geleerd hebt.
Alle code (HTML / CSS / JavaScript / …) is goed leesbaar en overzichtelijk. Je springt netjes in waar dat verwacht wordt. Je gebruikt duidelijk commentaar in HTML en CSS. CSS-klassen en ID’s hebben duidelijke en begrijpelijke namen. Er is geen ongebruikte code aanwezig. Je maakt gebruik van een nette mappen structuur, met logische bestandsnamen. Ongebruikte of oude bestanden zijn verwijderd. CSS bevindt zich niet in de HTML-pagina, maar in een los CSS-bestand. Je gebruikt één CSS-bestand voor je hele website. Met commentaar geef je aan welke delen eventueel paginaspecifiek zijn. 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).
…
Inzet en planning
Je toont inzet tijdens de lessen
De planning is vooraf gemaakt, gevolgd en als nodig bijgesteld.
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, 3 .html bestanden voor de subpagina’s en style.css. 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.
Let op: In deze stap ga je nog geen plaatjes zoeken en teksten maken, dat komt in de volgende stap.
Je hebt de layout van je hoofdpagina bepaald. Leg de layout vast in een wireframe. Een wireframe is een tekening waarin elke box op je pagina als een rechthoek getekend is.
Je hebt in html voor alle onderdelen uit de layout een tag opgenomen en aan de tags heb je classes toegevoegd.
Je hebt met css ervoor gezorgd dat alle onderdelen op de juiste plaats op de pagina worden weergegeven.
Je hebt opmaak zoals kleuren, lettertypen en kaders in css toegevoegd aan de onderdelen in je layout.
Je kunt een wireframe bijvoorbeeld als volgt maken
op papier en dan fotograferen (het is dan wel lastig om het netjes te doen)
Aan het einde van stap 3 heb je een hoofdpagina met een goede indeling en opmaak. De tekst en de plaatjes zijn nog niet ingevuld, daarvoor gebruik je tijdelijk een willekeurige tekst of plaatjes zoals in de voorbeeldsite.
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.
Aan het einde van stap 4 heb je een hoofdpagina met teksten en plaatjes.
Je hebt een layout en opmaak voor al je subpagina’s gemaakt. Het is handig om voor al je sub-pagina’s dezelfde lay-out en opmaak te gebruiken.
Aan het einde van stap 5 heb je minimaal drie subpagina’s met een goede indeling en opmaak. De tekst en de plaatjes zijn nog niet ingevuld, daarvoor gebruik je tijdelijk een willekeurige tekst of plaatjes zoals in de voorbeeldsite.
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.
Aan het einde van stap 7 zijn alle kleine foutjes uit je website verdwenen.
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.
Aan het einde van stap 8 heb je een perfecte website met één of enkele opvallende functies die je zelf hebt toegevoegd.
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.
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 Replit (havo) of Gitpod (vwo). Elk teamlid heeft zijn eigen Replit of 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:
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.
Een download in zip-formaat van je opdracht mag maximaal 50 MB groot zijn.
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
Afwisselend
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
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 spel steeds moeilijker door toenemend aantal vijanden met tekenVijand
Maak andere vijanden bij toenemen tekenVijand
Laat vijanden bewegen in patronen
Maak bediening met touch of bewegen van telefoon mogelijk (zorg dat toetsenbordbediening ook blijft werken)
of bedenk zelf iets…
Uitlegvideo’s
O3. Webshop
Je gaat je eigen webshop maken!
Opdrachtbeschrijving
De opdracht in het kort is: Maak in groepjes van twee of drie 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 Replit (havo) of Gitpod (vwo). Elk teamlid heeft zijn eigen Replit of 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 (havo)
Uitlegvideo’s (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 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 4 (één leerling meer of minder mag ook) projectmatig werken aan een interactieve knikkerbaan die verbonden is met een zelfgemaakte webserver. Hierbij ga je de kennis en vaardigheden die bij het vak informatica hebt opgedaan toepassen en integreren. Je levert een eindproduct op maar je wordt ook beoordeeld op de wijze waarop dit project gemanaged wordt.
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.
Deze module is interactief: hij maakt gebruik van Arduino, heeft sensors en actuators en staat via WiFi in verbinding met een server. 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 moet uiteindelijk meer sensors en actuators krijgen. Je kunt natuurlijk meer tellers toevoegen en meer poortjes, maar je moet ook minimaal andere één sensor en één actuator van een andere soort toevoegen. Denk aan een kleurensensor, afstandssensor, snelheidsmeter, krachtsensor, gewichtsensor etc. Of als actuators: ledjes, een RGB-ledstrip, display, buzzer, bewegende onderdelen. Als je twijfelt of iets kan / mag, vraag even aan je docent.
Een kleine webpagina – een widget – waarmee je de status van je knikkerbaanmodule kunt weergeven, maar ook je knikkerbaan kunt ‘besturen’. Je krijgt dus 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 zal later door de docent opgenomen worden in een grote webpagina waar een overzicht te zien is van alle modules van de uiteindelijke knikkerbaan.
Een serverprogramma dat een brugfunctie heeft tussen de knikkerbaanmodule en de widget. Dit serverprogramma verwerkt alle informatie die opgevraagd of gegeven wordt. De informatie wordt door de server opgeslagen in een dataobject.
Een verslag waarin je je code en het proces documenteert.
De demonstratie van de knikkerbaan is op een nog nader te bepalen moment in de week van 23 januari 2023. De deadline voor het inleveren van het GitHub repository zondag 29 januari 2022 23:59.
De laatste versie van de main branch die op het moment van de deadline in GitHub staat, wordt gebruikt voor de beoordeling.
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.
GitPod - voor het ontwerpen/ programmeren van de server-app en de website. Je programmeert deze onderdelen vooral in JavaScript.
Arduino - voor het programmeren van de knikkerbaan.
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? Hoe is de totale afwerking?
Arduino - Hoe is de kwaliteit van de code? Zitten er nieuwe classes in? Hoe objectgeoriënteerd is het geheel van de code? Is de code een rommeltje of is het netjes? Werkt de knikkerbaan soepel?
Server – Is de server in staat om nieuwe informatie aan te nemen, op te slaan in het data-object en opgevraagde informatie netjes terug te geven? Is de code netjes of is het een rommeltje?
Widget - Doet de widget wat het moet doen? Hoeveel interactiviteit met de knikkerbaan wordt hierdoor mogelijk? Zitten er nieuwe classes in? Hoe objectgeoriënteerd is het geheel van de code? Is de code netjes? Is de widget mooi?
Planning - Is het project onderverdeeld in features en taken (decompositie), weergegeven in issues? Is het scrumboard altijd goed bijgehouden? Zijn er tweewekelijks evaluaties aan het verslag toegevoegd? Is er gebruik gemaakt van bug reports of andere geavanceerde ondersteunende functies?
Verslag - Bevat het verslag de aangegeven onderdelen? Hoe goed is de documentatie / uitleg van wat de knikkerbaan kan / doet?
Inzet – Welke inzet heb je getoond bij het maken van deze opdracht en het samenwerken in de groep?
Er wordt verwacht dat elk teamlid een gelijkwaardige bijdrage levert. Je mag taken verdelen, maar 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.
Hulpmiddelen
Hulpmiddelen zijn programma’s die we gebruiken om dingen te maken. Hulpmiddelen zijn dus gereedschap (Engels: tools) dat je gebruikt bij informatica.
Khan Academy is internationale online lesmethode met cursussen voor diverse onderwerpen. Wij gebruiken enkele cursussen uit de sectie Computer Programming.
Filius is een programma waarmee je netwerken kunt namaken en simuleren.
Khan Academy
Khan Academy is internationale online lesmethode met cursussen voor diverse onderwerpen. Wij gebruiken enkele cursussen uit de sectie Computer Programming.
type je school-email van google en bijbehorende wachtwoord in
Klik linksboven op courses.
Kies computer programming.
Kies de juiste cursus.
Bekijk de video’s en maak de opdrachten.
Je kunt ook de links gebruiken op diverse plaatsen op de informatica-website. Die brengen je gelijk naar de goede plek.
Veelgestelde vragen
Ik kan de cursus niet vinden
Kijk of je op de Engelstalige site zit. Als je zoekt via google, dan kom je vaak op de Nederlandstalige site, daar staat niet de cursus die wij gebruiken. De Engelstalige site vind je op
https://khanacademy.org/
De juiste cursus vind je door linksboven op de knop “courses” te klikken. Vervolgen kies je “Computer Programming”. Nu kom je op een pagina waar alle cursussen staan die we gebruiken.
Ik krijg steeds de Nederlandse in plaats van de Engelse site
De Engelstalige site vind je op
https://khanacademy.org/
. Als je daar steeds teruggezet wordt op de Nederlandse site, dan moet je in je profiel aangeven dat je voorkeur hebt voor de Engelse taal. Dit doe je als volgt: klik rechtsboven op je inlognaam, klik in het menu dat verschijnt op setting, verander Primary Language in “English”
Informatica Actief
Informatica Actief is de lesmethode voor informatica die wij gebruiken. Wij gebruiken enkele modules uit de methode.
De volgende stappen zijn een grove beschrijving, die we later nog uitwerken:
Klik op “login”.
Klik op aanmelden via Entree. Je kunt je magister inloggegevens gebruiken om in te loggen.
Als er gevraagd wordt om een mailadres, gebruik dan je schoolmail. Je krijgt een bevestingsmail met een link waar je op moet klikken. Log opnieuw in op de pagina waar de link je naartoe brengt.
Klik linksboven op het IA icoontje, je komt dan terug op de home page van de site. Voer rechts de voucher code in, inclusief de streepjes. Deze code krijg je van je docent. Je moet die voucher code elk jaar vernieuwen, anders wordt de site afgesloten.
Kies de module die we gebruiken. Letop: we doen niet alle onderdelen van een module, kijk in de lesstof welke onderdelen bij de stof horen.
Klik op aanmelden via Entree. Je kunt je magister inloggegevens gebruiken om in te loggen.
Kies de module die we gebruiken.
Je kunt ook de links gebruiken op diverse plaatsen op de informatica-website. Die brengen je gelijk naar de goede plek.
Q&A
Mijn voucher code werkt niet
Let op het verschil tussen 0 (cijfer nul) en O (hoofdletter oo) en let op het verschil tussen l (kleine letter l) en 1 (cijfer één).
GitHub
GitHub is een website waar je code kunt opslaan.
Wat is GitHub?
GitHub is een website waar je code kunt opslaan
Heel veel goede programmeurs gebruiken GitHub
Heel veel programmeeromgevingen kunnen samenwerken met GitHub
GitHub bewaart alle oude versies van je code
Code op GitHub kun je gemakkelijk delen met anderen
GitHub biedt heel veel speciale mogelijkheden om in groepen aan dezelfde code te werken
GitHub kun je zien als een soort cloudopslag voor je code. Github slaat code op in repositories. Een repository (kortweg: repo) bevat de code voor één project of opdracht. De kern van een repository zijn de bestanden.
Een account aanmaken
Ga naar
https://www.github.com/
(gebruikt Chrome of Firefox, in 21/22 werkt dit niet in Safari)
Zorg dat je het wachtwoord dat je kiest terug kunt vinden
Kies als username je voornaam met een letter van je achternaam, als die al bezet is voeg je een nummer toe. Bijvoorbeeld jamesb007
Bevestig je account door te klikken op de link in de mail die je ontvangt van GitHub
Hoe werkt code wijzigen in Github?
Er zijn veel manieren om code die je in GitHub bewaard te wijzigen. Bijna altijd maak je eerst een kopie van GitHub in je eigen ontwikkelomgeving (je computer of een online ontwikkelomgeving zoals Gitpod of Replit). Dit heet clonen (spreek uit als “kloonen”). Vervolgens wijzig en test je code die in je clone zit. Als een wijziging goed is, dan zet je die terug op GitHub. Dit wijzigen gaat in de volgende stappen:
Pull : Haal alle updates van GitHub binnen in je lokale repository.
Codeer : Maak / verander je programmeercode en test of het werkt.
Save : Sla je veranderingen op.
Probeer : Test uit of het werkt.
Stage : Zet de gewijzigde bestanden klaar voor de commit.
Message : Typ een korte maar begrijpelijke commitboodschap.
Commit : Maak een nieuw punt in je tijdlijn.
Pull : Kijk of er intussen geen nieuwe wijzigingen in GitHub zijn gemaakt door een team-genoot.
Push : Duw je commit van je ’lokale’ repository naar je (cloud) repository op GitHub.
Hoe werkt versiebeheer in GitHub?
Je kunt je git het gemakkelijkst voorstellen als een tijdlijn. De punten op de tijdlijn zijn alle versies die jij vanaf het begin hebt ‘opgeslagen’:
Hoe werkt dit? Tijdens het programmeren werk je vaak zo:
Maak / verander je programmeercode.
Sla je veranderingen op.
Test uit of het werkt.
Het maakt eigenlijk niet uit of je hierbij gebruik maakt van GitPod, Repl.it, Arduino of een andere programmeeromgeving.
Met het gebruik van git komt daar nog een stap bij: de commit. Een commit doen betekent dat je een nieuw punt aan je tijdlijn toevoegt. Dit doe je als volgt:
Zet de bestanden klaar voor de commit
Typ een korte maar begrijpelijke commitboodschap
Commit
Hoe werkt samenwerken in GitHub?
GitHub functioneert als de centrale cloudopslag waar iedereen mee synchroniseert.
Het is belangrijk om te beseffen dat je code in je programmeeromgeving en GitHub wel aan elkaar verbonden, maar niet automatisch gesynchroniseerd zijn. Je zult dit handmatig moeten doen. Maak je gebruik van GitHub, dan voer je na je commit een synchronisatie uit:
Duw je commit van je ’lokale’ repository naar je repository op GitHub.
Wanneer je samenwerkt met anderen, wil je als je later verdergaat eerst eventuele aanpassingen van je teamgenoten binnenhalen. Als zij die netjes hebben geduwd naar de repository op GitHub, kun jij die eenvoudig binnenhalen. Bij samenwerken in een team wordt stap 1 dus:
Haal eventuele nieuwe commits van je GitHub repository binnen.
Gitpod en Replit gebruiken
Gitpod en Replit (of andere online ontwikkelomgevingen) hebben een koppeling met GitHub. Dat betekent dat je vanuit Gitpod en Replit wijzigingen in GitHub kunt opslaan. Zie de
handleiding van Gitpod
en de
handleiding van Replit
op deze deze website voor meer informatie.
De Github dev omgeving gebruiken
In de Github dev-omgeving kun je meerdere bestanden tegelijk wijzigen, verplaatsen of toevoegen. Het lijkt erg op Gitpod, maar in tegenstelling tot Gitpod kan de Github dev-omgeving je code niet uitvoeren.
Je komt in de Github dev-omgeving door de punt (".") op je toetsenbord in te drukken op het moment dat je een repo ziet in GitHub.
Links in het scherm zie je al je bestanden. Enkele mogelijkheden zijn:
Downloaden van een bestand: Klik met de rechtermuisknop op een bestand en kies “download” in het menu dat verschijnt.
Toevoegen van nieuwe bestanden kan door bestanden van je bureaublad naar de dev-omgeving te slepen.
Bestanden kopieren, een andere naam geven, verplaatsen of verwijderen.
Een map maken, een andere naam geven, verplaatsen of verwijderen (letop: Github kan niet goed overweg met mappen waar geen bestanden in staan)
Als je klaar bent met wijzigen, dan commit je de wijzigingen en push je ze naar GitHub. Druk daarvoor links op het versiebeheer icoon (drie rondjes met 2 lijntjes ertussen) en gebruik het menu onder de drie puntjes dat verschijnt op de plek waar je bestanden stonden. LETOP: Als je vergeet te committen en pushen dan worden je wijzigingen niet opgeslagen!!!
De Github website gebruiken
De Github website werkt niet handig voor het aanbrengen van wijzigingen in je code, maar er zijn een aantal functies die je hier wel handig kunt doen.
Repo’s zoeken
Links in het scherm staan de repo’s die je recent en vaak gebruikt hebt. Door op een repo te klikken wordt deze geladen. De link van de repo staat bovenin je browser, deze heb je bijvoorbeeld nodig als je de repo in Gitpod of replit wilt gebruiken.
Bekijken wat er in een repo zit
Je kunt snel zien wat er in een repo zit door op de bestanden of mappen in de repo te klikken.
Bekijken wat er gewijzigd is
Je kunt alle wijzigingen in een repo terugzien. Een lijst met de laatste wijzigingen krijg je door te klikken op het aantal commits, onder de groene knop met “Code”. Van elke commit kun je zien wat er is gewijzigd, klik daarvoor op het nummer van de commit aan het einde van de regel.
Alle bestanden uit een repo downloaden
Je kunt alle bestanden in een repo downloaden in een zip-bestand. klik op de groene knop “Code” en kies in het menu dat verschijnt voor “Download ZIP”.
Git gebruiken
Veel programmeurs gebruiken git op hun computer om code op de slaan in repo’s. Git is een programma waarin alle commando’s zitten die nodig zijn om met repo’s te werken. Als je hier dagelijks mee werkt en veel commando’s uit je hoofd kent, dan werkt dit heel snel. Voor leerlingen is dit niet zo een handige methode, wij gebruiken hem daarom niet.
Veelgestelde vragen
GitHub 404 fout
Ik heb via email een link ontvangen om toegang te krijgen tot een repo, maar als ik op de link druk dan krijg ik een 404 fout. Wat moet ik doen?
Login op GitHub en druk daarna nogmaals op de link.
Replit
Replit is een online ontwikkelomgeving waarin je code kunt wijzigen en uitvoeren. We gebruiken dit op de havo.
Wat is Replit?
Replit is een online editor
Replit werkt op elk apparaat met internettoegang en een moderne webbrowser, er is geen installatie van apps of programma’s nodig
Je code wordt direct bewaard op de replit servers, inclusief oude versies
Syntax checks door middel van kleuren van code voorkomt fouten
Ondersteuning van heel veel talen: html/css/javascript, python, sqlite, php enzovoort
Je kunt code die je gemaakt hebt uitvoeren in Replit
Snel zien wat je code doet in een preview-venster
Bekijk en test je websites uitgebreid in je browser dankzij de ingebouwde webserver
Gebruik de ingebouwde shell access voor gevorderde functies
Je kunt code die je in Replit gemaakt hebt bewaren op GitHub
Heel veel goede programmeurs gebruiken GitHub
Bewaar de laatste versie van je code op veilig GitHub (minimaal 1x per week, liefst elke les)
De docent kan helpen als je code op GitHub staat
Je kunt efficiënt samenwerken in groepjes als je code op GitHub bewaart
De eerste keer Replit starten
Replit is gratis, sommige functies zoals het wijzigen van private repo’s is afgeschermd in de gratis versie.
Je hoeft voor het gebruik van Replit niets te installeren, alles werkt vanuit de browser
Gebruik bij voorkeur Chrome of anders Firefox.
Kies de juiste taal (“HTML/CSS/Javascript” voor de website en game, “Bash” voor de webshop)
Klik op de knop “Import from Github”. Replit haalt nu de laatste versie van je code uit GitHub
Wijzig je code.
Test of je code werkt, je kunt op de groene RUN knop drukken om een nieuw voorbeeld te zien.
Klik op het “version control” icoontje (een gesplitst lijntje met twee bolletjes) links in het scherm. Type een korte beschrijving van de wijziging, druk op de knop “Commit en Push”.
Als je nog verder wilt werken, gaan dan terug naar stap 4.
Veelgestelde vragen
Mijn code springt niet goed in, hoe los ik dat op?
Klik op het icoontje met de drie streepjes rechtsboven het bestand dat je aan het bewerken bent. Replit auto-format het bestand dat je aan het bewerken bent.
Mijn voorbeeld laat alleen het bovenste stukje zien, hoe los ik dat op?
Klik op het icoontje met het vierkantje en het pijltje erdoor, rechtsboven het voorbeeldvenster. Het voorbeeld wordt nu in apart venster geopend. Druk op reload als je het wilt verversen.
Bewaren op Replit lukt niet, er is een foutmelding met access
Vraag docent om hulp
Bewaren op Replit lukt niet, er is een foutmelding met conflict
Vraag docent om hulp
Hoe update ik het voorbeeldvenster?
Druk op reload in je voorbeeldvenster
Hoe kan ik terug naar de laatste versie op GitHub?
Gitpod is een online ontwikkelomgeving waarin je code kunt wijzigen en uitvoeren (en veel meer). We gebruiken dit op het vwo.
Wat is Gitpod?
Gitpod is een online editor (en veel meer)
De Gitpod editor is gebaseerd op VS Code. VS Code is een heel populaire editor onder professionele programmeurs.
Gitpod werkt op elk apparaat met internettoegang en een moderne webbrowser, er is geen installatie van apps of programma’s nodig
Je code wordt direct bewaard op de Gitpod servers, inclusief oude versiesLETOP: In de gratis versie van Gitpod wordt je code van Gitpod verwijderd als je twee weken niets doet.
Syntax checks door middel van kleuren van code voorkomt fouten
Ondersteuning van heel veel talen: html/css/javascript, python, sqlite, php enzovoort
Je kunt code die je gemaakt hebt uitvoeren in Gitpod
Snel zien wat je code doet in een preview-venster
Bekijk en test je websites uitgebreid in je browser door webserver te starten
Gebruik de ingebouwde shell access voor gevorderde functies
Je kunt code die je in Gitpod gemaakt hebt bewaren op GitHub
Heel veel goede programmeurs gebruiken GitHub
Bewaar de laatste versie van je code op veilig GitHub (minimaal 1x per week, liefst elke les)
De docent kan helpen als je code op GitHub staat
Je kunt efficiënt samenwerken in groepjes als je code op GitHub bewaart
De eerste keer Gitpod starten
Gitpod is gratis, tot maximaal 50 uur per maand.
Je hoeft voor het gebruik van Gitpod niets te installeren, alles werkt vanuit de browser
Gebruik Chrome of anders Firefox, in 21/22 zijn er problemen met een wit-scherm geconstateerd bij gebruik in Safari.
Geef Gitpod rechten in Github om wijzigingen aan te brengen in jouw repo’s (deze stap is verder uitgewerkt onder Q&A “Bewaren op Github lukt niet, er is een foutmelding met access”)
Check in Github dat je codewijzigingen zijn opgeslagen
Veelgestelde vragen
Bewaren op Github lukt niet, er is een foutmelding met access
Zet de permissies van Gitpod goed, zodat hij op jouw account in Github wijzigingen kan maken
klik op het icoontje van een poppetje linksonderin, een menu verschijnt
klik op “Gitpod: Open Acces Control”, een nieuw scherm verschijnt nadat je “Open” hebt geklikt in de popup
klik op de drie puntjes op de regel “Gitpod” en kies “Edit Permissons” in het menu dat verschijnt
Zet alle vinkjes aan in de popup die verschijnt en klik op “update permissions”
geef toestemming in github als github daarom vraagt (groene knop).
Bewaren op Github lukt niet, er is een foutmelding met conflict
Er zijn conflicten tussen jouw wijzigingen in Gitpod en de wijzigingen die gelijktijdig, meestal door een teamgenoot, gemaakt zijn in een repo. Je moet handmatig kiezen welke wijzigingen je wilt bewaren.
Commit je wijzigingen
Pull alle wijzigingen uit Github naar Gitpod
Kies in de editor welke van de wijzigingen met een conflict je wilt bewaren
Test je programma
Commit
Push je wijzigingen naar Github
Hoe open ik een voorbeeldvenster met mijn website?
Klik rechtsonder op “Ports: xxxx”, linksboven verschijnt een menu
Klik linksboven op de regel met de poort
Klik op het wereldbolletje achteraan op de regel met de poort, een popup verschijnt
Klik op “Open” in de popup.
Hoe update ik het voorbeeldvenster?
Druk op reload in je voorbeeldvenster
Hoe kan ik terug naar de laatste versie op GitHub?
Mijn code springt niet goed in, hoe los ik dat op?
Klik op [option]+[shift]+f. Gitpod auto-format het bestand dat je aan het bewerken bent.
Ik kan mijn workspace in gitpod nergens meer vinden
Als je een workspace twee weken niet gebruikt, dan wordt hij door gitpod verwijderd. Je kunt dan een nieuwe workspace maken van de laatste versie van je code die je in github hebt gecommit.
Hoe kan ik zien hoeveel gitpod gebruik ik deze maand nog over heb?
Klik linkonder op het icoontje van een poppetje (je account)
Kies “Gitpod: Upgrade subscription”, een nieuw scherm verschijnt nadat je in de popup die verschijnt op “Open” hebt geklikt
Je ziet midden boven het aantal gebruikte en resterende uren.
Beweeg met je muis over de tijd, er verschijnt een kleine popup die aangeeft van welke tot welke datum de huidige maand loopt
Mijn 50 uur gratis gitpod gebruik zijn op
Bijna alle leerlingen hebben genoeg aan 50 uur per maand. Als dit bij jouw een keer niet zo is, dan kun je dit als volgt oplossen.
Bewaar al je werk op Github vlak voordat je tijd op is.
Maak met een ander e-email adres een nieuwe Github account aan.
Vraag de docent je Github account toe te voegen aan de repo waarin je werkt.
Login bij Gitpod met je nieuwe Github-account en maak een nieuwe workspace aan met de repo waarin je werkte.
Arduino IDE is een programma waarin je code kunt schrijven en downloaden in je Arduino.
Wat is de Arduino IDE?
De Arduino IDE is een programma waarmee je je Arduino kunt programmeren.
De Arduino IDE is beschikbaar voor computers met Windows, Linux en MacOS. Het programma is niet beschikbaar voor iPads en Chromebooks.
Functies van de Arduino IDE:
code-editor
compileren
gecompileerde code uploaden naar een Arduino microcontroller (via een USB-kabel)
Installeren van het programma
Op de schoolcomputers is de Arduino-IDE al geïnstalleerd. Als je Arduino thuis wilt gebruiken, dan moet je het zelf installeren. Dat gaat als volgt.
De Arduino IDE is gratis. Je hoeft geen account aan te maken.
Installeer het programma zoals je gewend bent om andere programma’s te installeren op je computer.
Je eerste Arduino schets
Start de Arduino IDE
Sluit de Arduino met een USB-kabel aan op de laptop
Stel de juiste Arduino in. Klik in het menu op “Hulpmiddelen”->“Board”->de_Arduino_die_je_hebt. De rode Arduino’s op school zijn “Aduino Nano”.
Stel de USB-poort in waarop je de Arduino hebt aangesloten. Klik in het menu op “Hulpmiddelen”->“Poort”->kies_de_juiste_poort. Meestal is de juiste poort iets met “arduino” of “mega” en iets zonder “bluetooth”.
Maak een schets. Een programma voor je Arduino microcontroller wordt vaak een schets (Engels: sketch) genoemd. Je kunt beginnen met een voorbeeld-schets. Klik in het menu op “Bestand”->“Voorbeelden”->“Basics”->“Blink”
Compileer de schets (vertaal je code naar machinetaal die de Arduino gebruikt). Klik in het menu op “Schets”->“Verifeer/Compileer”.
Upload (verstuur naar je Arduino via de USB-kabel). Klik in het menu op “Schets”->“Upload”.
Je ziet nu een klein ledje op je Arduino die knippert.
Verander de code, bijvoorbeeld delay(1000) aanpassen in delay(200). Herhaal stap 7. Je zult zien dat de Arduino stap 6 (compileren) vanzelf opnieuw doet, omdat je de code hebt aangepast. Het ledje knippert nu sneller. Nu je stap 9 gedaan hebt, weet je zeker dat het jouw programma is dat in de Arduino zit. De Arduino onthoudt namelijk het laatste programma, ook als de stroom eraf is geweest, dus het kan zijn dat het knipperend-led programma er al door een vorige leerling in is gezet.
Extra libraries installeren
De ingewikkeldere sensoren en actuatoren die je kunt aansluiten op je Arduino, zoals displays, hebben libraries nodig om ze te kunnen programmeren. Er zijn twee manieren om libraries te installeren
libraries die meegeleverd zijn met Arduino IDE Het installeren van libraries die meegeleverd zijn met de Arduino IDE kan via het menu “Schets” -> “Bibliotheek gebruiken” -> “Bibliotheken beheren”. Het vinden van de juiste bibliotheek kan wel eens lastig zijn, vraag het de docent als je twijfelt.
libraries uit een zip-bestand Het installeren van libraries waarvan je een .zip bestand hebt kan via het menu “Schets” -> “Bibliotheken gebruiken” -> “Voeg .ZIP bibliotheek toe”. De .zip bestanden vind je vaak terug bij startcode die je van je docent krijgt of op de site van leveranciers van Arduino-hardware.
Goede biblitheken bevatten voorbeeld-code die na installatie van de bibliotheek in de Arduino IDE terug te vinden is in het menu onder “Bestand” -> “Voorbeelden”
Meer informatie
Meer informatie over de Arduino-taal vind je op https://www.arduino.cc/
klik op “documentation” -> “reference”
Meer informatie over de pinnen van je Arduino vind je op https://www.arduino.cc/
klik op “hardware” -> kies jouw Arduino -> kies het tabblad “FAQ”
Veelgestelde vragen
Hij doet het niet
Kijk of de USB-kabel goed in de Arduino zit (je voelt een kleine klik)
Kijk of je de juiste Arduino hebt aangeven in de IDE (Arduino Nano)
Kijk of je de juiste USB-poort het aangegeven in de IDE
Kijk of er foutmeldingen zijn bij uploaden en lees die aandachtig
Bij het uploaden krijg ik de melding “avrdude: ser_open(): can’t open device”…
Je hebt waarschijnlijk vergeten de juiste USB-poort te kiezen. Kies de juiste USB-poort in het menu onder “Hulpmiddelen”->“Poort”
Ik krijg één of meerdere foutmelding(en) tijdens het compileren
Je hebt fout gemaakt in de code. Bekijk de bovenste foutmelding. Kijk of je de melding begrijpt. Er staat bij op welke regel de fout gevonden is. Probeer de fout in je code op te lossen. Compileer de code daarna opnieuw.
Ik krijg een foutmelding met “undefined” tijdens het compileren
Je hebt waarschijnlijk een variabele gebruikt zonder deze te declareren of een typefout gemaakt in de naam van de variabele.
Compileren en uploaden gaat goed, maar mijn programma doet niet wat ik wil
Laat je programma berichten op de Seriële monitor zetten, zodat kunt meekijken wat er gebeurt en de fout kunt vinden. De seriële monitor van Arduino is een soort console, die je misschien kent van eerdere opdrachten.
Zet in de setup() functie de opdracht Serial.begin(115200);
Zet aan het begin van loop() functie de opdracht Serial.println("Start");
Voeg op meer nuttige plaatsen berichten toe, zodat je weet welke code wel en niet wordt uitgevoerd.
Je kunt ook de inhoud van variabelen of de uitkomst van functies afdrukken, bijvoorbeeld met Serial.println("Milliseconde na opstarten" + millis());
Open voordat je programma upload de seriele monitor door in de Arduino-IDE te klikken op het menu “Hulpmiddelen” -> “Seriële monitor”, let op dat de snelheid staat ingesteld op 115200.
Ik heb een kleine rode arduino en op de video van arduino-lessen.nl zie ik een grote blauwe arduino
Op school gebruiken wij een
Arduino Nano van het merk Suideeeno
. Deze heeft dezelfde mogelijkheden als de grote blauwe of groene
Arduino Uno
. Bij de Nano sluit je draadjes aan via het breadboard, terwijl je de draadjes bij de Uno direct in de Arduino prikt. De pinnen op beide Arduino’s werken hetzelfde, je kunt aan de namen die erbij staan zien welke je moet hebben.
Mijn display heeft andere stekkers dan het display op de video van arduino-lessen.nl
Op school gebruiken we een
display van het merk Seeeduino
. Dit display kun je met een grove kabeltje aansluiten op de rode Arduino Nano. Het grove kabeltje is het kabeltje met vier draadjes in de kleuren geel-wit-rood-zwart draadjes en twee witte plastic stekkers aan de uiteinden.
Hoe sla ik een sketch op?
Kies in het menu “Bestand” -> “Opslaan als”, kies een map en geef je schets een naam. Een schets wordt altijd opgeslagen in een map met dezelfde naam als de schets.
Filius
Filius is een programma waarmee je netwerken kunt namaken en simuleren.
Wat is Filius?
Filius is een programma waarmee je netwerken kunt bouwen en simuleren.
Installeren van het programma
Filius is gratis en je hoeft geen account aan te maken. Je kunt Filius op diverse manieren starten.
Open
Filius in GitHub
en volg de stappen uit de Readme.md. Dit werkt op (bijna) elk apparaat met een moderne webbrowser. Je browser opent GitPod en op de servers van GitPod wordt een Linux-omgeving met Filius geopend. Je kunt in GitPod inloggen met je (gratis) GitHub account.
Installeer Filius
op je eigen apparaat. Filius is beschikbaar voor Windows, MacOS en Linux.
Backup voor als optie 1) (GitPod) meer dan een paar minuten duurt om te starten: Filius in Replit
login bij replit met je GitHub account, druk op de groene Run knop in replit om Filius te starten, maximize de tab waarin Filius verschijnt.
Veelgestelde vragen
Filius verdwijnt van het scherm en ik krijg de melding “noVNC”.
Als je in de workspace in gitpod een half uur niets aanpast dan wordt de workspace afgesloten. Klikken in Filius telt niet als een aanpassing. Er is geen echte oplossing, maar wel een work-around. Om te voorkomen dat de workspace wordt afgesloten terwijl je in Filius werkt kun je elk half uur een kleine wijziging maken in je workspace, bijvoorbeeld door een puntje aan het einde van je README.md toe te voegen.