Wat
Structuur van Computerprogramma's 2 is een cursus op bachelor-niveau die in het eerste semester ingericht wordt. Gelieve de cursusfiches te raadplegen over de corresponderende studiegidsnummers 1002198BNR (faculteit wetenschappen) of 1002196BNR (faculteit ingenieurswetenschappen).
In de hoorcolleges worden bewezen programmeerconcepten en paradigma's in de diepte bestudeerd, zoals geïncorporeerd in de C++ programmeertaal: programmeren met abstract data types, exception handling, expliciet geheugenbeheer, generisch programmeren, en objectgericht programmeren.
In de werkcolleges wordt praktische ervaring opgedaan met het ontwikkelen van software gebruikmakende van de compilers, debuggers, en version control systems die beschikbaar zijn op traditionele Unix-gebaseerde omgevingen.
Wie
- Hoorcolleges
- De hoorcolleges worden verzorgd door Prof. dr. Coen De Roover.
- Werkcolleges
- De werkcolleges worden verzorgd door Dries Harnie. Aarzel niet om ons te contacteren bij problemen.
Wanneer
- Hoorcolleges: woensdag 16u00 - 18u00
-
Lokaal G.6.308
Geen les op 1 oktober (week 3, ICSMe conferentie), noch op 22 oktober (week 6, SPLASH conferentie). - Werkcollege 1: dinsdag 15u00 - 17u00 (voor studenten WE en IR)
-
Week 2,3, 5-8, 10-14: lokaal E.1.2
Week 4: lokaal E.1.5 - Werkcollege 2: vrijdag 10u00 - 12u00 (voor studenten WE)
-
Week 3, 5, 7-14: lokaal E.1.3
Week 2, 6: lokaal E.1.4
Cursusmateriaal
De inhoud van de cursus komt grotendeels overeen met die van het boek Multi-paradigm programming using C++ door Dirk Vermeir. Dit boek maakt dan ook deel uit van het verplichte studiemateriaal, naast de hieronder vermelde slides. Deze slides zijn van de hand van Dirk De Ridder, gebaseerd op de originelen van Dirk Vermeir.
- Basisconcepten
- Programma-organisatie; compilatie en linken; adressen, variabelen, types, data-objecten, construeren van data-objecten; namespaces en scopes.
- Slides: [PDF]
- Websites: The stack and the heap, Eight C++ programming mistakes the compiler won’t catch.
- Functionele decompositie
- Declaratie en definitie van functies, overloaden van functies.
- Gebruikergedefinieerde types
- Definitie van types en programmeren met abstracte datastructuren gebruikmakende van het class construct.
- Slides: [PDF] en [PDF]
- Websites: What's the deal with "const-overloading"?
- Ingebouwde typeconstructoren
- Constante types, reference types, pointers en arrays; expliciet geheugenbeheer, encapsulatie van pointers in gebruikergedefinieerde types, intelligente pointers.
- Gebruikergedefinieerde typeconstructoren
- Templates voor functies en klassen; automatische afleiding van template-argumenten, overloaden en specializeren van templates.
- Generisch programmeren
- Basisconcepten en diens toepassing in de Standard Template Library van C++.
- Slides: [PDF] en [PDF] en [PDF]
- Websites: Smart Pointers - What, Why, Which?, Smart pointers in C++11.
- Objectgericht programmeren
- Enkelvoudige, meervoudige en virtuele overerving; polymorphisme en late binding; type-hiërarchiën en het run-time inspecteren en converteren van types.
- Slides: [PDF]
- Websites: The four kinds of Polymorphism in C++, Virtual Function Table.
- Optioneel
- Afwegen van alternatieve implementaties, nieuwigheden in C++11.
Examinering
Het eindcijfer wordt als volgt bepaald:
- Programmeertaken (20%)
-
Taak 1 (5%), taak 2 (5%), taak 3 (10%).
Deze taken moeten, verspreid over het semester, ingediend worden. Elk van deze taken bouwt verder op de vorige. Samen vormen zij de basis voor het programmeerproject. Zie de website van de werkcolleges voor de eigenlijke opdrachten en deadlines voor het indienden. - Programmeerproject (40%)
- Het uiteindelijke programmeerproject zal mondeling verdedigd moeten worden. Op deze verdediging zullen vragen gesteld worden over de kwaliteit van het ontwerp (bv. leent het ontwerp zich tot het toevoegen van extra functionaliteit) en de implementatie (bv. welke alternatieve programmeerconcepten uit de hoorcolleges waren van toepassing) van het ingediende project. Zie de website van de werkcolleges voor de eigenlijke opdracht en deadline voor het indienen.
- Schriftelijk examen (40%)
- Het schriftelijk examen toetst de kennis van de student over de tijdens de hoorcolleges aangereikte programmeerconcepten (bv. bespreek en illustreer een concept aan de hand van een voorbeeldprogramma, voorspel de uitvoer van een gegeven programma, implementeer een klasse die aan de gegeven vereisten voldoet). Ter illustratie wordt een voorbeeldexamen [PDF] ter beschikking gesteld.
Aanvullend materiaal
- Boeken
- De vrij verkrijgbare hoofdstukken 2 (A Tour of C++) en 3 (A Tour of the Standard Library) uit Bjarne Stroustrup's "The C++ programming language (3rd edition)" worden ten zeerste aangeraden.
- Referentiewebsites
- Technische tutorials voor werkcolleges