Voorbereiding Programmeerwedstrijden

najaar 2021

Toren Academiegebouw

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.

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: maandag 1 november 2021, 09.15-13.15.
Regels hierbij:

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:

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:

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.

Oud tentamen


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/