Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik

SPiC - Übungen im WS 2021/22

Allgemeines

Der Übungsbetrieb umfasst Tafel- und Rechnerübungen. Die Tafelübungen dienen der Vermittlung und Vertiefung des zur Bearbeitung der Übungsaufgaben notwendigen Wissens. In den Rechnerübungen sind die Arbeitsplätze des Rechnerraums für SPiC Studierende reserviert. In diesen Übungen sollen die Aufgaben bearbeitet werden, wobei in der Regel ein Betreuer zur Verfügung stehen wird um bei Bedarf Hilfestellung zu geben.

In den Aufgaben wird die Systemprogrammierung auf zwei verschiedenen Ebenen geübt: Zum einen in Form eines Steuerprogrammes direkt auf Hardware eines AVR Mikrocontrollers, zum anderen im (stark vereinfachten) Nachbau einiger gängiger Systemwerkzeuge auf einer Linux Systemschnittstelle.

Dokumentationsbereich

Die Datenblätter für den Mikrocontroller finden Sie auf der SPiCboard Webseite, die Dokumentation für die libspicboard und die avrlibc auf der libspicboard-Doku Seite.

Eine Übersicht über gängige libc Funktionen und Systemaufrufe sind in der Linux libc-Doku hinterlegt, vollständige Informationen finden Sie in den jeweiligen Manpages.

Tafelübung

Die Tafelübung umfasst die Screencasts aus den vergangenen Semestern sowie synchrone Termine zur Vertiefung des Stoffs und Nachbesprechung der Übungsaufgaben. Um letztere möglichst effizient zu nutzen, ist es notwendig, dass die Studierenden die Videos im Vorfeld selbstständig vorbereiten.

Wir behalten uns Änderungen der Folien und Aufzeichnungen während des Semesters vor.

Die Großteil der Folien und Aufzeichnungen stammt aus dem Sommersemester 2020. Videos, die mit WS gekenntzeichnet sind, wurden für das Wintersemester 2020/21 ergänzt.



Kurzbeschreibung Video Folien Annotierte
Folien
Material
Übungswoche 1
18.10.2021
01.2 Übungsumgebung einrichten
01.3 Entwicklungsumgebung (SPiC IDE)
01.4 Hands-On (Licht)
Tafelübung: Organisatorisches, Stoff für erste Woche
PDF
PDF
PDF
PDF


PDF

Übungswoche 2
25.10.2021
02.1 Compileroptimierungen
02.2 Hands-On (Signallampe)
03.1 Variablen
03.2 Bitoperationen
WS.2 Aufgabe (zaehler) (WS)
Tafelübung: Fragestunde
PDF
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF


Übungswoche 3
01.11.2021
04.1 Ein-/Ausgabe über Pins
04.2 Hands-On (IO)
05.2 Zeiger und Felder
07.1 Interrupts
07.2 Synchronisation
07.3 Schlafmodi
07.4 Hands-On (Einfacher Interruptzähler)
WS.3 Aufgabe (izaehler) (WS)
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF
PDF


Übungswoche 4
08.11.2021
05.1 Module
05.3 Hands-On (Statistikmodul)
WS.4 Aufgabe (button) (WS)
Tafelübung: Besprechung Aufgabe 1, Fragestunde
PDF
PDF
PDF

PDF



Übungswoche 5
15.11.2021
Tafelübung: Besprechung Aufgabe 2, Fragestunde
Übungswoche 6
22.11.2021
08.1 Zustandsautomaten
08.2 Zeitgeber
08.3 Hands-On (Kaffeemaschine)
08.4 Aufgabe (ampel)
Tafelübung: Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF

PDF

Übungswoche 7
29.11.2021
09.1 Strings
09.2 Hands-On (Laufschrift)
Tafelübung: Besprechung Aufgabe 3, Fragestunde
PDF
PDF

PDF


Übungswoche 8
06.12.2021
10.1 Linux Einführung
10.2 Stringfunktionen
10.3 Dynamische Speicherverwaltung
10.4 Fehlerbehandlung
10.5 Die Funktion main()
10.6 Hands-On (Linux, GCC & Valgrind)
10.7 Aufgabe (concat)
Tafelübung: Fragestunde
PDF
PDF
PDF
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF


PDF

Übungswoche 9
13.12.2021
11.2 GNU make
11.3 Hands-On (sgrep)
WS.5 Aufgabe (trac) (WS)
Tafelübung: Besprechung Aufgabe 4, Fragestunde
PDF
PDF
PDF

PDF



Übungswoche 10
20.12.2021
11.1 Dateien und Dateisysteme
11.4 Aufgabe (printdir)
Tafelübung: Besprechung Aufgabe 5, Fragestunde
PDF
PDF

PDF
PDF

Übungswoche 11
27.12.2021
Übungswoche 12
03.01.2022
Übungswoche 13
10.01.2022
12.1 Prozesse
12.2 Minimale Shell
12.3 Hands-On (run)
12.4 Aufgabe (mish - Teil A)
Tafelübung: Besprechung Aufgabe 6, Fragestunde
PDF
PDF
PDF
PDF

PDF
PDF
PDF
PDF




mish_vorlage

Übungswoche 14
17.01.2022
13.1 Signale
13.2 Hands-On (Stoppuhr)
13.3 Aufgabe (mish - Teil B & C)
Tafelübung: Besprechung Aufgabe 7, Fragestunde
PDF
PDF
PDF

PDF
PDF
PDF

Übungswoche 15
24.01.2022
Tafelübung: Fragestunde


Übungswoche 16
31.01.2022
Tafelübung: Besprechung Aufgabe 8, Fragestunde


Übungswoche 17
07.02.2022
Tafelübung: Klausurfragestunde


Rechnerübung

Die Rechnerübungen starten in der zweiten Vorlesungswoche (ab 25.10.2021) und enden mit den Übungsaufgaben (bis 28.01.2022). Es dürfen auch beide Rechnerübungen besucht werden.

Der Präsenztermin findet im genannten CIP Pool (Rechnerarbeitsraum) statt, wo Studierende ein SPiCboard zur Verfügung gestellt bekommen. Für die online abgehaltenen Rechnübung kann via XPRA oder über die SPiC VM (siehe Rubrik oder Übungsvideos 01.2) auf den CIP Pool zugegriffen werden. Als Entwicklungsplattform dient in allen Fällen die SPiC-IDE (siehe Rubrik oder Übungsvideos 01.3). Die Projektverzeichnisse (/proj/i4spic/<login>) sind ebenfalls über alle drei Zugriffsmöglichkeiten (in der VM muss die Remote IDE verwendet werden) zugreifbar, weshalb auch das Mischen von Präsenz- und Onlineterminen möglich ist.

Für den Onlinetermin gilt im speziellen: Bitte halten Sie Ihre IDM-Kennung bereit (zum Beispiel jy52coty), wenn der Tutor auf Ihren Code schauen soll. Um mit ihm darüber hinaus den Inhalt der SPiC-IDE zu teilen, halten Sie bitte Ihren Zugriffscode bereit (zum Beispiel SPiCxxxxxxx).

Um umbeabsichtigte Plagiate zu vermeiden, können Tutoren sogenannte Breakout Räume (Zoom Hilfeseite [en]) verwenden. In einem solchen Raum befinden sich nur der Tutor und der Studierende mit Frage und so können auch Details im Code besprochen werden.

Bei Problemen mit Zoom, bietet das RRZE Hilfeseiten an:

Übungsaufgaben

Nr. Titel Kurzbeschreibung Ausgabe Bearbeitungszeit
(in Tagen)
Zweiergruppen Abzugebende
Dateien
Punkte
1 zaehler Kennenlernen der Umgebung,
Implementierung eines Zähler-Programms
25.10.2021 9 Nein zaehler.c 6
2 izaehler Interrupts, Nebenläufigkeit, IO 01.11.2021 9 Nein izaehler.c 12
3 button IO, Module, Tests 08.11.2021 16 Ja button.c, test-button.c 14
4 ampel Zustandsmaschinen, Interrupts, Synchronisation 22.11.2021 16 Ja ampel.c 15
5 concat C unter Linux, Speicherallokation, Strings 06.12.2021 9 Nein concat.c 10
6 trac Ein-/Ausgabe 13.12.2021 9 Ja trac.c 9
7 printdir POSIX, Strukturen 20.12.2021 9 Ja printdir.c 12
8 mish POSIX-Prozesse, Signale 10.01.2022 23 Ja mish.c 22

Abgabe und Bewertung der Übungsaufgaben

Die Abgabe erfolgt an den Rechnern im CIP-Pool, mit dem Skript /proj/i4spic/bin/abgabe oder durch die SPiC-IDE und muss vor dem Abgabetermin erfolgen. Eine Abgabe nach dem Abgabetermin per eMail ist nicht möglich. Zur Bearbeitung der Aufgaben wird Ihnen automatisch ein Projektverzeichnis angelegt nachdem Sie sich zu einer Übung angemeldet haben. Der Pfad zu diesem Verzeichnis lautet /proj/i4spic/<login>, wobei <login> für Ihren Benutzernamen im CIP-Pool steht. Bitte bearbeiten Sie Ihre Aufgaben in diesem Verzeichnis und verwalten Sie das Verzeichnis wie in der ersten Aufgabenstellung beschrieben, da ansonsten das Abgabeprogramm Ihre Lösung nicht finden kann.

Die abgegebenen Aufgaben werden von uns korrigiert. Die korrigierten Abgaben finden Sie in ihrem Projektordner im Unterordner korrektur. Die Ergebnisse der Korrektur sind ausserdem nach Login im Waffel einsehbar.

Literaturempfehlungen

Zur Einführung in die Programmiersprache C haben wir in der Vorlesung die folgenden Bücher kurz vorgestellt:

  • C-Einführungsbuch "C als erste Programmiersprache": verfügbar bei Springerlink online (nur aus dem Uni-Netz)
  • Karlheinz Zeiner: Programmieren lernen mit C. Carl Hanser, 4. Auflage, 2000.
  • Steve Oualline: Practical C Programming. O'Reilly, 1991.
  • Peter Darnell, Philip Margolis: C: A Software Engineering Approach. Springer, 1991.
  • Brian Kernighan, Dennis Ritchie: The C Programming Language. Prentice Hall, 1988 (in der deutschen Übersetzung 1990 bei Hanser erschienen)

Zum Thema UNIX-Systemprogrammierung sind die folgenden Bücher empfehlenswert:

  • Helmut Herold: Linux/Unix Systemprogrammierung, Addison-Wesley, München, September 2004.
  • A. S. Tanenbaum, A. S. Woodhull: Operating Systems: Design And Implementation, Prentice Hall, 1997.
  • R. W. Stevens: Advanced Programming in the UNIX Environment. Addison-Wesley, 1992.

UnivIS Informationen

Nachstehende Übungstermine sind vorläufig und werden sich vermutlich noch ändern bzw. erweitert werden.

Rechnerübungen zu Systemnahe Programmierung in C (RÜ SPiC)

Verantwortliche
Tim Rheinfels, M. Sc., Benedict Herzog, M. Sc., Phillip Raffeck, M. Sc.

Angaben
Übung
Online/Präsenz
2 SWS, Sprache Deutsch, Zweiter Termin am Dienstag nach Bedarf!

Studienfächer / Studienrichtungen
WF ME-BA 3

Kurse
      
Di  10:15 - 11:45  Zoom-Meeting
Kurs R01, Link zur Videokonferenz im StudOn!, erwartete Teilnehmer: 23
Alexander von der Haar
      
Di  14:15 - 15:45  01.153-113 CIP
Kurs R02, Nach Bedarf!, erwartete Teilnehmer: 23
N.N.
      
Do  12:15 - 13:45  01.153-113 CIP
Kurs R03, erwartete Teilnehmer: 23
Phillip Raffeck


Übungen zu Systemnahe Programmierung in C (für Wiederholer) (Ü SPiC)

Verantwortliche
Tim Rheinfels, M. Sc., Benedict Herzog, M. Sc., Phillip Raffeck, M. Sc.

Angaben
Übung
Präsenz
2 SWS, Sprache Deutsch, Termin am Donnerstag nach Bedarf!
Asynchrone Lehrveranstaltung, Der Vorlesungs- und Übungsstoff wird per Videos angeboten -- zusätzlich gibt es synchrone Termine zur Besprechung von Fragen und zur Vertiefung.

Studienfächer / Studienrichtungen
WF ME-BA 3
WF EEI-BA 3

Kurse
      
Mo  12:15 - 13:45  0.031-113
Kurs T01
Tim Rheinfels
      
Do  16:15 - 17:45  0.031-113
Kurs T02, Nach Bedarf!
N.N.