Lecture: Systemnahe Programmierung

Course:

Exercises:

Other:

  • Term: Bachelor Computer Science, Bachelor Lehramt
  • Requirements:
  • Faculty: BA-INF 034/129
  • Effort: 2L + 2E / 6CP

Ankündigungen - wichtige Termine

 

Die Ergebnisse der Nachklausur vom 24.3.2017 wurden am 29.3. ins BASIS/POS-System eingetragen. Statistik/Graphiken zum Ausfall sind undefinedhier zu finden. Bitte beachtet auch die Erläuterungen auf der Mailingliste.

 

Eine Einsicht in die Nachklausur findet am Mittwoch 05.04.2017 von 13.45h bis 14.15h im LBH in Raum II.27/27a statt.

 

(erledigte Ankündigungen und erledigte Termine siehe ganz unten)

 

Klausurtermine:

  • Erste Prüfungsmöglichkeit: Freitag 17.02.2017, vormittags, 9.30h - 11.00h, Dauer 90 min., Uni-Hauptgebäude Hörsaal X
  • Wiederholungsprüfung: Freitag 24.03.2017, vormittags, 9.30h - 11.00h, Dauer 90 min., Römerstr. 164 Hörsääle HS-1 und HS-2
  • bitte bis spätestens 22.12.2016 über BASIS/POS zur Teilnahme an der Prüfung anmelden (vgl. Ankündigungen per Mail und Informatik-Webseite)

Krankmeldungen für Prüfungstermine werden  nur als Original und mit dem Formblatt "Anlage zur Krankmeldung" akzeptiert und sind spätestens drei Tage nach dem Prüfungstermin im Prüfungsbüro Informatik einzureichen. Zusätzlich sind die Organisatoren der Systemnahen Programmierung per E-Mail über die eingereichte Krankmeldung zu informieren.

Bitte beachten Sie für Ihre strategische Planung der Teilnahme an den Prüfungen: Im Modul Systemnahe Programmierung wird es KEINEN dritten Prüfungstermin geben! Die zweite Prüfungsmöglichkeit deckt den Fall einer Krankheit beim ersten Termin ab.

Programmiersprache C

Im Bereich der systemnahen Programmierung wird als Programmiersprache häufig kein objektorientiertes Java oder C++ verwendet, sondern C. Um die Vorlesung erfolgreich absolvieren zu können, ist die Kenntnis von C sehr wichtig. Aus dem Modul BA-INF 014 "Algorithmisches Denken und imperative Programmierung" (aka ADiP) sind Konzepte einer imperativen Programmiersprache bekannt (im besten Falle wurde C behandelt).

Davon unabhängig wird es in der zweiten Vorlesungswoche einen sehr kurzen Überblick über die wichtigsten Konzepte von C geben - dies kann aber auf keinen Fall eine praktische (tiefere) Einarbeitung in C ersetzen! 

Der Klassiker über die Programmiersprache C ist nach wie vor das Buch von Brian W. Kernighan und Dennis Ritchie: The C Programming Language. Für Teilnehmer/innen mit Vorkenntnissen und Erfahrungen mit Java könnten die folgenden Links hilfreich sein:

Mailingliste

Für die Vorlesung Systemnahe Programmierung wurde eine Mailingliste eingerichtet, über die aktuelle Informationen zur Vorlesung und den Übungen verbreitet werden sollen. Die Anmeldung ist unter dieser undefinedAdresse möglich. Es werden nur Anmeldungen von Studenten akzeptiert, die auch für die Übungen angemeldet sind. Die Mails der Mailingliste werden archiviert.

Folien und Präsentationen

Von den Studentenrechnern des Instituts aus sind die Dateien frei zugänglich (ebenso per Verbindung über VPN); Zugriffe von anderen Rechnern erfordern ein Paßwort, welches in der ersten Vorlesung bekannt gegeben wird/wurde. Bitte erfragen Sie diese Zugangsdaten nicht per E-Mail! Nachzügler erfahren bei Bedarf die Zugangsdaten von Kommilitonen, den Dozenten oder den Tutoren.

KapitelPDF-File

0. Allgemeine Informationen

undefinedFolien 1-23
C- und Go-Crash-Kurs für Java-ProgrammiererundefinedFolien 1-74

1. Maschinenprogrammierung in Assembler

1.1. Motivation
1.2. Bezug zur Systemnahen Informatik (SS 2016)
1.3. Allgemeines zu 80x86 Assembler-Programmierung
1.4. Calling Conventions (aus C unter Linux)
1.5. Bezug zur 2-Adressmaschine (Systemnahe Informatik, SS 2016)
1.6. Assembler-Programmbeispiele
1.7. Socket-/Netzwerkprogrammierung in Assembler
1.8. Zusammenfassung

undefinedFolien 1-77
1. Ergänzung: Speicherverwaltung malloc & freeundefinedFolien 1-19

2. Prozesse und Threads

2.1 Prozesse

2.2 Threads

2.3 IPC

 

undefined Folien 1 - 60

undefined Folien 1 - 142

undefined Folien 1 - 121

3. Netzwerkprogrammierung in C

3.1. Motivation

3.2. Netzwerkprogrammierung: Sockets & Co.

3.3. I/O-Multiplexing

3.4. Server-Strukturen
3.5. Zusammenfassung

 Teil 1 undefinedFolien 1-70

 Teil 2 undefinedFolien 70-142

 

Ergänzung zu Kapitel 1: Fallstudien aus studentischen Programmierprojekten

 

 

Übungszettel

undefinedHinweise zum Übungsbetrieb CLICK HERE (erscheinen nach Beginn des Vorlesungsbetriebs)

Die PDF-Dateien können mit dem Acrobat Reader angesehen und ausgedruckt werden. Das Programm ist undefinedkostenlos erhältlich und ist auf fast allen Rechnern des Instituts installiert.

PDF-DateiErgänzende FolienWeitere Informationen
undefinedÜbungsblatt 01
undefinedÜbungsblatt 02

undefinedspringerproblem.c

undefinedsum.c

undefinedÜbungsblatt 03

undefinedrot13.h

undefinedrot13.c

undefinedÜbungsblatt 04

 undefinedpalindrom_errors.c

undefinedhelloworld-a.asm

undefinedÜbungsblatt 05

undefinedfibonacci-stub_ATT.asm

undefinedfibonacci-stub_INTEL.asm

undefinedmatrix.c (Aufg. 16)

undefinedshellcode.txt (Aufg. 18) 

undefinedÜbungsblatt 06

undefined Aufgabe20.go

undefinedfork.c  (Aufg. 21)

 

undefinedÜbungsblatt 07

undefined snippets.go (Aufg.25)

undefinedsnippets.c (Aufg. 25)

undefinedÜbungsblatt 08

undefinedthread.c (Aufg. 26)

undefineddotproduct.c (Aufg. 28)

undefinedcreate-random-matrix.c

undefinedÜbungsblatt 09
undefinedÜbungsblatt 10
undefinedÜbungsblatt 11
undefinedÜbungsblatt 12undefinedunp_readline.tar.gz
undefinedÜbungsblatt 13

 

Erledigte Ankündigungen - erledigte Termine

Die erste Vorlesung war am Dienstag 18.10.2016 um 14.30h in HS 1 in der Römerstr. 164.Dort wurden alle weiteren Informationen zur Organisation von Vorlesung und Übungen gegeben (undefinedHinweise zum Übungsbetrieb FINDEN SICH HIER).

Der erste Übungszettel erscheint in der Woche vom 18.10.2016 (auf dieser Webseite), der eigentliche Übungsbetrieb beginnt in diesem Durchlauf (ausnahmsweise erst) in der (vierten) Woche ab Montag 07.11.2016.

Eintragung/Anmeldung zu den Übungen via TVS wurde nach der ersten Vorlesung am 19.10. geöffnet (ca. 16.30h) (undefinedTVS-Link hier). Die Registrierung bleibt offen bis Dienstag 25.10.2016 um 23.59h (Nacht auf Mittwoch). Die Gruppenzuordnung wird am Mittwoch 26.10.2016 (spätestens Do/Fr) per Mail bekannt gegeben. Bitte beachtet im Weiteren die Hinweise der Mail(s) an die MAILINGLISTE (mehr dazu siehe etwas tiefer).

Für die Abgabe der Übungen in Gruppen wird das Versionierungssystem git auf einem Server der Informatik genutzt. Für den Zugang ist ein gültiger Informatik-Account nötig.

Wenn Sie noch keinen Informatik-Account haben sollten, kümmern Sie sich bitte selbständig und rechtzeitig darum! (Weitere Informationen dazu auf den Webseiten der Systemgruppe bzw. in den Poolräumen in der Römerstr.).

Zwischenstand der erreichten Punkte im Übungsbetrieb vom 21.12.2016 (undefinedhier als PDF) - vgl. Ankündigung/Erläuterung dazu auf der Mailingliste.

Zulassungsstand bzw. erreichte Punkte im Übungsbetrieb vom 6.2.2017 (undefinedhier als PDF) - vgl. Ankündigung/Erläuterung dazu auf der Mailingliste.

Die Ergebnisse der Klausur vom 17.2.2017 wurden am 28.2. ins BASIS/POS-System eingetragen. Statistik/Graphiken zum Ausfall sind undefinedhier zu finden. Bitte beachtet auch die Erläuterungen auf der Mailingliste.

Eine Klausureinsicht fand am Mittwoch 01.03.2017 von 14.00h bis 14.30h im LBH in Raum III.0.0 statt.