CS 210 – Algorithms and Data Structures (Summer 2026) · unit page · YouTube
2026-04-20, 11:33

Click any sentence to play from there.

The transcript was generated automatically by YouTube's speech recognition and is offered as is. It may contain errors, in particular in concerning technical terms, names and formulas.

0:02 In diesem ersten Abschnitt möchte ich ein bisschen motivieren, warum wir dieses Modul als Pflichtmodul für die meisten ihrer Spielengänge vorgesehen haben. Äh für diejenigen, die das nicht als Pflichtmodul haben, die dürfen sich es einfach als äh Motivationsverstärkung anhören. Und insbesondere kommen ein paar etwas theoretischere Grundlagen nach diesem Modul, durch die ich sie mit Motivation durchbringen will, bevor wir dann an die echten Algorithmen und Datenstrukturen voll können. Äh deswegen wie gesagt ein kleines bisschen vorab ein paar ähm Kommentare sozusagen auch aus der weiteren Sicht. Ähm die Frage, die wir also beantworten wollen, ist wozu machen wir dieses Modul? Und sie könnten sicher erstmal die Frage stellen, brauchen wir das? Die erste Frage wäre, kann es denn nicht jetzt die KI machen? hatte ich ja schon letztes Mal viel dazu gesagt im Kontext der Übungsaufgaben und des Tutoriums. Ich möchte aber noch ein bisschen ausholen, denn die Frage ist ja auch relevant für das, was sie vielleicht später beruflich machen oder warum sie überhaupt studieren oder wie Programmieren aussieht in ein, zwei Jahren und die die Antwort muss natürlich sein irgendwie nur so ein bisschen und teilweise und äh wer wer mit äh KI Tools zum Programmieren rumgespielt hat, wird merken, die können viel und dann stolpern sie über Dinge, wo man sich dann hinterher an die Stirn fasst. Äh was definitiv äh hilft ist, wenn man die Anweisung präzise geben kann.

1:39 Und ein Punkt, der in diesem Modul auch eine große Rolle spielt, ist die passenden Abstraktionen und Begriffe zu kennen und auch zu verstehen, was da alles an Kontext mitschwingt, um die SOS verwenden zu können, wie das eben Experten tun, auf deren Code die ganzen KI Tools ja trainiert wurden. Also selbst wenn Sie der Meinung sind, Sie brauchen den Code nie selbst von Hand schreiben, ist wahrscheinlich die Abstraktion, die der die Rest der Rest der Welt der Informatiker sich äh und Informatikerinnen sich über die letzten Jahrzehnte so angeeignet hat zu kennen, hilfreich, um der KI zu vermitteln, was sie denn wollen. Ähm man kann das auch versuchen ganz schwammig mit einfach natürlich sprachlichem Text zu tun, aber das funktioniert in der Regel schlechter.

2:30 Sie wollen also wissen, wovon sie reden und das hat noch einen zweiten Aspekt. KI ist eben danach, wie sie wie sie gebaut ist und wie sie funktioniert, im Wesentlichen etwas, das die wahrscheinlichste Lösung generiert. Und wahrscheinlich heißt war in den Trainingsdaten stark vertreten.

2:50 Und das heißt, wenn man sich anschaut, auf welcher Skala das trainiert wird und was im Netz so steht, nicht unbedingt immer, dass die richtige Lösung da rauskommt oder die schnellste und effizienteste. Äh, auch das bitte immer bedenken und wenn Sie wirklich wissen wollen, ob die Lösung, die die KI generiert hat, was taugt, dann sollten Sie eben ein Verständnis dafür haben. Hatten wir letztes Mal auch schon drüber gesprochen. Ähm hier noch mal konkreter. angenommen, sie programmieren was in irgendeinem professionellen Kontext und es stellt sich raus, das ist nicht effizient genug. Es ist immer zu langsam oder es braucht zu viel Platz oder verbraucht zu viel Tokens oder verbraucht zu viel äh Cloud Compute. Was machen Sie dann? Ähm, damit es nicht nur meine aus dem aus dem Elfenbeinturm gerufenen Worte sind, ein paar Kommentare, die ich so gesammelt habe im Netz. Das erste ist äh ein Blogpost von äh von Stack Overflow von den die haben so ein paar äh Autoren, die für sie immer wieder ähm aktuelle Dinge zusammenschreiben, haben auch Podcasts und so weiter. Und da gab's einen über die Frage, warum eigentlich viele Softwareentwickler, die aktuell im im Beruf sind, zwar immer mehr KI Tools verwenden, ihnen aber gleichzeitig weniger vertrauen als vor einem Jahr.

4:16 und was man auch vielleicht dagegen tun müsste, um diese diese Lücke zu schließen. Und sie schrieb hier: "Mas the fundamentals first. This is critical because you can't evaluate code quality without understanding what good architecture looks like." Also hier geht's insbesondere nicht um die einzelnen Codeilen, da ist oft die KI gut genug, um die sinnvoll zusammenzureihen, sondern um die die größere Struktur von dem ganzen Softwaresystem. Das ist nicht so klar, ob das automatisiert genauso gut funktioniert. You can't write effective tests without knowing what can break. You can't catch hallucinations without domain expertise. It's important for experience developers to keep these stills from a trophiing. Man verliert das nämlich, wenn man sie nicht übt regelmäßig. Use it or lose it gilt auch für geistige Fähigkeiten scheinbar. And tune your developers to build them in the first place. Da sie vermutlich in die Kategorie irgendwann fallen wollen oder viele von ihnen und der Jobmarkt da tatsächlich ein bisschen schwieriger geworden ist, wird es Ihnen helfen, das möglichst früh zu üben und auch im Hobbyumfeld zu üben.

5:30 Ein zweites Zitat dazu ist von Chris Latner, den Sie vielleicht kennen als als Gründer von den LVM Compiler Tools, also Clang, diese es gibt im Prinzip zwei große Open Source C Compiler. Das eine ist der GNU Compiler. New Compiler Collection, Dinosaurier unter diesen Dingern äh von Richard Storm irgendwann in den Okay, weiß ich nicht auswendig wirklich, aber ich nehme an Anfang 80er Jahre äh gestartet. Und dann eben dieses ähm dieses neuere Projekt LLVM, was Compiler für alle möglichen Sprachen hat, äh was Chris Latner gestartet hat vor 20 Jahren vielleicht. Äh und er hat in einem längeren Interview viel zu KI gesagt und seinem seinen Sorgen, was das vielleicht auch mit den Skills der Programmierer tut. Ähm vielleicht lese ich hier nur ein paar Teile vor. Ähm einerseits what you want to get to particularly as your career wolves is mastery. That's how you escape the thing that everyone can do and get more differentiation.

6:43 Und insbesondere sagt er, es gibt viele gute Dinge, die KI tut. Getting us out of writing boiler plate code, getting us out of memorizing API, getting us out of looking up that thing from stack overflow. I think this is really profound. This is good use. The thing that I get concerned about is if you go so far as to not care about what looking up on stack overflow and why it works that way and not learning from it. Das ist ein Punkt, der hat ich letztes Mal auch schon bisschen gesagt und dann höre ich jetzt auch auf. Ähm, dieser Punkt, Sie können, wann immer Sie in ein technisches Problem geraten und nicht wissen, wie es weitergeht, können Sie die Lösung suchen und übernehmen und beim nächsten Mal die gleiche Lösung wiedersuchen und übernehmen. Oder sie können jedes Mal ein bisschen von den Konzepten lernen, die dahinter stecken, um diesen Anteil der Probleme, für denen sie Lösung suchen müssen, über die Zeit zu verringern. Und das letztere ist über Jahre und Jahrzehnte der Weg zu Mastery, zu einem Punkt, wo sie wirklich ein Experte sind, den man auch nicht so leicht ersetzen kann. Das andere ist was jeder kann und äh vielleicht wollen sie wollen sie sich da besser differenzieren.

7:56 Andere ketzerische Frage ist, wozu schauen wir uns diese Algorithmen, insbesondere mit ähm den Korrektheitsbeweisen, die wir so ein bisschen machen werden, überhaupt an, wenn man doch mit Unit Tests eigentlich ganz gut zande kommt? Und einerseits ähm ist das nicht genug, weil für manche Software schon vorgeschrieben ist, dass man sie formalerprüfen muss. Das ist vielleicht kein ist ein bisschen eine Nische an Nischenanwendung wird nicht für jeden relevant sein. Äh, der zweite Punkt ist ein bisschen kritischer. Mit Unit Tests können Sie lokal die Korrektheit von Code überprüfen. Und äh selbst das ist natürlich ähm unvollständig. Sie können einzelne Fälle abprüfen, aber man kann nie beweisen, dass alle Fälle abgedeckt sind. Selbst zu Sachen wie Code Coverage, ja, das ist äh ist ein oberflächliches Maß, nur weil sie jede Stelle mal ausgeführt haben, heißt es nicht, dass die richtig ist. Lassen Sie sich dann nicht täuschen. Äh, was man aber vor allem gar nicht testen kann, ist algorithmische Effizienz.

8:54 Insbesondere sollen Unit Tests ja schnell sein. Das ist was, was Sie jedes Mal ausführen wollen. Vielleicht bei jedem Push in Repository soll das schnell mal ein Regression Test ausführen, äh um zu prüfen, ob irgendwas, was sie jetzt geändert haben, einen alte Funktionalität zerstört hat. Dafür sind die gut. Um Effizienz zu testen, wollen sie eine größeren Workflow durchlaufen, durchjagen durch das System. Das ist zu langsam. Das passt gar nicht zu dem zu dem Unitest Framework. Das heißt, auch da vollfänglich testen geht einfach nicht.

9:26 Was die Korrektheit angeht, hatte ich eben schon ein bisschen gesagt, der Unterschied zwischen 99% richtig und komplett hundertprozentig bewiesen und keine Lücken mehr, der ist eben doch deutlich mehr als dieses 1% und da wird testen nie hinkommen. Kannst aus theoretischer Sicht schon nicht. äh und auch KI Tools nach der aktuellen Bauart, wenn die nicht irgendeine Art von normalem Beweisssystem eingebaut bekommen, werden da nicht hinkommen. Einfach nicht möglich.

9:59 Das ist insbesondere deshalb in der Informatik relevant, weil die eigentlich einzige effektive Waffe, die wir haben, um diese hochgradig komplizierten Systeme zu bauen, in denen Software dann äh ähm eingesetzt wird, ist Abstraktion und zwar hierarchisch über verschiedene Schichten. Wir bauen ein Teil und dann benutzen wir den als abgekapselt und ignorieren, wie die internen aussehen und nehmen an, wir können den einfach verwenden. Das funktioniert aber nur dann, wenn diese Abstraktionen auch hundertprozentig so sind, wie wir denken und nicht nur 99. Insbesondere nach ein paar Schichten. Also, denken Sie nur an, was haben wir? Wir haben irgendwo Hardware, wir hören dann immer, wir machen ja keine Elektrotechnik als Informatiker, wenn wir nicht müssen. Wir hören dann irgendwo auf den logischen Gattern auf, dann bauen wir daraus Prozessoren. Aus den Prozessoren größere Computer, dann gibt's dann Betriebssystem, was noch mal viel abstrahiert. Dann gibt's virtuellen Speicher, dann gibt's Cashes, äh dann gibt's Micro Operations, dann gibt's den Assembler Code. Dann schreiben wir nicht Assembler Code, sondern vielleicht Java.

11:07 Java läuft auf der Virtual Machine, die auch noch mal eine Schicht dazwischen ist und über all dem kommen dann vielleicht noch Netzwerkprotokolle und die nächste Schicht KI oben drüber. Wenn Sie auf diesen unteren Leveln nicht irgendwie zu hundertprozentigem Verständnis kommen können, dass man das ignorieren kann, wie es innen aussieht, dann funktioniert das nicht. Das braucht einfach diese etwas pedantischere Korrektheit.

← Video 0: Welcome, Administrative part, overview, assessment, AI use, Campuswire, Slido, exam question galleryVideo 1-2: Skalierbarkeit →