Programmeertechnieken, Voorjaar 2016
Docenten: dr. T. K. Cocx, dr. K. F. D. Rietveld
Practicumassistenten:T. van der Meij BSc, D. van der Zwaan, R. Meerkerk
Toegangseis
Programmeermethoden.
Beschrijving
Het college Programmeertechnieken is het vervolg op het college Programmeermethoden. Het doel van het college is de programmeervaardigheden van de studenten verder te ontwikkelen en de studenten uit te rusten met gereedschappen die zij nodig hebben bij de geavanceerdere colleges in de latere studiejaren en hun latere professionele loopbaan.
In het eerste deel van het college wordt dieper ingegaan op de principes van object-georienteerd programmeren. Hierbij wordt voortgebouwd op de C++ kennis die is opgedaan in het college Programmeermethoden. Onderwerpen die zullen worden behandeld zijn onder andere: inheritance, polymorphism, const correctness, interfaces, templates/generics, operator overloading en gebruik van de C++ standard template libraries: STL & Boost. De principes zullen zo veel mogelijk op een abstract niveau worden gepresenteerd, tevens zal er aandacht worden geschonken aan het gebruik van diagrammen als hulpmiddel bij het object-georienteerd programmeren.
Het tweede deel van de cursus richt zich op het ontwikkelen van vaardigheden voor het werken aan grote softwaresystemen. Ten eerste zal er uitgebreid worden stilgestaan bij memory management in C/C++. Memory management is een kritiek deel van elk C/C++ programma en vaak de bron van fouten. Geheugenallocatie, geavanceerde pointer manipulatie, valkuilen van memory management en hulpmiddelen voor debugging zullen nader worden bekeken. Ten tweede zal er aandacht zijn voor het gebruik van bestaande bibliotheken (libraries) in eigen software, het zelf ontwikkelen van bibliotheken om software te modulariseren, het testen van software, build systemen en gebruik van scripttalen.
In het derde en laatste deel verschuift de focus naar het ontwerpen van softwaresystemen en het werken met uitgebreide bestaande Application Programming Interfaces (APIs) en moderne ontwikkelomgevingen. Gebaseerd op de vergaarde kennis over de basisprincipes van object-georienteerd programmeren zullen elementaire design patterns worden bestudeerd. Na een korte introductie tot Java zullen de studenten in een uitdagende eindopdracht praktijkervaring opdoen door een web service en bijbehorende Android applicatie te ontwikkelen.
Leerdoelen
Het kunnen uitleggen en gebruiken van standaard constructies uit het object-georienteerd programmeren. Gebruik kunnen maken van de C++ standard template library. Het kunnen interpreteren van eenvoudige klassendiagrammen. Het kunnen toepassen van geavanceerde pointermanipulatie en hulpmiddelen voor het debuggen van memory errors. Bestaande bibliotheken (shared libraries) kunnen gebruiken en zelf nieuwe bibliotheken kunnen schrijven. Simpele scripts kunnen schrijven die gebruik maken van bestaande modules. Een plan van aanpak kunnen voorstellen om software te testen. Het schrijven van unit tests. Kunnen omgaan met build systems en zelf complexe software kunnen compileren. Verschillen tussen C++ en Java syntax en semantiek kunnen benoemen. In staat zijn gebruik te maken van Java package imports en (Java) ontwikkelomgevingen. Het kunnen ontwerpen en implementeren van softwarecomponenten binnen een gestandaardiseerd framework. Het kunnen duiden en toepassen van elementaire design patterns. Een nieuwe klassenhierarchie kunnen ontwerpen op basis van best practices en design patterns en deze kunnen implementeren.
Examinering
De toetsing van het vak omvat een uitgebreid practicum gedurende het gehele semester. Er is geen tentamen. Het practicum bestaat uit een viertal opdrachten. Bij de laatste opdracht zal een mondeling interview over het ingeleverde werk deel uit maken van de beoordeling. Tevens zullen er gedurende het semester een aantal huiswerkopdrachten moeten worden ingeleverd.
Huiswerkopdrachten waarvoor een onvoldoende is gehaald moeten worden aangevuld tot deze voldoende zijn. Practicumopdrachten waarvoor een onvoldoende is gehaald moeten worden herkanst. Er mogen maximaal 2 practicumopdrachten worden herkanst. Het maximale cijfer dat kan worden behaald bij herkansing is een 6. Voor de herkansingen zal er een deadline worden bepaald in de zomerperiode.
Practicumopdrachten die te laat zijn ingeleverd worden niet nagekeken en tellen als een herkansing.
Het eindcijfer is het gewogen gemiddelde van de resultaten van de vier practicumopdrachten: opdracht 1: 0.15, opdracht 2: 0.3, opdracht 3: 0.25, opdracht 4: 0.3. Om te kunnen slagen voor het vak moeten (1) de resultaten van alle practicumopdrachten ten minste een voldoende zijn, (2) alle huiswerkopdrachten moeten naar behoren zijn ingeleverd. Merk op dat de resultaten van de huiswerkopdrachten niet meewegen in het eindcijfer.
Nieuws
21 juli 2016: Latere deadline herkansingen: indien het halen van programmeertechnieken. geen voorwaarde is voor het behalen van een positief BSA, mogen de herkansingen ook op een later moment worden ingeleverd. Overleg zo nodig met de studieadviseur. Werk dat voor maandag 15 augustus is ingeleverd zal nog dit academische jaar worden beoordeeld.
20 juli 2016: Alle resultaten zijn inmiddels bekend gemaakt, inclusief de resultaten voor al het aangevulde huiswerk.
13 juli 2016: De resultaten voor opdrachten 3 en 4 zullen deze week bekend worden gemaakt. Herkansingen voor de opdrachten dienen te worden ingeleverd voor donderdag 4 augustus, einde van de dag. Werk dat na 4 augustus wordt ingeleverd, kan niet meer op tijd worden nagekeken om invloed te hebben op het BSA.
Uitzondering voor opdracht 3: als de reden voor aanvullen het ontbreken van een (goed) klassendiagram was, telt het aanvullen van deze opdracht niet mee als 1 van de 2 mogelijke herkansingen.
24 juni 2016: Aanvullingen voor de huiswerkopdrachten zullen worden geaccepteerd tot en met zondag 10 juli. Werk dat hierna wordt ingeleverd wordt dit studiejaar niet meer beoordeeld. Let op: alle huiswerkopdrachten moeten beoordeeld zijn met een voldoende om te kunnen slagen voor het vak!.
20 juni 2016: Uitnodigingen voor de eind-interviews zijn verstuurd aan alle teams die opdracht 4 hebben ingeleverd. In het geval je niets hebt ontvangen, neem contact op met Tim Cocx.
15 juni 2016: De resultaten voor opdracht 2 zijn bekend en iedereen
is hierover bericht. Tevens zijn alle aangevulde huiswerken tot op
heden ontvangen nagekeken, ook voor deze resultaten is een e-mail gestuurd.
Er zijn nog veel huiswerken die ontbreken of niet voldoende zijn. Let erop
dat alle huiswerken moeten zijn ingeleverd en voldoende beoordeeld om
een eindcijfer te krijgen voor het vak.
18 mei 2016: De deadline voor opdracht 4 is doorgeschoven naar vrijdag 3 juni. Deze deadline is strikt. Er zal op woensdag 25 mei een extra vragenuur plaatsvinden.
17 mei 2016: Huiswerk 3 is beoordeeld, de cijfers zijn te vinden op de muur naast de deur van kamer 138.
10 mei 2016: Opdracht 1 is beoordeeld en de reviews met cijfer zijn inmiddels per e-mail verstuurd.
2 mei 2016: De resultaten voor huiswerk 2 zijn te vinden op de lijst naast kamer 138. Indien een aanvulling wordt verlangd, staat op deze lijst aangegeven wat er moet worden aangevuld. De resultaten voor opdracht 1 volgen in de komende dagen.
28 april 2016: Op vrijdag 29 april van 16:00 tot 17:00 zal er een extra vragenuur plaatsvinden.
23 maart 2016: Er zal op woensdag 30 maart een extra werkcollege plaatsvinden van 11 tot 13 uur in zaal 306/308. Het reguliere vragenuur komt deze dag te vervallen.
Het eerste huiswerk is nagekeken. Cijfers en opmerkingen zijn verzonden per e-mail naar het adres vanwaar het werk is ingeleverd. De cijfers zijn ook te vinden op de muur naast kamer 138.
20 maart 2016: Een voorbeeldimplementatie van de spreadsheet-opdracht
is geïnstalleerd in het "pt2016" environment. Als je je in het
"pt2016" environment bevindt kun je het voorbeeldprogramma opstarten
met het commando tulip123
.
6 maart 2016: De week van 7 maart is collegevrij. Ook het vragenuur zal niet door gaan. We plannen voor maandag 14 maart een extra vragenuur in van 16:00 tot 17:00 uur.
29 februari 2016: De tweede programmeeropdracht is beschikbaar. Er mag worden gewerkt in teams van drie personen. Dit is een grote opdracht! Begin op tijd en denk eerst goed na over het ontwerp en een plan van aanpak voordat je begint met programmeren.
25 januari 2016: Website online.