Schriftelijke voorbereiding (maximaal 2 uur) met
mondelinge verdediging (15-20 minuten).
Je krijgt 3 vragen over deel I & II. Zie hieronder voor
details.
Tijdens de eerste 20 minuten van de voorbereiding mogen
boek en nota's gebruikt worden (open boek). Je krijgt
1 wit blad om nota's nemen tijdens deze 20 minuten. Na de 20
minuten is enkel pen en papier toegelaten. Je werkt dan
verder aan de voorbereiding van de vragen.
De pdfs van boeken en powerpoints zullen elektronisch
ter beschikking zijn (PC of tablet), je moet ze dus
niet afdrukken. Je mag ze wel op papier meenemen.
Er zal 1 vraag uit deel III gesteld worden (hoofdstukken
1 t.e.m. 3 en 5 t.e.m. 9; hoofdstukken 0 & 4 dus niet).
Deze is gesloten boek. Je moet de essentie
kunnen samenvatten van de aspecten die we bestudeerd hebben in
de les. Je moet geen details kennen, maar wordt wel beloond
voor extra achtergrondinformatie (bvb zelf opgezocht). Je
krijgt 5 concepten (bvb transistor, koers/winst-verhouding,
router & modem, chip, digitaal ipv analoog,
geheugenhierarchie, process scheduler, ...) die je moet
toelichten: wat, waarom, hoe, ...
voor hoofdstuk 9 moet je een eigen mening kunnen
formuleren op de volgende vragen: Wat is volgens u
intelligentie? Is de huidige computer al intelligent? Zijn
we al goed op weg naar een intelligente computer? Wat
verwacht je in de nabije toekomst? Bij de slides op
de theoriepagina heb ik een
recent artikel gezet met een mening over AI.
hfst 4 Computerarchitectuur niet
te kennen
Je krijgt enkele oefeningen over binair rekenen (zie HOC 2 & deel III
hfst 1). Enkele voorbeelden:
int a = 60; int b = 13; hoeveel is a ^
b?
int x = 85, i = 4; Schrijf de code om de (i+1)-de bit van
x op 1 te zetten.
Hoeveel is 0x38D decimaal en hoeveel binair?
De 3 vragen van deel I & II en de vraag van deel III
staan op 10 punten. De vraag over binair rekenen staat op 5
punten.
Elke vorm van communicatie of technologische hulpmiddelen (zoals
computer) zijn uitgesloten.
Hoofdstuk 0 & 1:
Java en object-oriëntatie
Hoofdstuk 0 en 1 dienen vooral als hulp bij het leren van Java en
object-georienteerd programmeren. Java's spelregels aktief kennen (van buiten kennen dus)
- bvb: wat is een interface? wat is het
verschil tussen attribuut, lokale variabele en parameter? Wanneer
wordt de superconstructor opgeroepen? Wanneer is de default
constructor geldig?
De regels kunnen toepassen op een oefening (zie oefeningen
opgelost in de lessen, staan achteraan in boek I)
De 3 pijlers van object-oriëntatie: gebruik en nut begrijpen
wanneer toegepast op gevallen zoals in de cursus
Hoofdstuk 2-3-6-7-9:
datastructuren
De datastructuren en methodes: begrijpen - kunnen uitleggen -
naspelen (op voorbeelddata).
De methodes moet je dus niet kunnen reproduceren, maar wel
kleine varianten implementeren (zie bvb vragen doorheen de cursus)
& doorgronden (bvb wat loopt er fout als x verandert
wordt in algoritme y).
Verschillen kennen tussen datastructuren (voor- en nadelen;
performantie). Bijvoorbeeld: "Vergelijk voor de verschillende
datastructuren de tijd in functie van hun grootte om een element
toe te voegen. Is deze tijd altijd geldig (gegarandeerd)? Wat is
de worst-case performantie voor elk van de datastructuren?"
Hoofdstuk 4
De algoritmen begrijpen (niet kunnen reproduceren): hoe het werkt
en hoe het fout kan lopen of lang kan duren (bvb Newton)..
Kunnen toepassen.
Vraag: gegeven een functie, pas het algoritme toe.
Vraag: met welke functies gaat Newton snel en met welke kan en zal
het foutlopen.
Hoofstuk 5:
De algoritmen begrijpen, de code moet je niet kunnen
reproduceren.
Verschillen kennen tussen de 5 types oplossingsmethoden. Kan je
een voorbeeld geven van elk?
Je krijgt een probleem/spel en je legt een algoritme voor om het
op te lossen.
De 6 algoritmen om een zoekboom af te gaan begrijpen en kunnen
toepassen op een gegeven zoekboom of puzzel. De performantie van
de 6 algoritmen vergelijken.
Voor een zero-sum game: pas het minimax-algoritme toe op een
gegeven boom + scores. Leg het algoritme uit.
Optioneel voor goede programmeurs: 5.2.6 generieke code voor de
zoekalgoritmen die je vind bij de java-code van de
theorie en uitgelegd
in het addendum. Je mag dit als vraag kiezen, dan krijg je
een andere vraag minder.
Hoofdstuk 8: sorteren
Begrijpen en kunnen toepassen op voorbeeld (ongesorteerde array).
Ook de performantie!
Algoritmen kunnen reproduceren is niet nodig.
Verschillen tussen de 5 algoritmen begrijpen: voor- en nadelen van
elk. Wat is hun gemiddelde performantie in functie van de
arraygrootte? Is die zo voor elke array? Wat is de worst case en
best case performantie?
Verschil kennen tussen comparator & comparable.
Hoofdstuk 9:
Uitleggen hashing: waarom? wat? bedoeling (in vergelijking met
andere lijsten)? Wat wordt bedoeld met perfecte hashfunctie en
waarom spreken we hiervan?
Wat is een map? Welke implementaties ken je? wat zijn de
verschillen: voor- en nadelen?
De nadruk ligt op begrijpen, inzicht en kunnen toepassen.
Maar ook op het bewaren van het overzicht:
* Het basisprincipe Object-georienteerd programmeren: samenvoegen
van dingen (attributen & methodes) in een object die logisch
samen horen.
* Verschillen tussen de datastructuren
* Belangrijke methodes zijn: zoeken, toevoegen, verwijderen,
printen.
* De (verschillen in de) performantie van de methodes/algoritmes
Ophalen theorie-examen januari
In juni bieden we de mogelijkheid om facultatief je
punten van het 1e semester te verbeteren, indien je een 7, 8 of 9 behaalde in het eerste
semester (gemiddelde over theorie en oefeningen) en je
slaagt voor je theorie-examen met minstens
een 12/20.
Na je mondeling examen krijg je dan enkele extra vragen over de
materie van het 1e semester. Dit zullen geen specifieke
python-vragen zijn, maar algemene programmatievragen. Je mag je
Pythonboek gebruiken.
Aldus kan je je punten van het eerste semester optrekken tot
maximaal 10/20.
Regels vrijstellingen
Vanaf 12/20 heb je een
(officieuze) vrijstelling voor één van de 5 onderdelen: Python
theorie, Python oefeningen, Java project, Java theorie of Java
oefeningen. De vrijstelling geldt van 1e naar 2e zit, maar
ook van 1 jaar op een ander.
De vrijstellingen worden automatisch toegekend. Er wordt niet afgerond, 11.9 is dus geen vrijstelling. Het
heeft geen zin er om te komen zagen. We moeten ergens de streep
trekken die voor iedereen geldt.
Heb je minder dan 12 voor je project, dus geen vrijstelling, dan
moet je verder werken aan je project. Voor het project van Java
kan je ofwel verder werken aan jullie bestaand spel, ofwel een
geheel nieuw spel maken. Adresseer de commentaren die jullie
gekregen hebben tijdens de verdediging 1e zit. Het aangepaste spel
moet significant verschillen van de vorige versie (bv. uitgebreid
worden met nieuwe obstakels / vijanden / powerups / enz.). Jullie
mogen dezelfde groep behouden, alleen werken, of een nieuwe groep
vormen. Bij het maken van een nieuwe groep zijn jullie echter
verplicht om een nieuw spel te maken.
Oefeningen-examen juni
Het oefeningen-examen duurt 2 uur. Het examen is
open-boek, tijdens het examen mag je gebruik maken van het
Java-boek en de cursusnota's, maar geen opgeloste
oefeningen of internet. Tijdens het examen heb je toegang tot de
parallel-website (en dus ook tot alle cursusnota's aanwezig op de
website). De oefeningen uit de oefeningensessies bepalen wat je
moet kennen. Deze moet je vlot kunnen oplossen
(Let op: examens Java van 2014 en eerder waren gebaseerd op andere
oefeningenreeksen, en zijn daarom niet indicatief als
examenvragen)
Herexamens
Het vak bevat 5 onderdelen. Inhoudelijk is het examen
hetzelfde als eerste zit. Zie hierboven voor de regels voor de
vrijstellingen.
theorie-examen Python & oefeningenexamen Python &
Java gebeurt schriftelijk (theorie) op PC (oefeningen).
theorie-examen gebeurt adhv individuele afspraak opgesteld
door het secretariaat. Je krijgt schriftelijke voorbereiding
voor beide, met vervolgens een mondelinge verdediging.
het project regel je met de prof of een assistent.