Eerste programmeertaal Leren programmeren vs. een programmeertaal leren In Nijmegen: Algol68 als basis voor o.a. Modula-2 en C Voor Codi/Boxmeer: Pascal, Java, HTML/PHP Niet helemaal tevreden over Java (Visual Café) en HTML/PHP, want veel details die afleiden bij leren programmeren Nog steeds op zoek naar een goede eerste programmeertaal, voor leren programmeren en als basis voor andere talen Python (opensource afkomstig uit Nederland), geen accolades/puntkomma s want inspringen bepaalt structuur Schooljaar 2005/2006 In 5v na Turing hoofstuk 3, lejos of PyGame An Introduction to Python Game Programming Lessen 1 tot en met 3 goed te doen Lessen 4 tot en met 6 moeilijk Hoe verder? JavaLogo in Python middels turtle.py PO tekenen, opendag en Pythagorasboom Kleine theorietoets Schooljaar 2006/2007 Vorig jaar een beetje rommelig Op zoek naar een goede (beginners)cursus met voldoende diepgang How to think like a computer scientist Learning with Python Twintig hoofdstukken met oefeningen per hoofdstuk Eerste zestien hoofdstukken (tot en met OO) zijn aan bod gekomen Toetsing: programmeeropdracht en theorietoets
How to think like a computer scientist Variables, expressions, statements Functions Conditionals, recursion, iteration Strings Lists, tuples, dictionaries Files and exceptions Classes and objects, classes and functions, methods, sets of objects, inheritance Linked lists, stacks, queues, trees Schooljaar 2007/2008 Vorig jaar in 5v cluster, tot en met OO hoofdstukken, geen problemen Nu in mengcluster, tot OO hoofdstukken, wel problemen bij 4h leerlingen Moeite met iteratie/recursie en eenvoudige datatypen, laatste hoofdstukken vertaald Elke week een vragenuurtje c.q. gezamenlijke samenvatting Programmeeropdracht en theorietoets vallen tegen Herkansing via completeren Informatica Olympiade Dit schooljaar Think Python (variant op eerdergenoemde boek) met grotere programmeeropdrachten over meerdere hoofdstukken, bijvoorbeeld TurtleWorld Vertaald en behandeld tot en met hoofdstuk 5, hierover later meer In 5v leerlingen opgaven laten inleveren, en elke 5v leerling begeleider van leerling uit 4h Ingeleverde opgaven beoordeeld en gebruikt als oefen- en toetsopgaven 2
In 5h/6v eerste stappen met Python en dynamische websites, via CGI scripts naar Web2py, Django of Google App Engine Helaas, via CGI scripts naar... Scratch Voordelen van Python (1) Net als bij Pascal, leren programmeren als uitgangspunt Inspringen bepaalt structuur Leesbare programmacode c.q. uitvoerbare pseudocode Makkelijk aan te leren want klein en krachtig...... zowel de instructie-verzameling als de datatypen Interpreter met mogelijkheid voor interactief gebruik Meegeleverde shell kent de taal Voordelen van Python (2) Procedureel en objectgeörienteerd programmeren mogelijk maar niet verplicht Naar OO in meerdere hoofdstukken Goede en gratis boeken (beginners en gevorderden) Edu-sig met website en mailinglist Of interest to educators: GVR, RUR-PLE, Pyro, Blender, PIL, Py- Game, PyGeo, Numerical Python Goede doorstart via Python for Fun: spel maken, GUI programmeren, logisch programmeren, logische schakelingen, werking van een assembler/compiler Een goede eerste programmeertaal als basis voor andere talen 3
Nadelen van Python Uitgangspunt leren programmeren, nauwelijks gebruikt! SA, Nokia, TU Delft Google, NA- Sluit niet aan bij Java/HTML/PHP/MySQL leerlijn, Python gevolgd door Google App Engine In Nederland binnen VO nog nauwelijks bekend, wel in de rest van de wereld (Edu-sig) Weinig Nederlandstalig materiaal, work to be done Ander perspectief Niet alleen de leraar Ook leerlingen van Elzendaalcollege over Python Maaike Jans over Think Python en haar ervaringen van dit schooljaar Niels Schaminée over py4math, educatieve wiskunde software als profielwerkstuk Hoofdstuk 1 Interpreter en compiler Soorten fouten Debuggen Hello, World! Hoofdstuk 2 Waarden en types Variabelen Operatoren en operanden Commentaren 4
Hoofdstuk 3 Functies Nieuwe functies maken Parameters Stapeldiagrammen Hoofdstuk 4 TurtleWorld De for opdracht Generalisatie Refactoring Docstrings Pre- en postcondities Hoofdstuk 5 Modulo operator Boolsche expressies Logische operatoren Keuze opdracht Recursie Mijn mening Leuk Veel geleerd Te weinig gedaan 5
Python en profielwerkstuk py4math Lineaire functies Leerlingen 4h moesten nog wat oefenen Lineaire functies Het programma eens bekijken Invoerbalk rechts Duidelijke namen die aansluiten bij de leerstof Ook aanklikbaar tekenveld Getest met klas en bleek te werken Ontwikkeling py4math Ook 2 leerlingen uit 6v bezig met een programma Geïntegreerd Codeyard en Capgemini Open Source Award Verschillende versies gemaakt Finale gehaald Boeken Wel een beetje meer geleerd dan nodig was In totaal 4 boeken doorgewerkt Eerste programmeertaal Niet de eerste programmeertaal Al ervaring in Java en PHP Python héél erg simpel om te leren 6
Programmeren in Python (1) Ook bruikbaar voor doorgewinterde programmeurs Zeer krachtig Ingebouwde GUI package Tkinter Zeer uitgebreide documentatie Zeer toegewijde community Nooit extra hardware nodig Programmeren in Python (2) Leuk en simpel te gebruiken Snel resultaten zichtbaar Je leert snel welke stappen er nodig zijn om te (leren) programmeren 7