2. Stoffverteilungsplan [zurück]

(Erläuterung, Rahmenbedingungen/Vorgaben, Kompetenzen, Phase I, Phase II, Auswertung)

Erläuterung [zurück]

Bei der Verlaufsplanung sind wir davon ausgegangen, dass es bei der Einführung von objektorientiertem Programmieren sinnvoll ist mit Objekten aus dem Alltag, der unmittelbaren Umgebung, anzufangen, so auch bei der Analyse, dem ersten Schritt zum objektorientierten Programm.

 

Eine weitere Überlegung war, dass die Schüler möglichst alle Inhalte auf verschiedenen Ebenen gleichzeitig kennenlernen sollen. Damit ist gemeint, dass nicht erst ein "theoretischer" Block mit Übungen zur Darstellung von Klassen in UML ansteht und anschließend nur noch programmiert wird, sondern dass so bald wie möglich alle wichtigen Darstellungsarten (allgemeinsprachlich, UML, Phython-Code) beherrscht werden. Dieser Punkt ist in unserer Planung in der ersten Phase nach fünf Unterrichtsstunden erreicht. Im Folgenden sollen dann neue Inhalte auf jeder dieser drei Ebenen vermittelt werden.

 

Den Beginn einer zweiten Phase haben wir an die Stelle gesetzt, wo die Grafikbibliothek eingeführt wird. Ab diesem Punkt ist der Unterrichtsgegenstand fast ausschließlich das Spiel-Projekt.

 

Rahmenbedingungen/Vorgaben [zurück]

Zu planen ist der Informatikunterricht in der Sekundarstufe II für den Zeitraum von ca. 16 Wochen (mit 3x45Min. pro Woche, also ca. 48 Stunden). Dabei handelt es sich um das zweite Halbjahr der 11. Klasse in der dreijährigen Kursfolge.

 

Im ersten Halbjahr wurde eine Einführung in die Informatik über den internetorientierten Zugang gegeben. Dabei waren Grundlagen der Rechnerorganisation, der Netze und Geschichte der Informatik, sowie Datenbanken und Datenschutz die Themen.


"
Es sind knapp 50% Mädchen im Kurs. Programmiererfahrungen sind vereinzelt und unsystematisch vorhanden. Nahezu alle Schüler verfügen über einen heimischen PC mit Internetzugang." (Quelle: Seminarseiten)

In den Klassenräumen steht jedem Schüler ein vernetzer Rechnerarbeitsplatz zur Verfügung.

 

Kompetenzen [zurück]

Im Seminar wurden folgende Zielkompetenzen vorgeschlagen und erarbeitet:

 

Im Rahmen des zu planenden Anfangsunterrichts soll bei den Schülern ein Kompetenzerwerb angestrebt werden, der die gemeinsame Grundlage für die nachfolgende Kursphase auf der Basis des zukünftigen Berliner Rahmenplans darstellt.

Sachkompetenz

  1. Modell aus einem Weltausschnitt entwickeln und in einem Klassendiagramm (nach UML) darstellen
     

  2. Ein Anwendungsproblem objektorientiert analysieren, einen Lösungsansatz entwickeln und mit Hilfe von Programmiertechniken umsetzen
     

  3. Eine Modul-/Klassenspezifikation (Schnittstellen) lesen können und benötigte Teile in ein Programm einbinden
     

  4. Die für den Lernabschnitt erforderlichen Sprachelemente sicher beherrschen und anwenden
     

  5. Ein Programm angemessener Komplexität selbstständig (unter Zuhilfenahme einer Vorlage) projektieren und realisieren


Methodenkompetenz

  1. Klassendiagramm zur Strukturierung von Programmstrukturen , Nassi-Shneiderman-Diagramm zur Entwicklung von Algorithmen einsetzen
     

  2. Aus einer verbalen Aufgabenstellung einen Algorithmus entwickeln und in einem Nassi-Shneiderman-Diagramm darstellen
     

  3. Ein Nassi-Shneiderman-Diagramm in Programmcode überführen
     

  4. Einen Quelltext analysieren und in einem Nassi-Shneiderman-Diagramm darstellen
     

  5. Auftretende Probleme durch kundiges Benutzen eines geeigneten (integrierten) Hilfesystems selbständig lösen

Sozialkompetenz

  1. Umfangreiche Aufgaben untergliedern und in einem Team arbeitsteilig lösen
     

  2. Absprachen treffen und einhalten

Selbstkompetenz

  1. Eigene Lösungen der Gruppe vorstellen und verteidigen
     

  2. Eigenes Arbeitstempo entwickeln und verfolgen anhand geeigneter Arbeitsmaterialien

(Quelle: Seminarprotokoll)

 

Für unsere Planung können diese Kompetenzen übenommen werden. Allerdings mit einer gewissen Einschränkung bei den ersten beiden Punkten, denn diese zwei Kompetenzen sind nach dem ersten Halbjahr noch nicht erreicht. In unserer Planung ist zwar die Arbeit an einem Softwareprojekt vorgesehen, doch einzelne Klassen sind dabei z.B. schon "vorprogrammiert", so dass nur noch Methodenkörper gefüllt werden müssen.

Phase I (18 Stunden) [zurück]

Überblick: Einführung in die objektorientierte Denkweise, Analyse von Alltagsobjekten (Stift, Auto, Ofen, ...), Beschreibung von Objekten in natürlicher Sprache, UML und Python

Stunden Thema / Beschreibung Ziele Gegenstände
1 Einführung: Modelle und Modellbildung Motivation, Problembewusstsein schaffen, Überblick über die Halbjahresplanung, Modellbegriff einführen, Modelle analysieren existierende Modelle
2 Übungen zur objektorientierten Analyse Objekte beschreiben können (in natürlicher Sprache), Begriffe: Eigenschaft (Attribut) und Funktion (Methode) kennenlernen, Systeme in Objekte zerlegen können Alltagsobjekte (Stift, Auto, Ofen,...), alltägliche Objektzusammenhänge
2 Objektorientierte Analyse des Spiel-Prototyps Einstimmung in das Spiel-Projekt, erste Anwendung des Gelernten auf die Problemstellung Beschreibung des Spiels, Bildschirmfotos vom Prototyp, Prototyp als Vorführprogramm
2 Einführung in Python (Geschichte, Sprachkonzept) Motivation, Umgang mit der Benutzeroberfläche lernen Python-Interpreter/Editor
3 Übungen zur Einführung von Klassen und Instanzen Zwischen Klasse und Instanz unterscheiden können Einige der schon zuvor verwendeten Alltagsobjekte und Objektzusammenhänge
2 Übungen zur Einführung von UML-Klassendiagrammen Das bisher Gelernte in UML darstellen können Ergebnisse aus vorherigen Stunden
6 Übungen zur Umsetzung von UML-Klassendiagrammen in Python

Lernerfolgskontrolle (Begriffsdefinitionen, Darstellung einer Klasse in UML und Python)

 

Umgang mit der Benutzeroberfläche vertiefen Ergebnisse aus vorangegangenen Stunden (UML-Klassendiagramme), vorgebene UML-Klassendiagramme, Pythoninterpreter/Editor

PHASE II (30 Stunden) [zurück]

Überblick: Arbeiten mit der Grafikbibliothek, Beziehungen zwischen Klassen, Kontrollstrukturen

Stunden Thema / Beschreibung Ziele Gegenstände
3 Einführung in die Grafikbibliothek, Übungen mit der Grafikbibliothek Selbstständiges Benutzen von fremden Modulen mit Hilfe einer Spezifikation. Vorstellungsvermögen beim Umgang mit einer 2D-Pixelmatrix Modulspezifikation, Grafikbibliothek, einfach Grafikobjekte und deren Eigenschaften, vorbereitete Übungsprogramme
3 Zusammengesetze Grafikobjekte darstellen (Übungen) Vorstellungsvermögen beim Umgang mit einer 2D-Pixelmatrix und mehreren Objekten s.o.
3 Einführung von Kontrollstrukturen, Nassi-Shneiderman-Diagramm, Übungen mit bewegten Objekten

Leistungsüberprüfung (Kontrollstrukturen)

Algorithmenbegriff kennenlernen, Vorgänge in einzelne, durch Kontrollstrukturen gesteuerte Handlungsschritte zerlegen können. Bedeutung von Kontrollstrukturen für den Programmablauf erkennen. Alltagsalgorithmen, in den vorherigen Stunden entstandene Objektdarstellungen
5 Einführung der Klassenbeziehungen (Vererbung, Assoziation, Aggregation), Übungen in UML und Python

Lernerfolgskontrolle (Kontrollstrukturen, Vererbung, Aggregation, Assoziation)

Beziehungen zwischen Klassen erkennen, beschreiben und implementieren können verschiedene Klassen von Objekten
8 Objekte TBall, TSpielfeld, TSchlaeger aus dem Spiel-Projekt erstellen (oder fertigstellen)

Fertigstellung des Projekts,
Eventuelle Ausweitung auf Hindernisse (Bausteine) im Spielfeld

Anwenden des bisher Gelernten, selbstständiges Arbeiten, Vorgehensweise bei der Projektarbeit Spielbeschreibung, bisherige Ergebnisse in UML-Notation
3 "Pufferstunden"    

Auswertung [zurück]

Nach intensiver Beschäftigung mit der Sprache Python, dem Erstellen und Testen von Quellcode, sowie der Erstellung des Stoffverteilungsplanes mussten wir leider festellen, dass die Sprache Python nicht oder nur bedingt geeignet ist für die Einführung der objektorietierten Programmierung.

Für die Quellcodeerstellung fehlt (zumindest unter Windows) eine praktische und zugleich stabil laufende Entwicklungsumgebung. Das verwendete Pythonwin stellt zwar einige arbeitserleichternde Funktionen zur Verfügung (code completion, syntax highlighting,..) führt aber sehr oft zu Systemabstürzen und muss aus unersichtlichen Gründen zwischendurch neu gestartet werden, um Quelltextänderungen wirksam zu machen. Für die Schüler ist diese Entwicklungsumgebung nicht zumutbar. Unter Linux oder im kommerziellen Bereich mag es Alternativen geben, die wir jedoch nicht getestet haben.

Ein viel schwerwiegender Kritikpunkt liegt jedoch bei der Sprache selbst. Python hat zwar eine sehr klare Syntax und zwingt zur übersichtlichen Quelltextformatierung, doch es fehlt z.B. eine Zugriffskontrolle für Variablen. Das mag für professionelle Programmierer keine Rolle spielen, doch für die exemplarische Einführung des objektorientierten Programmierparadigmas ist es ein Verlust. Dem könnte man entgegensetzen, dass die Schüler eben lernen müssen, verantwortlich zu Programmieren und auf geschütze Variablen anderer Klassen nicht zuzugreifen. Dabei stört jedoch, dass die aus der Analyse gewonnenen Restriktionen (die ja wesentliches Element des Konzeptes von unabhängigen Objekten sind) eben nicht direkt in die Sprache umgesetzt werden können. Zudem erschwert diese fehlende Kontrolle unter Umständen wesentlich die Korrektur des Quellcodes durch den Lehrer. Denn es kann ja sein, dass ein Programm funktionert, doch dabei das Geheimnisprinzip verletzt wird.

 


27. Juli 2006   Jeanine Umlang, Clemens Wagner