Theorie

Hier vind je alle theorie per module.

Theorie modules

T1. Web Design met HTML en CSS

Je leert hoe je informatie op een website zet met de programmeertalen HTML en CSS.

T2. Digitale informatie

Je leert hoe een computer allerlei soorten informatie opslaat.

T3. Programmeren met Javascript

Je leert hoe je eenvoudige programma’s kunt maken met de programmeertaal Javascript en de p5js library.

T4. Algoritmen in Javascript

Je leert hoe je problemen kunt oplossen met algoritmen, je gebruikt daarbij stroomdiagrammen en de programmeertaal Javascript.

T5. Databases met SQL

Je leert hoe je heel veel informatie kunt bekijken en bewaren in databases met de programmeertaal SQL.

T6. Robotica met Arduino

Je leert hoe je met behulp van toestandsgrammen kunt programmeren. Je gebruikt daarbij het Arduino platform.

T7. Netwerken met IP

Je leert hoe het internet van binnen werkt.

T8. Objectgeoriënteerd Programmeren

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++.

T9. Security

Over de beveiliging van computers en data.

Extra: OOP voor 6vin2

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.

Hulpmiddelen

We gebruiken in deze module de volgende tools:

  1. Khan Academy

Oefeningen

Khanacademy, module Intro to HTML/CSS

  1. Intro to html
  2. Intro to css
  3. More html tags
  4. Css text properties
  5. Web development tools (geen toetsstof)
  6. CSS layout
  7. More css selectors
  8. Other ways to embed css (geen toetsstof)
  9. Further learning (geen toetsstof)

Naslagmateriaal

Uitleg (havo)

Uitleg (vwo)

Leerdoelen voor de toets

HTML

  1. 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
  2. Je kent het principe van tags zoals die in HTML gebruikt worden.
  3. Je kent de basisstructuur van een HTML-pagina.
  4. 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.
  5. Je kent de volgende tags: <html>, <head>, <body>, <p>, <ol>, <ul>, <li>, <h1> t/m <h6>, <br/>, <img> met src en alt, <a> met href, <div>, <table>, <tr>, <th>, <td>. Je kunt uitleggen wat deze tags doen en hoe je kunt ze gebruiken.
  6. Je kunt eenvoudige stukken HTML interpreteren, dat wil zeggen dat je kunt uitleggen hoe een webbrowser omgaat met een eenvoudig stuk HTML.
  7. 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

  1. Je kunt uitleggen wat er binnen de informatica met Separation of Concern wordt bedoeld en hoe dat op HTML en CSS van toepassing is.
  2. 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.
  3. Je kunt CSS selectors maken die bestaan uit een tag, class of id of een combinatie daarvan.
  4. Je kunt de voorrangsregels tussen tags, classes en id’s toepassen en je kunt daarbij aangeven welke selectors meer of minder specifiek zijn.
  5. Je kent van de volgende properties de betekenis en kunt deze toepassen in CSS: font-size, width, height, color, background-color.
  6. Je kunt werken met kleuren en doorzichtigheid in CSS, door gebruik te maken van kleurnamen en rgba().
  7. Je kunt de werking van boxen in CSS toelichten. Je kunt daarbij uitleggen wat de content, padding, border en margin van een box zijn.
  8. 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.
  9. Je kunt wijzigingen aanbrengen in een eenvoudig stuk CSS, de properties die daarvoor nodig zijn worden beschreven in de vraag.

Oefentoets

Een oefentoets voor deze module staat in Woots .

Verdieping

  1. CSS Battle ( https://cssbattle.dev/) .

T2. Digitale informatie

Je leert hoe een computer allerlei soorten informatie opslaat.

Hulpmiddelen

We gebruiken in deze module de volgende tools:

  1. Informatica Actief

Oefeningen

Informatica Actief, module informatie digitaal

  1. Digitale afbeeldingen, pixels met kleur (alleen theorie 1 t/m 7)
  2. Bits en Bytes (alleen theorie 1 t/m 5)
  3. Talstelsels: decimale en binaire getallen (alleen theorie 1 t/m 9)
  4. Rekenen met binaire getallen (overslaan)
  5. Digitale tekst (alleen theorie 1 t/m 9)
  6. Verschillende soorten afbeeldingen (alleen theorie 1 t/m 12)
  7. Bewegend beeld en geluid (alleen theorie 1 t/m 7)
  8. Digitale informatie in bestanden (alleen theorie 1 t/m 5)
  9. Diagnostische toets (overslaan)

Beeldbewerking

  1. Beeldbewerking oefeningen (powerpoint presentatie) met photopea.com

Uitleg (havo)

Uitleg (vwo)

Naslagmateriaal

Leerdoelen voor de toets

Informatie digitaal

  1. Je kunt binaire getallen omzetten naar decimale getallen en andersom.
  2. Je kunt binaire getallen omzetten naar hexadecimale getallen en andersom.
  3. Je kunt decimale getallen omzetten naar hexadecimale getallen en andersom.
  4. Je kunt uitrekenen uit hoeveel bits of bytes een kilobyte, megabyte, gigabyte of terabyte bestaat.
  5. Je kunt uitleggen waarin de klassieke maten van kilo-, mega-, gigabyte etc. afwijken van de SI-maten.
  6. Je weet wat het verschil is tussen ASCII en Unicode en kunt uitleggen hoe ze tekst digitaliseren.
  7. Je kunt uitleggen hoe het RGB-kleurenmodel en het CMYK-kleurmodel werken, je kunt de verschillen tussen beide kleurmodellen benoemen en je kunt de modellen gebruiken om kleuren te maken en kleuren te veranderen.
  8. Je kent de betekenis van het begrip resolutie
  9. Je kunt uitleggen hoe plaatjes worden opgeslagen door een computer
  10. Je kent verschillende bestandsformaten voor plaatjes, zoals bmp, gif, jpg en png en de eigenschappen waarin ze van elkaar verschillen
  11. Je kunt aangeven welk bestandsformaat voor plaatjes het best geschikt is voor een beschreven situatie
  12. Je kunt uitleggen hoe muziek wordt opgeslagen door een computer
  13. Je kunt uitleggen hoe video wordt opgeslagen door een computer
  14. Je kunt uitleggen wat een extensie is en waar deze voor dient
  15. 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.
  16. Alleen vwo: Je kunt op basis van een beschrijving van een compressie algoritme een klein voorbeeld comprimeren en decomprimeren.

Beeldbewerking (deze leerdoelen gelden NIET voor schooljaar 23/24)

  1. Je kunt het aantal pixels van een plaatje aanpassen
  2. Je kunt een plaatje bijsnijden (Engels: crop)
  3. Je kunt een plaatje in diverse bestand-formaten omzetten (bijvoorbeeld .jpg, .png, .gif)
  4. Je kunt basisinstellingen van de kleuren in een plaatje aanpassen (bijvoorbeeld contrast)
  5. Je kunt de achtergrond van een plaatje transparant maken, een vast kleur maken, vervangen door een ander plaatje.
  6. Je begrijpt wat je kunt doen met lagen en je kunt dat uitleggen aan de hand van een gegeven situatie.

Oefentoets

Een oefentoets voor deze module staat in Woots .

T3. Programmeren met Javascript

Je leert hoe je eenvoudige programma’s kunt maken met de programmeertaal Javascript en de p5js library.

Hulpmiddelen

We gebruiken in deze module de volgende tools:

  1. Khan Academy

Oefeningen

Khanacademy, module Intro to JS

  1. Intro to programming
  2. Drawing basics
  3. Coloring
  4. Variables
  5. Animation basics
  6. Interactive programs
  7. Becoming a community coder (overslaan)
  8. Bonus: Resizing with variables
  9. Text and strings
  10. Functions (lang)
  11. Logic and if Statements (lang)
  12. Debugging programs (kort)
  13. Looping (lang)
  14. Writing clean code (kort)
  15. Arrays (lang)
  16. Objects (overslaan)
  17. Object-Oriented Design (overslaan)
  18. Becoming a better programmer (overslaan)

Verdiepingsopdrachten

  1. My Pong Game voor als je oefeningen 1 t/m 11 af hebt
  2. My Galaxy voor als je oefeningen 1 t/m 15 af hebt

Uitleg

Naslagmateriaal

Leerdoelen voor de toets

Programmeertalen

  1. Je kunt uitleggen wat machinetaal is.
  2. Je kunt uitleggen wat een compiler is.
  3. Je kunt uitleggen wat een library is.
  4. Je kunt drie hogere programmeertalen opnoemen.
  5. Je kunt uitleggen wat er binnen de informatica bedoeld wordt met het begrip grammatica.
  6. Je kunt uitleggen wat een variabele is.
  7. Je kunt uitleggen wat declareren en definiëren van een variabele is.
  8. Je kunt uitleggen wat een datatype is
  9. Je kent de datatypen boolean, number en string en begrijpt welke waarden erin opgeslagen worden
  10. Je kunt uitleggen wat controlestructuren zijn en je kent de volgende voorbeelden: if-statement, for-loop, while-loop.
  11. Je kunt uitleggen waar abstractie voor dient.
  12. Je kunt uitleggen wat een functie is.
  13. Je kunt uitleggen wat declareren, definiëren en aanroepen van een functie is.
  14. Je kunt uitleggen wat een parameter van een functie is.
  15. Je kunt uitleggen wat het resultaat van een functie is.
  16. Je kunt uitleggen wat het verschil is tussen globale en lokale variabelen.
  17. Je kunt de leesbaarheid van code verbeteren door gebruik te maken van commentaar, lay-out en structuur.

Javascript

  1. je kunt commentaarregels gebruiken.
  2. je kunt aangeven welke waarden bepaalde variabelen hebben aan het einde van een stukje computercode.
  3. je kunt op basis van een stukje code zelf de bijbehorende schermuitvoer tekenen.
  4. je kunt met behulp van naslagmateriaal zelf computercode schrijven om een vraag te beantwoorden.
  5. je weet hoe je in een tekening animatie aanbrengt.
  6. je begrijpt wat variabelen zijn en hoe je deze kunt gebruiken.
  7. je begrijpt wat een logische expressie is en hoe je deze kunt gebruiken.
  8. je begrijpt hoe de logische operatoren “en”, “of” en “niet” werken en je kunt deze gebruiken.
  9. 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.
  10. je weet wat de datatypen boolean, number en string zijn en kunt deze gebruiken.
  11. je begrijpt hoe een if-statement werkt en hoe je deze kunt gebruiken.
  12. je begrijpt hoe een while-loop en een for-loop werken en hoe je deze kunt gebruiken.
  13. je kunt een while-loop omzetten naar een for-loop en andersom.
  14. je begrijpt hoe een for-loop in een for-loop werkt en hoe je dit kunt gebruiken.
  15. je begrijpt wat arrays zijn en hoe je deze kunt gebruiken.
  16. je kunt een array doorlopen met een for-loop.
  17. Alleen vwo: je kunt een twee-dimensionale array doorlopen met een for-loop in een for-loop
  18. je begrijpt hoe een functie werkt en hoe je deze kunt gebruiken.
  19. je begrijpt wat parameters van een functie zijn en hoe je deze gebruikt.
  20. je begrijpt wat het resultaat van een functie is en hoe je dit gebruikt.
  21. je begrijpt wat er op het syntaxblad Javascript staat en dit kunt toelichten en gebruiken.

Oefentoets

Een oefentoets voor deze module staat in Woots .

T4. Algoritmen in Javascript

Je leert hoe je problemen kunt oplossen met algoritmen, je gebruikt daarbij stroomdiagrammen en de programmeertaal Javascript.

Hulpmiddelen

We gebruiken in deze module enkele online hulpmiddelen voor het tekenen van schema’s en het maken van oefeningen.

Oefeningen

Eenvoudige algoritmen

  1. Stroomdiagrammen lespresentatie, met codevoorbeelden in replit (wordt misschien herzien)
  2. Programmeeropdrachten in Github (tevens beschikbaar in Woots )

Uitleg

Leerdoelen voor de toets

Eenvoudige algoritmen

  1. je kunt uitleggen wat een algoritme is
  2. je kunt uitleggen wat een flowchart is en waarvoor je deze gebruikt
  3. je kunt flowcharts lezen, dat betekent dat je de output van een flowchart kunt bepalen als de input en de flowchart gegeven worden
  4. 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.
  5. je kunt een flowcharts omzetten naar JavaScript code en JavaScript code kunnen omzetten naar een flowchart.

Oefentoets

Een oefentoets voor deze module staat in Woots .

T5. Databases met SQL

Je leert hoe je heel veel informatie kunt bekijken en bewaren in databases met de programmeertaal SQL.

Hulpmiddelen

We gebruiken in deze module de volgende tools:

  1. Khan Academy

Oefeningen

Khanacademy, module Intro to SQL

  1. SQL basics
  2. More advanced SQL queries
  3. Relational queries in SQL (lang)
  4. Modifying databases with SQL
  5. Further learning in SQL (overslaan)

Ruimtedatabase (alleen vwo)

  1. Opgaven met antwoorden in Woots
  2. Uitlegvideo’s met antwoorden

Uitleg

Naslagmateriaal

Leerdoelen voor de toets

Databases theorie

  1. Je kunt uitleggen wat een relationele database is.
  2. alleen vwo: Je kunt gegevens analyseren en structureren en relaties vastleggen in een multipliciteitsdiagram.
  3. alleen vwo: Je kunt gegevens analyseren en structureren en vastleggen in een strokendiagram.
  4. Je kunt een database voorzien van een voorbeeldpopulatie (dit betekent dat je gegevens in velden kunt invullen).
  5. 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.
  6. Je kunt uitleggen wat redundantie is.
  7. Je kunt uitleggen wat normaliseren is.
  8. 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).
  9. Je kunt voor een gegeven situatie een voorstel te doen voor een genormaliseerde database structuur.
  10. Je kunt aangegeven welke (combinaties van) velden uniek zijn / als sleutel kunnen dienen.
  11. Je weet waarvoor de primaire sleutel dient.
  12. Je weet wat een verwijzende sleutel is.
  13. Je weet hoe verwijzingen tussen verschillende tabellen met behulp van sleutels werken.
  14. Je weet hoe in een database wordt aangegeven dat een veld geen waarde bevat.

Databases programmeren in khan:

  1. Je kunt met CREATE TABLE een gegevensmodel omzetten in een database.
  2. Je kunt met INSERT rijen aan een tabel toevoegen.
  3. alleen vwo: Je kunt met DELETE rijen verwijderen uit een tabel.
  4. Je kunt met SELECT gegevens uit een relationele database opvragen.
  5. Je kunt de opgevraagde gegevens uit een relationele database oplopend en aflopend sorteren.
  6. Je kunt voorwaarden stellen aan de op te vragen gegevens uit de database (WHERE) en gebruikmaken van operatoren (=, <, >, >=, <=, <>).
  7. Je kunt gebruikmaken van LIKE bij het stellen van voorwaarden in de query.
  8. alleen vwo: Je kunt gebruik maken van een subquery in combinatie met de voorwaarde IN.
  9. Je kunt gebruikmaken van samengestelde voorwaarden (AND, OR) bij het stellen van voorwaarden in de query.
  10. Je kunt gebruikmaken van omgedraaide voorwaarden (NOT) bij het stellen van voorwaarden in de query.
  11. Je kunt gebruikmaken van NULL bij het stellen van voorwaarden in de query.
  12. Je kunt gebruikmaken van aggregatiefuncties (COUNT, SUM, MAX, MIN, AVG) bij het opstellen van query.
  13. Je kunt gebruikmaken van GROUP BY bij het groeperen van de resultaten van een query.
  14. Je kunt voorwaarden stellen aan op te vragen gegroepeerde gegevens met HAVING
  15. alleen havo: Je kunt bij een query over 2 of 3 tabellen de JOIN toepassen
  16. alleen vwo: Je kunt bij een query over 2 of meer tabellen de JOIN toepassen
  17. Je kunt een query maken met JOIN van een 1-op-n relatie
  18. Je kunt een query maken met JOIN van een n-op-m relatie
  19. 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.

Oefentoets

Een oefentoets voor deze module staat in Woots .

T6. Robotica met Arduino

Je leert hoe je met behulp van toestandsgrammen kunt programmeren. Je gebruikt daarbij het Arduino platform.

Hulpmiddelen

We gebruiken in deze module de volgende tools:

  1. Arduino IDE

Oefeningen

Arduino-lessen.nl, les 1 t/m 5

  1. Knipperende LED
  2. Knipperend LED op breadboard
  3. Fadende LED op breadboard met PWM
  4. Knippersnelheid regelen met potmeter
  5. LED schakelen met drukknop
  6. Afstand meten met ultrasoon sensor (geen toetsstof)

Zonder arduino-lessen.nl

  1. Grove I2C LCD met tekst en symbolen, zie uitlegvideo op deze pagina met libary “Grove-LCD RGB Backlight” (geen toetsstof)
  2. Passive speaker voor muziek, zie uitleg op https://docs.arduino.cc/built-in-examples/digital/toneMultiple (geen toetsstof)

Meer lessen Arduino-lessen (geen toetsstof)

Presentaties

  1. Lespresentatie toestandsdiagrammen
  2. Lespresentatie Arduino basics

Uitleg

Naslagwerken

  1. Microcontroller reader (alleen de paragrafen 1.1, 2.1 t/m 2.9, 3.2, 4.1 t/m 4.3, 5.1 t/m 5.6 en 6.4)

Leerdoelen voor de toets

Arduino

  1. Je kunt uitleggen wat een microcontroller is.
  2. Je weet wat de setup() en loop() functies in een Arduino sketch zijn.
  3. Je weet hoe je digitale en analoge poorten aanstuurt of uitleest
  4. Je weet hoe je delay() gebruikt en wat de voor- en nadelen van deze functie zijn.
  5. Je begrijpt wat de functie millis() doet.
  6. Je kunt de functie millis() gebruiken als vervanging van delay().
  7. Je weet hoe je een PWM signaal kunt creëren
  8. Je kunt uitleggen wat een PWM signaal is en kunt daarbij de term duty cycle correct gebruiken en uitleggen
  9. Je weet hoe een breadboard werkt
  10. Je weet hoe je een variabele weerstand aansluit op een analoge poort van Arduino
  11. Je weet hoe je een LED aansluit op een digitale poort van Arduino
  12. Je weet hoe je een knop aansluit op een digitale input poort van Arduino
  13. Je weet wat het verschil is tussen een sensor en een actuator.
  14. Je kunt een aansluitschema maken van een systeem dat beschreven is in een stuk tekst. Het aansluitschema bevat een Arduino, actuatoren en sensoren.
  15. Je kent de volgende datatypen: string, int, float
  16. Je kunt Arduino code aanpassen om tot een gevraagde oplossing te komen.
  17. Je kunt korte programma’s maken die een knipperende LED, gedimde LED, knop en potmeter gebruiken.
  18. Je hebt voorkennis van programmeren op het niveau van de vierde klas.

Toestandsdiagrammen

  1. Je kunt aan de hand van een gegeven toetstandsdiagram aangeven hoe een systeem zich gedraagt.
  2. Je kunt een toestandsdiagram maken van een systeem dat beschreven is in een stuk tekst.
  3. Je kunt een toestandsdiagram omzetten in Pseudocode.
  4. Je kunt pseudocode omzetten in Arduino-code.

Naslagmateriaal

Syntaxblad

Oefentoets

Een oefentoets voor deze module staat in Woots .

T7. Netwerken met IP

Je leert hoe het internet van binnen werkt.

Hulpmiddelen

We gebruiken in deze module de volgende tools:

  1. Informatica Actief
  2. Filius

Oefeningen

Informatica Actief, keuzemodule netwerken, versie netwerken nieuwe stijl

  1. Informatica Actief, keuzemodule netwerken (1.1, sla 1.2 over)
    In plaats van Filius te installeren, gebruik je Filius in Gitpod
  2. Informatica Actief, keuzemodule netwerken (2.1 t/m 2.17)
  3. Informatica Actief, keuzemodule netwerken (3.1 t/m 3.8)
  4. Informatica Actief, keuzemodule netwerken (4.1 t/m 4.3)
  5. Informatica Actief, keuzemodule netwerken (5.1 t/m 5.5)

Uitleg

Naslagmateriaal

  1. Netwerken lespresentatie (Powerpoint presentatie)
  2. How the internet works (video’s)
  3. Theorie netwerkprotocollen (alleen hoofdtstuk 5, dit is best pittig, aanvulling op uitleg in de les).

Leerdoelen voor de toets

Netwerken

  1. Je kunt met behulp van een berekening kunt aantonen wat de hoofdreden is om het IP versie 4 protocol te vervangen door IPv6
  2. Je kunt het verschil uitleggen tussen een LAN en een WAN.
  3. Je kent de belangrijkste verschillen tussen communicatie over koperen verbindingen, glasvezelverbindingen en draadloze verbindingen
  4. Je weet wat bij computernetwerken de termen lag / latency / latentie en bandbreedte betekenen en hoe ze de snelheid van een netwerkverbinding beïnvloeden.
  5. Je kunt uitleggen waarvoor het het OSI-model is ontwikkeld
  6. Je begrijpt het OSI-model / IP-stack. Je kunt de applicatielaag, transportlaag, netwerklaag, datalinklaag en fysische laag uitleggen.
  7. Je kunt twee voordelen benoemen van het werken met een lagenmodel zoals het OSI-model of de IP-stack.
  8. Je weet wat een MAC-adres is, bij welke laag het hoort en waarvoor het wordt gebruikt.
  9. Je weet wat ARP is en waarvoor het dient.
  10. Je weet wat het MAC broadcast adres is en waarvoor het dient.
  11. Je weet wat een IP-adres is, bij welke laag het hoort en waarvoor het wordt gebruikt.
  12. Je kunt met behulp van routeringstabellen het gedrag van een router bij een inkomend bericht beschrijven.
  13. Je weet wat het IP broadcast adres is en waarvoor het dient.
  14. Je weet wat een subnetmasker is en waarvoor dit dient.
  15. Je kunt met behulp van het subnetmasker uitrekenen hoeveel apparaten er in een netwerk verbonden kunnen zijn.
  16. Je weet wat het nadeel is van een subnetwerk met heel veel apparaten.
  17. Je kunt de twee belangrijkste verschillen tussen TCP en UDP benoemen
  18. Je weet wat TCP-poorten zijn en waarvoor deze dienen
  19. Je kunt beschrijven hoe een pakketje van een apparaat in het ene subnet naar een apparaat in het andere subnet reist.
  20. Je kent de functie van de volgende netwerkapparaten: router, modem, switch, wireless access point, repeater, firewall
  21. Je kunt beredeneren tot op welk niveau van het OSI-model een netwerkapparaat werkzaam is.
  22. Je kunt bij schematische weergave van een netwerk de verschillende netwerkapparaten herkennen en benoemen en IP-adressen en subnetmaskers bepalen of toewijzen.
  23. Je weet wat de functie van een firewall is.
  24. Je begrijpt wat een DNS is en waarvoor deze dient
  25. 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:

T8. Objectgeoriënteerd Programmeren

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++.

Theorie

Opdrachten

Naslagmateriaal (ook beschikbaar bij toets)

Leerdoelen

  • Je weet wat het verschil is tussen een klasse en object.
  • Je weet wat attributen en methodes van objecten zijn.
  • Je weet wat inkapseling is.
  • Je kunt uitleggen wat het verschil is tussen private en public attributen en methodes en dit principe toepassen.
  • Je kunt op basis van een beschrijving in combinatie met stukje code beslissen welke attributen je private en welke je public zou maken.
  • Je weet wat getter- en setter-methodes zijn.
  • Je kunt een beargumenteerde keuze maken om voor een attribuut wel / niet gebruik te maken van getter en / of setter.
  • Je kunt zelf code voor getter- en settermethodes maken.
  • Je kunt uitleggen wat ‘overerving’ betekent en dit principe toepassen.
  • Je begrijpt de termen superklasse en subklasse.
  • Je begrijpt wat een abstracte klasse is.
  • Je kunt in JavaScript objectgeoriënteerde code lezen en schrijven (eerdere kennis wordt verondersteld).
  • Je kunt in C++ (Arduino-code) objectgeoriënteerde code lezen.
  • Je kunt zelfstandig objectdiagrammen en (ontwerp)klassendiagrammen maken.
  • Je kunt een ontwerpklassendiagram maken met behulp van een beschrijving van systeem.
  • Je kunt een (ontwerp)klassendiagram omzetten naar JavaScript en andersom. Je bent hierbij in staat om relaties tussen klassen om te zetten naar code.
  • Je kunt C++ (Arduino-code) omzetten naar (ontwerp)klassendiagram.
  • Je kent drie voordelen en drie nadelen van objectgeoriënteerd programmeren.

Oefentoets

T9. Security

Over de beveiliging van computers en data.

Theorie

Naslagmateriaal toets

Uitlegvideo’s

Onderstaande video’s horen niet bij de verplichte stof, maar kunnen wel helpen de stof te begrijpen of extra informatie geven als je meer wilt weten.

Leerdoelen

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.

Oefenopgaven

Extra: OOP voor 6vin2

❗️ 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.

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.

UML Diagram

Je bent gevraagd om een basis UML klassendiagram te ontwerpen voor een bakkerij systeem. Het systeem moet producten en klanten bijhouden.

Vereisten

  1. Product:

    • Elk product heeft een unieke productcode, een naam (bijv. brood, taart, croissant) en een prijs.
    • Producten kunnen worden verkocht of bijgevuld.
  2. 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Oplossingen

Makkelijk
Moeilijk

🌳 Overerving (Inheritence)

Maak de opdrachten van de volgende replit:

https://replit.com/@Krisvan1/Inheritence#index.js

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.

🕵️ 🥏 Inkapseling

Maak de opdrachten van de volgende replit: https://replit.com/@Krisvan1/PrivateGetSet#index.js

TIP: Gebruik de instructies om de code te testen

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:

https://informatica.emmauscollege.nl/theorie/objectoriented_verwerkingsopdrachten/#opdracht-3

🚑️ Oefenopdracht

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. Elke doctor kan ook een patient onderzoeken

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.

Kijk je UML diagram na

Oplossing UML
Maak gebaseerd op je *nagekeken* UML diagram de javascript code aan die nodig is om dit systeem te maken.

Fork hiervoor de volgende replit: https://replit.com/@Krisvan1/ZiekenhuisSysteem#index.js

Natuurlijk, laten we dat aanpakken.


🗒️ JavaScript Cheat Sheet

Creating an Object

Een object is een verzameling van sleutel-waarde paren. In dit voorbeeld bevat het object player drie sleutels: name, score en level.

var player = {
    name: 'John',
    score: 100,
    level: 2
};

Creating an Array of Objects

Arrays zijn geordende lijsten van items. Hier hebben we een array van objecten.

var players = [
    {
        name: 'John',
        score: 100,
        level: 2
    },
    {
        name: 'Jane',
        score: 150,
        level: 3
    }
];

Accessing Object Properties

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(var i = 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.

class Player {
    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

var player1 = new Player('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.

class Goalkeeper extends Player {
    savedGoals;
  
    constructor(name, score, level, savedGoals) {
        super(name, score, level);
        this.savedGoals = savedGoals;
    }

    printGoalkeeperStatistics() {
        console.log('Saved Goals: ' + this.savedGoals);
    }
}

Prive variabelen & Getters en Setters

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.

class BankRekening {
    #saldo; // Prive variabele
  
   constructor() {
        this.#saldo = 0;
   }

    getSaldo() {
        console.log("Saldo opvragen");
        return this.#saldo;
    }

    setSaldo(bedrag) {
        if (bedrag >= 0) {
            this.#saldo = bedrag;
        } else {
            console.log("Ongeldig saldo");
        }
    }
}

const rekening = new BankRekening();
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.

Powerpoints

Antwoorden oefeningen