Vorlesung: Systemnahe Programmierung
Veranstaltung:
- Verantwortlich: Dr. Matthias Frank, Dr. Matthias Wübbeling, Prof. Dr. Peter Martini, Prof. Dr. Matthew Smith
- Beginn: 03.11.2020
- Zeiten: Di. 14:15 bis 15:45, wöchentlich, Online-Vorlesung (https://bbb.informatik.uni-bonn.de/b/mat-jvg-ah1)
- Veranstaltungsnummer: 612100034
Übung:
- Verantwortlich: Dr. Matthias Frank, Dr. Matthias Wübbeling, Prof. Dr. Peter Martini, Prof. Dr. Matthew Smith, (Organisatorische Anfragen bitte an <tut-sys-prog@lists.iai.uni-bonn.de>)
- Beginn: t.b.a.
- Zeiten: Bekanntgabe in der ersten Vorlesung
- Veranstaltungsnummer: 612200034
Weitere Informationen:
- Studienabschnitt: Bachelor Informatik, Bachelor Cyber Security, Bachelor Lehramt
- Voraussetzungen:
- Fachbereich: BA-INF 034/129
- Aufwand: 2V + 2Ü / 6LP
Ankündigungen - wichtige Termine
Besonderheiten im WS 2020/2021:
Klausur-relevante Termine:
- Erstes Ferientutorium: Dienstag 23.02.2021
im BBB-Raum https://bbb.informatik.uni-bonn.de/b/mat-e1h-jz8
ab 13.00h bis ca. 15.00h (solange Interesse besteht)
- Erste Online-Klausur: Montag 01.03.2021 - Details siehe unten
Eintragung der Ergebnisse in BASIS am Fr. 12.3.2021, zum Ausfall hier Statistik und Diagramme.
- Zweites Ferientutorium: Mittwoch 24.03.2021
im BBB-Raum https://bbb.informatik.uni-bonn.de/b/mat-e1h-jz8
ab 13.00h bis ca. 15.00h (solange Interesse besteht)
- Zweite Online-Klausur: Mittwoch 31.3.2021 - Details siehe unten
Eintragung der Ergebnisse in BASIS am Mo. 10.5.2021, zum Ausfall hier Statistik und Diagramme.
- Eine Klausureinsicht in beide Online-Klausuren werden wir anbieten, sobald die veränderten Corona-Bedingungen uns eine vernünftige Organisation und Durchführung erlauben. Bitte bleibt daher auch weiterhin in unserem Vorlesungsmailverteiler, über den wir dann zu geg. Zeit informieren.
Die Vorlesungen der Systemnahen Programmierung finden online statt. Überwiegend finden zum Vorlesungstermin Dienstags 14-16h (Beginn c.t., also um 14.15h) in BBB-Konferenz die Vorlesungen statt. Eine Aufzeichnung der Vorlesung wird zusätzlich nachträglich verfügbar gemacht. An einzelnen Terminen kann es auch zur Bereitstellung eines voraufgezeichneten Vorlesungsvideos kommen.
Die erste Online-Vorlesung war am Dienstag 3.11.2020 ab 14.15h.
Vorlesungsraum in BigBlueButton:
https://bbb.informatik.uni-bonn.de/b/mat-jvg-ah1
Fallback: Zoom
Sollte es Probleme bei der Nutzung von BigBlueButton geben, weichen wir auf Zoom aus. Die dafür benötigen Zugangsdaten lauten:
Meeting-ID: 969 8875 7931
Kenncode: 540295
In der ersten Vorlesung wurden alle weiteren Informationen zur Organisation von Vorlesung und Übungen gegeben (Hinweise zum Übungsbetrieb SIEHE HIER). Vorlesungsfolien werden in der Tabelle unten bereitgestellt.
Eine Liste von Links zu den Vorlesungsaufzeichnungen wird jeweils (nach einer gewissen technisch bedingten Verzögerung) über die Mailingliste bekannt gegeben.
Zugangsdaten
Die Zugangsdaten zum Material auf dieser Webseite (wie Vorlesungsfolien, Übungszettel, ...) sind im SysProg eCampus Kurs einsehbar: ecampus.uni-bonn.de/goto.php (Direktlink zum Beitritt)
Übungsanmeldung
Die Übungsanmeldung wird über das Tutorienvergabesystem (TVS) erfolgen.
Details zur Anmeldung und Deadline finden sich in den Hinweisen zum Übungsbetrieb. Die Anmeldung in TVS ist geöffnet und ist bis einschl. Dienstag 10.11.2020 (Tag der zweiten Vorlesung) möglich, bis 23.59h.
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 als Online-Treffen im BBB-System der Informatik statt. Auch für dieses System wird der Informatik-Account genutzt (anonyme Teilnahme in den Kleingruppen ist nicht möglich).
(erledigte Ankündigungen und erledigte Termine siehe ganz unten)
Krankmeldungen für Prüfungstermine: Beachten Sie bitte hierzu unbedingt die entsprechenden Hinweise 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.
Informationen zur Online-KLAUSUR
Die Prüfungen werden in diesem Semester aufgrund der besonderen Situation als sogenannte "Online-Klausur" durchgeführt. Bitte lesen Sie die nachfolgenden Hinweise aufmerksam durch!
Prüfungsdatum
1. Klausur: Montag, 01.03.2021 ab 10:15 Uhr
2. Klausur: Mittwoch, 31.03.2021, ab 10:15 Uhr
Bearbeitungszeit
Die vorgesehene Bearbeitungszeit für die Klausur beträgt 90 Minuten. Zusätzlich gewähren wir eine Zeitreserve von 30 Minuten für das Scannen und Hochladen der Lösungen. Die Gesamtzeit von der Klausurausgabe bis zur spätesten Klausurabgabe beträgt somit 120 Minuten. Die Prüfungsteilnehmer*innen können sich diese 120 Minuten beliebig einteilen und sind für das rechtzeitige Hochladen der Lösungen selbst verantwortlich.
Prüfungsform und erlaubte Hilfsmittel
- Die Prüfung wird online als sogenannte "Open-Book-Klausur" durchgeführt, d.h. es sind zur Bearbeitung der Klausur sämtliche Lehrmaterialien der Vorlesung, sowie sämtliche eigenen Materialien und Notizen gestattet.
- Die Klausur muss allerdings eigenständig und ohne die Hilfe anderer Personen gelöst werden. Die direkte oder indirekte Kommunikation mit anderen Personen während der Klausur ist untersagt!
- Eine (Video-)Überwachung der Prüfungsteilnehmer*innen während der Klausur ist nicht geplant.
Ablauf der Prüfung
- Das PDF-Dokument der Klausuraufgaben wird zu dem angegebenen Prüfungsbeginn über den eCampus-Kurs der Vorlesung verfügbar gemacht. Zusätzlich erfolgt die Veröffentlichung zeitgleich über einen Sciebo-Share:
https://uni-bonn.sciebo.de/s/LibjOinCPN623Ip - Die Aufgaben können, sofern ein Drucker verfügbar ist, direkt auf dem ausgedruckten Klausurbogen gelöst werden. Wenn kein Drucker verfügbar ist, können die Aufgaben auf eigenem Papier gelöst werden. Wir empfehlen in diesem Fall kariertes Papier.
- Der Klausur liegt eine Eigenständigkeitserklärung bei, die ausgefüllt (sofern Drucker vorhanden) oder im Wortlaut abgeschrieben (sofern kein Drucker vorhanden) und anschließend unterschrieben werden muss. Ohne diese Erklärung kann die Klausur nicht gewertet werden.
- Die Klausur muss handschriftlich und mit einem dokumentenechten, kontrastreichen (Schriftfarbe blau oder schwarz) Stift gelöst werden. Rein digitale Lösungen (z.B. mit Tablet oder Digitizer) sind nicht zulässig.
- Jede Seite der Lösung ist unbedingt mit dem Namen und der Matrikelnummer zu kennzeichnen, damit eine zweifelsfreie Zuordnung der Lösungen möglich ist.
Abgabe der Lösungen
- Die Prüfungsteilnehmer*innen scannen ihre Lösungen mit einem Scanner oder alternativ mit dem Smartphone oder einer Digitalkamera. Die Abgabe muss aus genau einer Datei bestehen, die alle Seiten der Lösung enthält. Zulässig sind eine PDF-Datei oder ein ZIP-Archiv mit Bilddateien. Es liegt in der Verantwortung der Prüfungsteilnehmer*innen, dass die Lösungen ordentlich sichtbar und lesbar sind. Nicht lesbare Lösungen können nicht gewertet werden.
- Die Abgabe erfolgt durch das Hochladen der gescannten Lösung fristgerecht über den eCampus-Kurs der Vorlesung. Zusätzlich besteht bei Problemen mit eCampus die Möglichkeit der Abgabe über einen Sciebo-Share:
https://uni-bonn.sciebo.de/s/qbDrOFAEeZwncJl
Verspätete Abgaben werden nicht akzeptiert. - Das originale Lösungsdokument ist aufzubewahren. In Einzelfällen kann das originale Lösungsdokument angefordert werden und muss dann postalisch übersandt werden.
Fragen und Probleme
Für Fragen und Probleme während der Klausur wird ein Supportraum über das BigBlueButton System angeboten werden:
https://bbb.informatik.uni-bonn.de/b/mat-jvg-ah1
(der bekannte Vorlesungsraum der SysProg)
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 Adresse 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:
- http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/: C von A bis Z - Das umfassende Handbuch, Jürgen Wolf, Rheinwerk Computing <openbook>
- http://www.cs.princeton.edu/introcs/faq/c2java.html: Tabellarische Gegenüberstellung von Java und C
Studie (2021) über Codeanalyse
Die Kolleg/innen der AG Smith (Prof. Dr. Matthew Smith) führen auch in diesem Durchlauf der SysProg wieder eine Studie über Codeanalyse durch. Stephan Plöger lädt dazu ein:
(eine persönliche Vorstellung erfolgt(e) in der Live-Vorlesung (ohne Aufzeichnung) am Di 2.2.2021 sowie in einer Mail an den Vorlesungsverteiler)
Ich möchte euch herzlich zu einer Studie über Codeanalyse einladen, die ich im Rahmen meiner Promotion hier an der Uni Bonn durchführe.
In der Studie werdet ihr eine Codeanalyse-Aufgabe bearbeiten und zusätzlich zwei Fragebögen ausfüllen, sowie an einem abschließenden Interview teilnehmen.
Die maximale Arbeitszeit für die Hauptaufgabe beträgt 14 Stunden, die ihr frei auf 14 Tage verteilen könnt. Für die Fragebögen und das Interview solltet ihr zusätzliche 30 Minuten einrechnen. Die Teilnahme erfolgt ganz bequem von zu Hause.
Die Studie startet nach der ersten Klausurenphase, also ab dem 02.03.2021, wobei ihr einen individuellen Starttermin auswählen dürft (spätestens 31.03.2021).
Für die vollständige Teilnahme bekommt ihr eine feste Vergütung von 210€! Und natürlich die interessante Erfahrung einer Studienteilnahme und das Kennenlernen von Codeanalyse oben drauf ;-)
In der Studie werdet nicht ihr oder euer Können getestet, sondern das System, das ihr nutzen werdet. Für die Teilnahme an der Studie sind keine Vorkenntnisse erforderlich. Allerdings ist es wichtig, dass ihr Teilnehmer*innen der diesjährigen SysProg seid, um eine homogene Teilnehmer*innengruppe zu gewährleisten.
Mit dem Ausfüllen des folgenden Fragebogens könnt ihr euer Interesse an der Studienteilnahme bekunden:
https://usecap.fra1.qualtrics.com/jfe/form/SV_cJcXMMI0jtzinVb
Das Ausfüllen der Interessensbekundung stellt weder eine Garantie noch eine Pflicht zur Studienteilnahme dar.
Die Studie wird von mir, Stephan Plöger (ploegers@), und Prof. Dr. Matthew Smith ( cs.uni-bonn.desmith@) durchgeführt. Falls ihr Fragen habt, könnt ihr uns gerne kontaktieren. cs.uni-bonn.de
Wir würden uns sehr freuen, wenn ihr uns durch eure Teilnahme unterstützen würdet!
Vielen Dank, Stephan
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 Klausurvorbereitung | Alte Klausuren | ||||||||
---|---|---|---|---|---|---|---|---|---|
WS2013/14 | |||||||||
WS2014/15 | |||||||||
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 über den eCampus Kurs verfügbar ist (siehe oben). Bitte erfragen Sie diese Zugangsdaten nicht per E-Mail! Nachzügler erfahren bei Bedarf die Zugangsdaten ebenfalls über eCampus.
Kapitel | PDF-File |
---|---|
0. Allgemeine Informationen | |
Informationen zur Einführung in C | |
1. Maschinenprogrammierung in Assembler1.1. Motivation | 1.0 Folien 1-80 |
1. Ergänzung: Speicherverwaltung malloc & free | Folien 1-19 |
2. Prozesse und Threads2.1 Prozesse 2.2 Threads 2.3 IPC | |
3. Netzwerkprogrammierung in C 3.1. Motivation 3.2. Netzwerkprogrammierung: Sockets & Co. 3.3. I/O-Multiplexing 3.4. Server-Strukturen | |
(Ggf.) Ergänzung zu Kapitel 1: Fallstudien aus studentischen Programmierprojekten | |
| |
Übungszettel
Hinweise zum Übungsbetrieb auch hier (0.2 Übungen)
PDF-Datei | Ergänzendes Material | Weitere Informationen |
---|---|---|
Übungsblatt 01 | ||
Übungsblatt 02 | ||
Übungsblatt 03 | ||
Übungsblatt 04 | ||
Übungsblatt 05 | fork.c | |
Übungsblatt 06 | ||
Bonuszettel | (von Fraunhofer FKIE) | Freiwillige Bearbeitung (in diesem Jahr keine Bepunktung) |
Übungsblatt 07 | threads_skalarproduct.c | |
Übungsblatt 08 | ||
Übungsblatt 09 | ||
Übungsblatt 10 | ||
Übungsblatt 11 | Freiwillige Bearbeitung, keine Besprechung Dieses Blatt dient der Klausurvorbereitung und enthält nur Bonuspunkte. | |
Bonuszettel | Netzwerkprogrammierung (IDN-NPP) Laser & Light Lab | Freiwillige Bearbeitung, keine Bepunktung |
Zusätzliche Hilfsmittel
Hilfsmittel | ||
---|---|---|
SPAsT Images(SysProgASemblerTool) | ||
Assembler Code Table |
|