Von Nand zu Tetris (2017)
(nand2tetris.org)- Nand2Tetris stellt Lernmaterialien bereit, mit denen Lernende, die Computersysteme von Grund auf verstehen wollen, ein universelles Computersystem und moderne Software-Schichten selbst aufbauen können
- Vorlesungen, Projektmaterialien und Werkzeuge sind an einem Ort gebündelt; in nichtkommerziellen Umgebungen können sie kostenlos als Open Source genutzt werden
- Dieser Kurs wird an mehr als 400 Universitäten, Schulen und Bootcamps eingesetzt und von Oberschülern über Doktoranden bis hin zu Senior Engineers besucht
- Selbstlernende können den Vorlesungsnotizen auf der Website und dem Bereich Projects folgen; bei Coursera ist eine kostenpflichtige Teilnahme mit offiziellem Abschlusszertifikat möglich
- Die Struktur richtet sich sowohl an individuelles Lernen als auch an Lehrveranstaltungen in Bildungseinrichtungen; Lehrende können per separater Kontaktaufnahme zusätzliche Materialien erhalten
Lernmaterialien, um einen Computer von Grund auf zu bauen
- Die offizielle Website der Nand to Tetris courses bündelt Materialien, die nötig sind, um ein universelles Computersystem und moderne Software-Schichten von Anfang an aufzubauen
- Die Materialien bestehen aus Vorlesungen, Projektunterlagen und Werkzeugen und richten sich an Studierende, Lehrende und Selbstlernende
- Das zugehörige Buch ist The Elements of Computing Systems von Noam Nisan und Shimon Schocken
- Zugehörige CACM-Materialien zum Kurs sind als Text und Video verfügbar
Lernpfade und Einsatz in der Bildungspraxis
- Der Nand to Tetris-Kurs wird an mehr als 400 Universitäten, Schulen und Bootcamps unterrichtet
- Zu den Teilnehmenden gehören Oberschüler, Doktoranden und Senior Engineers
- Es gibt ein erweitertes Kursprogramm einer typischen akademischen Kursversion
- Das freie Selbststudium kann anhand der Vorlesungsnotizen auf der Website und des Bereichs Projects erfolgen
- Der Coursera-Kurs ist kostenpflichtig und bietet ein offizielles Abschlusszertifikat
- Zusätzliche Materialien für Lehrende können per Kontakt an nand2tetris@gmail.com angefordert werden
1 Kommentare
Meinungen auf Hacker News
Als ich es vor sieben Jahren nach dem Uni-Abschluss zum ersten Mal versucht habe, bin ich nur bis Kapitel 2 gekommen. Es war sehr lohnend, aber wegen anderer Nebenprojekte habe ich es liegen lassen.
Vor drei Monaten habe ich wieder angefangen und bin jetzt bei Kapitel 8: Logikgatter, ALU, CPU, Assembler und die Hälfte der virtuellen Maschine sind fertig. In jedem Kapitel denke ich erst: „Wie soll das bitte funktionieren?“, und wenn es dann tatsächlich läuft, ist das unglaublich befriedigend.
Als reines Lern-Nebenprojekt war es das lohnendste, das ich je gemacht habe, und ich bin ziemlich stolz darauf, dranzubleiben. Klare Empfehlung.
Letzten Herbst/Winter habe ich es parallel zu Ben Eaters hervorragender Serie gemacht, in der man auf einem Breadboard einen 8-Bit-Computer baut. Über mehrere Monate habe ich Teile aus China bestellt und den ganzen Winter über Subsysteme gebaut, sobald sie ankamen.
Das wäre als Nächstes sehr zu empfehlen; es ist ebenfalls sehr lohnend, und es ist einfach großartig, blinkende LEDs zu sehen und zu verstehen, was im Inneren passiert.
Zum Beispiel den tatsächlichen Mechanismus, mit dem integrierte Schaltungen Eingaben in nützliche Ausgaben umwandeln. Ich habe keine Quelle gefunden, die selbst bei den einfachsten realen integrierten Schaltungen wie dem TI SN7400 wirklich gut erklärt, wie sie funktionieren.
Ich mochte diesen Kurs sehr und empfehle ihn allen, die mit Computern arbeiten, aber keine Low-Level-Informatikkurse besucht haben.
Man bekommt ein intuitives Verständnis für die zentralen Teile davon, wie Computer funktionieren, die sich auf High-Level-Programme und Programmiersprachen auswirken. Meine persönlich größte Erkenntnis war, den Unterschied zwischen Stack und Heap wirklich zu verstehen.
Es fühlt sich außerdem fast magisch an, dass durch das immer weitere Aufschichten einfacher Schaltungen die komplexen Maschinen entstehen, die wir benutzen. Die Lehrenden schaffen es, Stoff, der mehrere Semester füllen könnte, nicht übermäßig zu vereinfachen und trotzdem schnell den Kern von Themen wie Assemblersprache zu vermitteln.
Wenn man Zeit hat, ist es wirklich empfehlenswert. Teil 1, vom NAND-Gatter bis zum Bau einer CPU, ist unterhaltsam und ziemlich leicht; Teil 2, vom Computer zu einem vollständigen Betriebssystem, ist deutlich mehr Arbeit.
Ich versuche einzuschätzen, ob man beides braucht oder ob eines davon reicht.
Ich kann diesen Kurs/dieses Buch sehr empfehlen.
Wenn man es bis zum Ende durchzieht, ist es extrem lohnend.
Nach Ben Eaters hervorragender 8-Bit-Computer-Serie (https://eater.net/8bit/) war der Übergang zu nand2tetris sehr natürlich.
Es hilft einem, grundlegende Konzepte des Computerdesigns wirklich zu verstehen, über die sonst oft nur hinweggegangen wird, und ist ein perfektes Projekt für die Feiertage.
Ich mag seine Videos, besonders die Folgen zur Einführung von Schleifen und Interrupts.
Es war sehr befriedigend zu sehen, wie der von ihm geschriebene Code durch diese Konzepte viel eleganter neu geschrieben wurde.
Jetzt sollte ich mir wohl auch NAND to Tetris ansehen.
Beides passte gut zusammen.
Es gibt ein unterhaltsames NAND-Spiel, das von diesem Kurs inspiriert ist: https://nandgame.com/
Beide funktionieren so, dass man in einer assemblyähnlichen Sprache schreibt, und das Lernen macht großen Spaß.
Wenn man Computer auf einer niedrigeren Ebene verstehen möchte, empfehle ich auch die Vorlesung Digital Design and Computer Architecture der ETH Zürich.
https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-EImKxYYY1...
Ich habe einen Einführungskurs in Rechnerarchitektur besucht, aber leider kamen wir nicht sehr weit; die Magie moderner CPUs, etwa Out-of-Order Execution, wurde überhaupt nicht behandelt.
Diese Playlist wird wohl mein Thema für die Feiertage.
Ich habe gute Erinnerungen an dieses Buch und an die Zeit, in der ich es in die Hand genommen habe.
Ich saß mit meiner Freundin beim Kaffee und erzählte ihr, ich hätte gelesen, dass man alle Logikgatter nur aus NAND bauen kann. Das machte uns neugierig, und wir kritzelten NAND auf mehrere Servietten, um zu prüfen, ob wir wirklich alle daraus konstruieren konnten.
Am Ende haben wir es geschafft, und es hat richtig Spaß gemacht.
Jedes Mal, wenn wir ein neues Gatter aus NAND gebaut hatten, schrieben wir den Namen des neuen Gatters auf die Serviette. Diese Servietten und die Begeisterung nahm ich mit nach Hause, und ein paar Tage später versuchte ich, diese Gatter so zu kombinieren, dass ich schließlich eine ganze ALU herausbekomme.
Dabei tauchten Multiplexer und allerlei interessante Dinge auf. Irgendwann kam ich nicht weiter, aber da ich von diesem Buch gehört hatte, beschloss ich, es zu bestellen.
Die späteren Kapitel haben mir wirklich geholfen, die Low-Level-Ebene zu verstehen, die für jemanden mit nur Software-Erfahrung immer etwas Geheimnisvolles hatte.
Allerdings habe ich es nie wirklich bis zum Ende gebaut.
Als es in Richtung Low-Level-Software ging, hatte ich bereits das Gefühl, genug verstanden zu haben, und die eigentliche Arbeit reizte mich weniger; schon das Lesen allein war aber hervorragend.
Es gibt auch dieses Repository von george hotz, das ziemlich interessant ist.
https://github.com/geohot/fromthetransistor
Es gibt kein Material, nur eine grobe Gliederung für einen hypothetischen Kurs; wenn man sich die frühen Commits ansieht, wird es etwas klarer.
„Vor ein paar Jahren geschrieben und ich wollte es online stellen. Recruiting ist schwierig, ein großer Teil moderner Informatikausbildung ist wirklich ziemlich schlecht, und es ist viel zu schwer, Leute zu finden, die den modernen Computer-Stack von First Principles aus verstehen. Vielleicht biete ich das irgendwann, wenn ich wieder 12 Wochen frei habe, als Kurs zum Mitmachen zu Hause an. Ich will auch mitspielen.“
Ich habe im Bachelor nicht CS, sondern Computer Engineering studiert, und etwa 80 % der Themen auf dieser Liste wurden behandelt.
Ich hatte mehrere Kurse zu Verilog und Betriebssystemen und auch viel mit Mikrocontrollern/FPGAs zu tun.
Das klare Highlight war, in Verilog eine CPU zu bauen und anschließend einen Assembler/Compiler zu schreiben.
Es war ein anspruchsvoller Studiengang, aber beim Abschluss hatte ich das Gefühl, den gesamten Stack ziemlich gut zu verstehen.
Vielleicht kennt er sich mit Computer Engineering einfach nicht so gut aus.
Ich frage mich, ob auch der Vorgänger „sand2nand“ als DIY-Projekt machbar wäre.
Ich habe diesen Kurs eher nebenbei belegt, als ich als Datenanalyst gearbeitet habe, und er wurde zum Auslöser für meinen Karrierewechsel.
Es ist ein wirklich hervorragender Kurs; wenn man Zeit hat, sollte man ihn unbedingt machen.
Ich frage mich, ob du in Richtung Low-Level-Programmierung gewechselt bist.