6 ECTS credits
150 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 door studenten te vragen een geschreven rapport over hun programmeerproject in te dienen. Studenten moeten ook in staat zijn om hun ontwerp of hun gemaakte keuzes te verantwoorden. Dit wordt gedaan door hen vragen te stellen over hun project tijdens de mondelinge verdediging.
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 en verdedigd worden (50%). Studenten moeten minstens 8/20 halen in elk evaluerend onderdeel om een score te krijgen voor de hele cursus. Als de scores voor alle onderdelen niet hoger zijn dan 8, 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 ten minste de helft van de score behaalt, worden overgeheveld naar de tweede zittijd. Afstand doen van deelcijfers is niet mogelijk.
Het schriftelijk 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 binnen samen met een rapport dat de gemaakte keuzes samenvat. Het project zal mondeling verdedigd worden.
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