RU Pythoncursus
Welkom bij de Pythoncursus aan de Radboud Universiteit! In deze cursus ga je in zes bijeenkomsten leren om simpele programmaatjes te schrijven in Python. Iedere week is er een bijeenkomst op de universiteit waarin je onder begeleiding van studenten een aantal opdrachten gaat maken. In deze opdrachten moet je heuse programma's in elkaar zetten!
CS Circles
Voor deze cursus maken we als achtergrondmateriaal gebruik van de online Pythoncursus van CS Circles. Door het volgen van deze cursus kun je je basisvaardigheden ontwikkelen. Deze basisvaardigheden heb je tijdens de bijeenkomsten nodig om aan de wat moeilijkere opdrachten te werken.
Als voorbereiding op iedere bijeenkomst is het de bedoeling dat je aantal van de CS Circles-opdrachten maakt. Op die manier kun je tijdens de bijeenkomst snel aan aan slag met de inleveropdrachten. Welke opdrachten je moet inleveren, kun je hieronder vinden.
Als je thuis de opgaven aan het maken bent en er niet helemaal uit komt kan je ons altijd even contact opnemen. Dat kan door ons een e-mail te sturen, maar ook door op de "help"-knop te klikken. Deze kun je onderaan elke opgave vinden.
Programmeeromgeving
Voor deze cursus gebruiken we de VSCode programmeeromgeving. Deze staat op de universiteit al op de computers.
Voor thuis: installeer eerst de laatste versie van Python 3, en download daarna VSCode. Vervolgens installeer je in VS Code de Python extension. Je kunt ook gebruik maken van de gratis Community Edition van PyCharm. In deze PDF kun je uitleg vinden over het gebruik van deze programmeeromgeving.
Als PyCharm niet beschikbaar is, kun je sommige van de opdrachten ook maken in de online Repl.it omgeving.
Planning
In onderstaande tabel staan de geplande bijeenkomsten. De fysieke bijeenkomsten beginnen om 10.00 uur en duren tot ca 16.00 uur. De online bijeenkomst begint om 14.00 uur en duurt tot 16.00 uur. Het is de bedoeling dat je het huiswerk uit CS Circles vóór de geplande bijeenkomst hebt gemaakt. In de bijeenkomst is er dan vervolgens tijd om aan de opdrachten te werken.
We snappen dat er waarschijnlijk nogal wat niveauverschil tussen jullie zal zitten. Daarom is deze planning een voorlopige planning. Voel je dus vrij om iets vooruit te werken of iets achter te lopen.
Hier zullen geleidelijk ook de voorbeelduitwerkingen van de opdrachten beschikbaar komen. Wijkt jouw code af van de uitwerking die hier gegeven is? Dat is niet erg, er zijn vaak vele manieren om een programmeerprobleem op te lossen. Bij sommige opdrachten hebben we ook meerdere uitwerkingen gegeven. Vaak is er dan één 'naïve' uitwerking die gebruik maakt van de stof die jullie bij die opdracht al geleerd hadden, en de andere uitwerkingen gebruiken geavanceerdere Python-technieken.
Datum | Zaal | Huiswerk uit CS Circles | Slides | Extras | Opdrachten | Uitwerkingen |
---|---|---|---|---|---|---|
15 November | HG00.023 | 0, 01, 01E, 02, 02X, 03, 04, 05, 06, 06D, 07, 07A, 07B, 07C | Week 1 | |||
22 November | Online | 08, 09, 10, 11A, 11B, 11C, 12 | Week 2 | |||
29 November | HG00.023 | 13, 14, 15, 16, 17, 18 | Week 3 |
Extra uitdagingen
Je leert bij deze cursus een aantal basisvaardigheden die komen kijken bij programmeren. Er is echter maar één manier om echt goed te leren programmeren: veel oefenen. Dat kan door zelf projectjes te verzinnen om uit te werken, maar de ervaring leert dat dat vaak niet even gemakkelijk gaat. Er zijn echter ook enorme lijsten met problemen beschikbaar die anderen al bedacht hebben die je als oefening kunt gebruiken. Er bestaan zelfs heuse programmeerwedstrijden, waar mensen binnen zo kort mogelijke tijd (of met zo efficient mogelijke code) allemaal hetzelfde probleem oplossen. In week 1 heb je al een opdracht gezien uit een van de kwalificatierondes van Google Code Jam. Hieronder vind je een lijst van een aantal websites waar vergelijkbare problemen zijn verzameld.
- Google Code Jam is een jaarlijks terugkerende wedstrijd waarin programmeurs in verschillende rondes binnen zo kort mogelijke tijd een aantal problemen oplossen. Met name de kwalificatierondes zijn redelijk te doen na het volgen van deze cursus. De problemen bij Code Jam zijn meestal helder geformuleerd, en omdat het een vrij populaire wedstrijd is zijn er volop blogposts met uitleg beschikbaar.
- Project Euler is een set van wiskundige problemen die je met slim programmeerwerk kunt oplossen. Ze zijn afwisselend in moeilijkheidsgraad - een deel kan je prima op papier oplossen, terwijl een ander deel vergevorderde wiskundige trucjes vereist..
- MysteryTwister C3 is een verzameling puzzels die allemaal met geheimschrift te maken hebben. Ze vereisen af en toe wat achtergrondkennis over cryptografie, maar meestal wordt dit bij de opgave uitgelegd. Qua programmeerniveau zijn ze meestal prima te doen, dus als je houdt van puzzelen is dit zeker een aanrader.
- Code Chef is een platform waar constant programmeerwedstrijden worden gehouden. In tegenstelling tot Code Jam voert TopCoder de code die je instuurt zelf uit; je hoeft dus geen output in te leveren, maar gewoon uitvoerbare code. De enige beperking is dat je een van de 35 talen gebruikt die ze ondersteunen.
Je kan natuurlijk nog veel meer met Python dan alleen algoritmische problemen oplossen. Hieronder zullen we een aantal vervolg-tutorials verzamelen die je zou kunnen proberen.
- Django is een uitgebreid framework waar je in Python websites mee kan bouwen. Dat is een hele andere tak van sport dan de algoritmische problemen die we vooralsnog bekeken hebben, maar is ook een veelgebruikte toepassing. Het vergt wat kennis van web-development (d.w.z. het helpt als je al een beetje bekend bent met HTML / CSS) en is wellicht het handigst op een unix-systeem (al werkt het ook uiteindelijk wel op Windows), dus als je een uitdaging zoekt kan je de Django-tutorial doorwerken.
Opmerkingen, verbeteringen en tips
Deze kun je via deze link anoniem aan ons doorgeven. We waarderen de feedback!
Assistenten
Ieder jaar wordt de Pythoncursus mogelijk gemaakt door de inzet van een team docenten, medewerkers en student-assistenten. Hieronder vind je de huidige en voorgaande student-assistenten op een rijtje.
Huidige assistenten
- Lars van Rhijn (2021)
- Job van Doesburg (2021)
- Marijn Meuleman (2021)
Voorgaande assistenten
- Joost Rijneveld (2014-2015)
- Koen Dercksen (2016-2018)
- Koen van Ingen (2014-2015)
- Ramon Janssen (2014-2015)
- Tanja Crijns (2016-2018)
- Marein Könings (2014-2019)
- Michiel van de Noort (2019)
- Julian van der Horst (2019-2020)
- Luko van der Maas (2019-2020)
- Brian Wieggers (2020)
Contact
Als je ergens vragen of opmerkingen over hebt, voel je vrij ons aan te spreken of even een mailtje te sturen. Je kunt ons bereiken op het volgende mailadres: pythoncursus [AT] cs.ru.nl