Von fliegenden Elefanten, Hunden, Katzen und Ideen!
Didaktische
Richtlinien
Einstieg in die Programmierung mit Scratch
Einführung in die Oberfläche, grundlegende Funktionen und
Hilfefunktion
Wiederholungen (Schleifen), Erstellen von Animationen/
Filmen
Algorithmen und das Reagieren auf Ereignisse:
Entscheidungen
Interaktivität: Reagieren auf Benutzereingaben
Variablen: Platzhalter für Werte.
Möglicher weiterer Unterrichtsverlauf
Wie sollte Programmieren
eingeführt werden? Diese Fragestellung wird im Zusammenhang mit der
Softwareentwicklung als zentralem Inhalt der Informatik immer wieder
aufgeworfen. Nicht nur Schulen, auch Universitäten tun sich teilweise schwer daran,
Schülerinnen und Schülern und Studentinnen und Studenten diesen Einstieg in die
Informatik zu ebenen. Oftmals sind es gerade diese Kurse und
Unterrichtsinhalte, die Informatik als schwer, techniklastig oder gar
uninteressant und demotivierend erscheinen lassen. Dabei muss dies nicht so
sein: Die Möglichkeit, in einer Programmiersprache eigene Software entwickeln
zu können, kann sehr schön verdeutlichen, dass Informatiksysteme gestaltbar
sind.
Zur Realisierung eines
Unterrichtsbeispiels, welches die Schüler motiviert und gleichzeitig
informatiknah lernen lässt, wurden Kriterien kreativen Informatikunterrichts
(vgl. auch Romeike, 2007) herangezogen und berücksichtigt.
Kriterien kreativen
Informatikunterrichts
Vor dem Hintergrund, dass
Informatikunterricht ein großes Potential hat, Kreativität zu fördern, und
dieses sich positiv auf die Schülermotivation und den Lernerfolg auswirken
kann, wurden Kriterien formuliert, die für einen kreativen IU zu beachten sind.
Diese wurden der Planung dieser UE zugrunde gelegt.
Die Kriterien umfassen:
Anforderungen an den
Unterrichtsgegenstand:
Anforderungen an die
Aufgabenstellungen:
Schülerorientierte
Anforderungen:
Ermöglichen von
Anforderungen an die
Unterrichtsumgebung
Weitere didaktische
Grundlagen:
Entdeckendes Lernen,
Experimentelles Lernen, Learning by Design, Konstruktionismus (Papert)
Unterrichtsbegleitende Hinweise:
·
Immer neue
Anweisungsblöcke im Heft mit Funktion notieren.
·
nach jedem
Projekt Vorstellen der verschiedenen Ergebnisse
·
Online-Upload
aller Programme auf die Scratch-Homepage
Objektorientierung
ja/nein?
„Objects first“ oder
„Objects last“ ist eine Diskussion, die schon eine Weile auch für die
Schulinformatik geführt wird. In mehreren Dissertationen wurde ein
objektorientierter Ansatz für den Schulunterricht empfohlen. Dieser findet sich
auch in vielen neuen Rahmenlehrplänen wieder. Dennoch ist das Verständnis für
die Konzepte der Objektorientierung (OO) bei vielen Informatiklehrerinnen und
Lehrern noch vage (vgl. Kohl und Romeike, 2006), oftmals wird bei der Einführung in die Programmierung ein Weg gegangen,
der sich an der strukturierten, imperativen Programmierung orientiert. Das hier
vorgestellte Vorgehen lässt beide Wege offen – in Scratch finden sich
wesentliche Aspekte der imperativen Programmierung wieder. Dennoch baut Scratch
auf grundlegenden OO-Konzepten auf: Programme (Skripte/Methoden) werden für
Objekte geschrieben, diese basieren im Wesentlichen auf der Manipulation ihrer
Attribute, zur Steuerung werden Botschaften verwendet, die an alle Objekte
gesendet werden. Die Entwicklungsumgebung basiert auf Squeak (Small talk) und
verfolgt damit das objektorientiert Paradigma, welches aber nicht aufdringlich
sondern vielmehr intuitiv deutlich wird. Vielmehr helfen die Konzepte der OO,
die Funktion von Objekten in Scratch spielerisch zu verstehen.
Scratch ist eine neue
Entwicklungsumgebung, die das kreative Erlernen der Programmierung unterstützt.
Entwickelt durch die Lifelong Kindergarten Group am MIT Media Lab findet Scratch bereits seit
einigen Jahren Anwendung in sogenannten Computer Club Houses in den USA, in
welchen Kinder freiwillig nachmittags zusammenkommen, um spielerisch
Programmieren zu lernen.
Interessant ist an Scratch
die visuelle Darstellung der Anweisungen und Kontrollstrukturen als bunte
Bausteine, die in einem Skripteditor zusammengestellt werden. Ziel ist es,
verschiedene Objekte (Sprites) in einem Fenster (Stage) zu animieren und damit
Animationen und Programme jeglicher Art zu erstellen.
Scratch basiert auf Squeak (und damit Smalltalk),
unterstützt eine objektorientierte Sichtweise, aber auch das Ausblenden dieses
Konzepts und eine weitgehend imperative Herangehensweise ist möglich.
Publizierte
Unterrichtseinheiten können verschiedene Ziele verfolgen:
Mit der vorliegenden
Unterrichtseinheit werden vor allem die letzten drei Punkte angesprochen: Zur
Programmierung, ob „Objects first“ oder „Objects last“, sind genügend
Publikationen erschienen und die Leserin und der Leser sind vermutlich mehr als
genug mit den Inhalten der Programmierung vertraut.
Hier soll vielmehr ein Weg
aufgezeigt werden, wie die Schülerinnen und Schüler unter Berücksichtigung der Kriterien
kreativen Informatikunterrichts entdeckend und mit viel Freude an der Sache in
die Programmierung eingeführt werden. Denn eins steht im Mittelpunkt:
„Informatik macht Spaß!“. So wurde diese Unterrichtseinheit, die in einer
elften Klasse erprobt und evaluiert wurde, auch von den Schülern aufgenommen.
Die Unterrichtseinheit
verfolgt in Anlehnung an die Bildungsstandards Informatik die Umsetzung der
folgenden Lernziele und das Herausbilden folgender Kompetenzen der Schülerinnen
und Schüler:
o
Sie entwickeln
ein grundlegendes Programmierverständnis
o
Sie beschreiben
die Eigenschaften von Algorithmen, nennen Beispiele für erfüllte und verletzte
Eigenschaften und entscheiden, ob ein Problem algorithmisch lösbar ist.
o
Sie verwenden
algorithmische Grundbausteine zur Programmierung
o
Sequenz,
Schleife, Entscheidung, Variablen (lokale/globale)
o
Eingabe und
Ausgabe von Information
o
Rechenoperationen
und Vergleichsoperatoren
o
Objekt,
Botschaft, Attribut, Methode
o
Sie stellen Algorithmen
dar
o
mit
Scratch-Bausteinen
o
Sie verstehen
von Algorithmen und Programmtexte:
o
Lesen und
analysieren Programme
o
Implementieren,
modifizieren und erweitern Programme
o
Sie entwerfen,
implementieren und testen Programme
o
Sie lösen
Probleme selbstständig
o
Sie verwenden
Hilfesysteme selbstständig
Darüber hinaus werden
Prozesskompetenzen angesprochen, die das Folgende umfassen:
o
Modellieren und
implementieren
o
Begründen und
Bewerten
o
Strukturieren
und Vernetzen
o
Kommunizieren
und Kooperieren
o
Darstellen und
Interpretieren
Die primäre Zielgruppe der
Entwickler waren vor allem Grundschüler. Dessen ungeachtet wird Scratch wegen
seiner Unterstützung einer intuitiven Herangehensweise auch in den
Sekundarstufen I und II, ja sogar in Einführungskursen an der Universität
verwendet.
Nicht nur vor diesem
Hintergrund, sondern auch von der Offenheit in Bearbeitungstiefe und
Zeitplanung kann diese Unterrichtseinheit sowohl in der Sekundarstufe I als
auch einführend in der Sekundarstufe II verwendet werden. Nicht zuletzt kann
ein Unterrichtsvorschlag immer nur Ideen liefern, die an die jeweilige
Lerngruppe und –situation angepasst werden sollten.
Im Folgenden werden jeweils
zuerst die Planungen der einzelnen Unterrichtsphasen skizziert, anschließend
werden die Unterrichtserfahrungen geschildert und Schülerergebnisse gezeigt.
Einführung in die Oberfläche, grundlegende Funktionen und Hilfefunktion1.
Einführungstutorial
gemeinsam mit den Schülern: 2.
Zeigen eines
kleines Beispiels für
einen Animationsfilm 3.
Vorstellen
verschiedener Filme, Schüler erklären verwendete Baussteine und Strategien |
Verbleibende Zeit für den Beginn einer neuen UE und
die Einführung in Scratch: Eine Stunde. Die Schüler haben vorher das Thema
Datenbanken abgeschlossen, einen Test geschrieben und gemeinsam ausgewertet.
Die Stimmung wird merklich gut, als wir „endlich“ zum
„Kern“ der Informatik kommen – zum eigenen Entwickeln von Programmen.
Mit der Schritt-für-Schritt-Einführung werden die
Schülerinnen und Schüler mit den Grundlagen von Scratch vertraut gemacht. Dabei
werden wesentliche Funktionen, die Hilfe, Sprites sowie deren Attribute im
Klassendiagramm dargestellt.
Als Kontrollstuktur wird die Sequenz eingeführt und
als Beispiel eine einfache Animation gezeigt.
Die Aufgabe ist nun: Erstellte einen Kurzfilm.
Nach etwa 20 min hat jede Schülergruppe einen kleinen
Kurzfilm erstellt.
Anschließend wird demonstriert, wie ein
Scratch-Projekt online gestellt werden kann. Einige Schüler stellen ihr
Unterrichtsergebnis schon auf die Scratch-Website.
Eine knappe Woche später stelle ich erstaunt fest,
dass Schüler eines Parallel- (Leistungs-!) Kurses mit dem, von einem meiner
Schüler erstellten, Spiel online spielen. Dieser Schüler wurde nun gebeten, den
Schülerinnen und Schülern des Leistungskurses sein Programm und Scratch
vorzustellen – der LK schwenkt um auf Scratch!
Wiederholungen (Schleifen), Erstellen von Animationen/ Filmen1.
Objekte 2.
Sequenzen mit
Grundbausteinen, Wiederholungen (Schleifen) 3.
Storyboard 4.
Erstellen
eines eigenen Animationsfilms 5.
Upload des
Films auf Scratch-Website 6.
Algorithmen
und deren Eigenschaften Gemeinsam an der Tafel
entwickeln: Objekte (Sprites) besitzen
Attribute und Methoden (Anschreiben des Klassendiagramms für Sprites). Gemeinsame Attribute sind:
x, y, Richtung, aktuellesKostüm, Größe in Prozent (ggf. Rotationstyp (in IDE
festzulegen)) Methoden werden als
Skripte in der Scripts Area aus Bausteinen zusammengefügt. Mitunter möchte man
mehrfach einen Baustein oder eine Sequenz ausführen: Hierfür verwendet man
Wiederholungen (Schleifen) (Demonstrieren). Aufgabe des Tages: Entwerfen und Erstellen eines längeren
Animationsfilms. Als Beispiel wird der Film
„Polarbear School“
gezeigt. Gemeinsam mit den Schülern
werden anhand des Beispielfilms folgende Feststellungen gemacht:
Zum Entwurf eines Films
eignet es sich die Handlungen der einzelnen Akteure (Objekte/Sprites) in
einem Storyboard festzuhalten: Ein Storyboard bildet die Inhalte und
Handlungsverläufe eines Drehbuchs visuell ab und dient so als Vorlage für die
Erstellung eines Films. Die Handlungen aller Akteure werden hierbei auf einem Zeitstrahl dargestellt. Gemeinsam wird nun der
Beginn des Storyboards für den Beispielfilm an der Tafel erarbeitet. Anschließend erhalten die
Schüler folgenden Arbeitsauftrag: Entwerfe
und realisiere einen eigenen Animationsfilm zu einem Thema deiner Wahl.
Überlege dir zuerst, welche Objekte (Sprites) in dem Film vorkommen sollen
und welche Haupthandlungen dargestellt werde sollen. In den letzten 20 Minuten
wird der Begriff des Algorithmus mit seinen Eigenschaften eingeführt. Die
Schüler sollen feststellen, ob es sich bei ihrem Animationsfilm um einen
Algorithmus handelt. |
Nach der Vorstellung einiger Schülerergebisse wollen alle Schülerinnen und Schüler mit
Scratch loslegen bzw. weiterarbeiten. Vorher wiederholen wir allerdings
wesentliche Konzepte (einige Schüler fehlten in der letzten Stunde): Sprites als Objekte und die Kontrollstruktur
Sequenz. Als neue Kontrollstruktur wird
die (inzwischen schon von einigen Schülern verwendete) Wiederholung eingeführt.
Nun soll es um die Erstellung eines längeren Animationsfilms
gehen. Als Grundlage für die Erstellung des Animationsfilms wird die Methode
des Storyboards eingeführt – eine Skizze des Films, die die Handlungen der
Akteure auf einem Zeitstrahl darstellt. Zur Motivation wird ein Beispielprojekt
(„Polarbear School“) gezeigt, welches verschiedene Möglichkeiten mit Objekten
und Bühnen umzugehen, demonstriert.
Zu guter Letzt wird wiederholt, wie die Schülerinnen
und Schüler sich registrieren und ihre Projekte auf die Scratch-Website laden
können. Nun wollen sie aber auch loslegen.
Da die Schülerinnen und Schüler einige Zeit für das
Ausprobieren und das Kennenlernen der Entwicklungsumgebung benötigten, musste
bis zum Ende der 3 Stunden Zeit gelassen werden.
Schülerinnen und Schüler, die es nicht schafften,
ihren Film in dieser Zeit zu Ende zu bringen, wollten das unbedingt zu Hause
weitermachen – in der nächsten Woche werden die Ergebnisse gesammelt und der
Klasse vorgestellt. Mal sehen, wie die Projekte geworden sind.
In der letzten halben Stunde sollte das Thema „Algorithmen“
besprochen werden. Dazu kam es aus o. g. Grund nicht mehr. DieSchülerinnen und
Schüler erhielten stattdessen die Hausaufgabe, sich die Eigenschaften von
Algorithmen an einem Arbeitsblatt zu erarbeiten, ihr Projekt anhand der
Eigenschaften zu prüfen und zu entscheiden, ob es sich um einen Algorithmus
handelt.
Algorithmen und das Reagieren auf Ereignisse: Entscheidungen1.
Vorstellen der
Filme der Schülerinnen und Schüler unter Nutzung der Uploads auf die Scratch-Website 2.
Thematisierung
der Eigenschaften von Algorithmen Überprüfung dieser an einem (von einem
Schüler erstellten) Animationsfilm. 3.
Einführen des
Bausteins „Wenn“ 4.
Arbeitsauftrag:
Füge weitere Bälle oder andere Objekte hinzu, die sich bewegen und aneinander
abprallen |
Interaktivität: Reagieren auf BenutzereingabenMini-Projekt: Animieren
von Namen.. Eingaben: o
Wenn Taste x –
gedrückt tue - Starten verschiedener
Skripte, Reagieren auf eingaben o
Wenn Maustaste
gedrückt – Starten verschiedener Skripte, Reagieren auf Eingaben o
x und y- Werte
der Maus Ausgaben: o
Darstellungen
auf dem Bildschirm mit Sprites o
Sagen o
Denken o
Sound Nun werden verschiedene Beispiele zu
Namensanimationen vorgestellt und anschließend folgender Arbeitsauftrag
gegeben: HA: Überlege dir je fünf
Beispiele für Abläufe aus dem täglichen Leben, die durch einen Algorithmus
gelöst werden können (Beispiel: Addieren zweier Zahlen) bzw. die nicht durch einen Algorithmus
beschrieben werden können (Beispiel: Schreiben eines Bewerbungsbriefs). |
Einige Schülerinnen und Schüler haben sich Scratch
inzwischen zu Hause installiert.
Während die Schülerinnen und Schüler anfangs noch
zögern, ihre Animationsfilme vorzustellen, sollen später sogar noch mehr Filme
gezeigt werden.
Das Erstellen der Springbälle klappt gut – alle
Schülerinnen und Schüler bewältigen diese Aufgabe gut, wer schneller ist,
implementiert drei und mehr Bälle. Parallel werden die Projekte auf die
Scratch-Website hochgeladen.
Die Möglichkeiten der Internaktion wurden durch die
Schülerinnen und Schüler gemeinsam zusammengetragen und die Bausteine
exemplarisch vorgestellt..
Das Vorstellen der Namensanimationen brachte
ebenfalls interessante Ideen und Anregungen für alle. Auch wenn viele
Schülerinnen und Schüler die Namensanimationen gut umsetzten, fehlte bei
einigen allerdings die Interaktivität – es handelte sich wieder nur um Filme.
Hier musste nochmals auf das Reagieren auf Ereignisse eingegangen werden.
Zeitlich waren 20 bis 30 Minuten für das Animieren
der Bälle ausreichend. Für das Animieren des Namens (45 min) hätte etwas mehr
Zeit sein können. Allerdings hatte der straffe Zeitplan bis dahin einen
Vorteil: Die Schülerinnen und Schüler
waren an den neuen Ideen immer noch sehr interessiert und arbeiteten
ausnahmslos an den Mini-Projekten gut mit und ließen sich gute Ideen einfallen.
Dabei wurden gestalterische Freiheiten als auch algorithmische Kreationen
ausgelebt.
Die Inhalte der folgenden
beiden Unterrichtsphasen werden den Schülerinnen und Schülern als
Arbeitsblätter ausgehändigt. Sie haben nun fast drei Unterrichtsstunden Zeit,
sich die Konzepte an den Beispielen und eigenen Programmen zu verdeutlichen
und umzusetzen. |
Der Unterricht wird diesmal mit einer mündlichen Leistungskontrolle
zu Algorithmen, den kennengelernten Kontrollstrukturen und den Hausaufgaben
begonnen. Die Klasse ist relativ ungeduldig und möchte mit Scratch
weiterarbeiten.
Vorneweg werden weitere Ergebnisse aus der letzten
Woche gezeigt. Nach jedem Programm gibt es sogar einen kleinen Applaus für die
Programmierer. Anschließend wird das Vorhaben für den Tag und die nächste Woche
mitgeteilt: Zwei Arbeitsblätter mit neuen Konzepten, Erklärungen dazu und
Aufgaben, sowie ein eigenes Spiele-Projekt. Mit Austeilen der
Arbeitsblätter legen die Schülerinnen
und Schüler auch schon los.
Das Verwenden der Botschaften funktioniert ohne
größere Probleme. Wo Schwierigkeiten auftauchen, helfen sich die Schülerinnen
und Schüler meist gegenseitig oder schauen selbst im Hilfesystem von Scratch
nach. Einige Schülerinnen und Schüler haben bereits vorher Botschaften und
Variablen eingesetzt. Bei der Aufgabenstellung, eine Tanzgruppe zu animieren,
entstehen wieder vielfältige Umsetzungen. Teilweise gestalten die Schülerinnen
und Schüler die Tanzgruppe interaktiv, so dass bspw. auf Mausklick Botschaften
versandt und damit Aktionen gestartet werden. Teilweise geschehen die
Methodenaufrufe vom „Trainersprite“ aus, so dass keine Interaktionen möglich
sind. In diesen Fällen bespreche ich mit diesen Schülerinnen und Schülern kurz
das Programm und wie sie Interaktionen einbauen könnten (was sie aber nicht
müssen) und stelle so sicher, dass das Prinzip von Algorithmen (nicht immer der
gleiche Ablauf) verstanden wurde. Auch das Verwenden von Variablen macht keine
Probleme, sodass die meisten Schülerinnen und Schüler in der dritten Stunde
bereits mit dem eigenen Projekt anfangen.
Dabei fiel mir im Übrigen ein weiterer Effekt der eigenständigen
kreativen Projektarbeit im Unterricht auf: Als ich die letzte der drei Stunden
beendete und es zur großen Pause klingelte, stürmten die Schülerinnen und
Schüler nicht - wie häufig - schnell
nach draußen. Als wäre nichts gewesen, blieben die meisten sitzen, brachten
noch das Umsetzen ihrer Ideen zu Ende und verließen dann erst nach und nach den
Raum. Das Interesse scheint geweckt und beständig zu sein.
Projekt:Bis hierher wurden
elementare Konzepte der Programmierung vermittelt. Von nun an sollen die
Schülerinnen und Schüler ihr erlerntes Wissen in einem eigenen kleinen
Projekt anwenden: Aufgabe: Entwickle ein eigenes
Spiel in Scratch, in welchem du alle bisher kennengelernten Konzepte
verwendest (verschiedene Sprites, Botschaften, Schleifen, Entscheidungen und
Variablen, …). Ideen können bspw. solchen
Spielen wie Mario Brothers, Pong, Moorhuhn, Autorennen, Memory usw.
entstammen. |
Den Auftakt der letzten drei Unterrichtstunden
bildete wieder das Präsentieren von Ergebnissen aus der letzten Woche durch die
Schülerinnen und Schüler. Nachdem sie sich über einige Ideen und
Vorgehensweisen ausgetauscht hatten, wollten sie nun an ihrem Projekt
weiterarbeiten. Leider konnte es nur ein kleines Projekt werden, da nur 1,5
Stunden Zeit übrig blieb – in der letzten Stunde sollte eine Leistungskontrolle
zu Algorithmen und Programmierung geschrieben werden. Jeder Schüler bzw. jede
Schülergruppe schaffte es aber, vorher ein kleines Spiel fertig zu stellen.
Die 45-minütige Leistungskontrolle umfasste einen
theoretischen und einen praktischen Teil – wobei der praktische Teil aus einer
Problemlöse- und einer freien kreativen Aufgabe bestand. Diese wurde von der
Mehrheit der Schülerinnen und Schüler gut bis sehr gut bewältigt. Bisher habe
ich bei der Einführung in die Programmierung noch mit keinem Kurs so schnell so
gute Ergebnisse erzielt.
Möglicher
weiterer Unterrichtsverlauf:
Mit Sicherheit kann die
weitere Arbeit mit den Schülerinnen und Schülern auf das bisher Erreichte
aufbauen. Insoweit könnten weitere Projekt-Ideen und Unterrichtsinhalte angepackt
werden, beispielsweise: –
Interaktive
Musik –
Algorithmische
Computergrafik –
Simulationen Ebenso können weitere
Arbeitstechniken bei den Schülerinnen und Schülern entwickelt werden, zum
Beispiel –
Problemfindung und Problemlösung mit Scratch: Scratch bietet einen
motivierenden Einstieg in die Programmierung mit geringen Einstiegshürden.
Gleichwohl können aber auch viele anspruchsvolle Projekte umgesetzt werden. Auf Scratch aufbauend
könnte es sich anbieten mit Squeak weiterzuarbeiten. Squeak unterstützt dann
auch den Textmodus und weitere, in Scratch nicht vorhandene, Konzepte. |
Bergin, S.,
Reilly, R. (2005) The Influence of Motivation and Comfort-Level on Learning to Program.
In Proceedings of the PPIG 17. J. G. In P. Romero, E. Acosta Chaparro & S.
Bryant. University of Sussex, Brighton UK. 293-304.
Curzon, P., Rix,
J. (1998) Why do Students take Programming Modules? In Proceedings of the 6th
an-nual conference on the teaching and computing and the 3rd annual conference
on integratingtechnology into CSE: Changing the delivery of Computer Science
Education. ITICSE ’98. Dublin, Ireland. 59-63.
Feldgen, M., Clua,
O. (2003) New motivations are required for freshman introductory programming.
In Proceedings of the 33rd ASSE/IEEE Frontiers in Education Conference. Boulder. T3C-T24.
Kohl, L., Romeike, R (2006) Aktueller Stand der
Objektorientierung bei
Informatiklehrerinnen und -lehrern, HDI 2006-2. GI-Fachtagung
"Hochschuldidaktik der Informatik", in: Hochschuldidaktik der
Informatik (P. Forbrig, G. Siegel, M. Schneider, eds.), 63-75
Mamone, S. (1992)
Empirical Study of Motivation in an Entry Level Programming Course. ACM SIGPLAN
Notices, 27, 54-60.
Papert, S. (1980):
Mindstorms : children, computers, and powerful ideas, Basic Books, New York.
Rich, L., Perry,
H. and Guzdial, M. (2004). A CS1 course designed to address interests of women.
In Proceedings of the 35th SIGCSE technical symposium on Computer science
education, (eds), ACM Press, Norfolk, Virginia, USA, 190-194.
Romeike, R.: Kriterien kreativen
Informatikunterrichts. Akzeptierter Beitrag zur Infos 2007.
Romeike, R.
(2007): Three Drivers for Creativity in Computer Science Education,. Proc of
Informatics, Mathematics and ICT: a 'golden triangle'. Boston, USA.
Tharp, A. L. (1981) Getting more oomph from programming exercises. SIGCSE Bull., 13, 91-95.