Studiewijzer 2019/2020
Globale inhoud
Dit vak bereidt studenten voor op een serie algoritmische programmeerwedstrijden: de *Amsterdam Programming Contest* (APC) aan de UvA, de *Benelux Algorithm Programming Contest* (BAPC), en de *North-Western European Regional Contest* (NWERC). Om goed te presteren op een wedstrijd heb je kennis nodig van standaardtechnieken, moet je creatief om kunnen gaan met abstracte problemen, nauwkeurig kunnen programmeren en goed samen kunnen werken. Met al die dingen oefenen we bij dit vak.
Studiemateriaal
Practicummateriaal
Overig
Leerdoelen
- Studenten kunnen in een wedstrijdsetting algoritmes en datastructuren gebruiken om wedstrijdproblemen op te lossen. Ze kunnen: - herkennen welke methode gebruikt moet worden; - de details van de methode aanpassen op het probleem; - de methode correct implementeren (in Python).
- Studenten kunnen praktische inschattingen maken van de complexiteit van algoritmes, en daarmee beoordelen of een algoritme een wedstrijdprobleem oplost.
- Studenten kunnen zelfstandig nieuwe algoritmes en datastructuren bestuderen en begrijpen, en deze kennis overdragen aan teamgenoten.
- Studenten kunnen in een wedstrijdsetting samenwerken, en middelen als een computer efficient met een team delen.
Onderwijsvormen
- Hoorcollege
- (Computer)practicum
- Zelfstudie
Verdeling leeractiviteiten
|
Activiteit
|
Uren
|
|
|
Hoorcollege/practicum
|
32
|
|
|
Zelfstudie
|
52 |
|
|
Totaal
|
84
|
(3 EC x 28 uur)
|
Dit komt neer op ruim 3 uur zelfstudie per week.
Aanwezigheid
Aanwezigheidseisen opleiding (OER-B):
-
Van elke student wordt actieve deelname verwacht aan het onderdeel waarvoor hij/zij staat ingeschreven.
-
Als een student door persoonlijke omstandigheden niet aanwezig kan zijn bij een verplicht onderdeel van het programma, dient hij/zij dit zo snel mogelijk schriftelijk te melden bij de betreffende docent en de studieadviseur.
-
Het is niet toegestaan om verplichte onderdelen van een onderdeel te missen als er geen sprake is van overmacht.
-
Bij kwalitatief of kwantitatief onvoldoende deelname, kan de examinator de student uitsluiten van verdere deelname aan het onderdeel of een gedeelte daarvan. Voorwaarden voor voldoende deelname worden van te voren vastgelegd in de studiewijzer en op Canvas.
-
Bij alle onderwijseenheden van jaar 1 en 2 is een student verplicht bij minimaal 80% van de werkcolleges en tutoraten aanwezig te zijn. Bovendien moet worden deelgenomen aan eventuele tussentoetsen en verplicht gesteld huiswerk. Als niet aan deze verplichting is voldaan, wordt de student uitgesloten voor de herkansing van de onderwijseenheid. In geval van persoonlijke omstandigheden, zoals in OER-A Artikel A-6.4 omschreven, wordt in overleg met de studieadviseur een afwijkende regeling voorgesteld.
Aanvullende eisen voor dit vak:
Dit vak is een "Aan voldaan/Niet aan voldaan" vak. Je krijgt dus geen cijfer. Om een "voldaan" te krijgen, moet je:
- Maximaal twee keer afwezig zijn bij het college (zonder speciale reden).
- Alle notebooks voldoende ingeleverd hebben.
- Maximaal één keer niet de wekelijkse Kattis-opgaven gemaakt hebben.
- Een presentatie geven aan het einde van het vak (in groepsverband).
Toetsing
| Onderdeel en weging
|
Details
|
|
| |
Opdrachten
Wekelijks zijn er twee soorten opdrachten:
- Een Jupyter notebook, die gemaakt en ingeleverd moet worden. Om het vak te halen moeten alle notebooks voldoende zijn.
- Een set Kattis-problemen, waar een minimaal aantal van gemaakt moet worden. Kattis bepaalt automatisch of een inzending correct of incorrect is.
Aan het einde van het vak geef je éénmaal een presentatie waarin je in groepsverband aan je medestudenten een nieuw algoritme of datastructuur uit legt.
Fraude en plagiaat
Dit vak hanteert de algemene 'Fraude- en plagiaatregeling' van de UvA. Hier wordt nauwkeurig op gecontroleerd. Bij verdenking van fraude of plagiaat wordt de examencommissie van de opleiding ingeschakeld. Zie de Fraude- en plagiaatregeling van de UvA: http://student.uva.nl
Weekplanning
| Weeknummer |
Onderwerpen (Track A)
|
Onderwerpen (Track B) |
| 1 |
Introductie |
Refresher |
| 2 |
Algoritmes, Binary search |
Bisectiemethode, Ternary search |
| 3 |
Grafen, Depth first search |
Flow (1) |
| 4 |
Grafen, stacks |
Flow (2) |
| 5 |
Breadth First Search, queues |
Flow (3) |
| 6 |
Toegepaste complexiteitstheorie |
Practicum complexiteitstheorie |
| 7 |
Dynamic programming (1) |
Dynamic programming (3) |
| 8 |
Tussenwedstrijd |
Tussenwedstrijd |
| 9 |
Getaltheorie (1) |
Getaltheorie (2) |
| 10 |
Datastructuren (1) |
Datastructuren (2) |
| 11 |
Kahn |
Tarjan |
| 12 |
Dijkstra |
Floyd-Warshall |
| 13 |
Dynamic programming (2) |
Dynamic programming (4) |
| 14 |
Presentaties |
Presentaties |
| 15 |
Presentaties |
Presentaties |
| 16 |
Eindwedstrijd |
Eindwedstrijd |
Rooster
Het rooster van dit vak is in te zien op DataNose.
Coördinator