Web Home

HerzieningBachelorInformatica

Herziening Bachelor Informatica

Deze pagina's bevatten informatie over de herziening van de bacheloropleiding Informatica.

Visitatie 2006

Curriculum evaluaties studenten/alumni

Andere informatica opleidingen

Informatica, curriculum, bachelor/master

Herziening bachelor Informatica

De volgende groep mensen is aan de slag gegaan met de herziening van de bachelor informatica:

  • Jan Broersen
  • Lennart Herlaar
  • Johan Jeuring
  • Frank van der Stappen
  • Tijl van der Velden (student)

Zij betrekt de volgende documenten/verslagen/presentaties bij de herziening

Historische documenten

De herziening

Uitgangspunten van de herziening van de bachelor Informatica zijn:

  • Betere profilering door het invoeren van richtingen
  • Meer samenhang door integratie van theorie met toepassingen van die theorie
  • Meer uitdaging door het aanbieden van authentieke taken

Daarnaast geven de Utrechtse Bama, het ACM Computer Science curriculum, en de visitatie allerlei randvoorwaarden en ideeen.

Op 9 oktober en op 17 november 2009 is er een overleg geweest met de docenten Informatica over de curriculumwijziging. De twee belangrijkste onderwerpen van gesprek waren een visie op wat we belangrijk vinden in onze opleiding, en een keuze in de richtingen die we aan willen bieden. In onze opleidingen vinden we het vooral belangrijk dat studenten zich ontwikkelen tot kritische en zelfbewuste informatici. Voor wat betreft richtingen was er consensus over:

  • Gametechnologie
  • Een richting die meer de nadruk op theorie legt, bv Wiskundige informatica of Theoretische informatica

Een richting wordt bv ingevuld door:

  • aangepaste taken bij vakken als Imperatief programmeren, Functioneel programmeren, Internet programmeren, etc.
  • een keuzevak specifiek voor de richting in de derde periode van het 1e jaar
  • in de projectvakken projecten specifiek voor de richting
  • een aantal vakken in de discipline keuzeruimte die interessant zijn voor de richting
  • mogelijk een minor met vakken die relevant zijn voor de richting. Deze vakken mogen niet leiden tot een deficientie voor studenten die deze minor niet hebben gedaan in de masteropleidingen die volgen op de richting.

Op dit moment denken we dat we een richting formeel vorm gaan geven door ongeveer 4 vakken in de discipline keuzeruimte aan te wijzen die een student moet volgen om op of bij het bachelordiploma een aantekening `heeft voldaan aan de eisen van de richting ...'.

Twee groepen zullen de specifieke uitwerking van de richtingen opzetten. Deze uitwerking hoeft niet uniform te zijn. Het doel van een richting is meer studenten te trekken. Een richting moet na twee jaar tenminste 25 studenten trekken, anders is het de extra moeite niet waard.

We willen theorie en toepassingen van de theorie dichter bij elkaar brengen, om studenten voor de theorie te motiveren, maar ook omdat studenten beter leren als ze de context van een theorie zien en gebruiken. We zien de volgende mogelijkheden:

  • Uitspraken over de kwaliteit van programma's (correctheid, verificatie van eigenschappen, testen) maken zeer veel gebruik van logica. Ook binnen een vak als databases wordt de theorie vaak uitgedrukt met behulp van de concepten uit de logica en verzamelingenleer. We willen logica introduceren in de context van deze twee a drie onderwerpen. De theorie/abstractie komt nog steeds aan bod, maar de noodzaak voor de theorie wordt expliciet gemaakt door de toepassingen uitgebreid aan bod te laten komen.
  • Wiskundige technieken komen terug in Datastructuren, zoekalgoritmen, algorithmiek, etc.
  • Lineaire algebra wordt al geintroduceerd in Graphics.

Let op: het is nadrukkelijk niet de bedoeling dat de Wiskunde/Logica/Verzamelingenleer verdwijnt. Het is belangrijk dat studenten naast de toepassing ook de abstractie/theorie te zien krijgen. Het doel van deze wijzigingen is door de context en toepassingen de theorie beter te introduceren. De huidige versie van wiskundige technieken is een aantal jaren geleden opgezet door de wiskundevoorkennis van een aantal vakken te verzamelen in een vak. Vanuit didaktisch oogpunt is dat niet optimaal voor het leren van deze technieken. De huidige inhoud van wiskundige technieken komt vooral terug in Datastructuren (inductie over getallen, integerberekeningen, logaritmen, sommaties, elementaire kansrekening en statistiek, recurrenties), en Graphics (Lineaire algebra). Onderwerpen als machtreeksen en dubbele sommaties (Iverson), zullen alleen maar terugkomen als deze technieken in andere vakken worden gebruikt.

Informatica maakt al gebruik van authentieke taken in het Softwareproject. Hier willen een Introduktieproject Informatica aan toevoegen. In dit project in de 2e periode van het 1e jaar werken de studenten in groepen, begeleid door hun tutor, aan een relatief groot informatica-project. Het doel van het project is een uitgebreide kennismaking met de informatica. De student verkent vooral vanuit eigen interesses en nieuwsgierigheid in teamverband het vakgebied. Hij/zij krijgt daarbij inzicht in de complexiteit en de breedte van de informatica en ontwikkelt een denkkader waarbinnen vervolgens de technieken, methoden, theorieën en modellen van de informatica die in latere vakken uitgediept worden, geplaatst kunnen worden. De student zet in het project ook de eerste stappen in de ontwikkeling van de voor een informaticus benodigde communicatieve, reflectieve, samenwerkings- en managementvaardigheden. Verder komt in het introduktieproject ook een orientatie op de beroepspraktijk aan bod. Het vak is zeer geschikt om gastsprekers uit te nodigen, die een bijdrage kunnen leveren aan het opbouwen van een beeld van de rol van informatica in de wereld om ons heen. De leerdoelen voor het introduktieproject worden beneden gegeven. Toetsing geschiedt op basis van de leerdoelen: hoe is de analyse uitgevoerd, het ontwerp, etc. Studenten met veel programmeerervaring hebben een voorsprong in de realisatiefase, maar dat is slechts een onderdeel van het project.

Bij het vak zijn een aantal slots geboekt voor algemene presentaties. Hier zal bijvoorbeeld aandacht worden besteed aan:

  • de wetenschappelijke methode van de informatica
  • presentaties vanuit het werkveld

Het introduktieproject zal het stramien van het informatiekunde introduktieproject volgen, waar we uiteraard rekening houden met de punten uit uitgebreide evaluatie van het project. Een belangrijk punt is dat we de studenten een vijftal globale beschrijvingen van mogelijke projecten aan willen bieden. Voor het gametechnologie introduktieproject staan voorbeeldprojecten in het document onderaan deze pagina. Voor informatica denken we aan de volgende voorbeeldprojecten:

  • Ontwerp een zoekmachine voor webpagina's, muziek, of films.
  • Tegenwoordig worden misdaden steeds vaker opgelost door DNA gevonden op de plaats van de misdaad te vergelijken met het DNA van verdachten. Hoe doe je dat, en wat is de kans op fouten?
  • Onze onderwijsruimtes nemen af, terwijl we meer studenten krijgen. Kun je een systeem bedenken dat voor een betere bezetting van onze onderwijsruimtes zorgt?

Tenslotte komen de thema's Security, Concurrency, en net-centric computing nadrukkelijk aan bod in het ACM curriculum, en naar onze smaak wat minder in ons curriculum.

Informatica maakt gebruik van veel wetenschappelijke onderzoeksmethoden, vaak ontleent aan de wiskunde en de logica. Voor het opzetten en beoordelen van experimenten, en voor het analyseren en beoordelen van een ontwerp zijn vooral andere onderzoeksmethoden belangrijk. De voor deze taken benodigde methoden komen gedeeltelijk aan bod in het vak Statistiek, maar we denken dat deze wetenschappelijke onderzoeksmethoden meer behelsen dan statistiek. We denken dat er meer expliciete aandacht aan wetenschappelijke onderzoeksmethoden moet worden besteed in de bachelor. Een eerste aanzet kan al worden gegeven in het introduktieproject, maar ook in een later stadium zal dit terug moeten komen. Mogelijk in samenhang met een experimentation project?

Moeten we het onderzoeksproject in de keuze van de major opnemen?

Het eerste jaar

De invulling voor het eerste jaar:

1 Imperatief programmeren / Gameprogrammeren Computerarchitectuur en netwerken
2 Logica voor informatica Informatica / Gametechnologie introduktieproject
3 Databases Richtingsspecifieke keuze
4 Graphics Datastructuren

Functioneel programmeren gaat naar het tweede jaar.

Imperatief programmeren

De cursus imperatief programmeren heeft de volgende leerdoelen:

De student kent de taalconstructies en het gangbare idioom van de imperatieve en objectgeoriënteerde programmeerparadigma's, en is in staat om daarmee een interactieve applicatie voor een eenvoudig algoritme te bouwen.

In de gemeenschappelijke basis van imperatief programmeren en het zustervak gameprogrammeren komen aan de orde:

  • de structurering van een OO-programma (klassen, methoden, objecten, (her)definitie)
  • de belangrijkste opdrachtvormen (toekenning, if, while, for, evt. switch en try)
  • de belangrijkste expressievormen (constante, variabele, aanroep, operatoren, new, arrays)
  • enkele programma-frameworks (event-driven, main met console-I/O)
  • elementaire design patterns (zoeken van minimum, opbouwen van resultaat, turven, enz.)
  • deelementaire datatypen (int, double, boolean, char, string, arrays)
  • een aantal belangrijke libraries (basis-utilities, graphics, opbouw userinterfaces)
  • de omgang met de ontwikkelomgeving

In Imperatief programmeren wordt daarnaast nader ingegaan op:

  • meer gevanceerde OO-constructies (abstract klassen, interfaces, generieke types)
  • libraries voor File-I/O en Collections
  • achtergronden, geschiedenis en klassieken van imperatief programmeren
  • toepassingen, met name het implementeren van algoritmen

Gameprogrammeren

De cursus gameprogrammeren heeft de volgende leerdoelen:

De student kent de taalconstructies en het gangbare idioom van de imperatieve en objectgeoriënteerde programmeerparadigma's, en is in staat om daarmee een 2D game-omgeving met sprites te bouwen.

In de gemeenschappelijke basis van gameprogrammeren en het zustervak imperatief programmeren komen aan de orde:

  • de structurering van een OO-programma (klassen, methoden, objecten, (her)definitie)
  • de belangrijkste opdrachtvormen (toekenning, if, while, for, evt. switch en try)
  • de belangrijkste expressievormen (constante, variabele, aanroep, operatoren, new, arrays)
  • enkele programma-frameworks (event-driven, main met console-I/O)
  • elementaire design patterns (zoeken van minimum, opbouwen van resultaat, turven, enz.)
  • deelementaire datatypen (int, double, boolean, char, string, arrays)
  • een aantal belangrijke libraries (basis-utilities, graphics, opbouw userinterfaces)
  • de omgang met de ontwikkelomgeving

In Gameprogrammeren wordt daarnaast nader ingegaan op:

  • de typisiche opzet van een 2D game
  • het gebruik van de XNA library
  • achtergronden, geschiedenis en klassieken van gameprogrammeren
  • toepassingen, met name voor het maken van interactieve games

Computerarchitectuur en netwerken

Computers worden tegenwoordig meestal gebruikt in netwerken waarbij ze moeten samenwerken met andere computers. In een computer bevindt zich meestal ook weer een verzameling programma's die onderling met elkaar moeten samenwerken. Al met al bestaat een modern computernetwerk en computersysteem uit een complex geheel van in elkaar grijpende componenten en processen. Gelukkig kunnen we de zaak overzichtelijker maken door er een goede structuur in aan te brengen. In dit vak bestuderen we hoe computers opgebouwd zijn en en hoe de software daar gebruik van maakt. Verder leer je ook hoe computernetwerken zoals het Internet in elkaar zitten. We kijken naar de verschillende protocollen en je leert ook berekeningen te maken over bijvoorbeeld de capaciteit van een netwerkverbinding. Natuurlijk besteden we ook aandacht aan draadloze netwerken, telefoneren over het internet en beveiliging.

O.a. de volgende aspecten komen tijdens het vak aan bod:

  • globale opbouw van een (micro)processor en computersysteem
  • geheugen hierarchie, caches, en cache problemen
  • I/O hardware en software, interrupts en traps
  • protectiemechanismen in een computersysteem
  • virtueel geheugen, paging en segmentering
  • structuur van een O.S. kernel, drivers, processen, micro- en macrokernels
  • structuur en gebruik van filesystemen
  • processen en threads, scheduling, het creeren en stoppen van processen
  • interproces communicatie via diverse mechanismes: pipes, shared memory, messages, sockets
  • netwerk structuren en communicatiemiddelen: LAN, WAN, ethernet, broadcast, modems, glasvezels, draadloze netwerken, e.d.
  • protocollen, lagen en hun onderlinge relaties, o.a. in de context van het Internet
  • voorbeelden van problemen/uitdagingen en protocollen op een aantal lagen (datalink, netwerk, transport en applicatielaag), o.a. in de context van het Internet
  • laagoverstijgende aspecten zoals mobiliteit, multimedia en beveiliging
  • toepassingen van netwerken in bedrijven en organisaties.

Logica voor Informatica

De cursus Logica voor informatica heeft de volgende leerdoelen:

  • je neemt kennis van de propositielogica en de predikaatlogica
  • je kunt uitspraken bewijzen met behulp van: formule-inductie, axiomatisch afleiden, resolutie en unificatie
  • je kunt syntax en semantiek onderscheiden
  • je krijgt inzicht in de logische semantiek van programmeertalen
  • je kunt informatica-problemen modelleren met behulp van logica

Informatica introduktieproject/Gametechnologie introduktieproject

De informatica en gametechnologie introduktieprojecten hebben grotendeels overlappende leerdoelen:

  • In het project doet je ervaring op met de basis wetenschappelijke methode van de informatica:
    • je analyseert een information processing/gametechnologie probleem
    • je modelleert en ontwerpt een oplossing
    • je realiseert het ontwerp, waarmee getoetst wordt of het ontwerp haalbaar is, door een implementatie, het gebruik van een bestaand pakket, of anderszins
    • je evalueert de resultaten

  • Je kunt projectmatig werken
    • Samenwerken in teamverband
    • Plannen van werkzaamheden
    • Systematisch/methodisch te werk gaan
    • Professionele houding (afspraken nakomen, aan deadlines houden, etc.)

  • Je kunt je werk presenteren
    • in woord
    • in geschrift
    • met behulp van audiovisuele middelen

Game Ontwerp

De cursus game ontwerp heeft de volgende leerdoelen:

Naast een technische realisatie is er voor een goed computer game ook een goed game ontwerp nodig. Het ontwerp van een game gaat vaak hand in hand met de technische realisatie. Studenten in de richting gametechnologie dienen dan ook goed samen te kunnen werken met game ontwerpers en hun taal te kunnen spreken De student leert in deze cursus de diverse aspecten van het ontwerp van games en past die ook toe. In het bijzonder komen de volgende aspecten aan bod:

  • Wat is een spel: geschiedenis, spelers, genres, game play
  • Hoe werk het game ontwerp proces
  • Uitdagingen en beloningen
  • Balans in games
  • Verhaallijnen
  • Game karakters en hun gedrag
  • Game werelden en level design
  • De rol van interactie in games

Databases

In algemene zin zijn de leerdoelen als volgt. Kennismaking met het relationele datamodel en haar toepassingen. Inzicht verwerven in hoe men (mathematische) abstractie kan toepassen bij persistente opslag van gegevens. De rol die een DBMS speelt bij de bouw van een informatiesysteem onderkennen.

In meer specifieke zin bestaan de leerdoelen uit het kennisnemen van en/of het kunnen hanteren van de volgende concepten:

  • het relationele datamodel
  • querytalen (relationele algebra en SQL)
  • Entity-Relationship modellering
  • wiskundige grondslagen voor database-ontwerp: afhankelijkheden en normaalvormen
  • constraints, triggers en views
  • transaction processing: concurrency en recovery
  • aspecten van query processing en optimalisatie
  • wisselende actuele onderwerpen, zoals XML, web databases, distributie, data warehouses, data mining

In practische opdrachten worden de volgende vaardigheden geoefend: formulering casus, hanteren ER-model, transformaties van datamodellen, normaliseren, formuleren SQL-queries, elementaire handelingen verrichten met een DBMS.

Perspectieven voor accentverschuiving bij specifieke richtingen in de Bachelor:

  • bij Gametechnologie kunnen de practicumopgaven gefocust worden op probleemstellingen uit het gaming domein
  • bij de Theoretische/Wiskundige richting kan binnen het practicum meer aandacht worden gegeven aan aspecten van normalisering

Graphics

Graphics is een inleidende cursus over computer graphics. Computer Graphics houdt zich bezig met de digitale representatie en manipulatie van beelddata door computers. De cursus handelt over de theoretische basis voor het genereren van driedimensionale grafieken - d.w.z. het maken van plaatjes van geometrische 3D-modellen.

De leerdoelen van Graphics bevatten ook onderdelen van de lineaire algebra, de wiskundige basis van computer graphics. Je leert

  • de rol van vectoren, coördinatensystemen, matrices en determinanten in graphics
  • rekenen met deze begrippen
  • stelsels lineaire vergelijkingen oplossen

Vervolgens leer je fundamentele technieken uit de moderne computer graphics: je leert

  • 3d modellen transformateren en projecteren
  • hidden surface removal
  • triangle rasterization en shading
  • texture mapping
  • ray tracing

Ter afsluiting leer je ook enkele geavanceerde technieken, zoals

  • global illumination
  • radiosity
  • schaduwen

De cursus maakt gebruik van een werkcollege en een practicum waarin de deelnemers de theoretische kennis van het hoorcollege in praktijk brengen.

Let op: omdat ook vele studenten van de master opleiding game and media technology zich voor deze cursus inschrijven is het mogelijk dat de cursus in het Engels wordt gegeven.

Datastructuren

De cursus datastructuren heeft de volgende leerdoelen:

  • je leert een aantal belangrijke datastructuren en algoritmen te gebruiken
  • je ontwerpt datastructuren en algoritmen op datastructuren
  • je implementeert efficiente datastructuren en algoritmen
  • je analyseert datastructuren en algoritmen op datastructuren, zowel wat betreft de correctheid als de efficientie
  • je past een aantal wiskundige begrippen en technieken toe, die bij de analyse van datastructuren een rol spelen

In het college worden o.a. de volgende onderwerpen behandeld: binair zoeken; sorteeralgoritmen: mergesort, heaps en heapsort, quicksort, counting sort, bucket sort, radix sort; ondergrenzen voor sorteren; analyse van algoritmen; O-notatie; de master theorem; gelinkte lijsten; stacks; queues; zoekbomen; gebalanceerde bomen (rood-zwart bomen); inductie over getallen, integerberekeningen, logaritmen, sommaties, elementaire kansrekening en statistiek.

De richtingen

Vanwege de krimp van het departement in het komende jaar hebben we besloten de richtingen gefaseerd in te voeren: het eerste jaar de richting gametechnologie, het jaar daarna de meer theoretische richting (of mogelijk nog wat later).

Voor de richting Gametechnologie is een werkgroep ingericht. Deze werkgroep heeft een opdracht gekregen, en de vogende documenten geproduceerd.

Welke wiskunde zet er in de bachelor informatica?

Het vak wiskundige technieken voor de informatica verdwijnt uit ons curriculum. De huidige versie van wiskundige technieken is een aantal jaren geleden opgezet door de wiskundevoorkennis van een aantal vakken te verzamelen in een vak. Vanuit didaktisch oogpunt is dat niet optimaal voor het leren van deze technieken. De huidige inhoud van wiskundige technieken is (overgenomen van de weekindeling van het vak):

  • Bewijzen en afleiden, inductie, invariant
  • Sommatie: standaardsommen
  • Dubbele sommatie, Iverson, Logaritme
  • Machtreeksen
  • Machinaal sommeren
  • Fibonacci and Friends
  • De dwangterm
  • Recurrenties
  • Lineaire Algebra
  • Binomiaalcoëfficienten
  • Kansrekening
  • Getallen
  • Kansproblemen
  • Rekenen: RSA Cryptografie

Deze inhoud komt vooral terug in Datastructuren (inductie over getallen, integerberekeningen, logaritmen, sommaties, elementaire kansrekening en statistiek, recurrenties), en Graphics (Lineaire algebra). Onderwerpen als machtreeksen en dubbele sommaties (Iverson), zullen alleen maar terugkomen als deze technieken in andere vakken worden gebruikt.

De discrete wiskunde die volgens het ACM curriculum in ieder geval in een informatica bachelor aan de orde moet komen is:

  1. Functions Relations And Sets 
  2. Basic Logic 
  3. Proof Techniques
  4. Basics Of Counting
  5. Graphs And Trees
  6. Discrete Probability

De eerste twee onderwerpen komen aan bod in Logica voor informatica. Onderwerp drie komt aan bod in zowel Logica voor informatica als Datastructuren. Onderwerpen vier en vijf komen aan bod in Datastructuren, en in mindere mate in Algorithmiek. Onderwerp zes komt aan bod in Datastructuren.

-- JohanJeuring - 17 May 2010