Konzepte systemnaher Programmierung Sommersemester 18
Die Veranstaltung ist von Prof. Geisse uebernommen. Die Aufgabenstellungen, sowie das verwendete Manuskript sind die gleichen.
Themen
1. C-Programmierung
2. Speicherverwaltung, Laufzeitorganisation
3. Bibliotheken
4. Compiler, Assembler, Binder, Lader
5. Garbage-Collectoren
6. Interpreter, Virtuelle Maschinen
Es entsteht gerade ein Skript zur Vorlesung.
Dieses ist noch nicht gut poliert und enthaelt auch noch ein paar
Fehler - wenn Sie welche finden, bitte melden. Im Zweifelsfall gibt
es hier das Manuskript im Original,
das bei Diskrepanzen Vorrang hat. Das Stop-and-Copy Verfahren ist als Praesentation
hier zusaetzlich aufbereitet.
Literatur
Brian W. Kernighan, Dennis M. Ritchie:
The C Programming Language,
2nd Edition, Prentice Hall, 2012
Randal E. Bryant, David O'Hallaron:
Computer Systems - A Programmer's Perspective,
3rd Edition, Prentice Hall, 2015
Richard Jones, Rafael Lins:
Garbage Collection,
John Wiley & Sons, 1996
James E. Smith, Ravi Nair:
Virtual Machines,
Morgan Kaufmann, 2005
Praktikum und Notengebung
Aufgabe: Konstruktion einer Virtuellen Maschine zur Ausfuehrung
von Programmen der kleinen Programmiersprache Ninja ("Ninja is
not Java")
Organisation: Zweiergruppen
Bewertung:
1. Hausuebung: xx Punkte (akzeptiert bei >= xx/2 Punkten)
2. Hausuebung: yy Punkte (akzeptiert bei >= yy/2 Punkten)
Zwei akzeptierte Hausuebungen sind Voraussetzung fuer die
Zulassung zur Klausur.
Die in der Veranstaltung erzielte Note wird alleine durch
das Klausurergebnis bestimmt.
Bei der Klausur sind ein eigener Taschenrechner sowie ein
handgeschriebenes Blatt DIN A4 als Hilfsmittel zugelassen.
Erlaeuterung fuer Studenten, die ihre Hausuebungen nicht
im laufenden Semester gemacht haben:
Auch fuer Sie gilt, dass zwei akzeptierte Hausuebungen als
Zulassungsvoraussetzung zur Teilnahme an der Klausur gefordert
werden. Beachten Sie dazu bitte
diese Hinweise .
Aufgaben und Termine
Vorbereitung
- das ist VOR dem ersten Praktikum zu erledigen!
Die Termine hinter den Einzelaufgaben dienen zu Ihrer
Orientierung (Termine werden nachgetragen); Sie sollten sie einhalten. Termingerecht abgegeben
werden muessen aber nur die beiden Hausuebungen. Die erste
Hausuebung besteht aus der Zusammenfassung der Loesungen zu den
Aufgaben 0-4 (in Form einer kompletten Loesung zu Aufgabe 4), die
zweite Hausuebung aus der Zusammenfassung der Loesungen zu allen
Aufgaben (in Form einer kompletten Loesung zu Aufgabe 8).
Aufgabe 0
(VM0: Hauptprogramm, Strings, Kommandozeilenargumente, Ausgabe,
fertig bis 16.04.2018)
Aufgabe 1
(VM1: Arithmetische Ausdruecke, Stackmaschinen, Instruktionen,
fertig bis 23.04.2018)
Aufgabe 2
(VM2: Globale Variablen, Lokale Variablen, Stack-Frames,
Laden einer Datei, fertig bis 08.05.2018)
Aufgabe 3
(VM3: Kontrollstrukturen, Vergleiche, Spruenge, Debugger,
fertig bis 21.05.2018)
Aufgabe 4
(VM4: Call/Return, Argumente, Rueckgabewert, Boole'sche Ausdruecke,
fertig bis 04.06.2018)
Deadline 1. Hausuebung: 04.06.2018, 18.00 Uhr
Aufgabe 5
(VM5: Rechenobjekte auf dem Heap,
fertig bis 18.06.2018)
Aufgabe 6
(VM6: Bibliothek fuer beliebig grosse Zahlen,
fertig bis 25.06.2018)
Aufgabe 7
(VM7: Records, Arrays, Referenzvergleiche,
fertig bis 06.07.2018)
Aufgabe 8
(VM8: Compacting Garbage Collector,
Abgabe entfaellt)
Deadline 2. Hausuebung: 06.07.2018, 18.00 Uhr
WARNUNG
Kopieren des Codes anderer Gruppen, auch in Auszuegen, ist
Betrug und wird mit dem Ausschluss aller beteiligten Gruppen
von der Klausur geahndet! Auch das Benutzen von Loesungen aus
vorhergehenden Semestern faellt hierunter!
Weitere Konsequenzen siehe hier.