6 ECTS credits
180 u studietijd
Aanbieding 1 met studiegidsnummer 1002198BNR voor alle studenten in het 1e semester met een verdiepend bachelor niveau.
Deze cursus confronteert de student met moderne, in de praktijk gebruikte systeem-programmeertalen (in casu C en nazaten) en toont aan in hoeverre concepten en technieken die geïntroduceerd werden in inleidende cursussen zoals “Structuur van Computerprogramma’s I” voorkomen in, of kunnen getransponeerd worden naar, dit soort talen. Daarnaast worden concepten geïntroduceerd die uniek zijn aan laag-niveaul programmeertalen zoals manueel geheugenbeheer en pointers.
Onderwerpen die behandeld worden tijdens de les:
Tijdens de lessen zullen slides geprojecteerd worden. Deze slides zullen op voorhand beschikbaar gemaakt worden op Canvas. Bijkomende cursusnotities en voorbeeldprogramma’s die getoond worden tijdens de lessen zullen ook beschikbaar gemaakt worden op Canvas.
Daarnaast worden de volgende referentieboeken aangeraden:
- The C Programming Language (Kernighan and Ritchie)
- Pointers on C (Kenneth Reek)
Deze cursus is een introductie tot laag-niveau programmeertalen.
Er is een sterke focus op de manier waarop computerprogramma’s gestructureerd en ontwikkeld kunnen worden in talen waarvan de uitvoering niet langer afhangt van een virtuele machine of een interpreter, en waarin de ontwikkelaar manueel resources zoals het geheugen moet beheren. De cursus focust op het bestuderen van C en een aantal concepten van hogere programmeertalen.
In hoofdzaak wordt de vergelijking gemaakt tussen Scheme/Python en C, maar andere talen vervolledigen de vergelijking. Alternatieve oplossingen voor laag-niveau programmeren met een geheugenveilige taal worden ook besproken, waarbij er wordt ingezoomd op Rust.
Tegen het einde van de cursus beheerst de student veel voorkomende programmeerconcepten, zoals die bestaan in laag-niveau talen zoals C en diens nazaten. De student heeft op een theoretisch niveau kennis en inzicht in pointers, manueel geheugenbeheer en stack-based runtimes. De student heeft ook de benodigde woordenschat om in een discussie deze onderwerpen uit te leggen en te vergelijken. De student is in staat om software te ontwikkelen gebruik makende van de compilers en debuggers die aangeboden worden door traditionele Unix-gebaseerde omgevingen voor C. De student is in staat om verworven kennis en inzicht in praktijk te brengen en in dit medium programmeertaken af te werken die voldoen aan een gegeven lijst van objectieve kwaliteitseisen.
Studenten moeten in staat zijn om duidelijk te communiceren over de bestudeerde onderwerpen. Dit wordt gedaan aan de hand van een mondelinge verdediging van het project. De studenten moeten hun code en oplossing duidelijk kunnen uitleggen, onder toezicht kunnen herimplementeren, en hun werkwijze kunnen verdedigen.
Nadat ze de cursus afgewerkt hebben, moeten studenten de benodigde fundamentele kennis verworven hebben om dieper in te gaan op onderwerpen die laag-niveau programmeervaardigheden vereisen (bv. systeemprogrammeren, implementatie van programmeertalen).
De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Schriftelijk bepaalt 50% van het eindcijfer
ZELF Praktijkopdracht bepaalt 50% van het eindcijfer
Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:
Binnen de categorie ZELF Praktijkopdracht dient men volgende opdrachten af te werken:
Studenten zullen beoordeeld worden op basis van een schriftelijk examen over de theorie (50%) en een programmeerproject dat individueel moet voltooid worden (50%). Het project bestaat uit twee delen: een kleine programmeertaak die tijdens WPO-sessies wordt afgewerkt (15%) en een groter projectdeel dat individueel mondeling verdedigd moet worden (35%). In de tweede zittijd wordt de programmeertaak van 15% ingepland tijdens de examenperiode in een oefeningexamen.
Studenten moeten minstens 7/20 halen in elk evaluerend onderdeel om een score te krijgen voor de hele cursus. Als een van de scores voor een evaluerend onderdeel lager is dan 7, wordt de laagste score gebruikt voor het eindcijfer. Afwezigheid op één van deze onderdelen houdt een afwezigheid in voor de hele cursus. Deelcijfers voor het examen of project, als de student voor dit onderdeel minstens 10/20 behaalt, worden overgeheveld naar de tweede zittijd. Afstand doen van deelcijfers is niet mogelijk.
Het schriftelijke examen is een gesloten boek examen waarin de kennis en het inzicht van de student met betrekking tot de onderwerpen die besproken werden in de cursus (zie inhoudstafel) getest worden. De student wordt verwacht om de belangrijke aspecten van een onderwerp te synthetiseren alsook om korte programmeertaken af te werken; b.v., vervolledig een programma dat voldoet aan een gegeven set van objectieve kwaliteitseisen, analyseer een deel van een programma ten opzichte van welbepaalde criteria, enz.
Het programmeerproject zal bekendgemaakt worden met specificaties over het eindproduct. Het project zal bestaan uit verschillende fases die op voorhand gespecificeerd zullen worden in de taak, nl. startende van een gegeven laag-niveau applicatie waarvan een template geschetst is, moet de student een programma vervolledigen dat een deel van het volledige eindproduct voorstelt. De student levert de implementatie van het project in. Het project zal mondeling verdedigd worden. Als de student minder dan 7/20 behaalt op de projectverdediging, geldt het cijfer voor de verdediging als het cijfer voor het volledige projectgedeelte (35%). Het is niet toegestaan om GenAI te gebruiken voor deze evaluatieopdracht.
Deze aanbieding maakt deel uit van de volgende studieplannen:
Bachelor in de fysica en de sterrenkunde: Standaard traject
Bachelor in de computerwetenschappen: Standaard traject
Bachelor in de artificiële intelligentie: Standaard traject