Lecture: Systemnahe Programmierung

Course:

Exercises:

Other:

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

Ankündigungen und wichtige Termine

 

In der ersten Vorlesung am Dienstag 10.10.2023  werden/wurden alle organisatorischen Dinge zur Teilnahme an der Systemnahen Programmierung besprochen. Die ersten Materialien finden sich unten in der Übersicht.

 

Klausuren und Klausurvorbereitung

  • Erstes Ferientutorium Präsenz: Di, 06.02.2024 ab 12 Uhr in 0.016
  • Erstes Ferientutorium Online (zeitgleich): Di, 06.02.2024 ab 12 Uhr in BBB (Link: undefinedhttps://bbb.informatik.uni-bonn.de/b/dyl-muc-nuy-gdw)
  • Erstklausur: Do, 08.02.2024 von 10 bis 12 Uhr; Klausurdauer 90 Minuten, Hörsaalzentrum HS1 + HS2
  • Klausureinsicht: t.b.d.

  • Zweites Ferientutorium Präsenz: Do, 14.03.2024 ab 13 Uhr in 0.016
  • Zweites Ferientutorium Online: Mi, 13.03.2024 ab 14 Uhr in BBB (Link: undefinedhttps://bbb.informatik.uni-bonn.de/b/dyl-muc-nuy-gdw)
  • Zweitklausur: Mo, 18.03.2024 von 10 bis 12 Uhr; Klausurdauer 90 Minuten, Hörsaalzentrum HS1
  • Zweitklausureinsicht: t.b.d.

 

Für Nachzügler/innen:

Bitte die Informationen aus Vorlesungsfolien 0.1 und 0.2 nachlesen und bis zum 17.10.2023 bis 23.59h in TVS zu den Übungsgruppen anmelden.

Ein Einstieg ist ab Mittwoch 18.10.2023 nur noch in sehr gut begründeten Einzelfällen möglich. Bitte wenden Sie sich dazu an <tut-sys-prog@lists.iai.uni-bonn.de>.

 

Zugangsdaten

Die Zugangsdaten zum Material auf dieser Webseite (wie Vorlesungsfolien, Übungszettel, ...) werden/wurden in der 1. Vorlesung bekannt gegeben. Zugriff innerhalb des Uni-Netzes (sowie mit VPN des HRZ oder der Informatik) ist ohne Zugangsdaten möglich. Bei Bedarf fragen Sie Ihre Komiliton/innen, das Tutorenteam oder die Dozenten nach den Zugangsdaten (... jedoch nicht per E-Mail !).

 

Übungsanmeldung

Die Übungsanmeldung wird über das undefinedTutorienvergabesystem (TVS) erfolgen. Die Übungsanmeldung ist seit ____Dienstag 10.10. _______ mittags geöffnet und endet am Dienstag 17.10.2023 um 23.59h. Im Laufe des Mittwoch 18.10.2023  (spätestens Donnerstag 19.10.2023) erhalten alle Teilnehmer/innen von ihrem Tutor weitere Informationen zu den Kleingruppen.

Die Übungsanmeldung über TVS sollte aus anderen Informatik-Modulen bekannt sein. Eine Registrierung in TVS ist mit Matrikelnummer möglich, siehe Anweisungen bei TVS. FFF-Teilnehmer/innen ohne Matrikelnummer wenden sich umgehend per E-Mail an tvs@REMOVETHISPART.cs.uni-bonn.de und bitten um manuelle Registrierung.

 

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/umgehend darum! (Weitere Informationen dazu auf den Webseiten der Systemgruppe).

Die Kleingruppen-Übungen finden im WS 2023/2024 wieder überwiegend in Präsenz statt. Eine Übungsgruppe wird als Online-Treffen im BBB-System der Informatik gehalten. Auch für dieses System wird der Informatik-Account genutzt.

  

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

 

Krankmeldungen für Prüfungstermine: Beachten Sie bitte hierzu unbedingt die entsprechenden undefinedHinweise des Prüfungsamts Informatik! (-> dort: Ablauf bei Krankmeldungen).  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.

 

 

Mailingliste

Für die Vorlesung Systemnahe Programmierung wurde eine Mailingliste eingerichtet, über die aktuelle Informationen zur Vorlesung und den Übungen verbreitet werden. 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.

Fragen von allgemeinem Interesse und Diskussionen zwischen den Teilnehmer/innen sollen ebenfalls über die Mailingliste laufen.

Bei gezielten Fragen an das Team der Tutor/innen und Dozenten kann der Mail-Alias tut-sys-prog (at) lists.iai.uni-bonn.de genutzt werden.

 

 

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 016 "Algorithmen und Programmierung" (bzw. vor 2019 aus BA-INF 014 "Algorithmisches Denken und imperative Programmierung" (aka ADiP) sind Konzepte einer imperativen Programmiersprache bzw. programmiersprachliche Grundkonzepte bekannt (im besten Falle wurde C behandelt).

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:


Alte Klausuren

Da eine gewisse Diskrepanz zwischen den Übungsaufgaben und den Klausuraufgaben zu erkennen ist, haben wir uns dieses Jahr dafür entschieden, ein paar alte Klausuren zu veröffentlichen, um euch einen Eindruck zu geben, was von euch in der Klausur verlangt wird.

Bitte behaltet dabei im Hinterkopf, dass die Vorlesung in den letzten Jahren teilweise anders aufgebaut war und das teilweise andere Schwerpunkte gesetzt waren. Diese hier gezeigten Altklausuren decken offensichtlich nicht alle Themenbereiche ab. Klammert euch nicht nur an diese Altklausuren!

Trotzdem hoffen wir natürlich, dass dieser Einblick für euch hilfreich ist.

Zur KlausurvorbereitungAlte Klausuren

WS2013/14

undefinedDurchgang 1

undefinedDurchgang 2

WS2014/15

undefinedDurchgang 1

undefinedDurchgang 2

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 1. Vorlesung bekannt gegeben wurde (siehe oben). Bitte erfragen Sie diese Zugangsdaten nicht per E-Mail! 

KapitelPDF-File

0. Allgemeine Informationen

undefined0.1 Allgemeines

undefined0.2 Übungen

Informationen zur Einführung in C

(wird im WS 2023/24 nicht live in der Vorlesung behandelt)
(0.3 zuletzt von WS 20/21), 0.4 Rust nur in Vorjahren)

undefined0.3 C-Crashkurs

1. Maschinenprogrammierung in Assembler

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

 Teil 1 (undefinedFolien 1-49 <- Update 31.10.2023)

(nur geänderte undefinedFolien 42+48+49 vom 31.10.2023)

Folie 30 helloworld.S siehe dann Übungsblatt 02

Teil 2 (undefinedFolien 50-84)

Sourcen undefinedAssembler-Beispiel stars (ZIP; Update mit Makefile)

Sourcen undefinedRegistertest (vgl. E-Mail vl-sys-prog)

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

2. Prozesse und Threads

2.1 Prozesse

2.2 Threads

2.3 Interprozesskommunikation

undefinedTeil 1 - Prozesse

undefinedTeil 2- Threads

undefinedTeil 3 - IPC

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-69

Zu Folien 7 ff. (Wie funktioniert das Internet? (auf 21 Folien)) vgl. Ankündigung in der Mailingliste.

Teil 2 undefinedFolien 70-143

 

 

Übungszettel

Hinweise zum Übungsbetrieb auch oben (=> 0.2 Übungen)

Die PDF-Dateien der Übungsblätter enthalten teilweise eingebettete Hilfsdateien (Source-Code, ...). Teilweise werden diese eingebetteten Dateien im PDF im Webbrowser nicht angezeigt. Laden Sie die PDF Datei am besten auf Ihren Computer und öffnen diese dort lokal.

PDF-DateiErgänzendes MaterialWeitere Informationen
undefinedÜbungsblatt 01

undefinedMakefile.pdf

ASAN.pdf

Abgabe bis 22. Oktober 2023
undefinedÜbungsblatt 02Abgabe bis 27. Oktober 2023
undefinedÜbungsblatt 03

undefinedTabelle1.csv

undefinedTabelle2.csv

Abgabe bis 03. November 2023
undefinedÜbungsblatt 04Abgabe bis 10. November 2023
undefinedÜbungsblatt 05

undefinedadressierung1.c

undefinedadressierung2.c

Abgabe bis 17. November 2023
undefinedÜbungsblatt 06undefinedtest.cAbgabe bis 24. November 2023
undefinedÜbungsblatt 07Abgabe bis 01. Dezember 2023
undefinedÜbungsblatt 08Abgabe bis 08. Dezember 2023
undefinedÜbungsblatt 09Abgabe bis 15. Dezember 2023
undefinedÜbungsblatt 10Abgabe bis 05. Januar 2024
undefinedÜbungsblatt 11Abgabe bis 12. Januar 2024
undefinedÜbungsblatt 12Abgabe bis 19. Januar 2024
undefinedÜbungsblatt 13Abgabe bis 26. Januar 2024
undefinedÜbungsblatt 14Abgabe bis 02. Februar 2024
undefinedBonusprojektAbgabe bis 26. Januar 2024

 

Zusätzliche Hilfsmittel

Hilfsmittel

Assembler Code Table

undefinedIntelCodeTable