Lade Daten...
iLearn
Cau-siegel-color-300

Zur Vorlesung

Die Vorlesung stützt sich im Wesentlichen auf das Buch Computer Systems: A Programmer's Perspective (CS:APP), dessen erste sechs Kapitel das Skript zur Vorlesung bilden. Es können sowohl die erste Edition (2003) als auch die zweite Edition (2010) verwendet werden. Das Buch enthält nicht nur Hintergrundmaterial zur Vorlesung, sondern auch eine Vielzahl von Beispielproblemen, z.T. auch mit Lösungen, die zur Überprüfung des Verständnisses und zur Klausurvorbereitung nützlich sind. Weiterhin enthält das Buch Kapitel, welche auch für weitere Vorlesungen hilfreich sind (Echtzeitsysteme, Betriebssysteme, Kommunikationssysteme).

Die Sprache der Vorlesung und der Klausur wird Deutsch sein; ein Gutteil der Vorlesungsmaterialien ist jedoch auf Englisch, insbesondere die Folien und der Bryant/O'Hallaron. Auch später im Studium werden Ihnen englische Quellen begegnen, spätestens bei der Vorbereitung eines Seminarvortrags. Sollten Sie sich im Englischen noch nicht sicher fühlen, empfehlen wir, sich zumindest schon mal die ersten beiden Kapitel des Bryant/O'Hallaron in den nächsten Wochen in Ruhe anzusehen.

Der Bryant/O'Hallaron ist im Handapparat der Fachbibliothek vorhanden, während der Bibliotheksöffnungszeiten also stets einsehbar. Eine begrenzte Anzahl hiervon kann auch ausgeliehen werden. Davon abgesehen ist für Informatikstudierende eine persönliche Anschaffung dieses Buches eine sehr sinnvolle Investition.

Programmieren in C

Ein wesentlicher Bestandteil der Veranstaltung sind Übungsaufgaben, welche größtenteils die Programmiersprache C verwenden. Dabei geht es uns nicht so sehr um die Sprache selbst; wir nutzen sie vielmehr als Mittel zum Zweck, um etwas über die Organisation und Architektur eines Rechners zu erfahren. C ist dafür aufgrund seiner Maschinennähe eine geeignete Sprache. Es werden also keine fortgeschrittenen Programmierkonstrukte verwendet und abgefragt werden. Es wird jedoch erwartet, dass Sie die Basiskonstrukte von C und den Umgang mit einem C-Compiler (gcc) sicher beherrschen.

Da die Vorlesung "Algorithmen und Datenstrukturen" ebenfalls C-Kenntnisse voraussetzt, wird in der ersten Vorlesungswoche ein C-Kurs angeboten, der gemeinsam mit Herrn Prof. Börm an den Terminen der beiden Vorlesungen durchgeführt wird. Buchempfehlungen zur Programmiersprache C finden Sie im Literaturabschnitt weiter unten. Die Kopierstelle der Universitätsbibliothek verkauft für 3,60€ das dort aufgeführte Skript des RRZN.

Begleitend zm Kurs können Übungsaufgaben zur Programmierung in C bearbeitet werden, die später zu den normalen Übungsterminen besprochen werden.

Technische Voraussetzungen

Der gcc Compiler ist eine frei verfügbare Software und wird für die Bearbeitung der Übungsaufgaben vorausgesetzt. Für Linux ist gcc im build-essential Paket vorhanden, bei 64-Bit Systemen ist zusätzlich gcc-multilib nötig. Für Mac OS X ist gcc als Teil von Xcode verfügbar, was über den App Store oder von developer.apple.com installiert werden kann. Für Windows wird eine gcc Portierung durch das MinGW Projekt angeboten.

Manche Übungsaufgaben können nur mit einem Linux Betriebssystem bearbeitet werden. Dabei ist nicht wichtig, welche Distribution verwendet wird. Sollten Sie noch keine Erfahrung mit Linux haben, empfehlen wir die Installation von Ubuntu 12.04 auf einem für Sie verfügbaren Rechner. Mit Hilfe einer virtuellen Maschine wie z.B. VirtualBox kann man Linux auch in ein bereits vorhandenes Betriebssystem wie Windows hinein installieren.

Wir haben eine virtuelle Maschine vorbereitet, auf der Lubuntu installiert ist, eine leichtgewichtige Variante von Ubuntu. Der gcc Compiler ist bereits enthalten. Die Anmeldung erfolgt mit dem Nutzernamen "student" und dem Passwort "ss2013". Die Datei kann z.B. mit VirtualBox geöffnet werden.

Literatur

  1. Randal E. Bryant and David R. O'Hallaron, Computer Systems: A Programmer's Perspective (CS:APP), Second Edition, Prentice Hall, 2010, ISBN 0-13-034074-X. Kapitel 1-6 sind das Skript zur Vorlesung.
  2. Die Programmiersprache C. Ein Nachschlagewerk, Skript des RRZN, 125 Seiten, 16. Auflage, 2007. Hinweis: Das Skript wird als Referenz zur Begleitung der Vorlesung empfohlen. Es wird für 3,60 Euro von der Kopierstelle der UB verkauft (gebundene Ausgabe) und wird auch von uns - in begrenzter Stückzahl - zum gleichen Preis am ersten Vorlesungstermin angeboten.
  3. Kernighan, Ritchie, Programmieren in C (Zweite Ausgabe ANSI C), Carl Hanser Verlag, 1990

Vorlesungsfolien

Über die folgenden Links können die Vorlesungsfolien für dieses Semester heruntergeladen werden:

  1. C-Einführung von Prof. Börm
  2. Overview
  3. Binary Representations
  4. Integers
  5. Machine Programming 1: Basics
  6. Machine Programming 2: Addressing Modes, Operations, Control, While Loops
  7. Machine Programming 3: For Loops, Switch Statements, Procedures
  8. And now for Something Completely Different: Foundations of Debugging
  9. Machine Programming 4: Procedures, Arrays, Structures
  10. Machine Programming 5: Structures, Alignment, Unions, Floating Point
  11. Computer Architecture 1: Instruction Sets
  12. Computer Architecture 2: Logic Design
  13. Computer Architecture 3: A Sequential Design
  14. Computer Architecture 4: Pipelining
  15. Computer Architecture 5: Making Pipelining Work - Hazards
  16. Computer Architecture 6: Making Pipelining Work - Further Topics
  17. Memory Layout, Malware, Program Optimization
  18. Program Optimization
  19. Memory Hierarchy, Caches, Locality
  20. Cache Optimizations, Linking

Zusatzmaterialien

Über die folgenden Links können noch weitere Dinge heruntergeladen werden, die echt praktisch sind:

  1. GDB Reference Card: Übersicht über den GDB.
  2. Assembler Reference Card: Übersicht über GNU Assembler. Achtung: Bei den Erläuterungen zu bedingten Sprungbefehlen sind die Parameter a und b falsch herum.
  3. Intel Assembler Code Table: Übersicht darüber, welche Flags von welchen Instruktionen gesetzt werden. Achtung: Die Assembler-Instruktionen sind in Intel-Assembler-Syntax aufgeführt, in der die Source- und Destination-Operanden gegenüber GNU Assembler vertauscht sind.

Organisatorisches

Die Anmeldung zur Veranstaltung erfolgt wie gewohnt über die StudiDB. In der StudiDB wird nur eine Generalübung gelistet, für die sich jeder anmelden muss (sonst kann man sich später nicht zur Klausur anmelden). Die Anmeldung für konkrete Übungen erfolgt dann über iLearn. Die Anmeldung wird vermutlich innerhalb der ersten Vorlesungswoche freigeschaltet werden.

Klausur

Am Ende der Veranstaltung wird, wie üblich, eine Klausur geschrieben. Zulassungsvoraussetzungen:

  • Es müssen über das Semester hinweg 50% der gesamten Übungspunkte erreicht werden.
  • Fehlen an maximal zwei Übungsterminen.

Um die Klausur zu bestehen müssen mindestens 50% der verfügbaren Punkte erreicht werden.

1. Klausur

Achtung: Der Klausurtermin und -ort wurde geändert.

Die erste Klausur findet am 25. Juli um 8 Uhr im Hörsaal Chemie 2 am Otto-Hahn-Platz 5 statt. Die Klausureinsicht findet am 22. August gestaffelt nach Übungsgruppen von 10:15 Uhr bis 11:30 Uhr im Raum 1110 im Hochhaus statt:

  • 10:15 Uhr: Übungsgruppe Do. 10 Uhr bei Lewe
  • 10:30 Uhr: Übungsgruppe Do. 10 Uhr bei Miro
  • 10:45 Uhr: Übungsgruppe Do. 14 Uhr bei Christoph Daniel
  • 11:00 Uhr: Übungsgruppe Fr. 12 Uhr bei Robin
  • 11:15 Uhr: Übungsgruppe Fr. 12 Uhr bei Christoph Daniel

2. Klausur

Die zweite Klausur findet am 23. Oktober um 13 Uhr im Norbert-Gansel-Hörsaal in OS40 statt. Die Klausureinsicht findet am 03. November von 15:00 bis 16:00 Uhr im Hochhaus in Raum 1110 statt.