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´e) 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¨orienteerd 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, PyGame, 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! Google, NASA, Nokia, TU Delft • 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´ee 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´e´el 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