Dit vak wordt in najaar 2024 niet gegeven.
Tot 2025!
Voorbereiding Programmeerwedstrijden is een extracurriculair vak binnen
de bachelor Informatica aan de Universiteit Leiden.
Het wordt waarschijnlijk in het najaar van 2025 voor de vierde keer gegeven.
Praktische informatie
Docent: Rudy van Vliet
te vinden op: kamer BM.2.03 van het (nieuwe) Gorlaeus
telefoon: ....
email: rvvliet(at)liacs(dot)nl Onderwijsvorm: hoorcollege en werkcollege (practicum) Hoorcollege:
zes of zeven keer twee uur in een collegezaal
Werkcollege (practicum):
zes of zeven keer twee uur in een computerzaal.
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.
verschillende typen programmeeropgaven te onderscheiden
programmeeropgaven op te lossen door zorgvuldiger en kritischer
te programmeren
nieuwe algoritmes toe te passen
beter te presteren bij programmeerwedstrijden
DOMjudge
Zowel voor het tentamen aan het eind van de colleges, als voor
de huiswerkopgaven 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 VbPw2025, 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
Tentamen in de vorm van een programmeerwedstrijd met vier a vijf opgaven.
Datum: in overleg te bepalen.
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
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,
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.
Het minimumcijfer voor het tentamen is 1.0.
Afhankelijk van de belangstelling wordt er ook een hertentamen gehouden.
Huiswerk: maximaal vier opgaven tussen de colleges door.
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)
Punten van alle huiswerkopgaven worden genormeerd naar 10 punten totaal.
Het minimumcijfer voor het huiswerk is 0.0.
Het huiswerk is niet verplicht, maar is natuurlijk wel een goede oefening,
en het telt mee voor het eindcijfer.
Wanneer de huiswerkopgaven beschikbaar zijn, zullen ze hier worden
gepubliceerd.
Bonuspunten te verdienen met goede prestaties op LKP2025 en BAPC2025:
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 huiswerk (samen 20%) en
tentamen (80%), opgehoogd met de bonus.
Het maximale eindcijfer is een 10.
Om het vak te halen moet het tentamencijfer minstens 5.0 zijn
en het eindcijfer inclusief bonus minstens 5.5. Als het tentamencijfer
lager dan 5.0 is, is het tentamencijfer tevens het eindcijfer.
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
het nog te plannen tentamen worden ingepland.
Daarbij kun je dan de vragen stellen die opgekomen zijn bij
het leren en oefenen voor het tentamen.
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
zal aan het eind van de colleges gepubliceerd worden.
Behandelde stof, opgaven en slides
Voor wie door omstandigheden een hoorcollege of practicum
moet missen,
zullen we per week bijhouden
welke stof en opgaven we hebben behandeld.
U vindt dit overzicht
hier
(nu nog leeg natuurlijk...).
De slides die tijdens de colleges gebruikt zijn,
zullen na elk college hieronder gepubliceerd worden.
Het vak Voorbereiding Programmeerwedstrijden wordt nu voor de vierde keer
gegeven. De vorige keer was in het najaar van 2023. 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: 12 juni 2024
- http://www.liacs.leidenuniv.nl/~vlietrvan1/vbpw/