Buchbesprechung:

 

John Zelle, Python Programming: An Introduction to Computer Science

(in englischer Sprache)

 

Zielgruppe:

-         Lehrende, die eine fundierte Grundausbildung im Programmieren anbieten wollen.

-         Lehrende, die wissen wollen, wie man mit Python als „erster Programmiersprache“ arbeitet.

-         Lehrende, die Musterbeispiele und Übungsmaterial für Einführungskurse ins Programmieren suchen.

-         Schüler und Studenten, die einen ernsthaft einen gründlichen aber vergnüglichen Einstieg ins Programmieren suchen.

 

Bücher, die eine Einführung ins Programmieren mit einem didaktischen Anspruch bieten, sind heute nicht wie Sand am Meer zu finden. Bei vielen Programmierbüchern, die heute in EDV-Buchhandlungen zu finden sind, steht doch meistens das Erlernen einer bestimmten Implementation einer bestimmten Programmiersprache, d. h. ihrer Sprachelemente, ihrer Syntax, eventuell ihrer Bibliotheken und ihrer Entwickungsumgebung im Vordergrund, wobei sich naturgemäß bei jeder neuen Versionsnummer die Neuauflagen bzw. die auf wenige Kapitelteile und den Buchtitel beschränkten „Neubearbeitungen“ jagen.

 

Ungeachtet seines Titels ist John Zelles Buch erfreulicherweise ein Buch der anderen Art: eine didaktisch hervorragend aufgebaute Einführung in die grundlegenden Konzepte der Programmierung. Am Anfang einer solchen Arbeit steht für den Autor die Wahl der Programmiersprache. Für dieses Buch ist die Wahl auf Python gefallen. Als Grund dafür gibt der Autor an, dass ihn seine jahrelange Erfahrung mit „CS1-Kursen“, Einführungskursen in die „computer science“, beobachten ließen, welche Schwierigkeiten viele Studenten mit den Grundlagen der Programmierung haben. Er führt das auf die Komplexität der Sprachen und Werkzeuge zurück, die dabei oft verwendet werden. Sein Ziel war daher ein Buch zu schreiben, dass diese Grundlagen so einfach wie möglich, aber ohne unzulässig zu vereinfachen, darstellt. Die Verwendung von Python ist für die Erreichung dieses Zieles ein zentraler Punkt, denn Python ist einfach, elegant und unterstützt gut das Experimentieren mit Ideen.

 

Der Schwerpunkt des Buches liegt aber in der Darstellung der grundlegenden Prinzipien des Programmierens, wie sie in jeder Programmiersprache angewendet werden müssen. Der Autor vermeidet deshalb sogar an manchen Stellen, spezielle Eigenschaften von Python zu benützen, die in anderen Sprachen selten zu finden sind.

 

Der Geist und auch die Gliederung der Darstellung ist ein wenig an den Büchern von Cay Horstmann orientiert, etwa an „Computing Concepts with Java Essentials“ (wie der Autor auch in der Einleitung verrät).

 

Der Inhalt ist wie folgt gegliedert:

 

Kapitel 1-2: Computer, Programme und wie man sie schreibt.

Kapitel 3-4: Die Datentypen Zahlen und Strings, Dateien

Kapitel 5: Objekte und Grafik

Kapitel 6: Definition von Funktionen

Kapitel 7-8: Programmkontrolle: Verzweigungen und Schleifen

Kapitel 9: Programmentwurf. top-down und bottom-up (am Beispiel von Simulationen)

Kapitel 10: Definition von Klassen

Kapitel 11: Kollektionen: Listen, Dictionaries

Kapitel 12: OOD, Objektorientierter Entwurf

Kapitel 13: Entwurf von Algorithmen und Rekursion

 

Schon an dieser Gliederung erkennt man, dass die Lernkurve einen ziemlich flachen Verlauf hat. Die grundlegenden Kapitel 1-8 werden auf 260 Seiten abgehandelt. Wie es bei einem Lehrbuch, das Python verwendet, nahe liegend ist, wird ausführlicher Gebrauch vom interaktiven Pythoninterpreter gemacht, um die Arbeitsweise der neu eingeführten Sprachelemente direkt zu untersuchen.

 

Weiters zeichnet sich die Darstellung dadurch aus, dass sie eine große Anzahl von vollständigen Beispielprogrammen enthält, deren Entwicklung – manchmal in mehreren Varianten -  sehr gründlich diskutiert wird. Ein kleines Gustostück ist beispielsweise die Entwicklung von Programmen zur Bestimmung des Maximums dreier Zahlen in Kapitel 7. Dafür werden vier verschiedene Entwurfs-Strategien angewendet mit vier verschiedenen Ergebnisse, wobei auch die Vor- und Nachteile jedes Ergebnisprogramms diskutiert werden.

 

Für das Kapitel 5, das in das Programmieren mit Objekten einführt, hat der Autor eigens eine kleine sehr übersichtliche Bibliothek von Graphik-Objekten erstellt: graphics.py. (Sie ist auf der mit dem Buch gelieferten CD zu finden, aber auch aus dem Internet herunterzuladen – vgl. den Kasten am Ende der Buchbesprechung.) Sie basiert auf Tkinter, dem in der Python-Distribution enthaltenen GUI-Toolkit. Sie ermöglicht auf einfache Weise interaktive Grafik-Programme zu entwickeln und entlastet den Lernenden von den technischen Details von Tkinter. Diese Grafik-Bibliothek wird in den folgenden Kapiteln häufig eingesetzt um die jeweiligen Inhalte anschaulich und vergnüglich darzustellen.

Die grundlegenden Kapitel erhalten eine Ergänzung in Kapitel 11 über Listen und Dictionaries. Höhepunkt dieses Kapitels ist die Entwicklung eines Taschenrechner Progamms mit graphischer Benutzeroberfläche, das bereits Klassen und Objekte, insbesondere eine in Kapitel 10 entwickelte Button-Klasse verwendet. Die Implementation der Grafik findet auch hier mit
graphics.py ihr Auslangen.

 

Die Kapitel 9, 10, 12 und auch 13 sind verschiedenen Verfahren des Programmentwurfs gewidmet. Kapitel 10 ist vornehmlich der Programmierung von Klassen und Objekten gewidmet. Alle Verfahren werden an Beispielen vorgeführt und ihre Vor- und Nachteile sowie Anwendungsbereiche werden diskutiert. In Kapitel 12 steht als Anwendungsbeispiel die Entwicklung eines Würfelpoker Programms im Zentrum (Code: guipoker.py) . Dabei steht die Sachlogik der Anwendung – das „Fachkonzept“ – in einem eigenen Modul, für das davon getrennt ein textbasiertes und ein graphikorientiertes Benutzerinterface erstellt werden, die wahlweise eingesetzt werden können.  Zuletzt werden die für die objektorientierte Programmierung wichtigen Konzepte der Datenkapselung, des Polymorphismus und der Vererbung im Rückblick auf die entwickelten Programme diskutiert.

 

Kapitel 13 steht etwas einzeln da und widmet sich klassischen Themen wie Suchen und Sortieren, aber auch dem Thema Rekursion mit den Klassikern Türme von Hanoi, Fraktal (Koch-Kurve) und auch der Fibonacci-Folge mit einer Analyse der bekannten Problemen bei der rekursiven Programmierung.

 

Damit bietet das Buch meines Erachtens einen Grundstock an Themen zur „Einführung ins Programmieren“, der alles (und mehr) abdeckt, was diesbezüglich in einem Grundkurs an AHS/BHS gebraucht wird. Es bietet darüber hinaus dies in einer didaktisch wohldurchdachten Gliederung an. Aus langjähriger Unterrichtserfahrung schöpfend behandelt der Autor alle Themen in kleinen Lernschritten mit ausführlichen Besprechungen und Erläuterungen verschiedenster Stolpersteine die dem Lernenden bei der Erarbeitung des Stoffe im Wege stehen  könnten.

 

Einen weiteren überaus brauchbaren Pluspunkt stellen die umfangreichen Übungsabschnitte am Ende jedes Kapitels dar. Sie sind gegliedert in

-         Wiederholungsfragen, die ja/nein - Antworten erwarten oder Multiple Choice Fragen sind,

-         Diskussionsfragen, das Nachdenken über spezielle Abschnitte des Kapitels fördern und längere verbale Antworten verlangen, und

-         10 bis 20 Programmieraufgaben (je nach Umfang derselben).

 

Meines Erachtens kann damit dieses in einem sehr lesbaren Englisch geschriebene Buch in vielfacher Weise Anregung und sehr wirkungsvolle Hilfe bei der Planung und Vorbereitung von Programmier-Grundkursen sein.

 

Einziger Wermutstropfen mag sein, dass es in Europa nur mit relativ langen Lieferzeiten zu beschaffen ist. Vor einer Bestellung empfehle ich jedenfalls, die im untenstehenden Kasten angeführten Quellen zu begutachten, eventuell die Probekapitel herunter zu laden und durch zu schmökern, mit graphics.py zu experimentieren und/oder ein paar Beispielprogramme anzusehen. Von den angegebenen Webadressen aus ist auch eine direkter Kontakt mit dem Verlag möglich.

 

Gregor Lingl

 

Informationen und Material zu: John Zelle, Python Programming, An Introduction to Computer Science:

Verlag: Franklin, Beedle and Associates

 

ISBN 1-887902-99-6,

Preis: $ 35.00

 

http://mcsp.wartburg.edu/zelle/python/   ist die „Teaching with Python“ Abteilung auf der Website des Autors. Dort steht auch die

-   Graphik-Bibliothek graphics.py inklusive der Dokumentation im HTML- und PDF-Format und

-   der Code aller Beispielprogramme aus dem Buch

zum Download bereit.

 

http://www.fbeedle.com/99-6.html ist die zum Buch gehörige Website des Verlags. Sie bietet zum Kennenlernen und Beurteilen die Kapitel 2: Writing Simple Programs, 5: Objects and Graphics und 13: Algorithm Design and Recursion als PDF-Dateien zum Download an.