Imperatief Programmeren 2

Inleiding

Volgens een systematische methode worden programma's ontworpen en (in C++) geïmplementeerd met behulp van basisdatatypen en samengestelde datastructuren, n.l. rijen en structs (uit IPC014) en vectoren (nieuw in IPC015). Op het college worden de belangrijkste zaken toegelicht. Bij de basisdatatypen en structuren worden de mogelijke operaties en een aantal ‘standaard-algoritmen' erop besproken en geanalyseerd. Ontwerpen, implementeren, uittesten en zonodig aanpassen van algoritmen leer je pas echt in het practicum, dit heeft dan ook een belangrijke rol in deze cursus. Practicumopgaven bereid je voor en werk je uit in koppels. Opgaven worden toegelicht in de vorm van een werkcollege. Er zijn practicumzalen gereserveerd waar je hulp kunt krijgen van student-assistenten. Zij beoordelen ook je uitwerkingen en voorzien deze van constructief commentaar.

Deze cursus bouwt voort op NWI-IPC014 (Imperatief Programmeren 1). De nadruk ligt op gevorderde algoritmen zoals sorteren en zoek-algoritmen die een oplossingsruimte systematisch doorlopen. De fundamentele techniek van recursie wordt uitgebreid behandeld en speelt een centrale rol in deze cursus. Daarnaast wordt aandacht besteed aan het in kaart brengen van de schaalbaarheidseigenschappen van algoritmen ("Big-Oh" complexiteit).

Leerdoelen

Na afloop van de cursus kan de student naast de leerdoelen uit NWI-IPC014:

  •         De werking van gegeven programma-code doorgronden en expliciteren;
  •         Gegeven algoritmen implementeren;
  •         De voor de oplossing van eenvoudige problemen benodigde datatypen en operaties erop aangeven;
  •         Voor eenvoudige problemen zelf systematisch een algoritme ontwikkelen en de geschiktheid hiervan aannemelijk maken;
  •         Programma's ontwikkelen die aanpasbaar zijn (duidelijke structuur, goede naamgeving, abstractie via typesynoniemen en functies);
  •         De kwaliteit van programma's beoordelen (zowel door redeneren als door testen).

eveneens:

  •         Diverse sorteeralgoritmen implementeren en categoriseren qua "Big-Oh" complexiteit;
  •         Gevorderde algoritmen ontwikkelen en implementeren volgens de recursieve methode.

Onderwerpen

  •         Sorteer-algoritmen, zowel naief (insertion sort, selection sort, bubble sort) als efficient (heap sort, quick sort);
  •         Complexiteits-analyse, "Big-Oh" complexiteit;
  •         Recursieve denkmethode zowel voor ontwerp als implementatie van algoritmen;
  •         Vectoren als meer flexibele data structuur voor gegevensopslag.

Werkvormen

  • 32 uur computerpracticum
  • 16 uur hoorcollege
  • 8 uur werkcollege
  • 28 uur zelfstudie

Toelichting werkvormen

Identiek aan NWI-IPC014

Toetsvorm

schriftelijk tentamen, gesloten boek

Vereiste voorkennis

Imperatief Programmeren 1 (NWI-IPC014)

Literatuur

Identiek aan NWI-IPC014

Bijzonderheden

De gebruikte ontwikkelmethode uit NWI-IPC014 wordt verrijkt met recursie en verfijnd met eenvoudige complexiteits-analyse.


Deze cursus heeft ook een Engelstalige beschrijving.

Vakcode
NWI-IPC015
Studiepunten
3 ec
Periode
tweede kwartaal

Docenten

Opgenomen in

  • Bachelor Informatica