Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, IAI, Vorlesungen, WS 2011/2012
Systemnahe Software I
im Wintersemester 2011/2012
Veranstalter Dr. Andreas F. Borchert mit Markus Schnalke
TypVorlesung mit Übungen
Umfang 2 V + 2 Ü (6 LP)
Termin Di 16-18 Uhr im H3 (Vorlesung)
Do 16-18 Uhr im H12 (Übungen)
Beginn

Dienstag, 18. Oktober 2011

Prüfungen

Die Vorlesung ist für die Bachelor-Studiengänge Mathematik, Wirtschaftsmathematik, Wirtschaftswissenschaften, Informatik, Medieninformatik, Software Engineering, Physik, Wirtschaftsphysik, Elektrotechnik und für die Master-Studiengänge Informatik und Medieninformatik vorgesehen (Technische und Systemnahe Informatik). Es wird am Ende des Semesters eine schriftliche Prüfung geben. Die Einzelheiten dazu werden in der Vorlesung bekanntgegeben. Voraussetzung für die Teilnahme an der Klausur ist eine erfolgreiche Teilnahme an den Übungen (Vorleistung).

Die schriftliche Prüfung findet statt am 20. Februar 2012 in der Zeit von 14:00 bis 16:00 Uhr (120 Minuten) im Hörsaal H4/5 statt.

Ursprünglich war eine Aufteilung auf mehrere Hörsäle vorgesehen. Auf diese wird verzichtet, da alle Teilnehmer in den H4/5 hineinpassen.

Es wird auch einen zweiten Prüfungstermin am Ende der vorlesungsfreien Zeit geben (voraussichtlich Anfang April). Die Einzelheiten dazu werden erst festgelegt, wenn die Korrekturen zur ersten schriftlichen Prüfung fertig sind.

Als Hilfsmittel zur schriftlichen Prüfung sind bis zu fünf von eigener Hand geschriebene Blätter (nicht größer als DIN A4) zugelassen.

Studierende der Bachelor-Studiengänge Physik und Wirtschaftsphysik können auch alternativ zwei Leistungspunkte erhalten, wenn sie sich im Portal für Systemnahe Software I für Physiker eintragen. In diesem Falle werden die Leistungspunkte vergeben, wenn

  1. 50% der Übungspunkte erreicht werden bei den Aufgaben 1-9 und
  2. das Testat zur Aufgabe 10 bestanden wird.

Zu dem Testat können sich sich in einer Gruppe von bis zu vier Studierenden zusammenschließen, die alle sich für Systemnahe Software I für Physiker eingetragen haben. Bitte verabreden Sie sich zu dem Testat mit einem der beiden Tutoren in der Zeit vom 12. zum 14. Dezember. Wenn das Testat nicht erfolgreich ist oder Sie aus wichtigen Gründen nicht an dem Testat teilnehmen konnten, dann gibt es eine zweite Chance durch ein Testat bei mir im Januar 2012. Wichtig ist dabei zu bedenken, dass eine Registrierung für Systemnahe Software I für Physiker eine Teilnahme an der regulären 6-LP-Variante ausschließt.

Alle Teilnehmer, die sich nicht für Systemnahe Software I für Physiker eingetragen haben, können sich ab sofort für die Vorleistung beim Hochschulportal eintragen. Die Vorleistung gilt als erfüllt, wenn Sie für die eingereichten Übungsblätter 1 bis 12 (mit den Aufgaben 1 bis 15) mindestens 65 Punkte erreicht haben. Sobald die Vorleistung für Sie als erfüllt eingetragen ist, können Sie sich für die schriftliche Prüfung anmelden.

Zur Vorbereitung auf die Klausur empfiehlt es sich, die Probeklausur durchzuarbeiten und auch die letzten Vorlesungs- und Übungstermine wahrzunehmen, die auch der Klausurvorbereitung dienen. Inzwischen stehen auch die zugehörigen Lösungen zur Verfügung.

Der Fortschritt beim Korrigieren der Klausur und die ersten Zwischenergebnisse können hier verfolgt werden.

Die erreichten Punktewerte wurden für alle Teilnehmer, die für diese Vorlesung in diesem Semester in SLC registriert gewesen sind, in SLC unter den Prüfungsleistungen eingetragen. Die Noten werden nach der Klausureinsicht in das Uni-Portal eingetragen.

Die zweite schriftliche Prüfung ist am 2. April, von 14:00 bis 16:00 Uhr im H12.

Das Korrigieren der zweiten Prüfung verzögert sich leider bis nach Ostern aus Krankheitsgründen.

Inhalte Die Vorlesung dient der Einführung in die systemnahe Software. Unter systemnah wird die Nähe zur Prozessorarchitektur und den Schnittstellen des Betriebssystems verstanden. Ein tieferes Verständnis der systemnahen Programmierung ist insbesondere hilfreich bei der Entwicklung hochperformanter Software, wie sie beispielsweise bei numerischen Anwendungen benötigt wird. Zu den auf dieser Vorlesung aufbauenden Vorlesungen gehören u.a. Systemnahe Software II (im Sommersemester), Parallele Programmierung mit C++ und Scientific Computing. Im einzelnen werden u.a. folgende Punkte behandelt:
  • Einführung in die Programmiersprache C
  • Datentypen und ihre Repräsentierung
  • Dynamische Speicherverwaltung
  • Entwicklungswerkzeuge im Umfeld von C
  • Sicheres Programmieren mit C und Codierungsstandards (MISRA)
  • POSIX-Dateisysteme einschließlich der zugehörigen Schnittstellen
Skript

Das die Vorlesung begleitende Skript und die in der Vorlesung verwendeten Folien und Beispiele werden hier veröffentlicht:

Voraussetzungen

Es werden einführende Vorlesungen in die praktische Informatik vorausgesetzt. Denkbar sind entweder Allgemeine Informatik I und II oder Praktische Informatik I und II.

Übungen

Bitte melden Sie sich zu den Übungen im SLC an.

Auf Grund der großen Teilnehmerzahl werden wir keine herkömmlichen Tutorien anbieten. Stattdessen reichen Sie ihre Lösungen in 2er bis 4er-Gruppen über unser Submission-System ein. Die Deadline für die Abgabe der Lösungen ist jeweils der Beginn der nächsten Übungsstunde. Ihre Einreichungen werden dann in der folgenden Woche von unseren Tutoren korrigiert und bepunktet.

Für Fragen und bei Problemen stehen unsere Tutoren in den Computer-Pools der Mathematik (O27) zur Verfügung. Die Sprechzeiten sind wie folgt:

  • Dienstag: 10:00-12:00 (Fabian) und 13:15-14:45 (Max)
  • Mittwoch: 08:30-10:00 (Fabian) und 13:15-15:15 (Max)
Blatt Deadline Aufgabe Sonstiges Musterlösung
1 27.10.2011 [PDF] Shellsession
2 03.11.2011 [PDF] aliquot.c ganzzahlen.txt
3 10.11.2011 [PDF] song.c.orig song.c macros.h verse.h bowling.c
4 17.11.2011 [PDF] Verwendet pow(), nicht exp(). soupsum.c soupsum-christian.c
5 24.11.2011 [PDF] Ulm.hm hangman.c
6 01.12.2011 [PDF] richtig-verketten.txt cachedetect.c Bsp:Server Bsp:Notebook
7 15.12.2011 [PDF] testumgebung
Patch für Testumgebungen, die vor 2011-12-08 14:00 runtergeladen worden sind.

vergleich_2011-12-13_20:55.txt
Implementierung nach K&R
Gewinnerimplementierung
Nochmal mit lesbarerem Code
Nochmal mit Detailverbesserungen
8 22.12.2011 [PDF] reverse.c
Alternative Optionsverarbeitung
9 12.01.2012 [PDF] reverse2.c
Unterschiede zwischen reverse.c und reverse2.c
reverse2-strdup.c
Unterschiede zwischen reverse.c und reverse2-strdup.c
10 19.01.2012 [PDF] functions (tgz); dynfunctions (tgz)
Wichtig: Euer Makefile muss mit einem kleinen `m' beginnen: ``makefile''.
*.c *.h makefile
11 26.01.2012 [PDF] dups.c
12 02.02.2012 [PDF] dist/
fertige Objektdateien für Solaris
fertige Objektdateien für GNU/Linux
Wichtig: Euer Makefile muss mit einem kleinen `m' beginnen: ``makefile''.
dircmp/
13 unbewertet [PDF] Makefile/ extract_urls.c
Weitere Materialien