Programmeertechnieken, Voorjaar 2017
Docenten: dr. T. K. Cocx, dr. K. F. D. Rietveld
Practicumassistenten:L. Helwerda MSc, L. Suanet, V. van Rijn, V. den Hamer, E. van der Zande, R. Turkenburg
Het inleveren van opdrachten is niet meer mogelijk. Neem in geval van vragen contact op met docent Rietveld.
Contact
Vragen omtrent de practicumopdrachten kunnen worden gesteld via pt2017-team@lists.liacs.nl. Dit e-mailadres is gedeeld met alle docenten en student-assistenten van het vak.
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.
Herkansingsregeling
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.
Te laat ingeleverd werk
Practicumopdrachten die te laat zijn ingeleverd worden niet nagekeken en tellen als een herkansing.
Bepaling eindcijfer
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.
Resultaten uit voorgaande jaren
Resultaten voor programmeeropdrachten uit voorgaande jaren waarvoor een voldoende is behaald, mogen naar dit jaar worden meegenomen. Ook behaalde resultaten voor de huiswerkopdrachten mogen naar dit jaar worden meegenomen.