- Die Vorlesung "Mathematics for Computer Science" von MIT OpenCourseWare vermittelt die mathematischen Grundlagen, die für Informatik und Software Engineering unverzichtbar sind
- Behandelt werden unter anderem Kombinatorik, Graphentheorie und diskrete Mathematik, mit Schwerpunkt auf der Stärkung von Problemlösungskompetenzen in der Informatik
- Die Kursmaterialien umfassen Vorlesungsnotizen, Übungsaufgaben und Lösungen, was das praktische Lernen erheblich unterstützt
- Der Kurs ist sowohl in der Praxis als auch in der Forschung anwendbar, etwa bei Algorithmenentwurf, Berechnungstheorie und Fehlerverifikation
- Kostenlos öffentlich zugänglich und auf dem Standardcurriculum des MIT basierend
Kursüberblick
- "Mathematics for Computer Science" von MIT OpenCourseWare ist ein zentraler Mathematikkurs für Studierende der Informatik und Elektrotechnik
- Zu den Hauptthemen gehören Kombinatorik, Graphentheorie, diskrete Strukturen und Wahrscheinlichkeit; der Kurs liefert die Grundlage für die logische Begründung von Programmen und die Analyse von Algorithmen
Zentrale Lernbereiche
- Diskrete Mathematik: Hebt grundlegende mathematische Strukturen von Programmen hervor, darunter Zahlen, Funktionen, Mengen und Logik
- Kombinatorik und Wahrscheinlichkeit: Hilft dabei, Effizienz, Zufälligkeit und Datenverteilungen von Algorithmen zu verstehen
- Graphentheorie: Spielt eine wichtige Rolle bei Datenstrukturen und Netzwerkmodellierung sowie bei Wegsuche und Optimierungsproblemen
- Beweis der Korrektheit von Algorithmen: Gewährleistet die Zuverlässigkeit von Programmen durch logisches Schließen und mathematische Induktion
Lernmaterialien
- Vorlesungsnotizen: Systematisch aufgebaut mit Schwerpunkt auf Theorieerklärungen und Beispielen
- Übungsaufgaben: Enthalten Aufgaben mit unterschiedlichen Schwierigkeitsgraden, damit sich die Anwendung der Konzepte in jedem Abschnitt vertiefen lässt
- Lösungen: Bieten Erläuterungen, damit Ergebnisse nach eigenständiger Bearbeitung überprüft werden können
Anwendung und Nutzen
- Schafft eine grundlegende Basis für die Bereiche Informatik, Systemdesign, Künstliche Intelligenz und Software Engineering
- Durch den kostenlosen Zugang eröffnet der Kurs angehenden Entwicklerinnen und Entwicklern, Praktikerinnen und Praktikern sowie Forschenden breite Lernmöglichkeiten
- Nach dem Standardcurriculum des MIT aufgebaut und bietet dadurch eine Lernerfahrung auf globalem Niveau
Zusätzliche Hinweise
- Bei der Nutzung externer Websites können deren Nutzungsbedingungen und Lizenzen von denen von MIT OCW abweichen
- MIT OCW übernimmt keine Verantwortung für Inhalte auf externen Websites
1 Kommentare
Hacker-News-Kommentare
Es ist wirklich erstaunlich, dass Vorlesungen von Universitäten auf Weltklasseniveau, insbesondere ein 31-stündiger, tiefgehender Mathematikkurs, für alle kostenlos verfügbar sind. Aber bei langen Vorlesungsreihen war es für mich immer schwer, bis zum Ende dranzubleiben. Ich suche dann oft nach kurzen Videos, die nur die Konzepte schnell erklären, aber dann fehlt es an Tiefe, und am Ende gebe ich oft unterwegs auf. Die Motivation, die mit einer tatsächlichen Einschreibung an einer Universität einhergeht, scheint wichtig zu sein. Mich würde interessieren, ob jemand solche Vorlesungen allein komplett durchgezogen hat und wie man dabei Beständigkeit und Selbstdisziplin aufrechterhält. Bei Lernplattformen wie Coursera oder KhanAcademy gibt es durch Deadlines immerhin ein gewisses Maß an äußerem Druck, was motivierender wirkt. Offenbar bin ich an ein deadlineorientiertes Lernen gewöhnt. Falls hier jemand wegen mangelnder Konzentration nach kürzeren Vorlesungen sucht – auch wenn sie vielleicht weniger tief gehen –, kann ich die YouTube-Playlist von Professor Dave Explains empfehlen.
Ich mag Mathematik, habe sogar bis zur Promotion durchgehalten und bin eigentlich recht gut in Selbstorganisation, aber anfangs war es trotzdem nicht leicht, nur mit Videovorlesungen zu lernen. Ich hatte das Gefühl, dass man erst eine gewisse Schwelle an Grundwissen erreichen muss, bevor selbstgesteuertes Lernen mit Videokursen wirklich funktioniert. Wichtige Faktoren sind aus meiner Sicht, mit Mitlernenden gemeinsam an einem Programm teilzunehmen, und vor allem die Unterstützung durch erfahrene Mentoren. Ohne Mentor ist es schwer, in Mathematik bis zu einem Niveau des Selbststudiums zu kommen. Man braucht unbedingt jemanden, der Fehler korrigiert und Orientierung gibt. Das ist ein bisschen wie ein Klavierlehrer. Ein weiterer wichtiger Punkt ist der Zeiteinsatz. Wenn man lineare Algebra, Analysis oder Infinitesimalrechnung wirklich flüssig beherrschen will, muss man ein Jahr lang mehr als 10 Stunden pro Woche investieren. Mit nur 2 Stunden bleibt am Ende nur ein oberflächliches Verständnis.
Zur Frage, ob die Motivation tatsächlich aus der formalen Einschreibung an einer Universität kommt: In den meisten Fällen ist der treibende Faktor wohl die Lohnprämie, die ein Abschluss später bringt. Anders als echte MIT-Studierende kommt man mit einer reinen Online-Vorlesung einem MIT-Abschluss nicht näher, daher ist die Motivation schwächer. Wenn man an deadlineorientiertes Lernen gewöhnt ist, kann es helfen, sich selbst Strafen aufzuerlegen oder jemandem ein Versprechen zu geben, sodass man zahlen muss, wenn man nicht bis zum Ende durchhält. Ich habe tatsächlich schon Vorlesungen oder Bücher aus eigener Kraft komplett abgeschlossen; meine Motivation dabei war reine Neugier und auch, dass ich es nicht mag, etwas nicht zu wissen oder so zu tun, als wüsste ich es.
Die Zeit an der Universität, in der ich mit Professoren und Kommilitonen fortgeschrittene CS-Kurse belegt habe, war eine der schönsten Phasen meines Lebens. Nach dem Abschluss wird man von der Arbeit aufgesogen, und jetzt, wo es keine benoteten Aufgaben, Prüfungen oder Fragerunden mit Professoren mehr gibt, ist es viel schwerer, sich neues Wissen anzueignen. Ich überlege, mich aus Spaß an einer Online-Universität einzuschreiben, und frage mich, ob es ein Programm gibt, das online und günstig ist, fortgeschrittene Kurse in CS/ML anbietet und gleichzeitig echte Interaktion mit Professoren ermöglicht. Für Vorschläge wäre ich dankbar.
Diese Vorlesung war für mein aktuelles Projekt (ein G-code-Previewer- und 3D-Modellierungssystem für OpenPythonSCAD) eine enorme Hilfe. Zusätzlich empfehlenswerte Materialien sind SICP (Structure and Interpretation of Computer Programs), Euclid's Elements online, Motion Mountain sowie LibriVox und Project Gutenberg. Ich erinnere mich auch daran, wie ich als Kind über ganz unterschiedliche Wege an Bücher gekommen bin – über ein kleines Regal auf dem Land, einen Bücherturm im Gefängnis oder ein Kaufhaus in der nächsten Stadt, 26 Meilen entfernt.
Beim Durcharbeiten der Vorlesungen fiel es mir schwer, jeweils eine ganze Einheit am Stück abzuschließen, weil mir mathematisches Training und Übung fehlten. Ich habe dann auf anderen Seiten nach ergänzenden Erklärungen gesucht und eine einzelne Vorlesung über mehrere Tage oder sogar Wochen verteilt. Wichtig ist, die Erwartungen richtig zu justieren. Man muss an Punkten, an denen man feststeckt, in Ruhe nachdenken oder sich Zeit geben, bis sich ein natürliches Gefühl der Vertrautheit einstellt. Ich habe mir in einer einfachen Notizdatei oder auf Papier kurz notiert, was ich verstanden habe und was noch unklar ist, und wenn man das über Monate hinweg kontinuierlich macht, sieht man irgendwann den Weg.
Die Liste der Vorlesungsthemen findet sich auf der MIT-OCW-Seite, die Vorlesungsnotizen gibt es hier. Mit dem Kurs insgesamt bin ich nicht besonders vertraut, aber die letzte Vorlesung, „Large Deviations“, hat etwas Ungewöhnliches. Persönlich mochte ich die Vorlesung zu „State machines“, weil sie statt Boolescher Variablen zugänglichere Beispiele wie das 15-Puzzle nutzt und das Konzept der Invarianten einführt. Das Lehrbuch (PDF) ist hier zu finden. Auch die eigentlichen Aufgaben sind ziemlich praxisnah. Zum Beispiel geht es statt trockener Boolescher Algebra darum, die Bedingungen zu formalisieren, unter denen ein Dateisystem gesperrt wird.
Die Vorlesung „Large Deviations“ ist ein interessantes Thema, aber in den Vorlesungsnotizen wird gar nicht wirklich definiert, was große Abweichungen eigentlich sind. Es gibt ein Beispiel für eine Chernoff- (exponentielle) Schranke für die Summe IID-zufälliger Variablen, aber der Begriff große Abweichungen selbst wird nicht direkt verwendet, was ich etwas schade finde. Solche Schranken tauchen in der Informatik, besonders in der neueren Lerntheorie, häufig auf.
Die einzelnen Einheiten wirken voneinander unabhängig. Ich frage mich also, ob man sie in beliebiger Reihenfolge durcharbeiten kann. Mengenlehre und Ähnliches sind ja mathematische Grundlagen, deshalb frage ich sicherheitshalber nach.
Mich würde interessieren, ob jemand mithilfe von OpenCourseWare einen Karrierewechsel geschafft hat. Die MOOC-Ära war in der Praxis – anders als die Werbung versprach – meiner Meinung nach eher für bereits gut ausgebildete, intrinsisch motivierte Lernende oder für Hobbyisten geeignet. Das ist nicht als Kritik gemeint; ich selbst versuche neben Job und Haushalt immer wieder Quantencomputing zu lernen, aber in diesem Tempo bin ich wohl erst in ein paar Jahrzehnten auf dem aktuellen Stand.
Mit Kurstiteln wie „Mathematics for Computer Science“ tue ich mich ein wenig schwer. Ich habe Informatik immer als einen Teilbereich der Mathematik betrachtet.
Theoretisch stimme ich zu, aber in der Praxis der Industrie werden nicht annähernd so viele Softwareingenieure mit Mathematikhintergrund gebraucht, und kaum jemand steigt wegen eines mathematischen Interesses in CS ein. Deshalb ist auch der CS-Lehrplan eher pragmatisch. Im Mittelpunkt stehen wichtige Algorithmen, Datenstrukturen, Python-Coding und ähnliche Dinge, die man braucht, um bei Big Tech unterzukommen.
Es wäre auch nicht seltsam, wenn es in jedem Teilgebiet der Mathematik Vorlesungen mit dem Namen „Mathematics for [Teilgebiet]“ gäbe. Ich habe zwar selbst noch keinen Kurs benannt, aber inhaltlich ähnelt das einfach anderen „Intro to“-Veranstaltungen.
Ich habe vor, diesen Kurs in Lean zu formalisieren. Wie schwierig das wird, ist noch unklar, aber wer Interesse hat, kann gern im GitHub-Repository mitmachen.
Das passt auch sehr gut zu den Zielen der CSLib initiative. Im Moment habe ich dazu nur diesen LinkedIn-Post als Link.
Mich würde interessieren, was man aus dieser Arbeit konkret gewinnt.
Ich wünschte, es gäbe auch ein Lösungsheft mit Erklärungen. Ich frage mich, wie ich sonst überprüfen soll, ob meine Antworten stimmen.
Die Vorlesungsvideos gibt es auf MIT OCW und in der YouTube-Playlist.
Ich frage mich, wo man Erklärungen oder Lösungen zu den Aufgaben dieses Kurses finden kann.
Die Vorlesungsthemen sind zwar interessant, aber ich habe den Eindruck, dass davon für gewöhnliche Softwareingenieure nicht besonders viel wirklich notwendig ist. Als ich mit dem Programmieren anfing, war ich überrascht, wie wenig mathemischer Inhalt im Arbeitsalltag tatsächlich vorkommt. Natürlich richten sich solche MIT-Kurse eher an Computerwissenschaftler als an Softwareingenieure. An US-Universitäten wird diese Unterscheidung recht deutlich gemacht.
Wenn man auch nur ein bisschen mit Physik oder Robotik zu tun hat, gilt das so nicht. Ohne Mathematik versteht man dann praktisch gar nichts mehr.
Ich habe als Softwareingenieur sowohl mit als auch ohne mathematisches Wissen gearbeitet, und mein Beitrag sowie meine Wirksamkeit waren in diesen beiden Fällen völlig unterschiedlich.
Das erste Thema lautet „Predicates, Sets, and Proofs“, und auch ich benutze in der alltäglichen Programmierung häufig Prädikate und Mengen.
Nur weil ich etwas nicht benutze, heißt das nicht, dass andere es auch nicht benutzen. Software Engineering ist ohne Computer Science nicht denkbar.
Auch wenn man nicht jedes Thema in der Tiefe beherrschen muss, halte ich ein konzeptionelles Verständnis für unerlässlich, um korrekte Programme zu schreiben, die Spezifikationen entsprechen. Menschen können algorithmische Probleme instinktiv ad hoc lösen, aber Mathematik verleiht dem Denken Struktur und Strenge und macht es möglich, Probleme zu systematisieren und den Lösungsprozess zu mechanisieren. Schon mit Mengenlehre, Logik und relationaler Algebra versteht man die Verbindung zwischen Programmierung und Mathematik viel besser. Empfehlenswerte Bücher sind Introductory Logic and Sets for Computer Scientists von Nimal Nissanke und Understanding Formal Methods von Jean-Francois Monin.
Moment mal ... CS ist doch ursprünglich ein Mathematikabschluss. Dieser Titel wirkt auf mich wie Mathematik für Mathematik.