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

 

 

 

Ferientutorien und Klausurtermine

 

- Erstes Ferientutorium:
Mittwoch 13.02.2019 von 13.00h bis (max.) 17.00h
Informatik-Gebäude Raum 0.016 

- Erste Klausur:
Fr 15.02.2019 Hörsaalgebäude HS 1 und HS 2 (Raumaufteilung alphabetisch, nach Aushang vor Ort)
Klausur SysProg BA-INF 034/129
exakte Zeit 9.30 - 11.00h (90 Minuten)

Die Klausurergebnisse wurden am Dienstag 26.2.2019 in BASIS eingetragen. Statistiken zum Ausfall sind undefinedhier zu finden.

- Zweites Ferientutorium:
Freitag 22.03.2019 von 13.00h bis (max.) 17.00h
Informatik-Gebäude Raum 0.016

 - Zweite Klausur:
Di 26.03.2019 Hörsaalgebäude nur in HS 1
Klausur SysProg BA-INF 034/129
exakte Zeit 9.30 - 11.00h (90 Minuten)

Die Klausurergebnisse wurden am Montag 8.4.2019 in BASIS eingetragen. Statistiken zum Ausfall sind undefinedhier zu finden.

(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!  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. 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.

 

 

Studie

Wir möchten mit Sie bitten, zu Beginn des Moduls Systemnahe Programmierung und vor der Prüfung des Moduls einen Fragebogen auszufüllen, um uns bei unserer Forschung zu unterstützen. Ziel dieser Fragebögen ist es, Erfahrungen über die Programmierfähigkeiten vor und nach dem Abschluss des Moduls zu erhalten. Es gibt keine “richtige” oder “falsche” Antwort, wir messen keine persönlichen Leistungen und teilen keine identifizierenden Daten mit Anderen.Die erhobenen Daten sollen anonymisiert in einer wissenschaftlichen Studie und für die Verbesserung der Lehre genutzt werden. Die Matrikelnummer erfragen wir, um die Fragebögen den eingereichten Übungen und Klausuren zuordnen zu können. Die Matrikelnummer wird allerdings vor der Analyse gelöscht, sodass der Bezug zur Person verloren geht und Anonymität gewährleistet ist. Für das vollständige Ausfüllen des ersten und zweiten Fragebogens erhalten Sie 10 Prozentpunkte für die Klausurzulassung.Falls Sie Interesse an den wissenschaftlichen Ergebnissen zu dieser Studie haben, informieren wir Sie gern per Mail. Tragen Sie dazu bitte am Ende der Studie eine E-Mail-Adresse ein. Diese E-Mail-Adresse wird vor der Auswertung separat gespeichert, um die Anonymität der Auswertung zu gewährleisten.  


Die Studie wird von Stephan Plöger und Prof. Dr. Matthew Smith durchgeführt. Falls Sie Fragen haben, können Sie uns gerne kontaktieren.

 

Der erste Teil der Studie ist nun unter folgender URL zu erreichen: https://www.surveymonkey.de/r/JKZD2RT

Der erste Teil der Studie ist beendet!

 

Der zweite Teil der Studie ist gestartet und unter folgender URL zu erreichen: undefinedhttps://www.surveymonkey.de/r/TK5G76X

 

Für die weiteren 5 Prozentpunkte für die Zulassung sind nur diejenigen Berechtigt, welche auch bereits an der ersten Studie teilgenommen haben!

Jene 5 Prozentpunkte können nur gut geschrieben werden wenn der Fragebogen bis zum 30.11.18  18:00 Uhr vollständig bearbeitet wurde.

 

Natürlich gibt es auch die Möglichkeit, anstatt der Studie ein Seminar zu machen, das ebenfalls 10 Prozentpunkte für die Zulassung bringt. Bei Interesse schreiben Sie bitte eine Mail an ploegers@cs.uni-bonn.de

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

undefined0.1 Allgemeines

undefined0.2 Übungen

C- und Rust-Crash-Kurs für Java-Programmierer

undefined0.3 C-Crash-Kurs

undefined0.4 Rust-Crash-Kurs

1. Maschinenprogrammierung in Assembler

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

undefined1.0 Folien 1-77

Korrigierte
undefined1.0 Folien 1-77

(teilw. Formatierungen auf Folien
50, 56, 57, 63, 64)

1. Ergänzung: Speicherverwaltung malloc & freeundefined1.1 Folien 1-19

2. Prozesse und Threads

2.1 Prozesse

2.2 Threads

2.3 IPC

undefined2.1 Folien 1-56

undefined2.2 Folien 1-132(154)

undefined2.3 Folien 1-126

3. Netzwerkprogrammierung in C

3.1. Motivation

3.2. Netzwerkprogrammierung: Sockets & Co.

3.3. I/O-Multiplexing

3.4. Server-Strukturen
3.5. Zusammenfassung

undefined3.1 Folien 1-32

 undefined3.2 Folien 33-69

undefinedrestl. Folien 70-142

(Ggf.) Ergänzung zu Kapitel 1: Fallstudien aus studentischen Programmierprojekten

 

Zusätzliche Hilfsmittel

Hilfsmittel

SPAsT Images

undefinedSPAsT.stretch.image

undefinedSPAsT.bionic.image

Code Tables

undefinedIntelCodeTable

Übungszettel

Hinweise zum undefinedÜ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 03undefinedpalindrom_errors.c
undefinedÜbungsblatt 04

 

undefinedhelloworld-a.asm

undefinedÜbungsblatt 05

undefinedfibonacci-stub_INTEL.asm

undefinedmatrix.c

undefinedÜbungsblatt 06

undefinedfork.c

undefinednames.csv

undefinedÜbungsblatt 07undefinedfork.c
undefinedÜbungsblatt 08

undefinedthread.c

undefinedcreate-random-matrix.c

undefineddotproduct.c

undefinedÜbungsblatt 09undefinedalexa-top-100.txt
undefinedBonuszettelFraunhofer FKIE (bis zu 16 Bonus-Punkte)
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 09.10.2018 um 14.15h in HS 2 im Hörsaalzentrum Campus Poppelsdorf. Dort wurden alle weiteren Informationen zur Organisation von Vorlesung und Übungen gegeben (Hinweise zum Übungsbetrieb FINDEN SICH undefinedJETZT HIER).

Der erste Übungszettel erscheint bereits in der Woche vom 09.10.2018 (auf dieser Webseite), der eigentliche Übungsbetrieb beginnt in diesem Durchlauf in der (dritten) Woche ab Montag 22.10.2018.

Eintragung/Anmeldung zu den Übungen via TVS ist jetzt, nach der ersten Vorlesung geöffnet (ab Mittwoch 10.10. - undefinedTVS-Link hier - MITTLERWEILE ABGESCHLOSSEN ). Wir akzeptieren Gruppenanmeldung mit bis zu 4 Personen! Bitte auch die Hinweise dazu auf der Sys-Prog-Mailingliste beachten!!!

Die Registrierung bleibt offen bis Dienstag 16.10.2018 um 23.59h (Nacht auf Mittwoch). Die Gruppenzuordnung wird am/ab Mittwoch 17.10.2018 per Mail bekannt gegeben. Bitte beachtet im Weiteren die Hinweise der Mail(s) an die MAILINGLISTE.

 

BA-INF 034 Systemnahe Programmierung ist ein Pflichtmodul nur für diejenigen Teilnehmer/innen (Hauptfach Bachelor Informatik), die BA-INF 014 ADiP nicht erfolgreich absolviert haben (und auch nicht wiederholen möchten). Für *ALLE ANDEREN* Teilnehmer/innen ist die Teilnahme an BA-INF 034/129 Sys-Prog *FREIWILLIG* als Wahlpflichtmodul (ebenfalls für andere Fächer z.B. mit Nebenfach Informatik).

 

Nach Anmelde-Ende zu den Übungsgruppen über TVS wurde die Verteilung der Teilnehmer/innen auf Kleingruppen und gitlab-Gruppen von unseren Tutor/innen per E-Mail bekannt gegeben. Bei evtl. Rückfragen bitte eine Mail an tut-sys-prog (at) lists.iai.uni-bonn.de schicken.

 

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 bzw. in den Poolräumen).