Programma Inf4all

Het aanbod voor informatica bestaat uit acht cursussen van ieder 6 ec: twee cursussen op academisch basisniveau voor kandidaten met een hbo-vooropleiding, en zes cursussen op gevorderd niveau.

 

Semester 1

Semester 2

Academisch  niveau

    Grondslagen

x

 

    Algoritmiek

 

x

Gevorderd algemeen

    Advanced Object Oriented Programming

x

 

    Netwerken

x

 

    Databases en Information Retrieval

 

x

Gevorderd specialisatieonderwerpen

    Media, games, user experience

x

 

    Kunstmatige Intelligentie

 

x

    Internet of things

 

x

Jaarrooster

Alle cursusbijeenkomsten vinden plaats op vrijdagen. Download jaarrooster 2017-2018 (deze versie is nu nog onder voorbehoud).

De bijeenkomsten in het eerste semester zijn gepland van 11.00 tot 14.00 uur of van 14.00 tot 17.00 uur, beginnend op 1 september en doorlopend tot eind januari. Het tweede semester begint in week 7 van 2018 en wordt later vastgesteld.

Vakantie: de periode van kerst en oud & nieuw en goede vrijdag zijn onderwijsvrij. In 2018 zijn er uiteraard geen bijeenkomsten op Koningsdag. In de overige vakanties gaan de bijeenkomsten door.

 

Cursusbeschrijvingen

Grondslagen

Inhoud

Deze cursus behandelt de principes die ten grondslag liggen aan de informatica als wetenschap, onafhankelijk van een specifieke technologie, toepassing, programmeertaal, of implementatie. Onderwerpen die behandeld worden zijn berekenbaarheid, logica, automaten en toestandsdiagrammen, programmeertalen, grammatica's, en algoritmes. Er zal op een abstracte manier naar informatica en de onderliggende theorie gekeken worden. In de cursus worden de cruciale ontdekkingen en concepten die de informatica bepaald hebben in een historische context geplaatst. Men leert ook om de principes toe te passen en te gebruiken, en de link te leggen met praktische toepassingen. Het uiteindelijke doel van het vak is om het geleerde instrumenteel in het onderwijs te gebruiken.

Onderwerpen

De cursus is gestructureerd als vier blokken van elk twee weken.

  1. Logica en redeneren.
  2. Programmeertalen en grammatica's.
  3. Eindige automaten en reguliere expressies.
  4. Berekenbaarheid en algoritmes.

 

Algoritmiek

Voorkennis

Goede kennis van programmeren, bijvoorbeeld object georiënteerd programmeren.

Inhoud

Opmerkingen

Deze cursusbeschrijving heeft mogelijk overlap met de cursus ‘Advanced objectgeoriënteerd programmeren’, bijvoorbeeld bij de datastructuren als lijst en boom. Mogelijk volgt nog een aanpassing als deze laatste cursus is ingevuld.

 

Advanced Object Oriented Programming

In de cursus komen de volgende onderwerpen aan bod.

  1. Objectgeoriënteerd analyse en ontwerp. Hierin worden de beginselen van objectoriëntatie met behulp van de modeleertaal UML behandeld.
  2. Objectgeoriënteerd programmeren in Java. De taalconcepten en het typesysteem van Java wordt behandeld, zoals overerving en dynamische binding van methoden. Tevens komen abstracte klassen en interfaces aan de orde en een korte behandeling van generics: de uitbreiding van Java die het gebruik van typeparameters mogelijk maakt.
  3. Datastructuren, algoritmen en het Java collections framework. Datastructuren en de bijbehorende algoritmen zijn van groot belang bij het programmeren. Bijvoorbeeld, verschillende technieken voor het opslaan van gegevens, manieren om snel te zoeken en te sorteren of om op efficiënte wijze de weg te vinden in een netwerk. Na een inleiding over ontwerpprincipes en analysetechnieken, worden enkele basis datastructuren uit de informatica: onder andere stapels (stacks), wachtrijen (queues), rijen (sequences) en bomen met bijbehorende implementatie in Java behandeld.
  4. Design Patterns. Design Patterns zijn standaard oplossingen voor veelvoorkomende algemene ontwerpproblemen in object-georiënteerde applicaties. In deze cursus behandelen we de meest bruikbare design patterns en gaan we in op de manier waarop deze geïmplementeerd kunnen worden in Java.
  5. Inleiding JavaFX. JavaFX is het nieuwe platform voor het ontwikkelen van grafisch aantrekkelijke desktop-, web- en mobile applicaties. We gaan in op de basiscomponenten van JavaFX en behandelen enkele technieken waarmee eenvoudige grafische user interfaces kunnen worden samengesteld.
  6. Concurrency. In dit deel van de cursus gaan we in op de concepten in Java die het mogelijk maken om verschillende taken binnen één applicatie gelijktijdig uit te voeren. Ook gaan we in op de problematiek die met concurrency gepaard gaat en de manier waarop specifieke problemen (synchronisatie, race-conditions en deadlocks) kunnen worden opgelost.

Leerdoelen

  1. OO analyse en ontwerp.
    • Je kunt uitleggen wat de toestand van een object is en wat bedoeld wordt met het gedrag van een object
    • Je weet wat het begrip inkapseling inhoudt en kunt aangeven welke voordelen dat heeft
    • Je kunt uitleggen wat een object, wat een klasse en wat een attribuut is
    • Je bent in staat om de UML-constructies voor object, klasse en attribuut toe te passen
  2. OO in Java.
    • Je weet wat overerving inhoudt
    • Je kunt (abstracte) klassen en interfaces toepassen
    • Je bent in staat om eenvoudige generieke klassen te definiëren
    • Je kent de verschillende manieren kent waarop persistentie van gegevens gerealiseerd kan worden en kunt twee daarvan (streams, sql) ook toepassen
  3. Datastructuren.
    • Je hebt inzicht in standaard datastructuren (stacks, queues, sequences, trees, ...) en de bijbehorende algoritmen daarop
    • Je bent vertrouwd met het gebruik van recursie om bepaalde categorieën van algoritmen te begrijpen en zelf te beschrijven en te implementeren
    • Je begrijpt de essentie van- en de technieken onderliggend aan de verschillende algoritmen die aan bod zijn gekomen
  4. Design Patterns
    • Je kunt de belangrijkste design patterns aangeven
    • Je begrijpt welk design pattern welk probleem oplost
    • Je kunt een aangegeven pattern zelf te implementeren in Java
  5. JavaFX
    • Je begrijpt de globale opbouw van een JavaFX applicatie
    • Je kent de concepten die nodig zijn voor het bouwen van een eenvoudige GUI en weet die te gebruiken om zelf een GUI te implementeren
  6. Concurrency
    • Je kunt verschillende taken binnen één applicatie beschrijven en implementeren gebruikmakende van Java threads
    • Je weet welk synchronisatie primitieven Java aanbiedt en kunt deze inzetten om racecondities te vermijden
    • Je kunt deadlock situaties herkennen en maatregelen treffen om deze te vermijden

Voorkennis

Goede kennis van procedureel programmeren: controlestructuren, variabelen, functies, etc.

 

Databases en Information Retrieval

Voorkennis

Gedegen kennis van de vraagtaal SQL en SQL-DDL. Verder wordt van cursisten verwacht dat ze bekend zijn met de principes van het relationele model.

Inhoud

In de cursus wordt de voorkennis uitgebreid door in diepte normalisatie en de normaalvormen te behandelen. We bekijken ook de taal (UML) voor het beschrijven van een datamodel, zonder in detail op datamodellering in te gaan. Verder gaan we in op zaken als constraints, concurrency en het transactiemodel. Vervolgens kijken we naar information retrieval. Hoe kunnen we uit een gegeven vraag, bijvoorbeeld een lijst van trefwoorden, een ranking maken in relevante bronnen? Een voorbeeld hiervan is de Google Page Rank. Kernwoorden hierbij zijn indexering en het vector space model.

 

Netwerken

Inhoud

Communicatienetwerken vormen een niet meer weg te denken component in hedendaagse ICT-systemen. Communicatie vormt een essentieel onderdeel van alles wat we met willen en kunnen doen. Denk aan de reclameslogan van Sun Microsystems (circa 2003): "the network is the computer", of aan Robin Milner's lecture "computation is communication".

In het keuzethema "netwerken" worden communicatiesystemen behandeld langs twee assen, te weten, de as van de generieke concepten en de as van het internet als operationeel network, als volgt:

1. vanuit een meer fundamenteel gezichtspunt worden de architectuur van gelaagde communicatiesystemen en de daarbijbehorende communicatieprotocollen bestudeerd; algemene principes en benodigde functionaliteiten worden behandeld;

2. daarnaast volgt telkens een illustratie van de behandelde principes aan de hand van het hedendaagse internet.

Het keuzethema zal bestaan uit 9 blokken, elk bestaande uit een hoorcollegedeel (2 uur) en een werkcollegedeel (2 uur); per week wordt een blok behandeld, mogelijk met uitzondering van blok 2. Hoorcollege en werkcollege lopen deels door elkaar ("colstructie"). Daarnaast zal een online lab worden aangeboden (gebruik makend van de publiek beschikbare tool Wireshark); hiervoor is een laptop met wireless access nodig.

Literatuur

Voor het college zal gebruik gemaakt worden van het veelgebruikte boek van Jim Kurose en Keith Ross: Computer Networking: A Top-Down Approach Featuring the Internet. Van dit boek is in mei 2016 een vernieuwde 7de editie verschenen. Editie 6 (2012), international paperback kost circa € 65,-; de nieuwe editie, in het eerste jaar veelal alleen als hardback, is wellicht duurder.

 

Kunstmatige intelligentie

Inhoud

In deze cursus worden essentiële vragen rond kunstmatige intelligentie onder de loep genomen. Het gaat om de representatie van kennis in een computersysteem (hoe leg je kennis vast in digitale data?) en machine learning (hoe kan een computer kennis vergaren?).

Een meer gedetailleerde beschrijving in het Engels:

This series of lectures aims to teach methods and techniques so that students, given a problem in the field of Artificial Intelligence, will be able to represent the problem in a suitable way and select a promising method of solving the problem. Each of the lectures will cover a different topic, each with its own problem representation and solution methods. The lectures will present both the theory behind the solution algorithm, practical examples of the algorithm in action, and exercises for students to put their understanding of the subject matter into practice. Special attention will be given to problem representation.

The lectures will cover a variety of topics from the field of Articial Intelligence, including:

  1. Problem-solving using informed and uninformed search
  2. Algorithms for efficient game playing
  3. Deduction, reasoning, and problem solving using formal logic
  4. Knowledge bases
  5. Planning
  6. Statistical and symbolic learning
  7. Neural networks
  8. Data mining and knowledge discovery
  9. Intelligent agents

 

Internet of things

Inhoud

Deze cursus gaat over de technische kant van informatica en heeft het 'internet of things' als toepassingscasus. We bekijken de verwerking van data uit sensoren en het aansturen van apparaten vanuit de computer. Er is daardoor ook een link met de robotica.

 

Media, games en user experience

Inhoud

Bijna alle software wordt uiteindelijk bediend door een menselijke gebruiker. Slechte ontwerpen en onverwachte problemen tijdens het gebruik vormen regelmatig een bron van ergernis, en kunnen oorzaak zijn van ernstige fouten. In deze cursus staat de wisselwerking tussen deze gebruiker en interactieve technologie centraal en hoe dit meegenomen kan worden in het ontwerp. Een centraal begrip is user experience (UX), de gehele ervaring die een product of service brengt, wat een groter geheel is dan alleen gebruiksvriendelijkheid en intuïtieve bediening.

We behandelen dit begrip in de context van interactieve producten en services zoals standaard software, websites en apps, maar ook hoe dit gebeurt bij games, wat goed aangeeft waarom UX meer is dan werkende software alleen. Informatica is veel breder geworden dan de traditionele scherm-muis-keyboard interactie, en daarom komt in deze cursus ook een aantal nieuwe ontwikkelingen aan bod met (alternatieve) media en toepassingen waar zowel UX en games goed samen komen. Denk hierbij aan serious games met "nieuwe" types feedback (AR/VR/haptics) of input (Motion Capture/Tangibles).

We behandelen methodes die beschikbaar zijn om bruikbaarheid en beleving van (digitale) systemen te evalueren en te optimaliseren. Vaak worden hierin gebruikers vanaf het begin betrokken worden bij het ontwikkelproces. Verder behandelen we de onderliggende theorieën en tonen tool(s) zoals Unity waarmee deze cursus een toepasselijke link heeft met de interesses van de middelbare scholier.