====== Proseminar From NAND to Tetris ====== ===== Aktuelles ===== ^ Datum ^ Inhalt ^ | 2.10.19|Hinweis auf LaTeX-Kurs, MOOC, Infos zu Vortrag und Ausarbeitung, Namen der Vortragenden ergänzt | ===== Informationen zur Veranstaltung ===== === Inhalte === Betrachten Sie den folgenden Code und überlegen Sie, **was** passiert, wenn er ausgeführt wird: public class Printer { private String text; public Printer(String text) { this.text=text; } public void print() { System.out.println(text); } public static void main(String[] args) { Printer printer=new Printer("Hello World"); printer.print(); } } Wenn Sie dies ohne größere Schwierigkeiten geschafft haben, überlegen sie nun, **wie** der Computer den Code ausführt. Was passiert in den Logikgattern, aus denen der Rechner aufgebaut ist? Und was geschieht mit dem Code auf dem Weg dort hin? Während in den frühen Tagen der Informatik jeder Programmierer eine Vorstellung davon hatte, wie ein Computer funktioniert, sind die Systeme heutzutage so komplex geworden, dass kaum eine einzelne Person sie vollständig durchblicken kann. Die in einem Rechner ablaufenden Prozesse sind hinter Schichten über Schichten an Abstraktionsebenen verborgen. Dies sorgt auch bei Fachleuten dafür, dass sich tragfähige Vorstellungen über die Funktionsweise von Computern nur schwer bilden können. Im Proseminar werden wir das Buch //The Elements of Computing Systems, Building a Modern Computer from First Principles// von Nisan und Schocken nutzen, um die Verbindung zwischen Logikgattern und Betriebsystemebene herzustellen. Dazu werden wir die im Buch beschriebene //Hack-Plattform// nachvollziehen und die verschiedenen Abstraktionsebenen entmystifizieren. === Lernziele === Die Studierenden... * ...//erarbeiten// selbstständig ein informatisches Themengebiet * ...//bereiten// den gelernten Stoff für einem Vortrag //auf// * ...//präsentieren// den aufbereiteten Stoff in einem Vortrag * ...//formulieren// den präsentierten Stoff in einer schriftlichen Ausarbeiteung //aus// === Wichtige Infos === **LAGB2009:** Das Proseminar kann als //Seminar// für INF-ML-101 Nr.3 angerechnet werden. (siehe [[http://www.cs.tu-dortmund.de/nps/de/Studium/besondere_Lehrveranstaltungen/Proseminare/index.html|Infoseite zu Proseminaren]]) Beachten Sie neben den {{:fischer:teaching:allgemeine_proseminarhinweise.pdf |allgemeinen Hinweisen zu Proseminaren}}, dass Grafiken nicht kopiert werden sollen. Wenn Sie eine Grafik //abzeichnen//, wird dies auch als Kopie angesehen. Falls Sie Ihre Grafik auf Basis einer anderen erstellen, sollte erkennbar sein, dass Sie sich eigene Gedanken gemacht haben. Die [[http://www.zhb.tu-dortmund.de/zhb/Wil/de/Forschungswerkstatt/index.html | Forschungswerkstatt]] bietet LaTeX-Kurse an. Zum Buch gibt es einen [[https://www.coursera.org/learn/build-a-computer?ranMID=40328&ranEAID=*GqSdLGGurk&ranSiteID=.GqSdLGGurk-Oq_diI3.FuZn6GW1YXBncQ&siteID=.GqSdLGGurk-Oq_diI3.FuZn6GW1YXBncQ&utm_content=10&utm_medium=partners&utm_source=linkshare&utm_campaign=*GqSdLGGurk | MOOC]], der ggf. nützlich sein kann. ===== Zu erbringenden Leistungen ===== Als Studienleistung für das Seminar ist ein Vortrag auszuarbeiten und zu halten. Die Modulprüfung ist die schriftliche Ausarbeitung === Zeitplan === Alle Termine sind als letzte Fristen anzusehen. Es wird dringend empfohlen, deutlich vorher Kontakt aufzunehmen. Bei Fragen oder Problemen können Sie jederzeit einen Termin per [[mailto:martin.weinert@cs.tu-dortmund.de?subject=Proseminar Termin für Rücksprache | Mail]] vereinbaren. **Achtung:** Falls Ihr Thema mehrfach besetzt ist, teilen Sie dieses selbstständig auf und besprechen dies Rechtzeitig (deutlich vor der ersten Frist) mit der Seminarleitung! Halten Sie folgende Fristen ein: ^ Zeit ^ Frist für ^ | max. 14 Tage vor dem Vortrag | Gliederung des Vortrages abgeben | | max. 7 Tage vor dem Vortrag | Fertige Vortragsfolien abgeben | | Vortragsdatum | Vortrag halten | | max. 14 Tage nach dem Vortrag | Schriftliche Ausarbeitung abgeben | === Vortrag === Der Vortrag sollte 20-25 Minuten umfassen und die Inhalte des von Ihnen bearbeiteten Kapitels verständlich erklären. Im Idealfall erklären Sie die Inhalte auf eine Weise, die leichter verständlich ist, als das Buch selbst. Im Anschluss an den Vortrag werden ggf. Fragen diskutiert. Nach der Diskussion führen die Zuhörer eine (von Ihnen vorbereitete) kurze Aktivität zum Stoff des Vortrages durch. Diese sollte in 5 bis max. 10 Minuten zu bearbeiten sein. Die Lösung der Aufgabe wird schließlich diskutiert. === Ausarbeitung === Die Ausarbeitung umfasst 6 Seiten Inhalt. Damit ist gemeint, dass nach dem entfernen von strukturierenden Inhalten (Deckblatt, Inhltsverzeichnis, sehr große Überschriften, etc.) 6 Seiten übrig bleiben sollten. Außerdem sind die Lösungen zu den Übungsaufgaben aus dem Buch mit abzugeben. Falls Sie nur einen Teil des Kapitels bearbeiten, geben Sie auch nur die dafür relevanten Aufgaben ab. Sie können für die Ausarbeitung die Vorlage für Abschlussarbeiten der [[http://www.cs.tu-dortmund.de/nps/de/Studium/besondere_Lehrveranstaltungen/Abschlussarbeiten/index.html | Fakultät Informatik]] oder die {{:staff:weinert:vorlage_abschlussarbeit.zip | modifizierte Version}} benutzen. ===== Präsentationskurs ===== * {{ :fischer:teaching:gute_folien.pdf |Eigenschaften guter Folien}} * {{ :fischer:teaching:praes_sem.zip |entwickelter Latex-Artikel}} ===== Termine ===== * Die Vorbesprechung findet am 24.09.19 um 14 Uhr statt * Der Präsentationskurs besteht aus zwei Terminen, die am 11.10.19 und 18.10.19 jeweils von 9-16 Uhr stattfinden * Das Seminar findet Dienstags von 14 - 16 Uhr c.t. an den in der Tabenlle unten angegebenen Tagen statt Alle Termine finden im Schullabor (OH12, Raum 3.030) statt ^ Datum ^ Kapitel ^ Inhalt ^ Vortragende/-r ^ | 22.10.19 | 1 | Boolean Logic | Thilaksan Kodeeswaran | | 29.10.19 | 2 | Boolean Arithmetic | Dilsan Mahadeva | | 5.11.19 | - | //Keine Sitzung// | N/A | | 12.11.19 | 3 | Sequential Logic | Dennis Morczinek | | 19.11.19 | 4 | Machine Language | Dennis Krön | | 26.11.19 | 5 | Computer Architecture | Raphael Freymann | | 3.12.19 | 6 | Assembler | Daniel Kilimnik | | 10.12.19 | 7 | VM I: Stack Arithmetic | Leonard Eynck | | 17.12.19 | 8 | VM II: Program Control | Alexander Korn | | 7.01.20 | 9 | High-Level Language | Max Bahn | | 14.01.20 | 10 | Compiler I: Syntax Analysis | Thies von Egidy | | 21.01.20 | 11 | Compiler II: Code Generation | Annika Bülow | | 28.01.20 | 12 | Operating System | Kai Zurkuhl & Fabian Lamshöft | ===== Literatur ===== [NS05] Nisan, Noam; Schocken, Shimon: //The Elements of Computing Systems, Building a Modern Computer from First Principles.// The MIT Press, 2005 Vom Buch stehen zwei Exemplare zur Verfügung, die bei der Seminarleitung ausgeliehen werden können. Wenden Sie sich dazu bitte per Mail an [[mailto:martin.weinert@cs.tu-dortmund.de?subject=Ausleihe Buch FN2T|Martin Weinert]]. Damit allen Teilnehmern der Zugang zum Buch gewährleistet werden kann, wird die Ausleihe befristet. Melden Sie sich daher bitte frühzeitig!