Prof. Dr. K. Wüst - TH Mittelhessen - Studiengang
Informatik
Konzepte Systemnaher Programmierung
Allgemeines zu KSP im WS
2011/12
Die Veranstaltung ist um ein Projekt zentriert, die
Implementierung einer virtuellen Maschine, die Erstellung
einer virtuellen Maschine zur Ausführung von Programmen der
OO-Programmiersprache Ninja, die Ninja-VM (H.Geisse). Dieses
Konzept wurde von Prof. Dr. H. Geisse übernommen, der es
schon mehrfach in KSP erfolgreich durchgeführt hat ( SS2010
, SS2011)
so dass die Veranstaltung eine hohe Kontinuität
hat. (Auch die Aufgabenblätter sind von Prof.
Geisse.) Das Projekt der Ninja-VM zeigt die wichtigsten
Aspekte der Programmiersprache C und erfordert systemnahe
Programmierung.
Die Erstellung der Ninja-VM ist durchaus mit einem ordentlichen
Zeitaufwand verbunden, planen Sie genug Zeit dafür ein!
Ablauf
Die Ninja-VM unseres Projektes wird schrittweise im Laufe des
Semesters aufgebaut. Dazu werden insgesamt 8 Aufgabenblätter
ausgegeben, mit deren Bearbeitung man die Ninja-VM nach und nach
erstellt. Mit dem Aufgabenblatt 4 ist ein Stand erreicht, der als
Hausübung 1 abgegeben und von uns geprüft wird. Die
Bearbeitung kann in Zweier-Gruppen erfolgen. Der Stand
nach dem letzten Aufgabenblatt (Blatt 6) ist der finale Stand und
wird als Hausübung 2 wieder abgegeben.
Klausurvoraussetzung
Die beiden Hausübungen werden durch automatisierte Tests
in Ihrer Funktion überprüft und müssen jeweils
mindestens die Hälfte der Tests bestehen. Außerdem wird
der abgegebene Sourcecode aller Teilnehmer mit einem
Ähnlichkeits-Messungs-Tools überprüft. Bei zu
starker Ähnlichkeit werden die Teilnehmer von
der Hausübung und damit der Klausur ausgeschlossen.
Studierende, die Ihre Hausübungen in einem
früheren Semester bestanden haben, behalten ihre
Teilnahmeberechtigung und können einfach wieder mitschreiben.
Nur die beiden Hausübungen müssen pünktlich
abgegeben werden. Die Termine hinter den Aufgabenblättern
dienen nur Ihrer persönlichen Zeiteinteilung und der
Einschätzung des Projekt-Fortschritts.
Aufgabe
0 (VM0: Hauptprogramm, Strings, Kommandozeilenargumente,
Ausgabe, fertig ca. bis 21.10.2011)
Aufgabe
1 (VM1: Arithmetische Ausdruecke, Stackmaschinen,
Instruktionen, fertig bis Ende Oktober)
Aufgabe
2 (VM2: Lokale Variablen, Stack-Frames, Laden einer Datei,
fertig bis ca. 11.11.2011)
Aufgabe
3 (VM3: Kontrollstrukturen, Vergleiche, Spruenge,
Debugger, fertig bis ca. 25.11.2011)
Aufgabe
4 (VM4: Call/Return, Argumente, Rückgabewert,
Boole'sche Ausdruecke, fertig bis 9.12.2011)
Hier die abgegebenen Gruppenmeldungen, bitte kontrollieren!
Liste
mit den Gruppenmeldungen (Stand 30.11.2011)
Ergebnisliste
der ersten Hausübung Stand 21.12. 2011.
Ergebnisliste
der ersten Hausübung Stand 4.1.2012.
Aufgabe
5 (VM5: Objekte auf
dem Heap, Inspektion von Objekten, fertig bis 06.1.2012)
Aufgabe
6 (VM6: Objekte mit
Instanzvariablen, Arrays, Identitaet, fertig bis
20.1.2012)
Die Zweite Hausübung umfasst eine funktionierende Ninja-VM
mit dem Stand der bis zum Aufgabenblatt 6 gefordert ist.
Hier die Anleitung
zur Abgabe der zweiten Hausübung.
Ergebnisliste
der zweiten Hausübung Stand 4.2.2012.
Kommentierte Befehlsliste
Hier gibt es eine Liste aller Befehle der
Ninja-VM6 mit kurzem Kommentar zur Wirkung auf den Stack und
Verwendung
der Immediate-Werte:
VM6-Befehlsliste
Studentische Mitschrift
Hier gibt es eine Mitschrift von Fabian Mueller,
Stand WS 2009/2010:
KSP v021
Literatur
- Brian W. Kernighan, Dennis M. Ritchie: The
C Programming Language, 2nd Edition, Prentice Hall, 1988
- Steve Qualline, Practical C Programming, O'Reilly, 2000
- Randal E. Bryant, David O'Hallaron: Computer Systems - A
Programmer's Perspective, Prentice Hall, 2002
- Richard Jones, Rafael Lins: Garbage Collection, John Wiley
& Sons, 1996
- James E. Smith, Ravi Nair: Virtual Machines, Morgan
Kaufmann, 2005
Klausur
Zur
Klausurvorbereitung stelle ich hier die Klausur
vom WS2010/11 mit Musterlösung und Erklärungen zur
Verfügung.
Zurück zur Startseite
K.Wuest