RU Pythoncursus
Welkom bij de Pythoncursus aan de Radboud Universiteit! In deze cursus ga je in vier 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.
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 een aantal van de CS Circles-opdrachten maakt. Op die manier kun je tijdens de bijeenkomst snel aan aan slag met de geavanceerdere opdrachten. Daarnaast is er wekelijks een inleveropgave.
Als je thuis de opgaven aan het maken bent en er niet helemaal uit komt kan je altijd contact met ons opnemen. Dat kan door ons een e-mail te sturen, maar ook door op de "help"-knop te klikken in de CS Circles omgeving.
Programmeeromgeving
Voor deze cursus gebruiken we de PyCharm programmeeromgeving. Deze staat op de universiteit al op de computers.
Voor thuis: installeer eerst de laatste versie van Python 3, en download daarna PyCharm (scroll omlaag naar de Community Edition). 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 de onderstaande tabel staan de geplande bijeenkomsten. De bijeenkomsten beginnen om 10.30 uur en duren tot ca 15.30 uur. Het is de bedoeling dat je het huiswerk uit CS Circles en de inleveropgave vóór de geplande bijeenkomst hebt gemaakt, de inlever opgave graag voor maandag ochtend mailen naar *pythoncursus [AT] cs.ru.nl*. In de bijeenkomst is er dan vervolgens tijd om aan de nieuwe opdrachten te werken.
We snappen dat er waarschijnlijk nogal wat niveauverschil tussen jullie zal zitten. Daarom is deze planning puur een gids. 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 | Slides | Extras | Opdrachten | Uitwerkingen |
---|---|---|---|---|---|---|
23 January | HG00.206 | 0, 01, 01E, 02, 02X, 03 | Week 1 | |||
30 January | HG00.206 | 07ABC, Pycharm installeren, inlever opdracht week 1 | Week 2 | |||
06 February | HG00.029, HG00.206 | 8, 9, 10, 11AB, 13, inlever opdracht week 2 | Week 3 | |||
20 February | HG00.075 | 12, 14, 16, inleveropgave week 3: sorteren of Sierpinski | Week 4 |
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.
- Pygame is een bibliotheek waar je in Python games of simpele applicaties in kan schrijven. Dit is al heel snel veel complexer dan de opdrachten die je in deze cursus bent tegengekomen. Maar er zijn veel nuttige tutorials beschikbaar en er is veel mogelijk met Pygame.
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
- Marijn Meuleman (2024)
- Mark de Jong (2024)
- Emmy Postma (2024)
- Jord Cluitmans (2024)
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)
- Lars van Rhijn (2021)
- Job van Doesburg (2021)
- Marijn Meuleman (2021)
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