 Bist du noch, wenn du mit deinen Freunden zusammensitzt vor ein paar Tagen und du musst es ihre Computer reparieren und ihn erklärt hast, wie das alles funktioniert hast und er erzählt hast, wie merkwürdig das bei dir funktioniert. Stell dir vor, du hättest ihn erklären müssen, wie man programmiert. Denk an die Liebe und die Leidenschaft, die du hast fürs Programmieren. Lass uns Michael Sperber einen großen Applaus geben für den Vortrag, wie du deinen liebsten Programmieren erklärst. Ja, vielen Dank für die Einführung. Ich glaube, ich muss ein bisschen hin und her schalten hier. Wer will von Leidenschaft sprechen? Wenn du Programmierende richtest, das ist ein großer Ego-Boost, das weißt du. Wenn dein Publikum groß genug ist, wenn du also super begabte Kinder hast, dann kannst du den im Grunde alles Mögliche beibringen und sie werden dir Feedback geben, wie schön das funktioniert hat. Zum Beispiel ich mag Funktionales Programmieren. Das ist ein Lampter hier, das steht für Funktionale Programmierung. Und wenn immer ich das jemanden beibringe, dann gibt es meistens jemanden, der so aussieht und sagt, oh, dieser Lampterzeug, das ist das Wunderbarste, was ich jemals gesehen habe. Du bist ein großartiger Lehrer. Ja, also, kurz als Einleitung. Also, ich habe jetzt 30 Jahre lang unterrichtet in verschiedenen Kontexten, High School, Sachen in der Kinder, Computer Assign, Vorstudium, Hauptstudium. Und wenn ich das alles komplett zusammenschalte, dann ist das meiste wirklich schlecht gelaufen. Das hat einfach nicht richtig gut funktioniert. Also, wenn du dir die Initiativen anschaust, die programmieren, also befördern wollen für Kindern von so einem Beispiel, dann reden die immer darüber, dass die Leute sich also freuen sollen, dass sie leidenschaftlich arbeiten sollen. Und ja, wenn man Politiker so reden hört und ja, Leute sollen in die Technologie reinkommen, das soll funktionieren, dann ja, es ist immer schwierig, weil man endet immer in solchen Klassenzimmern hier, sitzen halt irgendwelche Roboter da und Ja, das sind Roboter, ne? Ich meine, Roboter sind interessant und Kinder interessieren sich halt für Roboter. Das ist alles ganz schön und gut. Aber da ist immer diese Annahme dahinter, wenn die Leute einfach mehr aufgeregt und interessiert daran sind, dann geschieht es durch Probieren, dass sie sich einfach die notwendigen Fertigkeiten aneignen, die dafür gebraucht werden. Und ich glaube, das wichtigste Projekt, was es da gibt, ist dieses One Laptop Per Child, wenn ihr euch da noch daran erinnert. Ich habe die jetzt auf der Konferenz gar nicht so viel gesehen. Und der Grund dafür ist, dass das Konzept, was es hinter diesem One Laptop Per Child gab, da stand diese Idee dahinter, die man Konstruktivismus nennt, also die Idee, nur wenn du ihn Material gibst, wenn du ihn Zugriff gibst auf das Internet zum Beispiel und auf andere Lehrmaterialen, dann kriegen sie das eigentlich von alleine raus, dann entwickelt sich das von ganz alleine. Und dieses Problem, was da drunter ist, ich habe eine ganze Menge Probleme, die da drunter liegen, aber eines der Probleme ist, dass dieser Ansatz zur Dedaktik einfach nicht so richtig gut funktioniert. Und man sieht Variationen davon, also ich meine, jedes Jahr gibt es irgendeine Initiative, die sagt, okay, wir müssen Leidenschaft inspirieren. Das muss, letztes Jahr hatten wir das hier, ein Projekt, das heißt Bob, wo es darum geht, ja, so einen kleinen Roboter oder so ein Gerät zu programmieren, was Lichter hat. Und das ist alles ziemlich interessant. Und man programmiert es, indem man, wenn ihr das hier seht, man programmiert es, indem man im Grunde etwas runterlegt, was schon vorher gekodet wurde und man endet eine so eine Zeile in der Mitte und ja, ich meine gut, das ist alles, wie gesagt, schön und gut. Aber es ist alles gut, um die Leidenschaft auch so ein bisschen zu bekommen, aber all diese Projekte haben gemeinsam, dass es da eigentlich überhaupt nicht um eine Methodik für das Programmieren geht. Wenn du Leidenschaft wecken möchtest für Computer, für Programmieren, es gibt viele Projekte sogar heute, sogar zum Beispiel am jungen Hackertag, werde ich dir sagen, wie das funktioniert. Wenn du von diesen Projekten zu einem ernsthaften Programmieren kommen möchtest, und die Kinder selbst machen können, dann wirst du feststellen, dass viele Menschen für die Kinder frustriert werden, sobald sie etwas Komplexeres machen müssen. Ihr Code schaut dann oft so aus, wie er auf der rechten Seite angezeigt. Natürlich, natürlich die ganze Konferenz, da geht es ums Hacken und um herumprobieren und das ist so viele Dinge, die sie ausschauen, zum Beispiel die IoT Apokalypse. So, das Problem ist, dass die meisten didaktischen Herangehensweisen funktionieren nicht besonders gut und für lange Zeit hatte ich keine gute Erklärung dafür, warum das so ist. Jetzt habe ich endlich ein gutes Buch gefunden, das hat mir viele auf meiner Bedenken bestätigt. Wenn ich gestern, dass ich diesen Tag vorbereitet habe, es ist geschrieben, bei einem kognitiven Wissenschaftler, Daniel Willingham, und er hat ein paar Prinzipien aufgelistet, die passieren, wenn Schülerinnen lernen. Eine wichtige Sache ist, wir haben diese idealistische Herangehensweise, dass wir denken, alle lieben lernen, aber eigentlich ist lernen ziemlich anstrengend. Auch wenn Leute es ja neugierig sind und sie lieben es, neue Sachen zu lernen, wenn diese Lernerfahrung anstrengend ist, dann wird das sehr schnell frustrierend. Ein anderes Problem ist, wenn du übergehst von gleichen Programmieren zu schwierigeren Programmiersprachen, dann wirst du schnell frustrierend von der Lernerfahrung und dieser Anstrengung, neue Sachen zu lernen. Was ich interessant fand, ist, dass diese ganzen kognitiven Prinzipien in diesem Buch drin sind. Ich habe sie wirklich sehr, sehr gemocht. Und es sagt also, das Faktenwissen geht der Fertigkeit voraus. Und das bedeutet einfach, wenn man eine bestimmte Fertigkeit haben möchte, dann braucht man Faktenwissen dafür. Aber wenn man über das Faktenwissen nachdenkt, was mit Programmieren zu tun hat, dann gibt es ganz, ganz viele Prinzipien, die für Programmierende wichtig sind, die haben gar keine verbale Form, die haben wir gar nicht ausformuliert. Und das bedeutet, dass es führt dazu, dass diese Fertigkeiten wirklich schwierig sind. Und ja, der Erinnerung ist so dieser Überrest von Denken. Und wir erinnern uns aber halt gut an Denke, über die viel nachgedacht haben. Und die Schwierigkeit ist daran, bei diesen Bildungsinitiativen, wo es also um Roboter geht, wo es einfach wichtig ist, da geht es um diese Leidenschaft, aber es geht überhaupt nicht um Dinge, die fürs Programmieren wichtig sind. Sie denken dann halt über diese Roboter nach und alles, was bei diesen Robotern passiert. Aber das hat nicht viel damit zu tun, mit dem, was man an Fertigkeiten für tatsächliches Programmieren braucht. Und ich habe mal jemanden gefragt, der so eine Initiative mit vorangetrieben hat, was ist diese Fertigkeit, die Studenten jetzt lernen hier bei den Robotern. Und er sagt, nun ja, also wenn die ganz viel Zeit da rein vorbeigesteckt haben, diese und so was. Ja, Entschuldigung, das hatte ich gerade nicht mitbekommen. Eine weitere Sache ist, dass diese Informatik wissen, dass da wichtig ist. Wir haben Schwierigkeiten mit unserer mathematischen Vorbildung, weil wir neue Dinge immer anhand der Dinge verstehen, die wir vorher schon können. Und die Schwierigkeit dabei ist, dass beides in Mathematik und in Informatik wird sehr, sehr viel abstraktes erklärt, anstatt zu zeigen, wie eine ganz konkrete Sache erledigt wird oder funktioniert. Das wird später noch ein sehr wichtiger Punkt werden. Was anderes, was in dem Buch jetzt nicht unbedingt eine Rolle spielen musste, um wirklich eine hohe Fertigkeit zu erlangen, braucht man Übung. Also man braucht ein Ziel. Man muss eine Situation schaffen in einem Klassenzimmer, wo es darum ging, dass man erfolgreich üben kann, dass man die Sachen also ausübt, dass man Probleme löst, Problemlösungsfertigkeiten erwirkt. Und das war so dieser Teil mit dieser Neugier, was ich am Anfang gesagt habe. Leute bekommen so einen richtigen Dopaminrausch, um, wenn sie ein Problem halt korrekt gelöst haben. Und wir brauchen Situationen für unsere Lernenden, wo sie Erfolgserlebnisse haben. Das darf nicht zu schwer sein, nicht zu leicht sein, da gibt es keinen Dopaminschub, aber auch nicht zu schwer. Und jetzt gibt es noch so eine Denkfalle, wo man das kennen wahrscheinlich Leute, die programmieren lernen. Und zwar die Erkenntnisse, die sind unterschiedlich, ob man am Anfang oder am Ende des Lernprozesses steht. Die kognitiven Prozesse sind also ziemlich unterschiedlich. Oder es wird doch der Fluch des Wissens genannt, ne? Nur weil wir denken, ein bestimmtes Lernmaterial ist also inspirierend oder funktioniert richtig gut. Das bedeutet eben nicht, dass Leute, die gerade anfangen, damit das genauso einfach oder genauso leicht zu verstehen finden. Ja, wenn man in Klassenzimmern lernt, dann gibt es auch einen ganz großen Druck, individualistisches Lern zu ermöglichen. Und das ist natürlich eine tolle Sache. Aber Kinder sind eigentlich ziemlich ähnlich in ihren verschiedenen Lernverhalten. Und es ist immer noch ziemlich wichtig, dass man ein Klassenzimmer hat, wo verschiedene Menschen das Gleiche beigebracht wird. Das ist nicht das Thema heute, aber ich dachte, ich... Ja, also das ist was, was die Erfahrung auf jeden Fall gelehrt hat. Manche Leute denken, dass... Manche Leute sind gute Mathe, manche sind schlechte Mathe. Man sagt ja immer, Mädchen sind schlechte Mathe aus irgendeinem Grund. Das ist einfach nicht wahr. Wenn du glaubst, dass du schlechte in was bist, dann sagen wir halt, ja, okay, das, was wir Intelligenzen nennen, das kann sich ändern durch fortlaufende, ordentliche, anstrengende Arbeit. Und dieses... Man denkt immer, Kinder können was Bestimmtes nicht lernen. Aber das Lernende geschieht auch sehr viel indirekt oder durch die, durch die Umgebung, die man bekommt. Und das ist was, was man wirklich lernt, wenn man 30 Jahre lang unterrichtet, ist, dass die Lehre sich entwickeln kann. Aber da braucht man auf jeden Fall Feedback und man muss das Ganze üben. Man muss das Ganze ausprobieren. Und manche bekommen überraschendes Feedback. Und manche bekommen dann Feedback, dass einem wehtut, weil das Lernen-Lehren einfach nicht funktioniert hat. Bei mir geht es um die Lehre von Programmieren. Es geht um ein ganz diverses Publikum. Also nicht nur, ja, ich meine, wenn man einfach nur sich diese Roboterklasse anguckt, ist die wirklich so divers, wie man das haben möchte. Meistens ist das nicht der Fall. Also worüber ich reden werde, ist, das, was ich erklären werde, ist auch von anderen Leuten für Kinder, für Abiturienten, für Universitäten und für Leute im Beruf stehen gemacht worden. Und es gibt eine Reihe von systematischen Methoden, die ich dir auch in Detail mal zeigen möchte, wie die funktionieren. Hier sind einige Referenzen, die man sich anschauen kann. Speziell die Arbeit von der Piele-Gerugung, von Matthias Verleisen. Das kann ich euch nachher zeigen. Es gibt ein sehr wichtiges Projekt, High School Studenten zu unterrichten, noch High School Schülerinnen zu unterrichten. Es gibt dann, das heißt, deinen Programm. So, die Zutaten, die wichtig sind, sind einerseits alle Tools, die wir verwenden, sind Gen in Richtung Lernende. Das heißt, wir brauchen eine Programmunggebung, die speziell dafür geeignet sind für Leute, die gerade erst lernen. Also, außerdem brauchen wir spezielle Programmiersprachen für Lernende, für Schülerinnen, die speziell für Lernende konzipiert werden. Das Dritte ist Design Recipes. Das sind Methoden, mit denen man lernen kann, systematisch Programme zusammenzubauen und zusammenzustückeln. All diese Dinge gibt es online. Es gibt das System Racket. Das werde ich euch nachher zeigen. Es ist besonders gut für Unterrichten. Also, schauen wir uns das mal an. Das ist der Moment, für diesen Moment habe ich über Angst. Okay, hier haben wir das System, das heißt Racket. Es hat nicht besonders viele Knöpfe, wie man sehen kann. Es schaut nicht aus wie Eclipse oder Visual Studio, nicht wie eine normale IDE. Lass mich euch zeigen, wie das funktioniert. Im oberen Teil sehen wir das Programm. Das ist ein Text-Editor, hat ein paar Features, aber nicht besonders viele. Unten kannst du mit dem Programm interagieren. Was du im Repo tun kannst, kannst du rein schreiben. Das wird dir sofort das Resultat deiner, was du reingeschrieben hast, angeben. Das ist jetzt ein bisschen komisch für euch wahrscheinlich. Diese Sprachen sind bisher in der Flispe. Es benutzt dann viele, viele Klammern. Nimm mal, wenn du etwas zusammenstücken möchtest, dann hast du viele, viele Klammern und ein Operator ganz am Anfang. Wenn du viel programmiert hast, dann wirst du denkst, oh mein Gott, wie kann ich mich daran gewinnen. Aber ich kann euch bis sich an eure Kinder werden, sich daran leicht gewinnen. Dann kriegst du das Resultat, dann kannst du einen String reingeben. Dann siehst du das Resultat, das ist Mike. Man kann jetzt auch Nummern kopieren. Hier haben wir zwei Nummern. Hier sehen wir auch gleich die Klammer. Ein Operator ist ganz am Anfang, ganz vorne. Genau, der Operator ist ganz am Anfang, wie gesagt. So, jetzt rechnen wir die Summe für diesen zwei Nummern aus. So, und hier haben wir das Resultat. Was es ein bisschen lustig ist, wenn du von C kommst oder aus Java, dann ist das ziemlich lustig. Kinder, Kinder lieben das aus irgendeinem Grund. Also, was man auch machen kann, ist genauso, wie man diese Nummern und Strings dahinein gibt, kann man auch. Bilder sind auch nichts anderes als Werte. So, zum Beispiel hier können wir ein Rectangle, ein Rechteck definieren, und wow, und es zeichnet ein Rechteck, und es ist auch ein Rückgabewert. Genau, und wenn immer ein Rückgabewert, es ein Rückgabewert kribbt, dann kannst du, dann kannst du ein Programm schreiben, das den Namen zu diesem Programm bindet und zusammensetzt. Zum Beispiel kann man, hier oben schreiben wir jetzt ein Programm, das Pi definiert, und dann schreibt das das Programm raus. Man kann zum Beispiel auch dieses Rechteck, das wir vorher definiert haben, da oben als Programm schreiben, und wenn man dann ein Rectangle angibt, dann... Hier ist das Rechteck. Was noch interessanter und wahrscheinlich interessanter ist, wir können auch ein zweites Rechteck definieren. Und es ist genau, das ist immer das same Prinzip, rundherum haben wir Klammern, und das ist die Definition, und dann das Rechteck, Rectangle, ist ein Funktion Call, und so kann man das machen, und so haben wir R und F2, und jetzt haben wir eine Funktion, die nimmt zwei Bilder, also das rote und das blaue Rechteck, und die kann man... Es gibt quasi eine Algebra, ein ganzes mathematisches Konstrukt, wie man diese Bilder kombinieren kann. Also, das war erstmal das. Mal schauen, wie weit wir vorhin damit kommen. Okay, also... Jetzt von diesen motivierten Beispielen erstmal zurück. In Deutschland, da geht es bei uns sehr viel um die Straßenverkehrsordnung, wir haben sehr viele Redeln, da kann man modulieren. Das wäre wahrscheinlich der langweiligste Talk, den ihr mir gehört habt. Also kategorisieren wir mal die Verkehrsverstöße, die man so machen kann. Es gibt zwei verschiedene Verstöße, die es gibt, wo es wichtig ist, wo sie passieren und welche Situation das Ganze passiert und wie lange nachdem das passiert ist, das Ganze stattfindet. Und hier gibt es zum Beispiel eine Geschwindigkeitsübertreitung, da geht es auch darum, wie viel Kilometer man da drüber gewesen. Wie gut das Ganze, oder wie schlecht es uns funktioniert hat. Und nachschauen wollen, wie das Ganze funktioniert. Und dafür nehmen wir etwas, was wir als Designrecipe, als Designrezept bezeichnen. Wir nehmen eigentlich verschiedene davon. Und das erste hier ist ein übergreifendes Rezept. Wie schreibt man eine Funktion? Bitte nicht einschlafen. Das sind sechs, acht verschiedene Schritte, die da drin sind. Und wir fragen immer unsere Studierenden, dass sie sich immer durch diese acht Schritte. Und man müsste denken, ich hoffe, ihr denkt das jetzt, das ist doch bestimmt das langweiligste Programmiereinführung, die es überhaupt gibt. Das ist die deutsche Bürokratie-Einführung in Programmierung. Aber andererseits, naja, es funktioniert halt. Das ist der Punkt. Besonders jeder einzeln dieser Schritte, das ist was, was klein genug ist, sodass Studierende das tun können und dann die Leute drauf geben, oder Bonbons geben können oder so. Und dann sind die Leute motiviert und gehen halt auf den nächsten Schritt. Und wenn man immer mal, wenn man mal ohne Erfolg etwas, etwas gelehrt hat, dann, wenn ich merke, meine Lehre ist nicht erfolgreich, dann gucken meine Studierende auf so einen leeren Bildschirm. Und ich gebe ihnen dieses Problem. Und ich denke, das war wirklich lösbar. Und die geben auf, die wissen nicht, wie sie anfangen sollen, weil es, weil, weil die meisten Beispiele sind halt beispiell orientiert. Und so hier ist dieses Problem, so ist das gelöst, hier ist ein anderes Problem und du wusstest doch bereits, wie das gelöst wird. Und das funktioniert halt nicht. Also das hier, diese feste Reihenfolge von Schritten, das bringt Studierende wirklich über diese Schwelle drüber. Weil, und das möchte ich wirklich super, super detailliert beschreiben, denn mit den Büchern steht nicht so richtig drinnen, wie wichtig das ist und wie detailliert man das machen muss. Es kommt noch viel mehr Anweisung, die für jeden Schritt da kommen. Aber diese Schritte sind im Grunde erlernbar und das ist der wichtiger Aspekt, den es dafür gibt. Also, im Besonderen, ich spring mal so ein bisschen voraus jetzt hier. Ups. Oh, ja, ihr seht, was, was ich nicht sehe. Ja, okay, das sieht aus. Also, wenn man sich das hier anschaut, das Problem, ah, Moment, ich gehe noch mal eins zurück. Also, das erste Ding, was man macht, ist eine kurze Beschreibung von so einer Funktion. Man muss also diesen Ort von einem Verkehrsverstoß finden und wie schwer er ist. Und als nächstes muss eine Datenanalyse durchgeführt werden. Das heißt, man muss also die verschiedenen Elemente, die da drinnen vorkommen, anschauen und hier sehen wir, okay. Das geht um Verkehr und Verkehrsverstöße. Also, da gibt es also ein Verkehrsverstoß wegen rote Ampel und das hat ein Ort und eine Dauer in Sekunden. Na, eine Sache ist, man kann auf diese Worte gucken und schauen, wie diese Daten beschrieben werden. Und wenn man also eine Beschreibung hat, dieses Ding besteht aus diesen und jeden Komponenten und Phänomen, wo wir sagen, okay, das sind zusammengesetzte Daten. Und da gibt es ein besonderes Designrezept. PowerPoint hat, glaube ich, ein paar davon gerade fairenichtet. Moment. Ja, okay, da ist es wieder. Also, man kennt zusammengesetzte Daten durch diese Beschreibung, wie besteht aus oder hat. Und dann schreibt man so eine Datendefinition in dieser Form und etwas triviales, aber wichtig. Man zählt die Bestandteile, die da drin davor kommen. Man muss gucken, dass es wirklich also übereinstimmt. Das sind Anweisungen, die im Lehrbuch drin stehen. Diese Anweisungen müssen die Studierenden auswendig lernen. Und, ja, ich weiß, ihr schlaft mir alle ein, aber tut mir leid. Also, schauen wir mal, wo ist das richtige Fenster. Ja, das sieht gut aus. Also, das ist das, was wir gemacht haben. Ich lasse das hier einfach mal zu eurer Belustigung hier stehen. Gut. Wir schreiben also, okay, eine rote Ampelverstoß hat. Also, wir haben dieses Haas da drin. Und wir machen es jetzt ein bisschen systematischer. Es hat also ein Ort und es hat ein Dauer in Sekunden, ja. Und das ist einfach jetzt nur natürliche Sprache und dann wird es halt ein Kommentar. Wir haben jetzt nicht viel mehr gemacht, als einfach mal diese Komponente auf eine Einzelzeile zu schreiben. Und dann sagt es, das kann ich nicht richtig gleichzeitig zeigen, aber dann muss man noch mal eine sogenannte Record Definition machen. Und das sieht so ja aus, sieht erstmal ein bisschen befremdlich aus, aber ist eigentlich ziemlich wertvoll. Es sagt, wir machen ein Verkehrsverstoß und dann haben wir eine Rampel. Deswegen nehmen wir das Red Light Violation und dann müssen wir das Ganze noch ansprechende Objekte erzeugen. So brauchen wir ein Konstruktor, also schreiben wir den Namen dieses Konstruktors aus und schließlich wollen wir unterscheiden so eine Rotlichtverstoß von anderen, also sagen wir so ein Prädikat, was wir später verwenden wollen. Und dann haben wir zwei Teile und ich kann nicht genug betonen, wie wichtig das ist. Und jetzt schreiben wir einfach diesen Namen, diese Dinge aus, die diese Dinge dann rauslesen werden. Also Ampel, Rotlichtverstoß, Ort und Rotlichtverstoß, Sekunden, dann wissen wir gleich, was das ist. Und was das jetzt tut, ist, wenn ich jetzt starte, ja, jetzt macht das einmal nichts, aber was wir jetzt machen können, ist, wir können jetzt Objekte kreieren, die so ein roter Ampelverstoß repräsentieren. Ich zeige das euch. Make Red Light Violation, also kreieren solches Objekt, zum Beispiel eine Emborg und vier Sekunden lang. Und dann zeigt es das Ganze an und wir haben jetzt im Grunde so ein Objekt, also so ein Rekord, der zeigt, was für Teile da drin sind. Das kann ich jetzt kopieren und kann das da hochkopieren oder kann einfach ein sehr extra Beispiel daraus machen. Also mache ich das. Und jetzt habe ich AV1 und AV1 und das ist ein Konstruktor. Und dieser Konstruktor erzeugt dieses Objekt und dieses Objekt erzeugt tatsächlich Daten, die mit diesen ganzen Informationen verbunden sind. Das ist also ein ziemlich wichtiger Punkt, den man erklären sollte. Und wir fragen Studierende ganz oft, nicht auf, um es dir zu erklären, sondern ich zeige, was ich erwarte von Studierenden. Lasst es diese Leute einfach tun. Hier haben wir eine Rotlicht, eine Verletzung, eben das Peron über den Ampel gefahren, Emborg, für vier Sekunden. So. Es schaut wirklich einfach vor euch aus, ich weiß, aber es ist wichtig. Wir müssen das Problem zu dem Programm im Zusammenhang setzen. Also hier haben wir eine kleine Rotlichtviolation in Dijkstra, 0,5 Sekunden. Buchstubee ich das richtig? Egal. Okay, hier. Eine Art und Weise über diese neue Funktion zu sprechen ist, ist, dass wir es jetzt eine Signatur nennen. Es ist nicht keine Type Signature. Es schaut so aus, aber es ist nicht ganz genau, es ist speziell zum Unterrichten. Erinnert euch in Mathematik, würden wir schreiben F, Doppelpunkt und den Typ. Und jetzt geben wir das String, also hier haben wir zuerst den String. Wie lange wird das dauern? Dann wird es den Rotlichtredlightviolation kreieren. Okay, okay. Das wird jetzt nicht viel machen. Außer, oh. Lass mich etwas zeigen. Ich hätte etwas anderes geschrieben, weil ich eine Zahl hier geschrieben. Dann, oh. Wo ist es hin? Okay. Okay. Es gibt hier eine Fehlermeldung aus. Das hat jetzt den Vollbild-Modus eingeschaltet. Schauen wir, ob wir das machen können. Okay. Okay. Gut, jetzt geht es weiter. Leider ist es jetzt in Deutsch. Ich weiß es nicht, ob ihr alle Deutsch könnt. In unserem Fall, in unserem Channel schon, aber gut. Es sagt 5. Wir haben 5 davon. Es sagt 5. Das ist die Zahl, die wir eingegeben haben. Hier haben wir die 5. Ja. Und es hat diesen String violated, weil es eine Zahl ist und kein String. Wie wir sehen können, es gibt die R-Messages sehr speziell, sodass man den Fehler leicht finden kann. Okay. Jetzt eines der Probleme war eine Funktion zu schreiben, ob es eine Rotlichtverletzung gab oder nicht. Wir haben das getan. Jetzt wollen wir das auch dokumentieren. Wie viele Kommentare sollen wir geben, aber für die Schülerinnen sagen wir, macht eine Pro-Funktion. Das ist normalerweise eine gute Menge. Hier beschreiben wir, was das Programm ist. Der nächste ist, ist diese Rotlichtverletzung ernst. Eine schwere Rotlichtverletzung. Wenn man eine funktionale Programmiersprache hat, schreibt man immer eine Signatur. In diesem Fall brauchen wir einen Namen für die Signatur. Eine Rotlichtverletzung serious. Ist die Rotlichtverletzung ernsthaft? Red, red light Violation serious. Hier kommt die Rotlicht Violation rein. Wir wollen als Output ein Bullion. Es war eine Verletzung ja oder nein. True or false. In der Klasse kann man für diese ganzen kleinen Schritte schon belohnen. Weil jedes, jeder kleiner Schritt ist wichtig, um das Programm zusammenzusetzen. Man sollte natürlich auch den Leuten gleich beibringen, einen Test zu schreiben. In diesem Fall werden wir nieder schreiben, wie wir erwarten, dass unsere Funktion sich verhält. Hier haben wir die Sprache. Ich hoffe, ihr kennt dieses Prinzip. Dinge werden immer am Anfang benannt, wie in funktionellen Sprachen oft üblich. Und dann hier haben wir die Signatur. Red light, Violation serious. Die erste Verletzung ist sehr schwerwiegend. Vier Sekunden darüber, war. Und die zweite RV2 ist weniger schlimm. Deswegen erwarten wir falsch, weil es nicht eine große, redlich Verletzung ist. So, jetzt lasst mich was kurz benennen. Wir haben eine kurze Beschreibung hier. Das ist die Signatur des Ganzen. Das sind die Tests, die wir schreiben. Und jetzt schreibt man, wie es gelett ist. Man fängt einfach an, diese Funktion zu schreiben. Aber wir haben bereits ein paar Informationen über diese Funktion. Wir wissen, wie viel reingeht, was da so rausgeht. Und deswegen euer Moment. Ja, verschrieben hier. Ja. Also, es ist eine funktionale Sprache. Also muss man irgendwo ein Lamp da hinschreiben. Also wenn wir eine Funktion in dieser Sprache machen, dann nehmen wir das Lamp da. Die Funktion, die ein einziges Ding erwartet, nämlich so einen Rotlichtverstoß und wir nennen es RV. Und dann machen wir einfach nur drei Punkte dahin. Und diese drei Punkte, ich, das heißt nicht, wir, wir füllen das später aus, sondern wenn ich das tatsächlich mache, dann schreibe ich da tatsächlich drei Punkte hin. Und dann bitten wir unsere Studierenden, bitte, das ist das Gelett. Schreibt da tatsächlich diese drei Punkte hin. Das gibt bereits Punkte für euch. Seit das, weil das so leicht zu machen ist, das bedeutet, dass man schaut nicht auf so ein weißes Stück Papier, sondern man ist bereits ermutig, den nächsten Schritt zu machen. So. Jetzt muss man das, was ich hier reinfügen muss, ist ein Template, also eine Vorlage. Und die kommt aus den Daten, die in diese Funktionen reinkommen. Und manchmal von den Daten, die rausgehen. Und in dem Fall, die Daten, die dort reingehen, sind also diese Rotlichtverstoßobjekte und diese Objekte, wenn ihr euch erinnert, das ist also ein zusammengesetztes Objekt, das hat zwei Stücke. Und immer, wenn man eine Funktion schreibt, die also diese zusammengesetzten Objekte akzeptiert, dann muss man sich diese beiden Elemente z.B. in dem Falle angucken. Man muss also was schreiben, was sagt, was diese einzelnen Stücke sind und denkt dran. Ich habe ja bereits gesagt, wie das funktioniert, aber denkt bitte dran, das ist diese Record Definition, und wir haben eine Signatur da oben, die sagt, wie ein Objekt konstruiert wird. Und was wir tatsächlich brauchen ist, wir müssen diese Komponenten aus so einem Rotlichtverstoß diese einzelne Mitte rausbekommen. Man braucht also einen Selektor dafür. Und das sind diese Teile in Klammern, hier und dort. Und das kann man mit so einer Signatur machen und wunderbarerweise, wenn hier also so eine Rotlichtverstoß reingeht und ein String rauskommt und in diesem Fall so ein Rotlichtverstoß geht rein und ein, wie sagen wir das, eine gar rationale Zahl kommt raus. Die sehen natürlich das mal Redundanz aus und ja, man hat das Gefühl, man schläft jetzt hier noch mehr ein, wenn man sich das anhören muss. Aber ich hatte mal einen Vorfall in der Klasse, oder eine Erkenntnis hatte ich in der Klasse, wo ich das vorgeschrieben habe und die Studenten diese Zugriffs-Signaturen gemacht haben und das hat mich noch bürokratischer gemacht, als ich sowieso schon davor war. Also, was wir machen ist, wir wollen Zugriff auf diese verschiedenen Teile bekommen. Also schreiben wir Rotlichtverstoß, Plays, LW, das ist ein Teil und Red Light Violation Seconds, diese Kunden also, das ist der zweite Teil. Und das sind Bausteine. Wenn man also wirklich streng ist, dann müssen diese drei Punkte überall hingebaut werden. Und ja, das sind einfach nur Bausteine für Funktionen. Und man muss da gucken, wie tragen diese Teile jetzt also zur Lösung der Gesamtaufgabe frei. Also, wenn wir das fragen wollen, okay, ist das eine ernsthafte Rotlichtverstoß? Ist der Ort relevant dafür? Der ist eigentlich nicht, aber ist die Zeit relevant? Die Kunden sind tatsächlich relevant dafür. Also, man macht diesen bewussten Akt, ne? So, man hat das erst mal geschrieben, jetzt lösche ich das wieder, weil man da weiter nachgedacht hat. Und man geht hierhin und sagt, nun, ich schaue mir das im Internet an und habe mir das tatsächlich angeschaut. Wenn es über eine Sekunde ist, also eine Sekunde und mehr, dann ist es tatsächlich ein ernsthafter Rotlichtverstoß. Und ja, dann müssen wir sichermachen, dass die ganzen Klammern stimmen und dann können wir das Programm laufen lassen. Und ah, okay, FIV ist noch so ein Signaturverstoß oben drinnen. Also, gut. Okay, jetzt, es sagt, wieder hier ist wieder das deutsche Satz drinnen. Ja, weil das halt für deutsche Studierende gemacht ist. Beide Tests waren erfolgreich, da steht es. Wir haben zwei Testcases da geschrieben. Ja, bei diesem bürokratischen Ansatz, das geht weiter und weiter und weiter. Ich werde jetzt ein bisschen schneller durch die nächste Iteration gehen. Und da steht also, mal schauen, was es sagt. Es sagte, das hier, diese Geschwindigkeitsübertritt. Okay, dann machen wir das mal hier. Also, ein Geschwindigkeitsübertritt. Er hat, er hat einen Ort und er hat, wie viel Kilometer pro Stunde drüber sind. Und dann schreiben wir wieder dieser Objekt oder diese Record Definition, die das Objekt dann definiert. Ja, irgendwie sowas hier. Und dann haben wir zwei Stück davon. Also, wir haben eine Datendefinition, die sagt, okay, wir haben zwei Komponenten. Wir haben diese Record Definition, die das für das Ganze beeinstimmen muss. Und jetzt denkt man, ja, das ist trivial. Aber mit zusammengesetzten Daten haben Studierende wirklich, wirklich Schwierigkeiten. Deswegen ist es gut, sich zu erinnern. Wir haben zwei Stück und diese zwei Stück müssen, müssen sich das Elektronen geben in dieser Record Definition. Also, haben wir die Geschwindigkeitsübertritt. Eins, alles auf der Hauptstraße mit 20 Kilometer drüber. Und wir haben noch eine. Ja, in der Low Street in der niederen Straße, 25 kmH drüber. Jetzt haben wir zwei Beispiele dafür. Okay. Und hier unten, dann die nochmal in der Low Street, 25 kmH drüber über den Limit. Ja, also, diese Konstrukte da drinnen hat so ein klein, kleine Signatur, die sagt, okay, es kommt eine natürliche Zahl rein. Und dann kommt so ein Speeding Wire Election Objekt raus. Und dann schauen wir uns das aus. Wir brauchen zwei Dinge, um noch eine Sache zu erklären. Also, die Frage ist, wann ist die Geschwindigkeitsübertretung ernsthaft? Also, wann ist viel übertritten worden? Das ist wieder genau das Schema, das selbe Schema wie oben. Schreiben wir diese Signatur. Und dann geht es an das Ende. Ein Speeding Wire Election kommt da rein. Und wir haben eine Bullion als Rückgabewert. Und jetzt schreiben wir wieder zwei Tests. In Deutschland ist eine Geschwindigkeitsverletzung, wenn es 20 kmH drüber ist. Das ist umso schlimmer, je mehr man drüber ist. Also, die erste ist nicht so schlimm. Genau, und wir erwarten also falsches Rückgabewert in unserer Bullion. Und das zweite, das ist natürlich jetzt 25. Das heißt, es ist schon ernsthaft. Genau, genau. So, hier erwarten wir true als Rückgabewert von unserer Bullion, also war. Und jetzt schreiben wir das Klett. Hier haben wir Defined Speeding Wire Election. Und hier haben wir wie üblichen Funktionalsprachen wieder das Lambda. Schreiben wir die drei Punkte hin, um die Leute zu motivieren, da was reinzuschreiben. Und jetzt schreiben wir in diese drei Punkte gleich rein. Eine Speeding Wire Election, hier der Ort der Speeding Wire Election. Und wir haben die Kilometer pro Stunde, die drüber sind. Genau, das sind die Zutaten. Und dann denken wir ein bisschen nach, das sind wieder die drei Punkte für die Schülerinnen. Und dann kommen wir drauf. Der Ort, darum geht es gar nicht, weil 20 Kilometer pro Stunde ist egal, wo das in dem Fall zumindest ist. Ich gehe ziemlich schnell hier. Ich hoffe, das ist okay für euch. Und so, wenn es größer gleich, 21 ist, dann ist das eine ernsthafte Geschwindigkeitsverletzung Übertretung. Genau. Jetzt schauen wir uns an, wie das funktioniert. Hier haben wir gleich eine Fehlermeldung. Aha, da habe ich mich verschrieben. Hier oben haben wir noch das erste Programm dran. Genau. Jetzt haben wir primitive Daten. Und wir haben schon zusammengesetzte Dinge jetzt. Eine Geschwindigkeitsverletzung. Wir haben jetzt zwei Sachen. Wir haben Geschwindigkeitsübertretungen und die Rotlichtübertretungen, die Rotlichtverletzungen. Es ist das oder das. Oder vielleicht ist es einst der beiden. Und wenn wir jetzt, also die beiden Dinge zusammensetzen, dann ist es nicht compound data im strengen Amenssinn, sondern es ist mixed data in diesem Fall. Das ist unser Datenmodell in diesem Fall. Und man findet das heraus, indem man sucht für die Werte or oder one of, also sagt, das definieren wir als mixed data in diesem System. Und wie macht man das? Das sage ich euch jetzt. Man definiert Datendefinition, und wir schreiben einen gleichen Kommentar. Wir schreiben als Kommentar, eine Verkehrsverletzung ist eine der folgenden, also eben mixed data. Als einerseits haben wir dann die Rotlichtverletzungen, die wir oben definiert haben, oder ist es eine Geschwindigkeitsübertretung. Und genau wie mit der zusammengesetzten Daten, sind die mixed data, definieren wir ganz analog, definieren wir, was es ist. Also wir definieren, genau, jetzt machen wir die Signature, und wir sagen, die Signature ist mixed, und es gibt eben entweder die Rotlichtverletzung oder es gibt die Geschwindigkeitsübertretung. Und hier, hier haben wir unser Datenmodell und jetzt können wir das auch in der Signature verwenden. Das Problem ist, dass wir haben wir jetzt nicht gesagt, ob es schwerwiegend ist oder nicht, sondern einfach nur, ob die Verkehrsverletzung schwerwiegend ist. Das heißt, es müssen wir jetzt noch definieren, weil wir nur, das eine ist eben die Rotlichtverletzung, das andere ist die Geschwindigkeitsübertretung. Und wir müssen jetzt genau definieren, wann es ist schwerwiegend, eine schwerwiegende Verkehrsverletzung. Und statt Rotlichtverletzung, in dem Fall schreiben wir jetzt Verkehrsverletzung und erwarten wir jetzt wieder in den Bullien zurück, True oder False. Da können wir jetzt wieder ein Test schreiben, aber das überrasse ich ja jetzt, das könnte dann zu Hause probieren. Jetzt machen wir, so, jetzt setzen wir das wieder zusammen. Also hier haben wir wieder das berühmte Lambda. Genau, ich habe mich erzählt, wenn wir jetzt die zusammengesetzten, die Component-Data haben, dann habe ich jetzt da nicht mitbekommen. Also wenn wir jetzt Mixdaten haben, wenn wir also das und das haben, sollten wir herausfinden, was es genau ist, bevor wir weiter gehen, um das zu machen, verwenden wir jetzt ein Conditional, eine Bedienung. Beschreiben wir dafür, kommt vorne. Wir müssen jetzt die Rotlichtverletzungen von der Geschwindigkeitsübertretung unterscheiden. Also wir müssen herausfinden, was was ist und das ist der letzte Punkt hier in der Record-Defination. Genau. Hier haben wir den Namen des Konstruktors. Hier machen wir gleich einen Kommentar. Und das hier haben die Accessors. Genau. Und die Red-White-Valation ist, was wir das Predicate nennen. In diesem Fall sagt das Predicate Red-White-Valation Fragezeichen. Und es nimmt alles und sagt uns, ob es eine Rotlichtverletzung ist oder nicht. In diesem Fall haben wir nur zwei Sachen. Natürlich. Das Gleiche geht für die Geschwindigkeitsvertretung. Also wir brauchen eine Bedienung, ein Conditional. Das heißt genau so viele Branches, wie viele Daten definitionen wir haben. Es klingt jetzt primitiv, aber es ist sehr wichtig, aus Kindern professionelle Programmiererinnen zu machen. So haben wir zwei Klammern, weil wir eben zwei Branches, zwei Äste in dieser Verkehrsverletzung haben. Ist es eine Rotlichtverletzung oder ist es eine Geschwindigkeitsvertretung? Also wir beginnen mit der Rotlichtverletzung. Fragezeichen. Und wir haben das zweiten Switch, das sagt Speeding-Valation TV. Und hier müssen wir die Antwort reinschreiben. Wir wissen die Antworten schon, weil wir schon zwei Funktionen geschrieben haben. Das heißt, wir müssen hier nur die beiden Dinge rein reingeben. Wir können hier die Signatur für die Redlight-Valation kochen und für die Geschwindigkeitsvertretung. So, wir sind mal fertig. Also das ist das, was wir jetzt gerade machen können. Ich hoffe, ihr seht zwei Sachen. Das ist total langweilig und sehr, sehr bürokratisch. Und aber möglicherweise könnt ihr sehen, dass jeder einzelne Schritt, der hier gemacht wird, so ein Prinzip hat, der so einen ganz speziellen Namen hat und den man sehr, sehr genau erklären kann, ohne das Abstrakt machen zu müssen. Und das heißt, man kann wirklich jeden einzelnen Schritt erklären, um dieses Problem zu lösen. Ich kann nicht hoch genug sagen, was für ein Paradigmenwechsel das ist beim Lehren. Wenn man wirklich jeden einzelnen Schritt erklären kann, sagen wir uns auf, das ist das, was du gedacht haben solltest. Hier ist, was du als nächstes hättest tun sollen. Das klappt normalerweise nicht so gut. Also so ein Prinzip hinter diesem Lehrstil ist, wirklich absolut sicher zu sein. Jeder einzelne Schritt, den wir von den Studierenden erwarten, wenn sie was tun sollen, das hat einen Namen und wir haben sie ausdrücklich gelehrt. Wir haben also gesagt, es gibt dieses Designrezept, es gibt diese Vorlage, dieses Skelett zusammengesetzte Daten usw. Und das ist also dieses Faktenwissen, dass dieser Fähigkeit vorangeht. Und wenn man so eine Klasse hat, wo man jeden einzelnen Schritt so belohnt, dann geht es wirklich um diese Form. Es gibt so ein Paper, wo man sagt Form over Function. Wir akzeptieren nicht einfach Programme, die funktionieren. Wir nehmen nur Programme, die tatsächlich die Form erfüllen. Man muss das Ganze messen. Man muss also gucken, ob dieser Lehrstil wirklich funktioniert. Und jetzt kann man sagen, das ist hier die Kreativität rauszunimmt. Ich glaube, das ist nicht der Fall. Also wenn man mit wirklich Deutschland spricht, dann haben die trotzdem benannte Techniken, die man genau benennen kann. Und jemand hat immer gesagt, Mozart hat niemals irgendwas gelernt oder irgendwas geübt, bevor er irgendwie in Großartiger Komponist gewesen ist. Aber Mozart hat so zeitlich in der Kindheit angefangen, dass er 10.000 Stunden Übung hatte, bevor die meisten Leute überhaupt anfangen mit irgendwas. Das hat tatsächlich funktioniert. Kinder, ich würde ungefähr bei 11 Jahren anfangen. Das hat wirklich geklappt. Die das anders gelernt haben oder andere schlechte Angewohnheiten haben. Es gibt zwei Webseiten, die man sich anschauen kann. Das eine ist unser amerikanisches Schwesterprojekt programbydesign.org. Jede Menge Publikationen, Links und so weiter. Und da gibt es auch ein Buch auf Englisch, wie man ein Programme anlegt. Es steht hier nicht drin, aber dieses Buch ist kostenlos online verfügbar. Wenn ihr ganz auf Deutsch gebt, ist deinprogramm.de. Das hat auch Links und Publikationen. Selbe Software dahinter. Und den Entwurf des Buches gibt es auch schon. Ich hoffe, wir bekommen nächstes Jahr auch eine gedruckte Fassung dieses Buches dazu. Das ist alles, was ich jetzt habe. Vielen Dank, Mike, für den Vortrag. Wenn es Fragen gibt, wir haben die Mikrofonie zugeschaltet in dieser Reihe. Der Signal Angel ist da. Ja, also ein Nutzer fragt, was sind die Vorteile dieses Dr. Racket Tools anstatt zum Beispiel einfach Peisen zu nehmen. Was natürlich auch für Lehrer entwickelt wurde? Für Peiten war es sicher nicht für Lehrern unterrichtet in keinen nützlichen Ort. Praktisch gesprochen, der Unterschied ist, es gibt viele Techniken, aber wenn du versuchst die Techniken zu formalisieren und das auf Peiten zu übersetzen, dann wirst du das sehr schwer finden. Die meisten Peitenprogramme, die es draußen gibt, sind nicht besonders systematisch zusammengesetzt. Diese Programmiersprachen sind gemacht worden und ist zu beleid Peiten war sicher nicht mit irgendwelchen didaktischen Prinzipien im Hintergrund entwickelt. Gut, dann Mikrofon 2, bitte, ja, bitte. Hallo, ich unterrichte 14-Jährige in der Mittelschule und auch Programmierung und ich den AppInventor, das ist vom MIT Media Lab und das geht mit Scratch los und ich bin überhaupt nicht sicher. Du hast gesagt, man braucht Legomeinstormroboter, vielleicht so was, um Scratch halt zu machen, aber das ist nicht der Fall. Was ich halt schwierig finde ist für meine Studierenden die nicht die besten der besten und aus der besten Eltern, die würden gern was zeigen und bei deinem Programm ich meine, ja, es ist einfach es ist wirklich sehr langweilig und wie bericht man diesen Punkt rüber? Ich finde es so wichtig, dass am Schluss sie was zeigen können. Es kommt natürlich darauf an, auf deine, auf die Leute, auf die Schülerinnen, je nachdem zeigt man, ich hab die Bilalgebra ganz am Anfang gezeigt und das funktioniert ziemlich gut für Kinder und und das geht weiter bis zu Videospielen und ich denke schon, dass man da viel zeigen kann und ja, das ist einer der guten, guten Aspekte an diesen Dingen. Es fängt bei Rechtecken an aber es geht bis zu professionell programmieren zu Videospielen und so weiter. Also wir in ersten Semester auf der Universität haben wir bis zu 80 Style Froggers schreiben lassen und das sind wir geändert und Kinder können das genauso. Gut, dann Mikrofon 1 bitte. Hallo. Vielen Dank für den Vortrag. Ich würde gerne wissen, also dein Ansatz, da gibt es eine ganze Menge Overhead, also mehr Arbeit, die man da machen muss, der auch notwendig ist. Wie hältst du das mit der Methodologie in der tatsächlichen im Klassenzimmer? Hast du Empfehlungen für wie man das Design von dieser Klasse, also von der Klassensituation? Welche Methoden nimmst du? Ja, guter Punkt. Also die meisten Klassen, die ich habe machen ist genau das, was ich euch heute hier gezeigt haben. Das ist genau das, was ich normalerweise mache. Ich könnte euch Freunde zeigen die einen geflipte Wessel davon gemacht haben. Es scheint auch zu funktionieren. Aber was ich betonen möchte, als ein Lehrer, als Lehrer und ich habe ein paar Slides über es ist sehr wichtig durch all diese Schritte zu gehen und jeder Schritt ist wichtig und auch für die Geschwindigkeit, mit der man vorgeht, ist es sehr, sehr wichtig und der Rest geht von selbst. Es kommt gar nicht drauf an, ob man mit Kinder oder Erwachsenen programmieren arbeitet. Vielen Dank. Microphone 3, bitte. Ich glaube, das ist großartig, aber es lädt halt funktionales Programmieren und viele Leute werden sehr, sehr schnell imperatives Programmieren brauchen. Wie macht man diese Umschaltung und wie macht man das? Das möchte ich gerne diskutieren. Ich habe eine Firma die alle ihre Softwareprojekte mit funktionalen Programmiersprachen machen und was das bedeutet und was das macht ist. Wenn du Software professionell schreibst, dann denke ich, dass eine Großteil von Funktional sein sollte und viele Programme zeigen das nicht und es gibt Zeit-Effekte und Dinge. Damit will ich auch ein bisschen die Grenzen pushen. Ich habe, ehrlich gesagt, keine Ahnung, wie man imperative Programmiersprachen lernt oder selber macht. Aber was ich machen kann, ist die imperativen Teile des Programms auf den Rand zu drängen und die funktionalen größeren Raum zu geben. Wir wissen funktionales Programmieren funktioniert sehr gut und es baut eine gute Grundlage zum unterrichten und es gibt viele Kursen die auf das... Aber frag mich einfach später, nach dem Programm, dann können wir darüber reden. Dann haben wir Mikrofon 4 bitte. Vielen Dank für den Vortrag Wie ist deine Erfahrung mit wie viele Wiederholungen braucht man bis sie wirklich diese Prinzipien verstanden haben? Muss man da 3 Beispiele machen oder sind es bis zu 10 Beispiele? Ich weiß nicht genau bis da eine scharfe Regel gibt. Meine Erfahrung ist, ich denke, jedes Prinzip das ich hier gezeigt habe, und auf 3 bis 4 wo man das zu Hause macht oder als Übung aber ich habe eigentlich keine strenge Regel dafür. Generell muss ich sagen, dass der beste Vergleich, den ich habe, ist die Universität und hier dort ist wie es weitergeht ist der Fortschritt sehr schnell verglichen mit Java ich weiß jetzt nicht wie viele Universitätsstudies Videospiele programmieren lernen in ihrem ersten Semester und so. Es ist sehr überraschend auch wenn es so langweilig am Anfang ist aber es gibt dir die Möglichkeit gute, schwere Programme sehr schnell zu lernen und zu schreiben. Mikrofon 2 Vielen Dank für den Vortrag Als ich als Kind angefangen habe ziemlich jung zu programmieren und ich glaube ich könnte diese ganzen Werkzeuge und diese geistige Einstellung dafür wirklich transferieren auf Mathematik und allgemeines Problem lösen und ich wollte fragen ob es in deiner Erfahrung Kinder auch diesen systematischen können die wirklich diesen Übergang machen diese Transitionen machen die besser im Problem lösen Also wenn du eines der Projekte anschaust das ist Bootstrap-Projekt das ist für Mittelschul-Kinder da ist der Ansatz spezifisch auf Allgebrau und Mathematik und das ist genau das sofern du sprichst denke ich und das ist normalerweise sehr erfolgreich und da gibt es sehr viel Material online also ja wir haben noch 2 Minuten und 2 Fragen schon 1 bitte Hallo, wie misst du diesen Erfolg deiner Lehre Also ich denke größtenteils auf der Universität schauen wir uns die die Resultate der Examen an und wir haben ein paar Papers geschrieben darüber wir haben ziemlich viele Supervisionen und schauen uns das genau an und wir kennen unsere Studies um sicher um sicher zu gehen die richtige Geschwindigkeit das richtige Level anlegen über die Jahre haben wir dieses Feedback genutzt um weiterzukommen zu lernen wie man das gut unterrichtet ja das ist genau es gibt Publikationen dazu und Mikrofon 4 gibt es irgendeine Art von Auto-Ergänzung in deinem Editor drin oder wie fühlst du das nicht wenn Leute gerade Anfänger sind da es gibt keine Autocompletion in meinen Programmen ich bin mir jetzt sicher ob ich dagegen argumentieren sollte ich weiß dass meine amerikanischen Kollegen also ihr vielleicht gemerkt habt das sind immer wiederholende Programme Elemente und man könnte sich vorstellen ah da gibt es diesen Knopf der das einfach einfügt und meine amerikanischen Kollegen haben damit experimentiert aber im Endeffekt haben sie das nicht verwendet aber ich kann euch jetzt keine Details zu nennen aber wenn ihr interessiert dann schreibt dann ein E-Mail aber ich weiß nicht genau warum ich bin jetzt auch nicht ideologisch dagegen aber wir machen es nicht okay dann mag nochmal vielen Dank für diesen Vortrag und hier nochmal ein großer Applaus für diesen Vortrag