Banner image by Sebastian Niedlich on Flickr, CC BY-NC-SA 2.0
Programmeermethoden NA, Najaar 2017
Docent: dr. K. F. D. Rietveld
Practicumassistenten: Leon Helwerda MSc (hoofd), Dennis van der Zwaan, Simon Klaver, Lennard Kwakernaak, Marco van Dijk, Peter Bosch.
Buiten de werkcolleges en vragenuren is het mogelijk om per e-mail vragen te stellen over het programmeerwerk. Je kunt je e-mail sturen naar prna2017-team@lists.liacs.nl.
Beschrijving
Tijdens het college Programmeermethoden NA zal de programmeertaal Python uitgebreid, maar niet geheel, worden behandeld. Naast het leren programmeren in een concrete programmeertaal staat de studie van algoritmen centraal; zo wordt er onder meer aandacht besteed aan sorteeralgoritmen. Principes uit de software engineering komen aan bod. Tevens zal er aandacht worden besteed aan het gebruik van Python in een wetenschappelijk context: het doen van numeriek rekenmerk, dataverwerking en analyse, en het maken van plots van hoge kwaliteit.
Het vak heeft voor ogen elke student de basisbeginselen en concepten van programmeren mee te geven, waaronder een ‘working knowledge’ van Python. Een student die dit vak behaald heeft zal dan in zijn verdere studieloopbaan eigen ontwikkelde computerprogramma’s Python of een andere taal kunnen gebruiken tijdens onderwijs of onderzoek.
Examinering
De beoordeling geschiedt op basis van een schriftelijk tentamen dat voor tweederde het eindcijfer bepaalt, en een programmeerpracticum dat voor eenderde meetelt. Het programmeerpracticum bestaat uit drie opdrachten. Deze opdrachten worden apart becijferd en hiervan wordt het gemiddelde genomen om het cijfer voor het programmeerpracticum te bepalen. Zowel het tentamencijfer als de cijfers van alle programmeeropdrachten moeten voldoende zijn (tenminste 5.5) om te kunnen slagen voor het vak.
Het eindcijfer wordt als volgt berekend:
P = (O1 + O2 + O3) / 3.0 Eindcijfer = (P + 2T) / 3.0, afgerond naar het dichtstbijzijnde getal uit {1,2,3,4,5, 6,6.5,7,7.5,8,8.5,9,9.5,10} Hierbij: Ox: Opdracht x, x = 1,2,3; P: Programmeercijfer; T: TentamencijferLet op: als het cijfer van het schriftelijk tentamen onvoldoende is, is dit meteen het eindcijfer! En als dit wel voldoende is, maar het programmeerwerk is niet af, wordt er nog geen eindcijfer opgemaakt!
Literatuur
Dictaten
- Dictaat Computers en Programmeren
- Het dictaat met een beknopte behandeling van Python (update versie 2017: vergeleken met de versie 2016 maar kleine aanpassingen/verbeteringen, er is geen nieuwe stof toegevoegd.)
Slides hoorcolleges
- Hoorcollege 1: Introductie, Python, UNIX
- Hoorcollege 2: Types
- Hoorcollege 3: Controlestructuren
- Hoorcollege 4: Files en functies
- Hoorcollege 5: Functies (vervolg) en lijsten
- Hoorcollege 6: Lijsten en algoritmes
- Hoorcollege 7: OOP en modules (update 13 november, enige verduidelijkingen OOP gedeelte)
- Hoorcollege 8: NumPy
- Hoorcollege 9: NumPy (vervolg), iPython & matplotlib
- Hoorcollege 10: NumPy (vervolg), Python module showcase
Werkcolleges
- Werkcollege 1: UNIX
- Werkcollege 2: Eerste opgave I
- Werkcollege 3: Eerste opgave II
- Werkcollege 4: Tweede opgave I
- Werkcollege 5: Op Papier I en Tweede opgave II
- Werkcollege 6: Tweede opgave III
- Werkcollege 7: Tweede opgave IV
- Werkcollege 8: NumPy en Derde Opgave I
- Werkcollege 9: Op Papier II en Derde Opgave II
- Werkcollege 10: Derde Opgave III
- Werkcollege 11: Derde Opgave IV
Tentamenstof
Onder de tentamenstof valt al hetgeen besproken tijdens de hoorcolleges. Zie de hoorcollegesheets en het dictaat hierboven.
En zie de oefententamens hieronder. Er wordt altijd wel iets gevraagd over sorteren en zoeken, functieparameters en globale variabelen, lijsten, 2-dimensionale arrays (incl. slicing en indexing daarvan).
Oefententamens
Oefenopgaven Werkcollege 9 en de uitwerking.
- Oefententamen (gebaseerd op het C++
tentamen voor studenten Natuur/sterrenkunde van november 2015).
(Uitwerking)
- Tentamen 16 december 2016.
(Uitwerking)
Update januari 2018: kleine aanscherping opgave 2.c. ten opzichte van originele tentamen. - Hertentamen 27 januari 2017.
(Uitwerking)
Update januari 2018: kleine aanscherping opgave 2.c. ten opzichte van originele tentamen. - Tentamen 8 december 2017. (Uitwerking)
Links en referenties
Websites
- Officiële website van Python
- Python Tutorial van python.org
- Python Library Reference, hier staan alle modules van de Python standaard bibliotheek beschreven.
- Visualize Python, deze website kan het uitvoeren van (simpele) Python programma's grafisch weergeven. Erg handig als je moeite hebt van het begrijpen van Python datastructuren!
- Scipy Lecture Notes tutorial en oefeningen voor NumPy, Scipy en matplotlib.
Extra's
Boeken
- Dr. Eric Ayars, Computational Physics With Python (PDF, 7.55MB, 194 pagina's).
- Computational Physics With Python, een aantal hoofdstukken van dit boek zijn gratis te downloaden.
- Doing Math With Python
- Effective Computation in Physics
Vakken waarbij Python wordt gebruikt
Bij verschillende vakken in de studies Natuurkunde en Sterrenkunde wordt gebruik gemaakt van Python. Hier worden de basisprincipes van Python als bekend verondersteld en zal je Python gaan gebruiken als gereedschap bij het doen van onderzoek.