
Herzbergs Hörsaal: Informatik studieren mit den Ohren
By Dominikus Herzberg
Hören Sie zu, denken Sie mit, aber belassen Sie es nicht dabei: Studieren ist etwas aktives. So wie Sport. Tun Sie was für Ihre Bildungsmuskeln!

Herzbergs Hörsaal: Informatik studieren mit den OhrenNov 09, 2021

Zu Besuch beim LectureCast: Podcasts im Hochschulkontext
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.

WAI: Thesis zur Bachelorarbeit am Ende schreiben oder Salamitaktik?
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.

Prog2: Code erzählt Geschichten – Beispiel: Berechnung der Fibonacci-Zahlen
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

OOP/Java: Objekt- und Referenzstrukturen visualisieren; Beispiel Baum und Cursor
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

Im Gespräch: Anne Dippel und Martin Warnke – Tiefen der Täuschung: Computersimulationen und Wirklichkeitserzeugung
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

Im Gespräch: Thorsten Weyer – Was ist Informatik? Was macht die Informatik zur Wissenschaft?
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.

Bergfest: Schau auf die zweite Hälfte der Vorlesungszeit
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.

OOP/Java: Code als Erzählung – Das Beispiel vom kleinen Gauß
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

QC: Das Vorstellungsmodell zu einem Quantenschaltungssimulator
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.

Warum Sie sich Notizen machen sollten!
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.

QC: Was Sie zum Quantencomputing brauchen: Python-Notebooks und -Bibliotheken
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

QC: Was ist ein Quantenbit?
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

WAI: 75 Themen für die Bachelorarbeit, die Sie NICHT wählen sollten
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.

WAI: Bachelorarbeit auf Englisch schreiben?
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.

WAI: Soll ich das Schreiben der Thesis früh beginnen und den Text schrittweise entstehen lassen?
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.

Ask Me Anything (Teil 2)
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

Ask Me Anything (Teil 1)
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

WA in den Technikwissenschaften: Forschendes Entwickeln und erkenntnisbildende Reflexion
Am Freitag, 3.12.2021, fand das 3. Netzwerktreffen "Wissenschaftliches Arbeiten" statt, online organisiert von der TH Wildau. Ich habe dort einen Vortrag gehalten unter dem Titel "Wissenschaftliches Arbeiten in den Technikwissenschaften: Forschendes Entwickeln und erkennendes Schreiben". Hier eine Aufzeichnung für Interessierte, die ich tags drauf gemacht habe. Ich habe diese Episode unter dem Titel veröffentlicht, zu dem sich der Vortrag hinentwickelt.
Die Vortragsfolien gibt es hier:
https://drive.google.com/file/d/1UyCHsgjixwt8_HTTHmIDgHo8Q3v_v616/view?usp=sharing

OOP/Java: Ausnahmen (Exceptions)
Mit dem Auftreten einer Ausnahme (engl. Exception) wird die Ausführung einer Methode unterbrochen. Der Callstack (die Folge von Java Frames) wird danach abgesucht, ob irgendwo die Ausnahme behandelt, d.h. "gefangen" werden kann.
Die technischen Details zu dieser Episode können in diesem Programmierzettel nachgelesen werden:
https://drive.google.com/file/d/1IH4AmEkSitfSH6xLdz3rwxAQauFSN72k/view?usp=sharing

OOP/Java: Conways Game of Life – Eine Programmierskizze
Das "Spiel des Lebens" von Conway hat seine ganz eigene Faszination. Es ist ein zweidimensionaler zellulärer Automat, der ziemliche lebendig wirkt, wenn man ihn rechnen sieht. Es scheint eine von Lebewesen bevölkerte Welt zu sein. Das Erstaunliche ist, dass diese Welt turingvollständig ist, also Rechenfähigkeiten eines Computers hat.
Die Umsetzung als Java-Programm ist nicht so schwierig. Ein "Trick" ist, die Welt mit einem Rand auszustatten und sie durch ein eindimensionales Array zu repräsentieren – das ist effizienter. Die Idee dahinter stelle ich Ihnen in dieser Episode vor.
Wenn Sie Schwierigkeiten haben, sich das vorzustellen, was ich Ihnen erzähle, schauen Sie auf diesen Hilfszettel:
https://drive.google.com/file/d/1y3xtXnVhszvsWtMNar7fTUEcMTFdDK-u/view?usp=sharing

Das Gespräch: Moritz Klenk – Lehre mit Podcasts
Prof. Dr. Podcast – so wird Moritz Klenk gerne mal genannt, denn er ist schon lange in der Podcast-Szene aktiv und bekannt. Dabei ist das wörtlich zu nehmen! Moritz Klenk hat sich gefragt, wie sich das (Selbst-)Gespräch als Mittel der Erkenntnis begreifen lässt und hat dazu ein Experiment durchgeführt: Er hat das Gespräch darüber mit sich selbst ein Jahr lang täglich als Podcast geführt – das war seine Promotion. Im Mai 2020 wurde er, der Dr. Podcast, zum Professor für Kulturwissenschaften an die Hochschule Mannheim, Fakultät für Gestaltung, berufen. Das war, als die Hochschulen aufgrund der Corona-Pandemie die Türen schlossen. Die Lehre, die musste nun irgendwie anders ablaufen. Moritz Klenk griff zum Mikrofon und machte seine Lehre als Podcast.
Wir beide unterhalten uns darüber, dass man das Vorlesungsformat nicht einfach ins Video- oder Podcast-Format übertragen kann. Das geht überhaupt nicht. Man muss Lehrformate entwickeln, mit ihren eigenen Möglichkeiten und Chancen. Die Vorlesung ist ein Format für sich. Was der Podcast zu bieten hat, wie und in welcher Weise er anders ist als Lehrmittel, was seine ihm ureigenen Qualitäten sind, das besprechen wir. Auch, dass ein Reden ins Mikrofon allein nicht reicht. Das Assignment, die Aufgabe in der Praxis, und ein passendes Austausch- bzw. Gesprächsformat vervollständigen den Podcast. Zum Schluss erzählt Moritz Klenk, wie er forschendes Lehren versteht.
Links zu Moritz Klenk (Twitter @moritzklenk):
Hochschule: https://www.gestaltung.hs-mannheim.de/fakultaet/menschen/professoren/moritz-klenk
Webseite: https://experimentality.org/
CRE220 - Sprechendes Denken: https://cre.fm/cre220-sprechendes-denken
Buch: https://www.transcript-verlag.de/978-3-8376-5262-8/sprechendes-denken/

40.000 Abrufe. Das muss gefeiert werden!
Niemals hätte ich gedacht, dass dieser Podcast soviel gehört wird. Deutschsprachig, noch dazu ein absoluter Nischenpodcast, da sind 40.000 Abrufe nach eineinhalb Jahren und 80 Episoden schon beachtlich. Ich kann nur spekulieren, warum das Format als Lernangebot funktioniert. Vielleicht, weil es ein Gegenkonzept zum Video ist. Vielleicht, weil man zuhören und lernen kann ohne hinzusehen: also unterwegs, draußen, beim Abwasch, auf der Couch, im Bett. Vielleicht, weil sich Sprache und Begleitmaterial anders ergänzen und ein anderes Mitdenken einfordern. Wie gesagt, alles Spekulation.
Ich freue mich, wenn Sie mir eine Sprachnachricht auf anchor.fm/dominikusherzberg hinterlassen, der Heimatplattform dieses Podcasts. Stellen Sie mir dort eine Frage zur Informatik oder zum Studium. Oder erzählen Sie kurz: Was begeistert Sie an der Informatik? Oder: Welche Tipps haben Sie, um durch's Studium zu kommen?
Wenn Sie wollen, können Sie mir auch eine Mail schreiben: herzbergsohr@gmail.com

Studieren als Haltung zum eigenen Denken und Handeln
Ich freue mich auf das Wintersemester 2021/22 mit Ihnen. Und wie geht es Ihnen, freuen Sie sich auch auf den Semesteranfang? Wenn Sie Erstsemester sind: Was bedeutet es zu studieren? In meinen Augen ist es mehr als nur etwas Lernen zu wollen. Ich glaube, das Studieren ist eine Haltung dem eigenen Denken und Handeln gegenüber. Sie lassen sich in eine Disziplin entführen, Sie finden sich ein, Sie denken darin, Sie handeln, lösen, konstruieren, überprüfen, argumentieren in der Logik eines Fachs bzw. einer Disziplin: Weil Sie das selber wollen.
Wenn Sie Fragen, Anregungen, Kommentare, Gedanken haben: Schreiben Sie mir eine Email an herzbergsohr@gmail.com.

WAI: Wie bekomme ich eine 1.0 in der Bachelorarbeit?
Wissenschaft hat mit einer gewissen Unplanbarkeit und Ergebnisoffenheit zu tun. Das macht Wissenschaft so spannend. Das Ziel ist also offen. Die Frage ist, wie man den Weg zum Ziel geht. Wie eigenständig und experimentierfreudig man ist. Und ob man bereit ist, die Arbeit zu tun, die nun einmal getan werden muss.

WAI: Forschendes Entwickeln und erkennendes Schreiben
Die Informatik ist weder ein Schreib- noch eine Lesestudium im eigentlichen Sinn. Unser Nachdenken vollzieht sich vorrangig im Schreiben von Code, in der Reflektion des damit verbundenen Entwurfs und in der Prüfung, ob wir unsere Funktionsvermutungen einlösen. Darum: Viel geschieht auf einer informatisch-programmierenden Ebene, die durch das Schreiben eher begleitet als angeleitet wird. Diesen Prozess der programmierenden Auseinandersetzung mit einem Problem oder einer Aufgabenstellung nenne ich forschendes Entwickeln.
Das Schreiben, das Darstellen, das Sich-Ausdrücken und das Sich-Verständlich-Machen hat eine eigene Qualität. Den Schreibprozess bezeichne ich als erkennendes Schreiben. Es geht um die Erkenntnisse, die man selber gewinnt und um die Erkenntnisse, die eine Leserin oder ein Leser aus der Arbeit ziehen soll.
Das Programmieren haben Sie gelernt, das Schreiben können Sie auch. Sie sind vielleicht verunsichert, was das wissenschaftliche Schreiben angeht und man kann viel zum Schreibstil sagen. Entscheidend scheint mir der Mindset zu sein, die gedankliche Ausrichtung – denn die meisten von Ihnen haben eine gute Ausdrucksweise. Sehen Sie am Ende eines wissenschaftlichen Prozesses ein Gefüge. Beschreiben Sie das Gefüge. Welche Verfahren, Methoden etc. sind zum Einsatz gekommen und welche Erfahrungen sind zu berichten. Das ist die geistige Sicht, aus der heraus ein wissenschaftlicher Text entsteht.
Diese Episode ist auch als Video verfügbar: https://youtu.be/sAjfNca8p_8

WAI: Soll ich meine Bachelorarbeit in einem Unternehmen machen?
Das ganze Studium an einer Hochschule für Angewandte Wissenschaften (HAW) ist auf Praxis- und Berufsorientierung ausgerichtet. Insofern ist nichts naheliegender als die Bachelorarbeit in einem Unternehmen zu machen. Zumal, wenn man davor die Praxisphase in einem Unternehmen gemacht hat. Dann ist man eingearbeitet, hat eine interessante Problemstellung und der Übergang ist fließend. Es können damit aber auch Schwierigkeiten einhergehen, derer man sich bewusst sein sollte. Zum Beispiel ist es problematisch, wenn ein Unternehmen nur an eine Entwicklungsarbeit denkt. Dann fehlt der Erkenntnisstrang, der eine wissenschaftliche Informatik-Arbeit auszeichnet.

OOP/Java: Enumerationen (Aufzählungen)
Enumerationstypen kann man gut gebrauchen, wenn es um eine feste Anzahl von Aufzählungswerten geht -- man nennt sie auch Enumerationskonstanten. Da Enumerationen vom Klassenkonstrukt abgeleitet sind, kann man mit ihnen sehr interessante Sachen machen. Man kann einen privaten Konstruktor, finale Variablen und weitere Methoden hinzufügen. Und was weitere Möglichkeiten eröffnet: Jeden Enumerationswert kann man mit einer anonymen Klassendeklaration versehen, der den Enumerationstyp erweitert. All das erläutere ich Ihnen an praktischen Beispielen.
Begleitmaterial zur Episode: https://drive.google.com/file/d/1mi4vG8x0BIniB0zkY6fzos7oaU3G-vPN/view?usp=sharing

OOP/Java: Geschachtelte Klassen
Es gibt in Java vier Varianten von sogenannten geschachtelten Klassen, also Klassen, die keine Top-Level-Klassen in einer Java-Datei sind. In einer Klassendeklaration kann als Member eine Klasse deklariert werden, entweder als static oder "normal" ohne static. Das sind die ersten beiden Varianten, die statisch geschachtelte Klasse und die innere Klasse. Die dritte Variante: Innerhalb eines Codeblocks kann eine Klasse deklariert als sogenannte lokale Klasse deklariert werden. Und zu guter Letzt: Die anonyme Klasse kann überall dort deklariert und gleichzeitig instanziiert werden, wo der new-Operator zum Einsatz kommen kann. Die anonyme Klasse implementiert entweder ein Interface oder sie erweitert eine Klasse.
Begleitmaterial zur Episode: https://drive.google.com/file/d/1-aLi6LDtsM8aYaY5tSV0Nxd-SJaBIXqu/view?usp=sharing

WAI: Wieviel Zeit hat mein Prof für die Betreuung meiner Bachelorarbeit?
Eine Bachelor- oder Masterarbeit braucht Begleitung durch eine hochschulseitige Betreuungsperson, meist eine Professorin oder ein Professor. Wieviel Zeit hat er oder sie für die Betreuung Ihrer Abschlussarbeit? Um es vorweg zu nehmen: Die Verordnungen wollen nicht, dass Ihre Betreuungsperson so viel Zeit für Sie hat, wie Sie sich das vielleicht wünschen. Wenn er oder sie Ihnen dennoch viel mit Rat und Tat zur Seite steht, verändert das die Erwartungshaltung an Sie.

WAI: Der Titel Ihrer Bachelorarbeit ist wichtiger als Sie denken
Der Titel Ihrer Bachelorarbeit ist wichtiger als Sie denken -- weil nur wenige Menschen Ihre Abschlussarbeit lesen, aber deutlich mehr Menschen sich für den Titel Ihrer Abschlussarbeit interessieren. Welche Menschen das sind, das verrät Ihnen diese Episode.

OOP/Java: Grundlagen zur generischen Programmierung
Programme, die generisch sind, sind für die Verwendung mit verschiedenen Typen konfiguriert. Ohne generische Typen würde das Programmieren in Java keinen Spaß machen -- man müsste entweder Code permanent doppeln, was fehleranfällig und wenig wartbar ist; oder man müsste z.B. Variablen oder Methoden auf den "höchsten" Typen (also Object) hin auslegen und viel casten, was ebenfalls fehlerträchtig ist. Bei generischer Programmierung darf man auf die Hilfe des Compiler setzen, muss sich dafür aber in die Feinheiten von Typhierarchien bei generischen Typen hineindenken. Doch soweit kommt es in dieser Episode nicht, ich versuche hier ein Grundverständnis zu wecken.
Begleitmaterial: https://docs.oracle.com/javase/tutorial/java/generics/

OOP/Java: Das Presentation Modell und das Beobachter-Muster
Wir verlassen heute die unmittelbare Codeebene und nehmen einmal eine Adler-Perspektive ein, eine sogenannte Entwurfssicht. Aus dieser Entwurfssicht organisieren wir die Aufteilung unseres Codes in Komponenten, ordnen den Komponenten Rollen zu und regeln die Art und Weise der Zusammenarbeit der Komponenten. Ich stelle das Presentation Model vor und erkläre ein sehr bekanntes und populäres Entwurfsmuster, das dabei im Hintergrund zur Anwendung kommt: das Beobachter-Muster.
Begleitmaterial zur Episode: https://drive.google.com/file/d/1Fjy7X8ElctG29H_iMEyFkzugskHe3B2f/view?usp=sharing

WAI: Stellen Sie die Abschlusspräsentation "auf den Kopf"
Der krönende Abschluss Ihres Studiums ist die Abschlusspräsentation Ihrer Arbeit im Kolloquium. Da geht es um eine verkürzte Darstellung Ihrer Bachelor- bzw. Masterarbeit. Aus vielen Jahren Erfahrung mein Tipp: Zäumen Sie das Pferd von hinten auf! Stellen Sie die Präsentation "auf den Kopf"! Springen Sie zu den Ergebnissen und Erkenntnissen, die Ihre Arbeit auszeichnen. Warum? Damit Ihnen die Zeit nicht wegläuft für die wichtigen und interessanten Fragen, die Ihre Betreuungspersonen stellen möchten. Das kommt Ihrer Note zugute!

OOP/Java: Nebenläufige Programmierung
Die Nebenläufigkeit ist der Normalzustand unserer Welt. Bei der Programmierung hingegen macht Sie uns Kopfschmerzen. Statt sich im Detail mit Threads in Java zu befassen, gibt diese Episode einen Überblick zu Begrifflichkeiten und Konzepten. Das Fazit: Wenn Sie Nebenläufigkeit benötigen, nutzen Sie eine Bibliothek oder ein Framework, das zu Ihrer Problemstellung passt. Wenn möglich, vermeiden Sie den direkten Umgang mit Threads. Es sei denn, Sie wollen Thread-Spezialist:in werden ;-)
Das Begleitmaterial zur Episode finden Sie unter https://drive.google.com/file/d/1whewUV1rVsFTGnrnhOHEyQtZ1QeR0-U2/view?usp=sharing

Im Gespräch: Hektor Haarkötter -- Über Notizzettel, das Denken und Schreiben
Notizzettel sind diese kleinen, überall präsenten und doch leicht zu übersehenden Schriftstücke, mit denen sich bislang niemand wissenschaftlich auseinandergesetzt hat. Nun hat Hektor Haarkötter ein überaus lesenswertes und erkenntnisreiches Werk vorgelegt: Notizzettel -- Denken und Schreiben im 21. Jahrhundert, jüngst erschienen im S. Fischer-Verlag in der Rubrik Wissenschaft. Es geht um das Notieren, den Notizzettel, das Sudel- und Notizbuch, das Denken und das Schreiben. "Wer den Menschen beim Notieren zusieht, der kann ihnen beim Denken zusehen." Das ist so überraschend wie einleuchtend zugleich, wenn Hektor Haarkötter davon erzählt, was Leonardo da Vinci oder auch Ludwig Wittgenstein so alles notiert haben. Und wie Arno Schmidt oder Niklas Luhmann ihre Notizen organisiert haben. Das sind alles Beispiele dafür, dass Notizen ein Medium des Denkens sind und nicht der Kommunikation dienen.
Hektor Haarkötter ist Professor für Kommunikationswissenschaft an der Hochschule Bonn-Rhein-Sieg. Er studierte u.a. Philosophie, Geschichte, Germanistik und Soziologie in Rom, Düsseldorf und Göttingen. Vor seiner Berufung war er als Journalist und Fernsehregisseur tätig.
Webseite Hektor Haarkötter: https://www.h-brs.de/de/sv/hektor-haarkoetter und http://www.haarkoetter.de/
Webseite zum Buch: https://www.fischerverlage.de/buch/hektor-haarkoetter-notizzettel-9783103973303

OOP/Java: Interface-Entwurf für Tic-Tac-Toe (eine Design-Studie)
Diese Episode ist eine Studie zur Gestaltung von Interfaces in Java -- als Beispiel dient das Spiel Tic-Tac-Toe. Was könnte so schwer daran sein, ein Programmier-Interface für Tic-Tac-Toe zu erstellen? Schwer ist es nicht, aber zu verstehen, was man da macht, welche Vorstellungsbilder mit einem Interface-Entwurf und einer Implementierung verbunden sind, das ist elementar, um die Praktische Informatik als Gestaltungswissenschaft zu verstehen. Denn das Schreiben von Code ist mehr als ein routiniertes Aneinanderreihen von Anweisungen und Ausdrücken.
Begleitmaterial zur Episode: https://drive.google.com/file/d/18S3IbKEDFJJKKv9V1RgFjNfjNCKB4-8t/view?usp=sharing
Wenn Sie mehr über die dahinterliegende Design-Theorie erfahren wollen: Sie finden hier in Herzbergs Hörsaal ein ausführliches Gespräch, das ich mit dem Design-Wissenschaftler und Philosophen Holger van den Boom geführt habe.

Das Gespräch: Holger van den Boom -- Design als Mittel der Erschließung von Welt
Design als Mittel der Erschließung von Welt. Das ist ein Design-Verständnis, das mein Gesprächsgast Prof. Dr. van den Boom über viele Jahre und Bücher hinweg entwickelt und das mein Interesse geweckt hat. Ehrlich gesagt hat es mich in seinen Bann gezogen.
Holger van den Boom ist emeritierter Professor für Industrial Design. Er hat von 1982 bis 2008 an der Hochschule für Bildende Künste in Braunschweig gelehrt und war dort Gründer und Leiter der Arbeitsstelle für Designinformatik. Er hat sein Berufsleben als Grafikdesigner begonnen und seine Studien in Philosophie, Mathematik, Theoretischer Physik, Linguistik und Psychologie führten ihn 1974 zur Promotion und 1982 zur Habilitation. Das verbindende Thema seiner Studienvielfalt ist die Semiotik, wie mir Herr van den Boom am Anfang des Gesprächs verrät.
Unser Gespräch greift das jüngst erschienene Buch von Holger van den Boom auf: “Einsteins Marmor: Eine Studie über Kosmologie und Design” (2021), Berlin: Logos. Ein Werk, das es mir wahrhaft angetan hat. Wir sprechen über Semiotik und darüber, was das Zeichen im Text zu leisten vermag und was in der Darstellung, im Bild anders ist. Es geht um das Trivium und das Quadrivium, konzeptuellen Überschuss, Operatoren, Invarianz, Referenzrahmen, um Mathematik und Naturwissenschaft … und es deutet sich eine Skizze eines Erkenntnisprogramms durch Design an. Gegen Ende versuche ich mich darin, sein Design-Verständnis auf die Informatik zu übertragen. Den Schluss bilden Gedanken zum Design-Begriff in den Bildungswissenschaften.
Einige der Werke von Holger van den Boom sind online verfügbar; das Stöbern und Lesen lohnt sich: https://www.uni-kassel.de/ub/index.php?id=39129&f_a=Boom%2C+Holger+van+den
Link zum Buch “Einsteins Marmor”: https://www.logos-verlag.de/cgi-bin/buch/isbn/5284
Homepage von Holger van den Boom: http://www.holgervandenboom.de/

OOP/Java: Funktionsobjekte und Lambda-Ausdrücke
Das zentrale Konstrukt funktionaler Programmiersprachen ist die Funktion. Wie Sie wissen, ist Java nicht funktions- sondern objektorientiert. Die Übernahme dieses Konstruktes hat konsequenterweise dazu geführt, dass man Funktionen in Java als Funktionsobjekte realisiert hat. Notiert werden sie durch sogenannte Lambda-Ausdrucke, was ebenfalls ein Begriff aus der Welt der funktionalen Programmiersprachen ist.
Begleitmaterial: https://drive.google.com/file/d/1i_ESgfff8VmCQk7kN8QFopR5Yqxi7fa_/view?usp=sharing

OOP/Java: Datenstrukturen und die Collection-Bibliothek
Die Collection-Bibliothek stellt Ihnen die wichtigsten Datenstrukturen bereit, die Sie im Programmieralltag mit Java benötigen. Diese Episode bietet Ihnen einen Einstieg in die Nutzung der Interfaces und Klassen dieser Bibliothek.
Foliensatz zur Episode: https://drive.google.com/file/d/1C8Jmp9Wkz84eBMYN23jWpDlbCUgutNfR/view?usp=sharing

OOP/Java: Wie man zwei Objekte vergleicht
Gleichheit und Identität sind wichtige, elementare Konzepte in der Informatik. Im Programmieralltag ist man immer wieder gefordert, die Gleichheit per equals()-Methode zu implementieren und die hashCode()-Methode umzusetzen. Und -- falls das Sinn macht -- sind auch Vergleiche der Ordnungsfolge ("Größenvergleich") mit der compareTo-Methode zu realisieren. Wie man die Methoden geschickt und sauber implementiert, das erklärt Ihnen diese Espisode.
Material zu dieser Episode: https://drive.google.com/file/d/1kYmFtx-mALCyR1FSVfQ6RgzbIrv4Sa-M/view?usp=sharing

OOP/Java: Die Klassenerweiterung
Ein wesentliches Merkmal der Objektorientierung ist die sogenannte Vererbung. Eine Bezeichnung, die etwas unglücklich gewählt ist, zumal Java selber das Schlüsselwort "extends" verwendet. Es ist verständlicher, von der Klassenerweiterung zu sprechen.
In dieser Episode bekommen Sie einen sehr technischen Einblick in die Klassenerweiterung, was Ihnen aber hilft, Java in seinem Objektmodell zu verstehen. Dafür muss man wissen, dass es zwei Kernklassen gibt, Object und Class, die man (streng genommen) immer mitdenken muss.
Der Foliensatz zur Episode: https://drive.google.com/file/d/1opUgTTgBygXcfnjEkHy--h6MvH9VbFYW/view?usp=sharing

WAI: Von der Gliederung zum fertigen Text der Bachelorarbeit
Schreiben ist Denken! Das ist fraglos richtig. Aber in der Informatik denken Sie auch durch das Entwerfen, Schreiben und Testen von Software, beim Konzeptionieren und Realisieren Ihrer Ideen. Darum sind Sie nicht allein auf das Schreiben als Denkwerkzeug angewiesen. Wenn Sie Ihre Gliederung erstellen, geht das nur, wenn Sie bereits einen Großteil der technisch, informatischen Denkarbeit geleistet haben. Um zum fertigen Text zu kommen, müssen Sie Ihr informatisch Gedachtes "nur" noch in die Textform bringen. Das geht mit dem hier vorgestellten Vorgehen sehr gut und effizient.
Link zum Foliensatz: https://drive.google.com/file/d/1klhYdtuGjNmRKGoKV3e6zPRiKR0bu7mb/view?usp=sharing
Episode auf YouTube: https://youtu.be/uTWRw4TY4ig

WAI: Wie erstelle ich eine Gliederung für meine Bachelorarbeit?
Bei der Gliederung für Ihre Bachelorarbeit sind ein paar handwerkliche Regeln des wissenschaftlichen Arbeitens zu berücksichtigen. Wenn es jedoch an die Überschriften geht, ist Storytelling angesagt. Denn es spricht nichts gegen Wissenschaft, die sich in den Überschriften erzählend darstellt. Wenn Ihnen das gelingt, dann bieten Sie Ihrer Leserin bzw. Ihrem Leser eine inhaltsreiche, auskunftgebende Übersicht zur Orientierung. Und Sie selbst haben mit der Gliederung eine klare Vorlage für Ihre Schreibstruktur. Mit einer guten Gliederung schreibt es sich leichter und schneller.
Foliensatz zur Episode: https://drive.google.com/file/d/1A5MkQoC_yzPFy97MsmtZxS-TSluW-gyJ/view?usp=sharing
Diese Podcast-Episode gibt es auch auf YouTube: https://youtu.be/Eq5fdSEgSvc

WAI: Wie finde ich ein gutes Thema für meine Bachelorarbeit?
Ein gut gewähltes Thema für Ihre Bachelorarbeit legt den Grundstein für Ihren Erfolg. Dafür hilft es zu verstehen, wie die Informatik als Technikwissenschaft funktioniert. Wenn Ihr Thema hinreichend offen und kompliziert ist, ist es anspruchsvoll. Jetzt gibt es zwei Fragen zu stellen: Was ist Ihr Entwicklungsziel, was ist Ihr Erkenntnisziel. Wenn Sie darauf gute Antworten finden, dann sind Sie in einer ausgezeichneten Startposition.
Viele Ratgeber und Bücher zum wissenschaftlichen Arbeiten helfen Ihnen nur begrenzt weiter, weil Sie auf das Spezifische der Informatik nicht eingehen. So helfen auch viele Checklisten nicht weiter.
Der Foliensatz zu dieser Episode: https://drive.google.com/file/d/1BffvWKUjtVXcFzjMt24G_Gz_KvoG4M7j/view?usp=sharing
Diese Episode finden Sie auch auf meinem YouTube-Kanal: https://youtu.be/CEJfGRxKt5Q
Ich erwähne in dieser Episode eine Podcast-Folge, die an einem konkreten Beispiel einer Bachelorarbeit ("Das digitale Klassenbuch") erklärt, wie sich Entwicklungsziel und Erkenntnisziel ergeben haben: https://anchor.fm/dominikusherzberg/episodes/WAI-Der-Fokus-Ihrer-Bachelorarbeit-Entwicklung-oder-Erkenntnis--Oder-beides-enaio5/a-a41668e

OOP/Java: Die Erzeugung von Objekten
Wie genau geht die Erzeugung eines Objekts vonstatten? Was passiert da? Ein Blick in den Java-Bytecode hilft um zu sehen, dass Java den Prozess aufteilt: Zuerst wird ein Objekt auf dem Heap angelegt, dann wird der Initialisierungcode im Grunde wie eine Methode aufgerufen.
Am Ende der Episode stelle ich kurz drei Konzepte vor: die Methoden-Überladung, die Klassenerweiterung und das Interface.
Der Foliensatz zur Episode: https://drive.google.com/file/d/1VFB5GlRMTeC851ZeVKfTxDWxq72QOafZ/view?usp=sharing
Das YouTube-Video: https://youtu.be/_TPcWEvCGQQ

OOP/Java: Objektorientierung — Ein Einstieg
Wir erstellen unsere ersten drei Klassen! Sie lernen dabei den Unterschied von Klassen- und Objektvariablen kennen und den von Klassen- und Objektmethoden. Dazu kommt noch der Konstruktor (auch eine Art Methode) und die Repräsentationsmethode toString. Damit haben Sie die wichtigsten Bausteine zum Aufbau von Klassen zur Hand.
Der Link zum Foliensatz: https://drive.google.com/file/d/1GPr4PZKWwKM9x-vyjtT4Mm3eqq_OzQyI/view?usp=sharing
Der Link zum Code: https://gist.github.com/denkspuren/3834dbd504c055bf811753da47c35d3e

WAI: Der Fokus Ihrer Bachelorarbeit: Entwicklung oder Erkenntnis? Oder beides?
Jede Bachelorarbeit in der Informatik ist als technikwissenschaftliche Arbeit an zwei Zielen ausrichtbar: einem Entwicklungsziel und einem Erkenntnisziel. Das Entwicklungsziel ist an der produktorientierten Praxis ausgerichtet, das Erkenntnisziel an einer Reflektion des technologischen Stands des Wissens. Man kann eine Bachelorarbeit einseitig ausrichten. Besonders vorsichtig muss man sein, wenn man sich der Praxis so sehr verschreibt, dass man den Anspruch der Anwendung wissenschaftlicher Methoden bei der Bearbeitung des Problems aus den Augen verliert.
In dieser Episode bespreche ich zuerst beispielhaft die Betreuung einer Bachelorarbeit. Wir arbeiten anschließend an einem Schaubild die beiden Pfade von Entwicklung und Erkenntnis heraus. Das zu verstehen hilft Ihnen, Ihrer Bachelorarbeit den Fokus zu geben, den sie ihr geben möchten.
Die Folien zur Episode gibt es unter: https://drive.google.com/file/d/1WEVnZSHjvGcB_MgilKqPW7sra32QbrWG/view?usp=sharing

OOP/Java: Wie lerne ich programmieren? Ein Zwischenstand
Der aktuelle Denk- und Ausdrucksraum, den Sie sich bislang erarbeitet haben, umfasst elementare Datentypen, Arrays, Variablen, Ausdrücke, Anweisungen und Methoden. Damit haben Sie bemerkenswert viele Möglichkeiten, Aufgaben in Lösungen zu übersetzen. Man muss lernen, wie das geht. Ich erläutere, wie man die Programmausführung nachzuvollziehen und wie man von Programmieraufgaben systematisch etwas lernen und für sich rausziehen kann.
Den Foliensatz zur Episode finden Sie unter https://drive.google.com/file/d/1NzB9BRtZp65cnz9W4YNl1rWGDk5jrjPd/view?usp=sharing
Die Java-Aufgaben: https://git.thm.de/dhzb87/JavaAufgaben

WAI: Von der Wissensstruktur der Informatik
In dieser Episode geht es um die Wissensstruktur der Informatik, was wir bis zu einem ersten schematischen Gliederungsentwurf für Ihre Bachelor-Thesis herunterbrechen.
Ich gehe hier nicht darauf ein, warum die Informatik ein so unklares Wissenschaftverständnis hat. Hier mag der Hinweis genügen, dass eine derart erfolgreiche Disziplin, wie die Informatik eine ist, den Luxus hat, ihr Wissenschaftsverständnis ungeklärt zu lassen. Befände sich die Informatik in einer Krise, wären hier sicher Fortschritte zu verzeichnen, weil eine solche Klärung identitätsstiftend wirken kann.
Ich leite aus den Technikwissenschaften die Wissensstruktur der Informatik ab. Den Anfang macht hierzu eine Gegenüberstellung von Naturwissenschaft und Technikwissenschaft, um das charakteristische der Technikwissenschaften herauszuarbeiten. Anschließend stelle ich Ihnen eine vollständige Kategorisierung der technikwissenschaftlichen Wissensstrukturen vor, die ich auf die Informatik übertrage. Daraus ergeben sich erste wertvolle Orientierungspunkte für einen Zugang, wo man sich thematisch mit einer Aufgabenstellung für die Bachelor-Thesis befindet. Am Ende steht der erste Entwurf eines Schemas für die Gliederung Ihrer Bachelorarbeit.
Foliensatz: https://drive.google.com/file/d/1UMKvXKFkmJp4_3qigTrWqhsRI8F4mOsE/view?usp=sharing

OOP/Java: Methoden und Arrays
Das Sprachkonstrukt der Methode ist als benamter und parametrisierter Anweisungsblock leicht verstanden. Anspruchsvoller ist es, sich die Ausführung einer Methode zu veranschaulichen. Ohne das Konzept der Frames und ihrer Verkettung bei Methodenaufrufen ist nicht wirklich verständlich, wie Methoden ausgeführt werden. Hat man das Grundprinzip verstanden, sind auch verschachelte oder rekursive Methoden systematisch erklärbar.
Arrays erlauben die Deklaration zusammengesetzter Datentypen, allerdings eines einheitlichen Typs. Damit lassen sich bereits spannende und interessante Programmieraufgaben angehen.
Die Folien zu dieser Episode finden Sie unter https://drive.google.com/file/d/1GnN__2uBFPiivmm54gmbpOLhswZ0APdD/view?usp=sharing