Programmieren
Auf den ersten Blick erscheint "Programmieren" nicht wirklich attraktiv. Robotik, Drohnen, Lichter, Action sind auf den ersten Blick viel interessanter. Aber auch diese Dinge funktionieren nur, wenn jemand dem Computer sagt, was er tun soll und muss. Computer sind (noch) nicht soweit auch diese Arbeit uns abzunehmen. Programmieren ist aber gar nicht schwer und kann schon in der Grundschule anfangen.
Was ist Programmieren?
Lernen soll Spaß machen und daher solltet ihr nicht gleich ein ein Spiel oder eine App entwickeln wollen und euch unter Druck setzen, dass ihr das vielleicht verkaufen könnte. Auch ein 100m Läufer hat als Kleinkind mit krabbeln angefangen. Und genauso ist es beim Programmieren. Zuerst gilt es die Grundbegriffe zu verstehen. Dazu gehört:
- Arbeiten mit Variablen und Speicher
Irgendwo muss der Computer ja sich etwas "merken" um später wieder darauf zugreifen zu können. Wisst ihr noch, wie ihr das kleine 1x1 gelernt habt?. So mit den 10 Fingern eurer Hände?. Das ist für Menschen der erste "Speicher". Später konntet ihr euch immer mehr im Kopf "merken" oder auf einem "Schmierzettel" aufschreiben. - Anweisungen und Ein/Ausgaben
Das Rechnen von "1+2" ist einfach eine Anweisung, die der Computer ausführt. Auch die Ausgabe eines Zeichens auf dem Bildschirm oder Drucker, das Einlesen einer Eingabe von der Tastatur, Maus oder selbst dem Touchscreen sind Basisfunktionen jedes Computers - Schleifen, Abfragen
Die nächsten Elemente sind Abfragen auf Bedingungen und Reaktionen darauf. Letztlich baut darauf die "Intelligenz" des Computerprogamms auf. Um sich das Leben zu vereinfachen, können wiederkehrende Aktionen in Schleifen verpackt werden.
- ...
Und so gibt es viele Elemente in der Programmierung, die quasi überall immer gleich sind. Wenn du die einmal verstanden hast, dann kannst du zwar nich nicht programmieren aber die nächsten Schritte angehen.
Es gibt nämlich gleich mehrere Programmiersprachen und jede hat irgendwo ihre Stärken und Schwächen. Viele sehen auch "sehr ähnlich", so dass es meist einfach ist, einen Code in einer anderen Sprache zu lesen. Beim Schreiben kann es kniffliger sein, da man schon genau die richtige Syntax einhalten muss.
Wenn du nun die Grundbegriffe kennst und mindestens eine Sprache "sprichst", dann kommt das eigentliche Problem: Vielleicht sollte ich besser sagen, "Du hast eine Aufgabenstellung, die du kösen willst". Das ist nun die eigentliche Herausforderung am Programmieren: Man muss eine Aufgabenstellung so umsetzen, damit ein Computer sie spielt sehr oft und viel schneller Lösen kann, als man es selbst dann je mals könnte. Im Prinzip bist du nun der "Lehrer" und muss dem Computer beibringen, wie er zu arbeiten hat.
Programmieren mit Block-Code
Je nach deinem Alter kannst du natürlich gleich eine "richtige" Programmiersprache lernen (und per Tastatur schreiben). Daher ist es aktuell immer noch wichtig, gut mit der Tastatur umgehen zu können. Für die jüngeren Einsteiger gibt es aber auch andere Alternativen, die einen sehr einfachen Zugang erlauben, in dem du einfach vorbereitete Blöcke zusammenfügst. Aber das auch genau so programmieren. Ich finde Scratch hier sehr gelungen. Das MIT - Massachusetts Institute of Technology , eine große bekannte Universität in den USA hat auf ihrer Seite dazu sehr viel Informationen zusammen getragen. Auch auf Deutsch.
Hier werden "visuell" durch Zusammensetzen von Codeblöcken die Aufgaben gelöst. Schauen Sie sich einfach mal das Video auf deren Webseite an und vielleicht den ein oder anderen Code. Installiert werden muss gar nicht, da alles im Browser läuft. Übrigens gibt es Scratch auch für kleine Unix-Rechner wie den RaspberryPI, den kleinen Ein-Platinen-Computer für <30€. Es muss also gar nicht Papas teurer Notebook sein.
Damit lassen sich auch schon ersten Spiele programmieren!
Übrigens gibt es z.B. mit dem Calliope eine Plattform, bei der ihr einen kleinen Bastelcomputer genau so programmieren könnt.
OpenHPI: Wie programmiere ich meinen
ersten Mini-Computer?
https://open.hpi.de/courses/mikrocontroller2019?locale=de
ESP32 per Ardublockly als Schüler programmieren
- Blockly
- Bundeswettbewerb Informatik: Programmieren lernen
https://bwinf.de/programmierenlernen/ - Scratch
http://scratch.mit.edu/
http://de.wikipedia.org/wiki/Scratch_(Programmiersprache)
GitHub: https://GitHub.com/LLK/ - Scratch für Eltern
http://scratch.mit.edu/parents/ - Programmieren mit "Die Maus"
https://programmieren.wdrmaus.de/welcome
https://programmieren.wdrmaus.de/inhalte/eltern
GutHub Repository https://GitHub.com/wdr-data/code4maus - Scratch - ein Leitfaden
https://mahara.ph-noe.ac.at/User/gerhard-brandhofer/scratch-ein-leitfaden - Scratch DACH Wiki
http://scratch-dach.info/wiki/Hauptseite - http://scratch-dach.info/wiki/Scratch
- Scratch-Karten (deutsch von G. Brandhofer)
12 Karten als PDFs zum Ausdrucken
http://www.brandhofer.cc/scratchcard/ - Scratch – ein kleiner Leitfaden
http://www.brandhofer.cc/scratch-ein-kleiner-leitfaden/ - Google CS-FIRST
https://csfirst.withgoogle.com/s/de/home - YouTube Channel MegaValencia10 zu Scratch
https://www.youtube.com/User/MegaValencia10 - http://www.techradar.com/news/software/learn-to-program-your-raspberry-pi-1148194
-
Workshop-Material für Scratch
http://www.devoxx4kids.org/materials/workshops/scratch/ -
Scratch-Projekte
https://scratch.mit.edu/explore/projects/all/ - Programmieren für Kinder
https://blockly-games.appspot.com
An Scratch angelehnt aber es müssen Aufgaben gelöst werden - Open Roberta
Open Source Programmierumgebung, auf der verschiedene Systeme wie z.B. Bayduino u.a. aufsetzen.
https://www.open-roberta.org/willkommen/
http://roberta-home.de/ - Hour of Code
https://hourofcode.com/de
Noch mehr Übungen mit Block Code - Noch mehr Spiele und Übungen mit Block-Code
https://studio.code.org/ - Greenfoot
grafische Umgebung, wo am Ende Java raus kommt
https://www.greenfoot.org/
https://de.wikipedia.org/wiki/Greenfoot
https://www.informatikzentrale.de/greenfoot-3-tutorials/
https://www.informatikzentrale.de/greenfoot-3-lernen/
https://www.micromata.de/blog/programmieren-lernen/ - BlueJ - A free Java Development Environment designed for
beginners, used by millions worldwide
https://www.bluej.org/ - Eigene Smartphone-Anwendungen mit App Inventor - Android Aps
mit Bausteinen programmieren
https://sourceforge.net/projects/ai2u/files/ai2u%204.6/Portable/
https://www.heise.de/select/ct/2018/15/1532046127151943
https://GitHub.com/mit-cml/appinventor-sources -
Kano.me
http://www.kano.me/
"Paket" mit RasPi, Tastatur, Kabeln, Netzteil und vor allem ein Handbuch für Kinder zum Einstieg
http://pong.kano.me/ Pong selbst programmieren
http://www.kano.me/downloads http://downloads.kano.me/public/burners/kano-burner-win.zip -
Artikel in der C't 19/2015 Seite 160ff - leider nicht kostenfrei
im Web
http://www.heise.de/ct/ausgabe/2015-19-Nicht-nur-fuer-Kinder-Scratch-macht-Lust-aufs-Programmieren-2779442.html
Scratch-Beispielskript "Katze jagt Maus"
katzmaus.sb2 als Scratch-Beispielskript "Katze jagt Maus"
ftp://ftp.heise.de/pub/ct/listings/1519-160.zip -
Roboter Karol
https://www.mebis.bayern.de/infoportal/faecher/mint/inf/robot-karol/
https://www.mebis.bayern.de/karol/
http://www.bics.be.schule.de/inf2/didaktik/minilanguages/aufgaben/uebungsaufgaben_robot_karol.html
Ähnlich gebaut aber mit textbasierter Programmierung
Animation/StopMotion
Was machen aber Kinder, die mit sowohl mit Mathematik/Physik aber auch mit Spielen nicht viel am Hut haben? Vielleicht sind ja Rollenspiele o.ä. interessanter für euch. Auch hier gibt es fertige kostenfreie Programme, mit denen relativ einfach Animationen erstellt werden können. Leider ist auch mein Kandidat da nur auf Englisch verfügbar, aber das ist ja nur ein weitere Grund etwas besser in Englisch aufzupassen oder ?. Kleiner Hinweis: Ich hab Englisch in der Schule auch nicht "geliebt" und die Noten-Kurve" war dann auch 2-3-4-4-5-4 und so weiter). Wer also in "Technik" und "Sprachen" nicht gleichzeitig gut ist, sollte sich trotzdem nicht von englischen/amerikanischen Webseiten nicht abschrecken lassen, sondern es eher als sportliche Herausforderung sehen.
-
http://www.alice.org/
Alice is an innovative 3D programming environment that makes it easy to create an animation für telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool für introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience - http://de.wikipedia.org/wiki/Alice_(Software)
-
Das "kleine Alice" für jüngere Kinder
http://www.alice.org/kelleher/storytelling/index.html - Verschiedene Stop Motion Programme und Infoseiten
http://www.medienpaedagogik-praxis.de/2009/05/04/praxistest-kostenlose-stopmotion-programme-unter-windows/
http://www.stopmotionworks.com/howtostopmofilm.htm
http://www.stopmotionworks.com/stopmosoftwr.htm - Randy Pausch
http://de.wikipedia.org/wiki/Randy_Pausch
Begründer des "Alice-Projekts", leider viel zu früh verstorben. die "Last Lecture" zeigt, wie jemand auch kurz vor dem Tod inspirierend sein kann.
Dying 47-Year-Old Professor
Gives Exuberant ‘Last Lecture’
http://video.google.com/videoplay?docid=-5700431505846055184
Beim "Rollenspiel" bestimmen Kinder, wie Figuren handeln und auf andere Personen reagieren. In übertragenem Sinne ist auch das "Programmieren": das Vorgeben von Anweisungen und Reaktion auf Events und Abfragen.
Programmieren für Kinder - Small Basic
Etwas weniger Abstrakt ist das ebenfalls kostenlose Small Basic von Microsoft. Alle können vermutlich das "Hello World"-Beispiel, welches schon "ewig" alle Neueinsteiger begleitet. Aber ein schnöder Text auf dem Bildschirm ist noch kein echter Erfolg. Interessanter wird es mit Grafiken und Mustern. Kann jemand mit dem Begriff "Turtle-Basic" was anfangen ?. Turtle steht für "Schildkröte" und schon früh konnte man damit quasi eine virtuelle Schildkröte über den Bildschirm krabbeln und eine Linie malen lassen. Natürlich nicht per Maus, sondern per "Steuerbefehl":
Dieses einfache Skript malt ein Quadrat auf den Bildschirm. Nicht sonderlich spektakulär aber es zeigt die Basis aus der Abfolge von Befehlen. Nun können wir das effektiver machen. Das Hilfsmittel sind "Schleifen":
Deutlich kürzer, schneller getippt, lesbarer und das gleiche Ergebnis. Und nun passen wir das etwas an.
oder
Mit der Angabe der Geschwindigkeit "Speed" läuft die Schildkröte schneller und mit 100 Durchläufen mit 95 Grad Winkeln ergibt sich diese Rosette. Reduziert man hingegen die Schrittweite (100-i*5) mit jedem Durchlauf, dann kommt eine kleine Schleife heraus. Man kann auch zwei Schleifen miteinander verschachteln, so dass sich die Schrittweite als auch der Drehwinkel anpassen lässt:
Welche Figuren könnt ihr virtuell basteln ? Dreht einfach an den Zahlen, addiert ein paar Befehle und versucht es. Ach ja ihr braucht ja noch die passende "ProgrammierUmgebung". Versucht es mal mit Small Basic. (Wenn ihr in Englisch noch nicht fit seid, dann fragt einfach eure Eltern.). Bei der Installation kann dann auch Deutsch ausgewählt werden. Übrigens gibt es auch hier einen riesigen "Beispielpool" mit Programmen, wie z.B. eine Tetris-Lösung
- Smallbasic
http://smallbasic.com/
SmallBasic - Erster Schritte für Entwickler
Download: hhttp://msdn.microsoft.com/en-us/beginner/ff384126.aspx
Blog: http://blogs.msdn.com/b/smallbasic/
http://visualstudiounleashed.com/ikesnell/category/Small-Basic.aspx
http://blogs.msdn.com/b/smallbasic/ - Fibonacci function in Small Basic
http://wiki.smallbasic.com/Fibonacci.ashx - MSH Logo – allowing Users to extend its functionality
http://www.leeholmes.com/blog/2006/02/14/msh-logo-%e2%80%93-allowing-Users-to-extend-its-functionality/
Eigentlich ein Artikel über PowerShell aber der Code ist so einfach und schickt, dass der für SmallBasic interessant ist. - Programmiersprachen für Kinder
http://de.wikipedia.org/wiki/Programmiersprachen_f%C3%BCr_Kinder - There's nothing basic about Lego Mindstorm EV3 Basic
https://channel9.msdn.com/coding4fun/blog/Theres-nothing-basic-about-Lego-Mindstorm-EV3-Basic - EV3 Basic
https://sites.google.com/site/ev3basic/
u.a. mit Smartbasic
Programmieren für Kinder - TouchDevelop
Microsoft hat zusammen mit Firmen eine Einführung in Programmieren veröffentlicht. Das Handbuch steht kostenfrei zum Download zur Verfügung und auch die Programmierumgebung ist im Internet offen zugänglich. Im Dezember 2014 wurde mit einigen Schulen angefangen und angeblich das System immer weiter verbessert.
Im Gegensatz zu Scratch wird hier "richtig" programmiert, d.h. nicht mit Blockdiagrammen sondern schon mit einem Art "Code". Die Abstraktion ist höher und die Kinder lernen schon, dass Programmieren eine Art "Sprache" ist. Durchaus ein interessanter Ansatz für 10 Jahre und älter.
Handbuch
http://www.code-your-life.org/Lehrmaterial/mediabase/pdf/2058.pdf
- http://www.code-your-life.org/
- https://www.touchdevelop.com
- Initiative "Code your Life": Microsoft
will Schüler fürs Programmieren begeistern
http://www.heise.de/newsticker/meldung/Initiative-Code-your-Life-Microsoft-will-Schueler-fuers-Programmieren-begeistern-3104445.html
Programmieren mit Hour of Code: Flappy
Einen eigenen kleinen Abschnitt möchte ich den "Hour of Code" -Beispielen widmen. Sie sind sehr gelungen. Ganz besonders möchte ich das Beispiel "Flappy" erwähnen. Viele Kinder werden "Flappy" vielleicht noch kennen. Ein Entwickler in Vietnam hat es für Smartphones geschrieben und es war Ende Januar 2014 das am meisten heruntergeladene kostenfreie IOS-Spiel. Der Entwickler verdiente da bis zu 50.000 US$ pro Tag durch die Werbung. In 10! Schritten schreibt ihr Kind allein mit einem Browser das Spiel selbst noch einmal.
- Wikipedia: Flappy Bird
https://en.wikipedia.org/wiki/Flappy_Bird - Flappy selbst programmieren
https://studio.code.org/flappy/1
Wenn das kein Anreiz ist.
Mittlerweile gibt es auch von Unity eine kostenfreie 2D-Plattform
- Unity Playground
https://assetstore.unity.com/packages/essentials/tutorial-projects/unity-playground-109917 - Spielerisch Spiele entwickeln mit Unity
Playground
https://www.heise.de/developer/meldung/Spielerisch-Spiele-entwickeln-mit-Unity-Playground-4288870.html
Gatter und Computer simulieren
Computer sind elektronische Schaltungen und es gibt ein paar Grundschaltungen wie OR, AND, NAND, NOR etc., die man geschickt verschalten kann um z.B. einen Addierer zu erhalten. Genau genommen sind Prozessoren eine riesige Ansammlung solcher Grundschaltungen. Da kann es schon einmal ganz spaßig sein die ersten Bausteine zusammen zu setzen. Aber freuen Sie sich nicht z früh. Die ersten paar Übungen sind noch einfach aber die Komplexität wächst stetig an
Wer dann Appetit bekommen hat, kann sich auf der Webseite von Noam Nisan und Shimon Schocken die Software einer Computersimulation herunter laden. Genauer ist es die Software zu ihrem Buch, in dem ein Computer stück für Stück von der Pike auf entwickelt und simuliert wird. Es ist vielleicht etwas trocken und anstrengend aber hilft natürlich wirklich zu verstehen wie Computer ticken.
App-Entwicklung
Ich habe bislang noch keine App entwickelt, aber wenn ich den verschiedenen Plattformen und Videos glauben darf, ist es nicht schwerer als eine Entwicklung für Windows oder Linux. Hier daher ein paar Links zum Einstieg.
- MIT: Getting Started with MIT App
Inventor 2
http://appinventor.mit.edu/explore/ - App Inventor 2 Ultimate
https://sourceforge.net/projects/ai2u/
Das ganze als Offline App
Programmieren für Fortgeschrittene
Irgendwann hat sich auch die ausdauerndste Schildkröte müde gelaufen und es darf etwas "trockener" sein. Aber dann seid ihr vielleicht schon bereit, etwas formaler in eine Programmiersprache einzusteigen. Leider gibt es da auch wieder sehr viele verschiedene Sprachen und dahinter stehen auch wieder der ein oder andere Hersteller oder Anwendungsfall. Es ist schon ein unterschied, ob man Treiber für ein Betriebssystem entwickeln will, eine Spiel, eine Webanwendung oder eine Windows-Applikation. Aber das schöne am Programmieren ist, dass die Grundprinzipien überall vergleichbar sind und sich die Schlüsselworte und die nutzbaren Bibliotheken verändern. Wenn ihr aber mit Programmieren gerade anfangt, dann könnt ihr einfach damit loslegen, was ihr am einfachsten Erreichen könnt. Hier mal ein "Hello World" in den drei unterschiedlichen Sprachen:
-
Java
-
C#
-
Visual Basic
Insofern sieht das alles erst mal sehr ähnlich aus. Aktuell dürfte Java oder C# der wahrscheinlich beste Start darstellen, da Java oft in Schulen genutzt wird und Microsoft mit C# auf Windows natürlich eine sehr gute EntwicklungsUmgebung (quasi Word für Programmierer) als auch umfangreiche kostenfreie Informationen bereit stellt.
Weitere Links
Leider gibt es auch bei Microsoft viele gute Aktionen und Programme, die aber nach einige Zeit einfach wieder verschwinden.
- Introduction to C#
https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/intro-to-csharp/
https://aka.ms/dotnet3-csharp - C# für Sharp Kids
(Nicht mehr gültig)
http://msdn.microsoft.com/en-us/beginner/bb308756.aspx - Beginner Developer Learning Center
http://msdn.microsoft.com/en-s/beginner/default.aspx - Kidz Corner (Nicht mehr
gültig)
http://msdn.microsoft.com/en-us/beginner/bb308754.aspx - Selbstlerntrainings für Programmieren
http://computerscienceforkids.com/default.aspx - http://www.teachingkidsprogramming.com/
- Programmiersprachen für Kinder
http://de.wikipedia.org/wiki/Programmiersprachen_f%C3%BCr_Kinder - Hello World – Ihr erstes
Programm
C# http://msdn.microsoft.com/de-de/library/k1sx6ed2(v=VS.100).aspx
Visual Basic http://msdn.microsoft.com/de-de/library/3cf7t4xt.aspx - Learn Programming
http://www.programming-motherfucker.com/
Unter unkonventionellem Namen finden sich jede Menge Links zu kostenfreien Büchern und anderen Quellen um Programmieren zu lernen. - Python online lernen
http://bit.ly/bwinf-kurs
http://cscircles.cemc.uwaterloo.ca/0-de/ - Internet-Bildungsplattform
des Potsdamer
Hasso-Plattner-Instituts
https://open.hpi.de - Code Academy
www.codeacademy.com - AntMe
http://www.antme.net/de
Mit C# das Verhalten eines Ameisenvolks programmieren und dann in die Simulation schicken.
https://www.youtube.com/watch?v=sY8F8I6HCHk
Benötigt Visual Stsudio Community oder SharpDevelop und das XNA Framework
https://www.microsoft.com/en-us/download/confirmation.aspx?id=27598 - Hopp Foundation: Code Mainia
- Das Informatikspiel für den
Unterricht
https://www.hopp-foundation.de/foerderangebot-schule/informatik/informatikspiele/code-mainia/ - Links zum Artikel in der c't
2015/18 Seite 124
http://ct.de/yku1
http://www.heise.de/ct/ausgabe/2015-18-Programmieren-lernen-mit-Online-Kursen-2767725.html#zsdb-article-links - Links zum Artikel in der c't
2015/18 Seite 130
http://ct.de/ym9c
http://www.heise.de/ct/ausgabe/2015-18-Spielerisch-Programmieren-ueben-im-Netz-2767756.html#zsdb-article-links
Verschiedene "Programmierwettbewerbe" - Coding und Making im
Unterricht
https://imoox.at/mooc/local/courseintro/views/startpage.php?id=62 - KidsCanCode
http://kidscancode.org/