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
-
Modell aus einem Weltausschnitt entwickeln und
in einem Klassendiagramm (nach UML) darstellen
-
Ein Anwendungsproblem objektorientiert
analysieren, einen Lösungsansatz entwickeln und
mit Hilfe von Programmiertechniken umsetzen
-
Eine Modul-/Klassenspezifikation
(Schnittstellen) lesen können und benötigte Teile
in ein Programm einbinden
-
Die für den Lernabschnitt erforderlichen
Sprachelemente sicher beherrschen und anwenden
-
Ein Programm angemessener Komplexität
selbstständig (unter Zuhilfenahme einer Vorlage)
projektieren und realisieren
Methodenkompetenz
-
Klassendiagramm zur Strukturierung von
Programmstrukturen , Nassi-Shneiderman-Diagramm
zur Entwicklung von Algorithmen einsetzen
-
Aus einer verbalen Aufgabenstellung einen
Algorithmus entwickeln und in einem
Nassi-Shneiderman-Diagramm darstellen
-
Ein Nassi-Shneiderman-Diagramm in Programmcode
überführen
-
Einen Quelltext analysieren und in einem
Nassi-Shneiderman-Diagramm darstellen
-
Auftretende Probleme durch kundiges Benutzen
eines geeigneten (integrierten) Hilfesystems
selbständig lösen
Sozialkompetenz
-
Umfangreiche Aufgaben untergliedern und in
einem Team arbeitsteilig lösen
-
Absprachen treffen und einhalten
Selbstkompetenz
-
Eigene Lösungen der Gruppe vorstellen und
verteidigen
-
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.
|