Voorbereiding Programmeerwedstrijden is een extracurriculair vak binnen
de bachelor Informatica aan de Universiteit Leiden.
Het wordt in het najaar van 2021 voor de tweede keer gegeven.
Praktische informatie
Docent: Rudy van Vliet
te vinden op: kamer 140 van het Snellius
telefoon: 071-527 2876
email: rvvliet(at)liacs(dot)nl Onderwijsvorm: hoorcollege en werkcollege (practicum) Hoorcollege:
zeven maandagen van 09.15-11.00 uur, in zaal 312 van het Snellius.
Werkcollege (practicum): zeven donderdagen van 09.15-11.00 uur,
in computerzaal 307 in het Snellius.
Beide van 6 september t/m 21 oktober 2021.
Uitzondering: vanwege Leidens Onzet is er geen hoorcollege op maandag
4 oktober.
Dat college wordt gegeven op dinsdag 28 september, 09.15-11.00 uur.
Studielast
Met het behalen van dit vak verdient u 2 EC.
Inhoud
Programmeerwedstrijden vormen een goede gelegenheid om je algoritmische
programmeervaardigheden aan te scherpen. Het is daarbij motiverend als
je ook goed presteert. Bij dit vak behandelen we enkele types opgaven
die regelmatig voorkomen bij wedstrijden, en lossen die ook op.
Te denken valt aan opgaven met strings, combinatorische opgaven,
graafwandelingen, andere graafalgoritmes, dynamisch programmeren
en geometrische opgaven.
Zowel voor de programmeerwedstrijd aan het eind van het vak, als voor
de opgaven tussendoor maken we gebruik van
DOMjudge bij LIACS.
Hiervoor moet je als gebruiker geregistreerd zijn in dit systeem.
Dit kan op twee manieren:
Ga naar
DOMjudge bij LIACS
(alleen bereikbaar vanuit LIACS),
klik Login, klik Register now, vul in username / gewenste team name /
password (2x). Als het goed is, word je nu automatisch toegevoegd aan
de wedstrijden van het vak. Zie je rechtsboven in de browser geen
wedstrijden die beginnen met VbPw2021, meld je dan bij de docent
met je username, dan voegt hij je handmatig toe.
Meld je aan bij de docent met je gewenste username en team name,
dan maakt hij een user met password en een team voor je aan, en voegt
hij je toe aan de wedstrijden van het vak.
Toetsing
Programmeerwedstrijd met vier a vijf opgaven.
Datum: maandag 1 november 2021, 09.15-13.15.
Regels hierbij:
duur: vier uur.
je werkt individueel.
programmeertaal is in principe C++;
andere programmeertalen zijn ook toegestaan, als ze zijn
ge-installeerd in
DOMjudge bij LIACS
2.5 punt per opgave te verdienen
maximaal twee pogingen per opgave;
bij tweede poging is nog maar 2 punt te verdienen
bij correcte oplossing 0.25 punt aftrek als oplossing niet binnen een uur
is ingeleverd (bij tweede ingeleverde opgave binnen twee uur, enzovoort)
als laatste poging voor opgave niet goed is, dan een percentage
van 1.5 punt (afhankelijk van fractie correcte testcases, voorzover
algoritmisch opgelost)
het is de bedoeling dat het internet in de wedstrijdzaal wordt afgesloten
tijdens
de wedstrijd; je mag wel een papieren handleiding van je programmeertaal
meenemen + maximaal 25 pagina's met algoritmes.
Er is een hertentamen geweest, met dezelfde regels.
Datum: dinsdag 14 december 2021, 14.00-18.00.
Beide tentamens zijn nagekeken.
De cijfers staan in
Brightspace, inclusief eindcijfers.
Huiswerk: opgaven tussen de colleges door (plusminus vier keer).
Regels hierbij:
beschikbare tijd: ongeveer een week.
je werkt individueel.
programmeertaal is in principe C++;
andere programmeertalen zijn ook toegestaan, als ze zijn
ge-installeerd in
DOMjudge bij LIACS
2.5 punt per opgave te verdienen
onbeperkt aantal pogingen, maar
bij tweede poging is nog maar 2 punt te verdienen,
bij derde poging of meer is nog maar 1.5 punt te verdienen,
als laatste poging voor opgave niet goed is, dan een percentage
van 1.5 punt (afhankelijk van fractie correcte testcases, voorzover
algoritmisch opgelost)
In totaal zijn vijf programmeeropgaven als huiswerk opgegeven.
Je kon dan maximaal 12.5 punt verdienen.
Alle huiswerkopgaven zijn nagekeken.
De cijfers staan in
Brightspace.
Bonuspunten te verdienen met goede prestaties op LKP2021 en BAPC2021:
0.5 punt bij klassering in bovenste kwart van alle lokale voorrondes /
BAPC
0.25 punt bij klassering in tweede kwart van alle lokale voorrondes /
BAPC
Totale bonus is dus maximaal 1.0 punt.
Het eindcijfer is een gewogen gemiddelde van eindwedstrijd (80%) en opgaven
tussendoor (samen 20%), opgehoogd met de bonus.
Het maximale eindcijfer is een 10.
Het vak is gehaald wanneer het cijfer voor de programmeerwedstrijd minstens
5.0 is en het eindcijfer inclusief bonus minstens 5.5 is.
Alle cijfers
zullen gepubliceerd worden in
Brightspace.
Zorg dus dat je je daar aanmeldt voor dit vak.
Template programma
Je programma moet zijn invoer uit standard input lezen en zijn uitvoer
naar standard output schrijven. Bij het testen in het jurysysteem
zal de testinvoer vanuit een bestand naar de standard input worden
gestuurd, en de uitvoer vanuit standard output naar een bestand.
Dit laatste bestand wordt dan vergeleken met een bestand met de juiste
uitvoer.
Om een idee te krijgen hoe je de invoer uit standard input kunt lezen
en de uitvoer naar standard output kunt schrijven, zijn
hier twee versies van een helloworld
opgave, met bijbehorende C++ programma's.
Vragenuur
Indien daar belangstelling voor bestaat, kan er een vragenuur voor
de nog te plannen programmeerwedstrijd worden ingepland.
Daarbij kun je dan de vragen stellen die opgekomen zijn bij
het leren en oefenen voor de wedstrijd.
Practicum
Tijdens de werkcolleges/practicumbijeenkomsten gaan we praktisch
aan de slag met opgaven uit het boek. Deze kunnen ingediend worden
bij de
online judge (voorheen bekend
als de Universidad de Valladolid online jugde).
Dit kan ook nog tussen de colleges door.
Hierbij mag je in teams samenwerken.
Literatuur
Steven S. Skiena & Miguel A. Revilla, Programming Challenges -
The programming contest training manual, Springer (2003),
ISBN 9780387001630.
Hieruit behandelen we (onder voorbehoud) de hoofdstukken 3, 6, 9, 10, 11
en 13.
Tentamenstof
De leerstof en oefenstof voor de programmeerwedstrijd is
de stof die tijdens de colleges wordt behandeld.
Een overzicht hiervan is te vinden in het
overzicht van behandelde stof en opgaven.
Behandelde stof, opgaven en slides
Voor wie door omstandigheden een hoorcollege of werkcollege
moet missen,
zullen we per week bijhouden
welke stof en opgaven we hebben behandeld.
U vindt dit overzicht
hier
(bijgewerkt t/m practicumbijeenkomst van 21 oktober 2021, compleet dus).
De slides die tijdens de colleges gebruikt zijn,
worden na elk college hieronder gepubliceerd.
Het vak Voorbereiding Programmeerwedstrijden wordt nu voor de tweede keer
gegeven. De vorige keer was in het najaar van 2019. De website van die keer
vindt u hier.
Vragen en opmerkingen kunt u sturen naar:
Rudy van Vliet;
rvvliet(at)liacs(dot)nl
Laatste wijziging: 3 september 2023
- http://www.liacs.leidenuniv.nl/~vlietrvan1/vbpw/