Department of Information and Computing Sciences

Departement Informatica Onderwijs
Bachelor Informatica Informatiekunde Kunstmatige intelligentie Master Computing Science Game&Media Technology Artifical Intelligence Business Informatics

Onderwijs Informatica en Informatiekunde

Vak-informatie Informatica en Informatiekunde

Imperatief programmeren

Website:website met extra informatie
Vakcode:INFOIMP
Studiepunten:7.5 ECTS
Periode:periode 1 (week 36 t/m 45, d.w.z. 4-9-2017 t/m 10-11-2017; herkansing week 1)
Timeslot:D
Deelnemers:tot nu toe 211 inschrijvingen
Rooster:De officiële roosters staan ook in Osiris
Docenten:
vormgroeptijdweekzaaldocent
college   wo 15.15-17.0037-39 KBG-PANGEA Jeroen Fokker
 
40 EDUC-THEATRON
41-44 KBG-PANGEA
vr 13.15-15.0037-38 KBG-COSMOS
40-41 KBG-COSMOS
43 KBG-COSMOS
44 RUPPERT-WIT
practicum groep 1 wo 13.15-15.0037-44 BBG-109 CLZ Geert-Jan Giezeman
Marien Raat
  
vr 11.00-12.4537-38 KBG-228
40-41 KBG-228
43-44 KBG-228
groep 2 wo 13.15-15.0037-44 BBG-103 CLZ Thomas Kok
 
vr 11.00-12.4537-38 BBG-103 CLZ
40-41 BBG-103 CLZ
43-44 BBG-103 CLZ
groep 3 wo 13.15-15.0037 BBG-205 Jeroen Fokker
Silvan Eelman
Michiel van Heusden
   
38 UNNIK-107
39-44 BBG-223
vr 11.00-12.4537-38 BBG-061
40-41 BBG-061
43-44 BBG-061
groep 4 wo 13.15-15.0037-44 DDW-0.42 CLZ Ruud Verbeek
Lisanne Waardenburg
  
vr 11.00-12.4537 BBG-169
38 BBG-169
40-41 BBG-169
43-44 BBG-169
werkcollege groep 1 vr 15.15-17.0037-38 BBG-001 Jeroen Fokker
Ruud Verbeek
Lisanne Waardenburg
   
40-41 BBG-001
43-44 BBG-001
groep 2 vr 15.15-17.0037-38 BBG-201 Geert-Jan Giezeman
Marien Raat
Thomas Kok
   
40-41 BBG-201
43-44 BBG-201
groep 3 vr 15.15-17.0037-38 BBG-214 Michiel van Heusden
Silvan Eelman
  
40-41 BBG-214
43-44 BBG-214
Tentamen:
week: 45vr 10-11-201711.00-13.00 uurzaal: EDUC-BETA
week: 1vr 5-1-201811.00-13.00 uurzaal: EDUC-THEATRONaanvullende toets
Inhoud:Als je een computer instrueert met opdrachten, doe je aan imperatief programmeren ('t kan ook anders, maar dan programmeer je functioneel, en dat is een ander vak). In dit vak leer je de programmeertaal C#, waarin opdrachten gebundeld worden in zogeheten methoden, die een object bewerken. Het is daarmee tevens een inleiding in objectgeorienteerd programmeren.

We bekijken hoe je het geheugen verandert, en hoe je keuze en herhaling programmeert. Je beschrijft zelf nieuwe soorten objecten met daarbij behorende methoden, maar maakt ook kennis met de bij C# horende standaard-methoden. Aan de orde komen onder andere methoden om interactieve user-interfaces te maken, om animaties te maken met een Thread, om files te manipuleren, en om verzamelingen gegevens (collections) te beheren.

In het college worden enkele grotere programma's besproken als voorbeeld van toepassingen: een grafische bitmap-editor, een vector-tekenprogramma, een route-zoeker. en automatische taalherkenning door letterfrequentie-analyse, Daarbij zien we dan meteen waarom het handig is om object-klassen hierarchisch te ordenen, en hoe je rijen objecten in een array kunt zetten.
Speciale aandacht wordt besteed aan het gebruik van objectgeorienteerde technieken bij het ontwerp van wat grotere programma's, waarbij de standaardbibliotheken voor collections en file-I/O als voorbeeld dienen.

Literatuur:Jeroen Fokker, Imperatief programmeren, collegedictaat versie september 2011 of november 2010. Versie september 2010 kan ook, maar daar staan de opgaven niet in. Eerdere versies zijn beslist niet bruikbaar, omdat daarin een andere programmeertaal werd gebruikt.
Werkvorm:Per week 2 maal 2 uur hoorcollege, waarin nieuwe concepten en voorbeelden worden gepresenteerd. Daarnaast per week 2 maal 2 uur begeleid practicum, waar in groepjes van 2 studenten gewerkt wordt aan drie in te leveren computerprogramma's. Verder zes keer een werkcollege, waarbij aandacht wordt gegeven aan meer theoretische vaardigheden, als voorbereiding op het tentamen. Daarbuiten is er gelegenheid (en waarschijnlijk noodzaak) om onbegeleid practicumwerk te verrrichten om de practicumopdracht te voltooien.
Toetsvorm:Je kunt het vak alleen halen als je deelneemt aan de drie deeltentamens (T1, T2, T3), en de drie practicumopdrachten op tijd inlevert (P1, P2 P3).
Deelname aan college, werkcollege, of practicumsessies is niet verplicht, maar wegblijven is niet verstandig.

Alle zes onderdelen worden apart beoordeeld.
Aan het eind wordt een totaalcijfer voor het theorie-gedeelte berekend: T = 0.2*T1 + 0.3*T2 + 0.5*T3.
Ook wordt er een totaalcijfer voor het praktijk-gedeelte berekend: P = 0.2*P1 + 0.3*P2 + 0.5*P3.

Als alle onderdelen ontbreken, is je eindcijfer "ND" (niet deelgenomen). Je hebt het vak dan niet gehaald.
Als er twee deeltentamens of twee practicumopdrachten ontbreken, is je eindcijfer "NVD" (niet voldaan). Je hebt het vak dan niet gehaald.
Als er één deeltentamen en/of één practicumcijfer ontbreekt, is je eindcijfer "AANV". Je moet dan nog een aanvullende toets en/of practicumopdracht maken om het vak te kunnen halen.
Als T<5.00 of P<5.00, is het eindcijfer E het minimum van T en P.
Als T≥5.00 en P≥5.00, is het eindcijfer E het gemiddelde van T en P.

Het eindcijfer wordt afgerond op één cijfer achter de komma, behalve tussen 5 en 6: daar wordt het eindcijfer afgerond op gehelen. Dus als E≥5.500 wordt het een 6, als E<5.500 wordt het een 5.

Als het eindcijfer minstens 6 is, heb je het vak gehaald.
Als het eindcijfer lager dan 4 is, heb je het vak niet gehaald.
Als het eindcijfer 4.000≤E<5.500 is, kun je nog een aanvullende toets en/of practicumopdracht maken om te proberen het vak te halen.

De aanvullende toets gaat over de hele stof. Het cijfer dat je voor deze toets haalt, wordt ingevuld voor het ontbrekende cijfer, of voor een onvoldoende deelcijfer naar keuze.
Het cijfer voor de aanvullende practicumopdracht wodt ingevuld voor een ontbrekend, of onvoldoende practicumcijfer.
Daarna wordt het eindcijfer opnieuw berekend volgens bovenstaande regels.

Inspanningsverplichting voor aanvullende toets:Om aan de aanvullende toets te mogen meedoen moet de oorspronkelijke uitslag minstens 4 zijn.
Beschrijving:Dit is het eerste programmeer-vak, voorkennis anders dan elementaire computergebruiksvaardigheid is niet vereist. Aan de hand van (steeds ingewikkeldere) voorbeeldprogramma's wordt de syntax en semantiek van de belangrijkste constructies van C# behandeld. Vanaf het begin wordt object-georienteerde modellering van de probleemstelling gebruikt. Een aantal standaard-libraries van C# wordt gebruikt, in het bijzonder Forms, waarmee interactieve muisgestuurde programma's gemaakt kunnen worden. Achtereenvolgens komen aan de orde:
  1. Programma's:
    • Imperatief programmeren t.o.v. andere paradigma's (programma bestaat uit opdrachten om variabelen in het geheugen te veranderen)
    • Compiler versus interpreter; edit-compile-run cyclus
    • Kort Hello-programma met verschillende aanpak (console, Forms, Game); opbouw van een programma: `opsomming van klassen, elke klasse een bundeling van methoden, elke methode een bundeling van opdrachten'.
    • Syntax en semantiek van methode-aanroep
    • Gebruik van een ontwikkelomgeving (momenteel Visual Studio)
  2. Variabelen:
    • Enkele methoden van klasse Graphics, als voorbeeld van het gebruik van een standaard-klasse
    • Gebruik van variabelen, om herhaling van numerieke constanten te vermijden
    • Toekenningsopdracht, declaratie, het type int
    • Layout- en naamgevingsconventies
    • Definitie van nieuwe methoden om te abstraheren van herhaalde blokken code
    • Definitie van parameters om methoden flexibeler te maken
  3. Interactie:
    • De klasse String, conversie van int naar String
    • Opbouw van user-iterface met Button, TrackBar, TextBox)
    • Event-properties
  4. Iteratie:
    • Het while- en for-statement
    • Het type bool, vergelijkingen, logische operatoren
    • Casus: renteberekening
  5. Keuze:
    • Het if-statement
    • Toepassingen van `if': onderscheiden van Buttons, controle van teksten, berekenen van minimum
    • Casus: tekenen en nulpuntsbepaling van parabool
  6. Objecten en klassen:
    • Klasse als beschrijving van een object, declaratie van objectvariabelen
    • Casus: deeltje met plaats en snelheid als object
    • Eenvoudige animatie met Thread en Sleep
  7. Inheritance:
    • Subklasse: toevoegen van nieuwe variabelen en methoden
    • Verschil tussen `is a' en `has a'
    • Interface-componenten als voorbeeld van klasse-hierarchie
    • User interface ontwerp met Layout-managers
    • Casus: 4-functie calculator
  8. Strings en arrays:
    • Het type char versus klasse String
    • Creatie en gebruik van strings
    • Casus: bepalen van letterfrequenties in een tekst (array als turf-tabel)
  9. Object-georienteerd ontwerp
    • Abstracte klassen en interfaces
    • Bibliotheekklassen voor Collections
    • Toepassing: een vector-tekenprogramma
    • Bibliotheekklassen voor file-I/O
    • Non-window (console-) programma's; casus: grep
  10. Het gebruik van algoritmen
    • Grote casus: een route-zoekalgoritme in het wegen-netwerk
    • Grote casus: herken de taal van een tekst op grond van een vergelijking van letterfrequenties (tevens een voorbeeld van een `lerend' programma)
wijzigen?