Wer in Python programmiert, hat meist schon von der Notizbuch-Programmierung mit Jupyter bzw. JupyterLab gehört. Datenwissenschaftler*innen und KI-Entwickler*innen machen davon viel Gebrauch. Als ich eine besondere Variante der Notizbuch-Programmierung für die Programmiersprache Clojure entdeckte, war es um mich geschehen: Statt im Browser, d.h. im Notizbuch zu programmieren, bleibt man bei der Notizbuch-Programmierung mit Clojure in der Entwicklungsumgebung, und die Browseransicht wird währenddessen automatisch und live generiert; dieser Ansatz heißt dort Moldable Live Programming, die Umsetzung dazu Clerk. Ich habe die Idee aufgegriffen und etwas vereinfacht, damit sie ohne viel Aufwand auch für Java, die JShell oder jede andere Programmiersprache umsetzbar wird. Man programmiert wie gewohnt mit Java in der IDE oder mittels JShell-Skripten im Editor und instruiert den Browser, was er anzeigen soll. Ich nenne das Live View Programming. Den Namen habe ich beibehalten: Auch bei mir heißt die Realisierung des Live View Programming Clerk. Clerk für das Moldable View Programming hält automatisch während des Entwickelns die Websicht im Browser aktuell; die Nachbildung der Notizbuch-Programmierung im Stil von Jupyter/JupyterLab ist offensichtlich. In meiner Variante von Clerk für das Live View Programming instruiert Clerk den Browser, was er anzeigen soll. Das ist viel einfacher umzusetzen, ermöglicht ebenso Notizbuch-Programmierung, eröffnet aber darüber hinaus ganz andere Möglichkeiten der Verwendung z.B. zum Literate Programming.
Schauen Sie sich das mal an, spielen Sie damit und lassen Sie sich von der Idee anstecken ;-)
Das Github-Repo zu Clerk: https://github.com/denkspuren/clerk
Mir hat es ein Artikel von Holger Lyre angetan, den ich hier bespreche und um einen semantischen Aspekt erweitere. Lyre befasst sich damit, was Sprachmodelle wie ChatGPT eigentlich verstehen – und geht das als Philosoph auf ganz interessante Weise an.
Holger Lyre (2024). “Understanding AI”: Semantic Grounding in Large Language Models arXiv:2402.10992 (submitted on 16 Feb 2024)
Lyre trägt das Thema selber vor in einem Vortrag an der Uni Magdeburg. Sicher ist das der bessere Vortrag, wenn man sich dafür interessiert. Für mich lag der Wert im selber darüber Nachdenken und dem Gedanken, dass ich einen Aspekt des Semantischen bei ihm vermisse.
KI trifft Philosophie: Was versteht ChatGPT? (2023) https://www.youtube.com/watch?v=MdDQ3FAzftk (Vorlesung vom 29.11.2023, Universität Magdeburg)
Meine Folien finden sich hier: https://docs.google.com/presentation/d/1cEXr5t7oEcyrut8ZRtp04bFJg4oVuBokR9GOq_FJjqc/edit?usp=sharing
Es gibt verschiedene Angriffsformen, mit der man ein Sprachmodell attackieren kann. Fragen Sie dazu mal ChatGPT, es ist sehr auskunftsfreudig zu dem Thema. So klug, schlau und intelligent und kreativ ChatGPT auch sein mag: Hat dieser Eindruck noch Bestand, wenn man eine einfache Attacke fährt?
Ali Abdaal hat im Podcast "The Deep Life" im Gespräch mit Cal Newport einen interessanten Gedanken geäußert, der mich ans Nachdenken gebracht hat: Ist das der Grund, warum die Hälfte meiner Studierenden nicht mehr aktiv dabei ist?
Das ganze Gespräch kann man sich hier anhören: https://www.youtube.com/watch?v=Y6vFa781ofE
Der Gesprächsauszug beginnt hier:
https://www.youtube.com/watch?v=Y6vFa781ofE&t=4251s
Der Didaktik-Podcast der Hochschule Macromedia, der LectureCast, hat mich zum Gespräch eingeladen. Wir sprechen über Podcasts im Hochschulkontext, speziell über Herzbergs Hörsaal. Die Gastgeber sind Prof. Dr. Andreas Hebbel-Seeger und Prof. Dr. Tamara Ranner von der Hochschule Macromedia.
Mit der Aufzeichnung verbinden wir ein Experiment: Hier auf Herzbergs Hörsaal kann man die unbearbeitete und ungeschnittene Fassung unseres Gesprächs hören. Im LectureCast, Episode 68, ist die überarbeitete Fassung zu finden. Wir wollen selber einmal wissen, wie diese unterschiedlichen Formen der Aufbereitung wirken. Und wir laden alle Hörer*innen ein, auch mal "drüben" reinzuhören und selber zu vergleichen, wie die Wirkung ist.
Episode 68: https://podcasters.spotify.com/pod/show/macromedia0/episodes/LectureCast--Episode-68-PodCast-als-Lern--und-Fortbildungsmedium-e27aao9
Der LectureCast mit allen Folgen ist zu finden bei https://open.spotify.com/show/39acYxWTZWVLXYZS8xXVrA und überall dort, wo es Podcasts gibt.
Angenommen, Sie haben Ihre Bachelorarbeit angemeldet. Die Uhr läuft, Sie haben drei Monate. Am Schluss müssen Sie einen Text abgeben, Ihre Thesis. Dann macht es doch Sinn, so früh wie möglich mit dem Schreiben zu beginnen, oder? Und immer wieder, Schritt für Schritt, den Text zu ergänzen und zu erweitern. Das ist die sogenannte Salamitaktik. Nach und nach entsteht der Text für die Thesis. Oder ist es klüger, das Schreiben der Thesis an das Ende der Forschungs- und Entwicklungsarbeit zu legen? Dann, wenn man die Ergebnisse kennt, wenn man weiß, was man zu sagen hat.
Beide Vorgehensweisen haben Ihre Vor- und Nachteile. Bei einer der beiden Strategie habe ich oft eine Dynamik beobachtet, die dem Ergebnis und der Note zur Thesis nicht gut getan hat. Denn Sie dürfen nicht vergessen, worauf es eigentlich ankommt: auf Forschung und Entwicklung, zu der Unwägbarkeiten und Überraschungen dazu gehören.
Es gibt viele Möglichkeiten, Code etwas erzählen zu lassen. Ich versuche, Ihnen das am Beispiel der Fibonacci-Zahlen zu verdeutlichen. Rein funktional betrachtet liefert in unserem Beispiel jede Erzählung das gleiche Ergebnis. Und dennoch löst die Erzählung etwas in Ihrem Kopf aus. Sie veranschaulicht Ihnen auf verschiedene Weisen, wie vorgegangen wird und welcher gedanklichen Konstrukte sich dabei bedient wird. Erzählen Sie den Code mit Anweisungen oder mit Ausdrücken? Welche Datenstrukturen verwenden Sie dabei – und wie verwenden Sie die Datenstrukturen? Ich finde es überraschend, dass sich die Berechnung der Fibonacci-Zahlen mit so vielen Erzählungen bzw. Erzählvarianten darstellen lässt. Und sicher gibt es noch viele, viele mehr.
Meinen Code, den ich bespreche, finden Sie hier: https://gist.github.com/denkspuren/c99c64d3c0cbee966e8a9ec74708af5d
Dazu gibt es auch ein YouTube-Video, wenn Sie Interesse haben: https://youtu.be/dOi0gFhb3eg
In Java haben wir es mit Objekten und Referenzen auf Objekte zu tun; die einen visualisieren wir durch runde Formen, die anderen durch Pfeile. Dazu kommen noch die primitiven Werten. Die Visualisierung benötigen wir für das "Kopfkino", anhand derer wir uns Strukturen veranschaulichen. Wir können da noch eins drauflegen, indem wir Teilstrukturen anhand von Bildern oder Symbolen zusammenfassen und verknüpfen. Dann können wir verbildlichte Konzepte in der Logik eines Bildes nachvollziehen, erklären und verständlich machen. Solche Vorstellungswelten sind nötig, weil die Arbeit mit dem reinen Programmtext, wo wir auf der Klassenebene arbeiten, das nicht direkt durchscheinen lässt. Man muss sich bewusst klar machen, was sich hinter den Deklarationen von Klassen, Objektvariablen und Methoden verbirgt, was damit in bildlichen Bezugsstrukturen passiert bzw. passieren soll.
Die Episode ist ein Versuch, dieses Denken in Bildern rein sprachlich zu transportieren. Ich hoffe, Sie können sich vorstellen, was ich erklären und sagen will. Zur Unterstützung finden Sie unter dem nachstehenden Link ein Tafelbild, auf das ich mich beim Reden beziehe. Damit Sie im Zweifelsfall etwas vor Augen haben ;-)
https://drive.google.com/file/d/1sactQD4A-3JixPirbUr8RI74w8THTk3S/view?usp=sharing
Anne Dippel und Martin Warnke haben ein sehr interessantes Buch geschrieben, das frisch in den Regalen der Buchhandlungen zu finden ist: »Tiefen der Täuschung: Computersimulationen und Wirklichkeitserzeugung«, Berlin: Matthes & Seitz, 2022. Es geht um die Frage, ob Computersimulationen eine eigenständige Form der Theoriebildung sind – und, da sie die Frage mit "Ja" beantworten, welche wissenschaftstheoretischen und medientheoretischen Konsequenzen und Erkenntnisse damit einhergehen. Das Spannende an der Herangehensweise ist, dass sie der Computersimulation die Erkenntnis- und Arbeitsweisen der Physik gegenüberstellen; darum wird es auch um Quantenphysik gehen, um einen größtmöglichen Kontrast herzustellen. Ich finde das alles aufregend, sehr erhellend und wegweisend, und ich freue mich, dass die beiden Zeit für ein Gespräch in Herzbergs Hörsaal hatten.
Webseite zum Buch: https://www.matthes-seitz-berlin.de/buch/tiefen-der-taeuschung.html
Anne Dippel ist Historikerin und promovierte Kulturanthropologin, sie forscht und lehrt an der Friedrich-Schiller-Universität in Jena. Martin Warnke ist promovierter Physiker und lehrt als Professor für Informatik und Digitale Medien an der Leuphana Universität Lüneburg.
Webseite Anne Dippel: https://www.kuk.uni-jena.de/seminar-fuer-volkskunde-kulturgeschichte/personen/pd-dr-anne-dippel
Webseite Martin Warnke: https://www.leuphana.de/institute/icam/personen/martin-warnke.html
Prof. Dr. Thorsten Weyer ist Informatiker und neu berufener Kollege an der Technischen Hochschule Mittelhessen. Wie es der Zufall wollte, teilen wir uns ein Büro. Da lag es nahe, dass wir uns einmal im Podcastformat darüber unterhalten: Was ist Informatik? Prof. Weyer kommt vom Software Engineering und bringt damit eine ganz eigene Perspektive ein. Sehr interessant finde ich auch unseren Austausch zu der Frage, was das Wissenschaftliche in der Informatik ist und was das für eine Bachelorarbeit bedeutet. Wir brauchen mehr solche Dialoge und Austausche in der Informatik an Hochschulen für Angewandte Wissenschaften.
Die Mitte des Vorlesungszeit ist erreicht, die ersten sieben Wochen sind rum. Das ist ein guter Zeitpunkt, um sich Gedanken über die zweite Hälfte zu machen mit einem Rückblick und einem Ausblick.
Mit Programmcode löst man nicht nur Probleme, sondern man beschreibt damit auch Lösungen. Kurz gesagt: Code transportiert ein Erzählung, ein Narrativ. Wie man diese Erzählung verändern kann, wie diese Erzählung eine Konzeption oder eine Gestaltung beschreiben kann und sogar für Begründungen herangezogen werden kann, das erzähle ich Ihnen am Beispiel einer Rechenaufgabe, die der kleine Gauß von seinem Lehrer gestellt bekam.
Begleitmaterial zur Episode: https://drive.google.com/file/d/1tiMNYY2T7-_yzjImGlyUSYnSPrR-lMyB/view?usp=sharing
Ich versuche Ihnen in dieser Folge eine Vorstellung dazu zu vermitteln, welches gedankliche Modell mit einem Quantenschaltungssimulator einhergeht.
Den Quantenschaltungssimulator finden Sie unter https://github.com/denkspuren/qcsim. Beachten Sie, dass ich derzeit aktiv in dem Repo arbeite, da wird sich noch einiges tun und ändern. Sie werden eines sicher feststellen: Viel Code braucht es nicht, um einen Quantenschaltungssimulator in Python zu programmieren.
Es gibt zwei Extreme in Veranstaltungen: Die Nix-Mitschreibenden und die Angsthasen und Aufschiebenden, die alles mitschreiben. Wie geht also richtiges Mitschreiben? Wozu und warum sollte man sich Notizen machen? Um sich Goldnuggets zu retten! Das hilft Ihnen, effizienter zu studieren.
Setzen Sie sich eine Experimentalumgebung zum Quantencomputing auf und zwar mit Hilfe von Python-Notebooks und leistungsstarken Python-Bibliotheken. An der Programmiersprache Python kommt man im Grunde in diesem Bereich nicht vorbei. Sie werden merken: So schwer ist Python nicht zu erlernen, und zusammen mit den Notebooks macht das Programmieren sogar sehr viel Spaß.
Die erwähnten Werkzeuge und Bibliotheken zum Programmieren sind in diesem Foliensatz verlinkt:
https://docs.google.com/presentation/d/1vA2K9Y-OFGw8bqwdB5WrYUMrUj9cBu5vsFdKjj3zkgw/edit?usp=sharing
Hiermit eröffne ich eine neue Reihe zum Quantencomputing (QC) mit dem ersten Beitrag "Was ist ein Quantenbit?". Man sagt auch Qubit.
Was ein klassisches Bit ist, das wissen Sie: entweder eine 0 oder eine 1. Ein Quantenbit ist eine Überlagerung von 0 und 1. Das ist raffiniert einfach ... und doch kompliziert.
Mehr dazu können Sie auch hier nachlesen: https://colab.research.google.com/drive/1VSGPIrJokaJVGTl5cibjb6Yn5SZgiuIh?usp=sharing
Ein Student aus dem WAI-Kurs hat mir den Link auf eine Webseite zugeschickt, die 75 Themenvorschläge für eine Informatik-Bachelorarbeit auflistet. In meinen Augen sind das 75 Vorschläge, die als Themen ungeeignet sind. Nach all den Semestern des Studiums gibt es weitaus interessantere und bessere Themen, mit denen Sie sich profilieren können.
Die Sprache der Wissenschaft ist das Englische. Gibt es nicht Pluspunkte, wenn man seine Bachelorthesis auf Englisch schreibt? Man zeigt damit doch den Wunsch und den Willen, sprachlich Anschluss an Wissenschaft zu nehmen und sich in dieser Sprache auszudrücken. Und man könnte dann leichter etwas veröffentlichen. Gute Argumente allesamt, aber Sie rauben sich damit eventuell auch der Chance, eine sehr gute Arbeit zu schreiben.
Einige Studierende beginnen sehr früh mit dem Schreiben Ihrer Bachelorthesis. Die Einleitung wird geschrieben, es entsteht dieses Kapitel, dann jenes Kapitel, und so allmählich reift das Gesamtwerk während Bachelorarbeit heran. Eine gute Strategie, könnte man meinen. Ich bin anderer Meinung, da wissenschaftliches Arbeiten ein offener Prozess ist, was sich mit einem frühen Fixieren der schriftlichen Ausarbeitung beißt. Ich glaube, ein Steinbruch-Ansatz ist besser.
Ein Student von mir wünschte sich eine "Ask Me Anything"-Podcastfolge und versah seine Email an mich mit einem Schwung an Fragen. Warum eigentlich nicht – die Idee gefiel mir. Aber auch andere Studierende meines aktuellen ersten Semesters (der OOP/Java-Kurs) sollten dann ebenso die Chance haben, mir beliebige Fragen stellen zu können. Neun Fragesteller haben es auf über 52 Fragen gebracht. Das ist beachtlich! Eine Frage musste ich rausnehmen, weil sie Hochschulinterna betrifft. Ich habe mir die Zeit genommen und beantworte von den 51 verbliebenen Fragen alles. Ich habe das in zwei Episoden aufgeteilt.
Die Liste der Fragen finden Sie hier:
https://docs.google.com/document/d/1hBM_O55hltClDD10StYXkePH1hf5IQg6brU5KwveF7Q/edit?usp=sharing