Voorbereiding Programmeerwedstrijden

najaar 2023

Toren Academiegebouw

Voorbereiding Programmeerwedstrijden is een extracurriculair vak binnen de bachelor Informatica aan de Universiteit Leiden. Het wordt in het najaar van 2023 voor de derde 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: zes dinsdagen van 13.15-15.00 uur, in zaal 313 (college 1) of 407-409 (colleges 2-6) van het Snellius.
Werkcollege (practicum): zes dinsdagen van 15.15-17.00 uur, in computerzaal 307 of (de laatste week) zaal 306-308 in het Snellius.
Beide van 5 september t/m 17 oktober 2023.
Uitzondering: vanwege Leidens Onzet is er geen hoorcollege op dinsdag 3 oktober.

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.

Aanbevolen voorkennis: Algoritmiek.

Doelstelling

DOMjudge

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:

Toetsing

Programmeerwedstrijd met vier a vijf opgaven. Datum: dinsdag 31 oktober, 13.15-17.15, in zaal 306-308 van het Snellius.
Regels hierbij: Er is een hertentamen geweest, met ongeveer dezelfde regels. Datum: woensdag 24 januari 2024, 13.00-17.00.
Beide tentamens zijn nagekeken. De beoordelingen zijn verstuurd. De cijfers staan in Brightspace.

Huiswerk: opgaven tussen de colleges door (plusminus vier keer). Regels hierbij:

Alle vier huiswerkopgaven zijn beoordeeld. De beoordelingen zijn verstuurd. U vindt de cijfers in Brightspace.

Bonuspunten te verdienen met goede prestaties op LKP2023 en BAPC2023:

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 practicum heeft moeten missen, hebben we per week bijgehouden welke stof en opgaven we hebben behandeld. U vindt dit overzicht hier (bijgewerkt t/m practicum van dinsdag 17 oktober 2023, compleet dus!)

De slides die tijdens de colleges gebruikt zijn, zijn hieronder nog te bekijken.

Oude tentamens


Het vak Voorbereiding Programmeerwedstrijden wordt nu voor de derde keer gegeven. De vorige keer was in het najaar van 2021. 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: 11 juni 2024 - http://www.liacs.leidenuniv.nl/~vlietrvan1/vbpw/