DVA Praktikum für Informatiker

Sommersemester 2019, G2.09, G2.16, Di 8:00-9:30/9:50-11:20 und Di 11:40-13:10/14:15:30

Hubert Högl, <Hubert.Hoegl@hs-augsburg.de>, http://hhoegl.informatik.hs-augsburg.de

URL: http://hhoegl.informatik.hs-augsburg.de/hhwiki/DVAINF_Praktikum

Gitlab: https://r-n-d.informatik.hs-augsburg.de:8080/dva


Verwenden Sie die folgende E-mail Adresse zum Kurs: dva@hhoegl.informatik.hs-augsburg.de


Die Betreuung erfolgt durch

1   Ziele

Das DVA Praktikum für Informatiker hat zum Ziel, dass Sie mit möglichst vielen Gebieten der Informatik in praktischen Kontakt kommen. Aus einer Themenliste (siehe Abschnitt Versuche) werden Sie ein Semester lang alle ein bis zwei Wochen einen neuen Versuch bearbeiten. Die technische Schwierigkeit steht dabei wegen der kurzen Bearbeitungszeit nicht im Vordergrund. Die Versuche werden eher leichte bis mittlere Anforderungen stellen.

Die Veranstaltung zählt mit 5 Creditpoints, das heisst der Arbeitswaufwand liegt bei 150 Stunden je Gruppenmitglied (45 Std. Präsenz, 105 Std. Selbststudium).

2   Termine

Sommersemester 2019

1.  19.3., M1.01, 8:15
    Vorbesprechung

2.  26.3., G2.16
    Abgabe der Vorbereitungsaufgabe
    Ausgabe Versuch 1

3.  9.4.

4.  16.4.
    Abgabe Versuch 1
    Ausgabe Versuch 2

5.  30.4.
    Abgabe Versuch 2
    Ausgabe Versuch 3

6.  7.5.
    Abgabe Versuch 3
    Ausgabe Versuch 4

7.  14.5.

8.  21.5.
    Abgabe Versuch 4
    Ausgabe Versuch 5

9.  28.5.

10. 4.6.
    Abgabe Versuch 5
    Ausgabe Versuch 6

11. 18.6.
    Abgabe Versuch 6
    Ausgabe Versuch 7

12. 25.6.
    Abgabe Versuch 7

Zur Abgabe treffen wir uns im G2.16. Die Gruppen kommen nacheinander zu folgenden Zeiten. Pro Gruppe sind ungefaehr 20 bis 25 Minuten Zeit fuer das Kolloquium:

 8:00 bis 9:30   | ...   # Gruppe Brovkov
 9:50 bis 11:20  | ...
11:40 bis 13:10  | ...   # Gruppe Hoegl
14:00 bis 15:30  | ...

Gruppen, die noch nicht dran sind, koennen gerne im G2.16 warten, muessen aber dann leise sein. Falls Sie in Ruhe arbeiten moechten, koennen Sie gerne in den meist leeren G2.09 gehen.

3   Ablauf

[ANHÄNGEN]

Diese Menschen und Dienste sind beim DVA Praktikum beteiligt.

In der Vorbesprechung werden wir Gruppen einteilen. Ich rechne mit etwa vier Personen pro Gruppe, so dass insgesamt 12 bis 15 Gruppen entstehen. Jede Gruppe sucht sich einen Versuch aus und bearbeitet ihn in der vorgegebenen Zeit (siehe Abschnitt Termine). Jede Gruppe schreibt im Semester einen Bericht, der für jeden Versuch ein Kapitel enthält. Der Bericht wird mit Sphinx geschrieben und in einem Gitlab Repository fortlaufend aktualisiert. Der Bericht existiert nur in elektronischer Form. Auch die pro Versuch angefertigten Quelltexte werden in gitlab abgespeichert.

In der Bearbeitungszeit des Versuchs arbeiten alle Team-Mitglieder zusammen. Typische Tätigkeiten sind Recherche, Planung, Hardware besorgen, Hardware aufbauen, Programmierung, Fehlersuche, Test und Dokumentation. Sie können entweder ausserhalb der Hochschule oder in den Laboren der Hochschule (G2.09, G2.16) arbeiten. Dazu sind die Labore täglich geöffnet von ca. 8:00 bis 17 Uhr.

Die Abgabe erfolgt nach der ein- oder zweiwöchigen Bearbeitungszeit. Es ist unter Umständen nicht zwingend erforderlich, dass Sie bei der Abgabe persönlich anwesend sind, die Anwesenheit kann jedoch von Ihren Betreuern jederzeit gefordert werden.

Eine Abgabe ohne Anwesenheit würde wie folgt ablaufen: Nach der Bearbeitungszeit befindet sich im Repository der Gruppe das entsprechende Versuchskapitel und alle sonstigen benötigten Dateien, Quelltexte, etc. Falls der Versuch vom Betreuer ohne Probleme aus dem Bericht nachvollzogen werden kann, und auch sonst alle Vorgaben erfüllt werden, dann kann der Versuch auch ohne Anwesenheit abgenommen werden. Dazu ist natürlich ein sehr gut geschriebener Bericht erforderlich. Verbesserungsvorschläge werden über Gitlab Issues an die Gruppe übermittelt. Auf diese Weise wäre es auch möglich, dass Studierende, die sich zu der Zeit nicht an der Hochschule aufhalten (z.B. Auslandssemester), am Praktikum teilnehmen können.

Bei der Abgabe mit Anwesenheit (den Normalfall) stehen den Gruppen die Labore G2.09 oder G2.16 zur Verfügung. Bei der Abgabe findet auch die Versuchsvorführung statt. Der aktuelle Stand des Berichts kann über einen Beamer an die Wand projeziert werden, so dass die Abgabe mit einem Kurzvortrag verbunden werden kann. Der Bericht sollte daher bereits während der Versuchszeit angefertigt werden, so dass möglichst am Tag der Abgabe eine Rückmeldung gegeben werden kann. In der Regel werden zur Vorführung und zum Bericht Verbesserungsvorschläge gemacht, die innerhalb der darauffolgenden Woche umgesetzt werden müssen.

Bei einer zweiwöchigen Bearbeitungszeit kann der Zwischentermin für eine "Lagebesprechung" im Labor genutzt werden. Jede Gruppe kann von den Betreuern dazu in die Labore eingeladen werden.

Die Versuche werden je Gruppe als bestanden oder nicht bestanden gewertet. Die Betreuer führen je Versuch und Gruppe einen "Zustandsautomaten", der wie folgt funktioniert:

dvafsm.png

Der Zustandsautomat der Bewertung.

Jede Gruppe muss bei allen Versuchen den Zustand "bestanden" erreichen.

3.1   Gitlab

Nach der Vorbesprechung lege ich die benötigte Anzahl Repositories an und gebe über Moodle an alle Bescheid. Der owner der Repositories bin ich. Als master wird ein Studierender pro Gruppe ausgewählt, der dann selbständig die weiteren Gruppenmitglieder einteilen kann. Ausserdem wird Fritz Schöppler als Master aufgenommen werden.

In jedem Gitlab Repository liegt an oberster Stelle eine Datei README.md. Der Inhalt wird im Markdown Format geschrieben. Gitlab zeigt den Inhalt dieser Datei ansprechend an. Die Datei dient als erste Beschreibung, wenn jemand das Repository auswählt. Deshalb sollte in etwa der folgende Inhalt angezeigt werden:

# DVA Praktikum für Informatiker

Hochschule Augsburg \
Fakultät für Informatik \
Sommersemester 2019 \
Prof. Dr. Hubert Högl

**Gruppe: 1**

<!-- Nr   Name       MatrNr  Studiengang+Sem,   E-mail -->
1. Hans Maier, #123456, INF6, <Hans.Maier@hs-augsburg.de>
2. Anna Huber, #126987, INF6, <Anna.Huber@hs-augsburg.de>
3. Franz Xaver, #349816, INF8, <Franz.Xaver@hs-augsburg.de>
4. Isolde Weber, #432190, INF8, <Isolde.Weber@hs-augsburg.de>

Der Bericht im HTML Format liegt hier: http://www.hs-augsburg.de/~maier/dva.

Statt der \-Zeichen kann man zum Zeilenumbruch auch zwei oder mehr Leerzeichen am Zeilenende verwenden.

Die Anzeige in gitlab sieht damit so aus:

README.png

Die Struktur auf Gitlab für diese Veranstaltung wird so aussehen: Es gibt eine Gitlab Gruppe dva, unter der die Repositories der einzelnen Projektgruppen gesammelt sind (Achtung: Die "Gruppe" in Gitlab hat nichts mit unserer Gruppeneinteilung zu tun, sondern dient dazu, Repositories zu bündeln).

Gruppe dva: https://r-n-d.informatik.hs-augsburg.de:8080/dva/

In der Gruppe findet man eine Untergruppe berichte-<jahr>, darin sind die Projektgruppen dann als simple Zahlen, z.B. 1:

https://r-n-d.informatik.hs-augsburg.de:8080/dva/berichte-2019/

Sie können Ihr Repository dann entweder mit ssh oder https klonen:

  • git clone ssh://git@r-n-d.informatik.hs-augsburg.de:2222/dva/berichte-2019/1.git
  • git clone https://r-n-d.informatik.hs-augsburg.de:8080/dva/berichte-2019/1.git

Achtung: Das Verzeichnis heisst nach dem Klonen einfach 1. Falls Sie einen sprechenderen Namen möchten, müssen Sie diesen als weiteres Argument hinten angeben, also z.B. so:

  • git clone ssh://git@r-n-d.informatik..../1.git DVA19_Projektgruppe_1

3.2   Der Bericht

3.2.1   Gitlab und WWW

Der "Quelltext" des Berichtes liegt auf dem Gitlab Server. Die generierte HTML Ausgabe des Berichts ("make html") soll in Ihrem RZ WWW-Verzeichnis gespeichert werden. Auf dem Rechner login.rz.hs-augsburg.de findet man dieses Verzeichnis in /www/<user>, wobei <user> Ihr Login-Name ist. Dieses Verzeichnis finden Sie im WWW unter http://www.hs-augsburg.de/~user.

Einen Demo-Bericht finden Sie im HTML Format hier:

http://hhoegl.informatik.hs-augsburg.de/dva/sphinxbericht

Im Bericht steht, wo der Quelltext des Berichtes auf gitlab liegt. Von dort können Sie ihn "klonen" und für Ihre Gruppe anpassen.

Der Bericht kann bei Bedarf über Sphinx auch als PDF Datei ausgegeben werden ("make latex"). Diese Option ist ganz praktisch, wenn man einen Überblick bekommen möchte, wie viele Seiten man schon geschrieben hat. Ausserdem sieht man, ob die Grösse der Bilder im PDF Format stimmt. Wir brauchen die Berichte nicht auf Papier (ganz nach dem Logo "paperless").

3.2.2   Zum Inhalt

Der Bericht enthält für jeden durchgeführten Versuch ein Kapitel. Jedes Versuchskapitel sollte in etwa folgende Gliederung aufweisen:

Datum, Thema

  1. Einleitung

    Motivation, Aufgabenstellung

  2. Grundlagen
  3. Versuchsdurchführung

    Vorbereitung, Durchführung, Ergebnisse, Probleme

  4. Zusammenfassung

    Fazit, Tipps für spätere Gruppen

  5. Literaturangaben

Ganz wichtig: Bei jedem Versuch muss nachvollziehbar sein, wer in der Gruppe welche Arbeit gemacht hat und welcher Zeitaufwand dafür in etwa nötig war! Der Bericht muss darüber Auskunft geben.

Hier ist ein Beispiel für einen Bericht aus dem Wintersemester 2017 (Technische Informatik):

3.3   Die Vorbereitungsaufgabe

Die Vorbereitungsaufgabe dient dazu, dass sich alle Gruppen an den Ablauf gewöhnen. Sie werden im wesentlichen

3.4   Moodle

Wie verwenden den Moodle-Kurs für diese Veranstaltung nur zum Eintragen der TeilnehmerInnen, zur Gruppenbildung, und zur Benachrichtigung. Die Abgabe der Berichte wird in gitlab erfolgen.

4   Die Versuche

Die bisherige Veranstaltungsseite im Intranet ist leider ziemlich veraltet. Viele Links in den Versuchsbeschreibungen funktionieren nicht mehr. Zur schnellen Übersicht, welche Themen wir grob anbieten, habe ich eine Zusammenfassung der alten Versuche extrahiert.

Seit dem Sommer 2018 übertragen wir die alten Versuchsbeschreibungen, die grösstenteils direkt im HTML-Format geschrieben waren, in das Sphinx Format. Alle übertragenen Versuchsbeschreibungen (und einige neue) finden Sie unter diesem Link:

http://chihuahua.informatik.hs-augsburg.de/~hhoegl/DVA

Seit ein paar Jahren veranstalte ich (HH) auch das verwandte Praktikum DVA für Technische Informatiker. Diese Versuche möchte ich auch für Informatiker öffnen.

Ausserdem möchte ich folgende Gebiete verstärkt im Praktikum aufnehmen (Vorsicht, Liste wächst noch):

  • Programmiersprachen Python und Go
  • Embedded Linux
  • Embedded Systems
  • RFID/NFC
  • Open-Source Software
  • Open-Source Software Engineering
  • Linux-Treiber
  • Internet of Things
  • LoRa/TheThingsNetwork
  • Fablab
  • App-Entwicklung für Smartphones

Wenn Sie selber einen Versuch vorschlagen möchten, dann melden Sie sich unter der oben angegebenen E-mail Adresse!

5   Aktueller Stand

Die Kürzel in Grossbuchstaben in der Tabelle halten sich an die Vorgabe in DVAINF_VersucheAlt. Die kleingeschriebenen Kürzel bezeichnen neue Versuche.

DVA fuer Informatiker
Sommer 2018
H. Högl, <Hubert.Hoegl@hs-augsburg.de>
Gruppen 1-11, Versuche V1-V7

       V1         V2         V3        V4        V5        V6         V7
       10.4.      24.4.      8.5.      15.5.     29.5.     12.6.      26.6.

1      IF/USB     gopy       RPI-HAT   MM/STEG   MM/AUDIO  HW/QUANT    SE/LISP

2      MM/JULIA   SE/PROC    go        reactjs   ar        lxc/lxd     web-secur

3      OS/VBOX    HW/QUANT   deep      reactos   go        db          container

4      HW/PL      OS/VBOX    OS/LK     webshop   OS/HACK   lxc/lxd     SE/VC

5      MM/FACE    SE/CRYPT   MM/SPRA   SE/DOTNET SE/KOMP   jscript     MM/GAME

6      OS/LK      deep      (b)        docker    (c)       go          docker-swarm

7      SE/CRYPT   SE/KOMP    HW/MEM    SE/LISP   OS/HACK   blockchain  gopy

8      textnn     (a)        SE/CRYPT  SE/PP     gopar     MM/GAME     OS/LK

9      OS/WEBS    OS/HACK    SE/CRYPT  OS/CM     SE/VC     os/virt     AS/TEMP

10     cs         MM/FACE    OS/WEBB   node      MM/HTML5  SE/CRYPT    git

11     OS/WEBB    SE/CRYPT   MM/GAME   git       MM/MUSIK  HW/QUANT    OS/HACK

Neue Versuche:

  • ar: Augmented Reality
  • blockchain
  • container
  • cs: Client/Server, Virtualisierung (ESX)
  • db: Datenbank
  • deep: Deep Learning
  • docker
  • docker-swarm
  • git: Versionskontrolle mit Git
  • go: Programmiersprache Go
  • gopar: Parallele Programmierung in Go
  • gopy: Vergleich Go und Python
  • jscript
  • lxc/lxd
  • node: NodeJS
  • reactjs
  • reactos
  • textnn: Texterkennung mit neuronalen Netzwerken
  • web-secur: Web-Security
  • webshop

Versuche aus der TI:

  • RPI-HAT

Spezielle Versuche (nur zur einmaligen Durchführung gedacht)

  • (a): Roborace Drehzahlmesser
  • (b): Interessante Kommandozeilenprogramme
  • (c): pyhole Ad-Blocker

6   Alles Sonstige

7   Literatur zum Schreiben von Berichten, zur Teamarbeit und zum Programmieren

  1. In der Bibliothek gibt es ein Regal gleich in der Nähe des Empfangs, das ausgewählte Literatur enthält für Studierende die Berichte, Seminararbeiten, Bachelor- und Masterarbeiten schreiben müssen. Schauen Sie sich dort einfach mal um!
  2. Brian W. Fitzpatrick, Ben Collins-Sussman, Team Geek. A Software Developer's Guide to Working Well with Others, O'Reilly, 2012 (http://proquest.tech.safaribooksonline.de/book/work-relationships/9781449329839).

    Es gibt eine neuere Auflage mit dem Titel Debugging Teams, O'Reilly 2015. (http://proquest.tech.safaribooksonline.de/book/software-engineering-and-development/9781491932049)

  3. Kathrin Passig und Johannes Jander, Weniger schlecht programmieren, O'Reilly 2013 (http://proquest.tech.safaribooksonline.de/book/programming/9783955615697).

DVAINF_Praktikum (zuletzt geƤndert am 2019-03-18 11:58:37 durch HubertHoegl)