Programma Inf4all

Het aanbod voor informatica bestond uit acht cursussen van ieder 6 ec: twee cursussen op academisch basisniveau voor kandidaten met een hbo-vooropleiding, en zes cursussen op gevorderd niveau.
Vanaf het studiejaar 2018-19 worden een aantal van deze cursussen gesplitst in twee delen van elk 3 ec. Daardoor wordt het eenvoudiger om de studieplanning in te delen en wordt het ook mogelijk om een niet al te grote cursus over een specifiek ondwerwerp te volgen. Ook komt er een basiscursus OO-programmeren. In de tabel hieronder staat het voorlopige aanbod voor het studiejaar 2018-19. De vakken voor semester 1 liggen vast, aan het programma voor semester 2 wordt nog gewerkt.

 

Semester 1

Semester 2

Basis

   Basis Object Georiënteerd Programmeren (3 ec.)

x

 

Academisch  niveau

   Grondslagen (6 ec.)

x

 

   Algoritmiek (6 ec.)

 

x

Gevorderd, specialisatieonderwerpen

   Media, user experience (3 ec.)

 

x

   Game Design (3 ec.)

x

 

   Kunstmatige Intelligentie (3 ec.)

 

x

   Functioneel Programmeren (3 ec.)

x

 

   Internet of Things (6 ec., twee delen)

 

x

   Internet Security (3 ec.)

 

x

Jaarrooster

Alle cursusbijeenkomsten vinden plaats op vrijdagen. Download jaarrooster 2018-2019
Er is nu (mei 2019) een voorlopig jaarrooster voor het studiejaar 2019-20: Download jaarrooster 2019-2020

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 6 van 2019 en wordt later vastgesteld.

Vakantie: de periode van kerst en oud & nieuw en goede vrijdag zijn onderwijsvrij. 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 en ervaring met programmeren, bijvoorbeeld door de Inf4All cursus "Basis object georiënteerd programmeren".
Enige ervaring met het bewijzen van de correctheid van algoritmen en looptijd analyse van eenvoudige algoritmen, bijvoorbeeld door de Inf4All cursus "Grondslagen van de Informatica".

Inhoud

Literatuur

Voor deze module maken we gebruik van hoofdstukken 2 t/m 7 van het boek Algorithm Design van Jon Kleinberg & Éva Tardos (2005), Pearson. Verder materiaal komt beschikbaar via de online omgeving.

 

Basis Object Georiënteerd Programmeren

Inhoud

Deze cursus behandelt een basis van het objectgeoriënteerd programmeren. We behandelen het ontwerpen en bouwen van klassen, beschrijving in UML. Bij het coderen komen zaken als objectreferenties, het construeren van objecten van een klasse, het aanroepen van methoden, zichtbaarheid aan de orde. We eindigen met overerving.

 

Voorkennis

Deze cursus is geen basiscursus programmeren, het bouwt voort op procedureel programmeren. Deelnemers dienen al vertrouwd te zijn met programmeren en het lezen van code, met zaken als het gebruik van variabelen, functies/procedures en controlestructuren.

 

Functioneel Programmeren

Doelen

Na het voltooien van deze cursus kun je:

Inhoud

Deze cursus wordt in het najaar van 2019 voor het eerst aangeboden.

Hoewel het kernprogramma imperatief programmeren als uitgangspunt neemt, hebben leerlingen de mogelijkheid om zich te verdiepen in alternatieve programmeerparadigma's in een keuzethema. Een goede kandidaat hiervoor is functioneel programmeren.

Functioneel programmeren stelt ons in staat om op declaratieve wijze een programma te schrijven. Dat wil zeggen: we vertellen de computer niet hoe we ons doel willen bereiken (imperatief), maar simpelweg wat we willen bereiken. Dit zorgt voor een heldere en compacte programmeerstijl.

Door gebruik te maken van pure functies en onveranderlijke datastructuren weten we dat onze programma's geen onverwachte zijeffecten kunnen vertonen. Zo is het onmogelijk om globale variabelen aan te passen, waardoor het programma zich ineens anders gaat gedragen. Het gevolg is dat we makkelijker over onze programma's kunnen redeneren

In deze cursus bestuderen we deze ideeën en bekijken we welke gevolgen dit heeft op onze manier van denken over programma's en onze manier van programmeren. We passen deze manier van denken toe bij het maken van volledig operationele web applicaties in de pure functionele taal Elm (elm-lang.org). We laten zien dat Elm simpel en gebruiksvriendelijk genoeg is voor middelbare scholieren om mee aan de slag te gaan.

Concepten

Voorkennis

Enige ervaring met imperatieve programmeertalen, HTML en CSS komen van pas maar zijn niet noodzakelijk.

 

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:

Introduction

What is artificial intelligence, and why would we need it? What distinguishes artificial intelligence within computer science, and what are intelligent agents?

Problem-solving by searching

One of the most basic way of finding an answer to a problem is by searching. For example, suppose you want to find the shortest route between two cities, to arrange eight queens on a chessboard so that no queen is threatening another, or solve a sliding tile puzzle. In all these cases, the solution can be found by searching. But how can this be done by a computer?

Game playing

Classical search algorithms treat other goal-directed agents as unpredictable elements of the envrionment.However, goal-directed agents can often be predicted.

Constraint Satisfaction Problems

While Constraint Satisfaction Problems (CSPs) can be solved using the classical search algorithms, CSPs show that it can help to plan your search ahead of time.

 

Internet Security

Inhoud

In de cursus Internet Security wordt onderzocht hoe computers kunnen worden aangevallen en hoe je je daartegen kunt verdedigen. Er is bijzondere aandacht voor web hacking.

 

Internet Security - Attack and Defense
In the press and in popular movies we hear and see that hackers break into critical systems, get access to classified information and trace your network activities with just a few clicks of a button. But are such scenarios real? How do attacks look like, how can we protect against such attacks and how can we securely exchange data over the Internet?
Internet Security – Web
Web applications are most likely the most pervasive systems and the one closer to our daily Internet experience. They are also a very likely target for attackers, and a likely entry point to compromise a system or network. In this course you will gain practical experience about web security and you will have the possiblity to try first hand how to gain access to a system.
Requirements
This course is intended for students with a solid understanding of networking who want to learn about network attacks, how those attacks can be measured and what can be done in terms of mitigation and defense. To follow this course, some basic programming skills (C, Java, ...) are required. In addition, you should be able to use Linux systems and set-up and maintain Virtual Machines (VirtualBox, Vagrant, Ubuntu).

 

In deze cursus wordt samengewerkt met de Universiteit Twente. Men neemt deel aan hun gelijknamige cursus, die via een MOOC wordt aangeboden. Afsluiting gebeurt door middel van het maken van opdrachten, er is geen toets/tentamen. De sessies in Utrecht zijn ingepland als (samen)werksessies, mogelijk met begeleiding.
Om deze reden is de cursus ook verzet naar blok 3. Mensen die graag eerder deze cursus willen doen, zouden dat in blok1 kunnen doen. Vanwege deze vorm wordt het cursusgeld mogelijk verlaagd.

 

Internet of things

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.
De cursus bestaat uit twee delen. Het eerste richt zich op de datacommunictie, zoals in sensornetwerken, het tweede richt zich meer op aansturing. Hoewel de cursus nu als één geheel in het programma staat, is het de bedoeling dat cursisten zich vanaf januari 2019 voor beide delen apart kunnen inschrijven.

Inhoud deel 1

The internet of things (IoT) is a computing concept that describes the idea of everyday physical objects being connected to the internet. With the internet of things, the physical world is becoming one big information system. Wireless Sensor Networks (WSN) are like the eyes and ears of the Internet of Things. Advances in sensor technology, low power electronics and low-power wireless devices have enabled the development of cheap, small, low-power sensor nodes, integrating sensing, processing and wireless communication capabilities. Embedding millions of sensors into an environment creates a digital skin or wireless network of sensors. These massively distributed sensor networks, communicate with one another and summarize the immense amount of low-level information to produce data representative of the overall environment. From collaboration between (large) groups of sensor nodes, intelligent behaviour can emerge that surpasses the limited capabilities of individual sensor nodes.

While it is fairly easy to sketch advanced IoT applications, it is not straightforward to realize these in a cost-effective manner. Relevant background topics are: distributed systems (architecture and protocols), networked systems, and resource management.

After completing the course, students are able to:

The course is composed of two half-day meetings in Utrecht and a whole day practical course at University of Twente. Students will construct a WSN and present a research paper to the group.

Voorkennis

Basic programming skills, preferably C++ or C++like language.

 

Inhoud deel 2

Volgt nog

 

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.

 

Vanaf het cursusjaar 2018/19 zijn de twee delen van deze cursus - 'Media en User Experience' en 'Game Design' - als aparte cursussen te volgen, elk 3 ec.