#format rst #language de DVA Praktikum für Informatiker ============================== .. Sommersemester 2018, G2.16, Di 8:00-9:30, 9:50-11:20, 11:40-13:10, 14:00-15:30 Sommersemester 2020 .. , G2.16, Di 8:00-9:30/9:50-11:20 und Di 11:40-13:10/14:15:30 Hubert Högl, , http://hhoegl.informatik.hs-augsburg.de URL: http://hhoegl.informatik.hs-augsburg.de/hhwiki/DVAINF_Praktikum Mitschnitt der Einführungsveranstaltung vom 26.3., 9:50-11:20, https://cloud.hs-augsburg.de/s/RdL8dim6FxgcGLB Moodle-Kurs SoSe2020: https://moodle.hs-augsburg.de/course/view.php?id=3236 Gitlab: https://r-n-d.informatik.hs-augsburg.de:8080/dva .. Organisation (nur Betreuer): http://hhoegl.informatik.hs-augsburg.de/dva/inf/orga/ ---- .. Verwenden Sie die folgende E-mail Adresse zum Kurs: **dva@hhoegl.informatik.hs-augsburg.de** ---- .. contents:: Inhalt .. sectnum:: Die Betreuung erfolgt durch * Hubert Högl (HH) * Volodymyr Brovkov (VB) * Fritz Schöppler (FS) * Lorenz Dieminger (LD) 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 Teammitglied* (45 Std. Präsenz, 105 Std. Selbststudium). .. Modulhandbuch INF Bachelor: 4 SWS, 5 CP, Praesenzzeit 45 Std, Selbststudium 105 Std, Gesamtaufwand 150 Std. "Bewertet wird eher das Vorgehen, als das Ergebnis." .. _Termine: Termine ------- Sommersemester 2020 Alle Treffen finden bis aus weiteres über Videokonferenz (Zoom) statt. :: 1. 26.3., Zoom Vorbesprechung 2. 2.4., Zoom Besprechung der Vorbereitungsaufgabe Ausgabe Versuch 1 (2 Wo) (9.4. Gründonnerstag frei) 3. 16.4. Abgabe Versuch 1 Ausgabe Versuch 2 (2 Wo) 4. 30.4. Abgabe Versuch 2 Ausgabe Versuch 3 (2 Wo) 5. 14.5. Abgabe Versuch 3 Ausgabe Versuch 4 (2 Wo) (21.5. Christi Himmelfahrt frei) 6. 28.5. Abgabe Versuch 4 Ausgabe Versuch 5 (2 Wo) 7. 11.6. Abgabe Versuch 5 Ausgabe Versuch 6 (2 Wo) 8. 25.6. Abgabe Versuch 6 .. --- Sommer 2018 --- 1. 20.3. Vorbesprechung, M1.01, 8:00 2. 27.3. Abgabe der Vorbereitung, Ausgabe Versuch 1 Zwei Wochen Zeit! (Ostern 3.4. frei) 3. 10.4. Abgabe Versuch 1, Ausgabe Versuch 2 4. 17.4. 5. 24.4. Abgabe Versuch 2, Ausgabe Versuch 3 Zwei Wochen Zeit! (1. Mai) 6. 8.5. Abgabe Versuch 3, Ausgabe Versuch 4 EINE Woche Zeit! 7. 15.5. Abgabe Versuch 4, Ausgabe Versuch 5 Zwei Wochen Zeit! (Pfingsten 22.5. frei) 8. 29.5. Abgabe Versuch 5, Ausgabe Versuch 6 9. 5.6. 10. 12.6. Abgabe Versuch 6, Ausgabe Versuch 7 11. 19.6. 12. 26.6. Abgabe Versuch 7 Zur Abgabe treffen wir uns im G2.16 bzw. machen diese über ein Videokonferenzsystem. Die Teams kommen nacheinander zu folgenden Zeiten. Pro Team sind 30 Minuten Zeit fuer den Vortrag und das Kolloquium: .. 8:00 bis 9:30 | 1, 4, 6, 7 9:50 bis 11:20 | 5, 8, 9 11:40 bis 13:10 | 2, 3, 11 14:00 bis 15:30 | 10 :: 8:00 bis 11:20 | Gruppe Brovkov Team1 8:00 - 8:30 Team2 8:30 - 9:00 Team3 9:00 - 9:30 Team4 9:50 - 10:20 Team5 10:20 - 10:50 Team6 10:50 - 11:20 11:40 bis 15:30 | Gruppe Hoegl Team56 11:00 - 11:30 !!! Team51 11:40 - 12:10 Team52 12:10 - 12:40 Team53 12:40 - 13:10 Team54 14:00 - 14:30 Teams, die noch nicht dran sind, koennen gerne im G2.16 warten, muessen aber dann leise sein. Ablauf ------ .. figure:: workflow1.png :width: 500 :align: center *Diese Menschen und Dienste sind beim DVA Praktikum beteiligt.* In der **Vorbesprechung** werden wir Teams einteilen. Ich rechne mit etwa vier Personen pro Team, so dass insgesamt 12 bis 15 Teams entstehen. Jedes Team sucht sich einen Versuch aus und bearbeitet ihn in der vorgegebenen Zeit (siehe Abschnitt Termine_). Jedes Team 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 des Teams 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 Teams ü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 Teams 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. Jedes Team kann von den Betreuern dazu in die Labore eingeladen werden. Die Versuche werden je Team als **bestanden** oder **nicht bestanden** gewertet. Die Betreuer führen je Versuch und Team einen "Zustandsautomaten", der wie folgt funktioniert: .. figure:: dvafsm.png :width: 350 :align: center *Der Zustandsautomat der Bewertung.* Jedes Team muss bei allen Versuchen den Zustand "bestanden" erreichen. 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 Team ausgewählt, der dann selbständig die weiteren Teammitglieder einteilen kann. 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 schön formatiert an. Die Datei dient als erste Beschreibung, wenn jemand das Repository auswählt. Deshalb sollte in etwa der folgende Inhalt enthalten sein: :: # DVA Praktikum für Informatiker Hochschule Augsburg \ Fakultät für Informatik \ Sommersemester 2019 \ Prof. Dr. Hubert Högl **Team: 1** 1. Hans Maier, #123456, INF6, 2. Anna Huber, #126987, INF6, 3. Franz Xaver, #349816, INF8, 4. Isolde Weber, #432190, INF8, 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: .. image:: README.png :align: center :width: 500 Mit dem Werkzeug ``grip`` (https://github.com/joeyespo/grip) kann man bereits auf dem Entwicklungsrechner prüfen, wie die ``README.md`` Datei formatiert wird. Die Struktur auf Gitlab für diese Veranstaltung wird so aussehen: Es gibt eine Gitlab Gruppe ``dva``, unter der die Repositories der einzelnen Projektteams gesammelt sind (Achtung: Die "Gruppe" in Gitlab hat nichts mit unserer Teameinteilung 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-``, darin sind die Projektteams 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_Projektteam_1`` Der Bericht ``````````` 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/``, wobei ```` 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 Ihr Team 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"). 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 Teams 5. Literaturangaben **Ganz wichtig:** Bei jedem Versuch muss nachvollziehbar sein, wer im Team 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): - Gitlab: https://r-n-d.informatik.hs-augsburg.de:8080/xwowka/dva-ws17-gruppe5 - WWW: https://www.hs-augsburg.de/~xwowka .. Weiteres Beispiel: https://r-n-d.informatik.hs-augsburg.de:8080/mkep/dva-ti3-ws17-gruppe2 https://www.hs-augsburg.de/~cgraber/ Die Vorbereitungsaufgabe ```````````````````````` Die Vorbereitungsaufgabe dient dazu, dass sich alle Teams an den Ablauf gewöhnen. Sie werden im wesentlichen - sich mit Sphinx anfreunden (http://www.sphinx-doc.org/en/master/contents.html) - sich mit Gitlab anfreunden (https://about.gitlab.com) - den Demobericht auf Ihr Team personalisieren und in Ihr Gitlab Repository aufnehmen - die HTML Ausgabe des Berichtes auf Ihr Web-Verzeichnis im RZ ablegen (das müssen Sie natürlich nach jeder Veränderung des Berichts wiederholen) Moodle `````` Wie verwenden den Moodle-Kurs für diese Veranstaltung nur zum Eintragen der TeilnehmerInnen, zur Teambildung, und zur Benachrichtigung. Die Abgabe der Berichte wird in gitlab erfolgen. .. - Zum Moodle-Kurs: https://moodle.hs-augsburg.de/course/view.php?id=1388 - Zum Moodle-Kurs SoSe2019: https://moodle.hs-augsburg.de/course/view.php?id=2394 - Zum Moodle-Kurs SoSe2020: https://moodle.hs-augsburg.de/course/view.php?id=3236 .. _Versuche: 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! Aktueller Stand --------------- Die Kürzel in Grossbuchstaben in der Tabelle halten sich an die Vorgabe in ``_. Die kleingeschriebenen Kürzel bezeichnen neue Versuche. :: DVA fuer Informatiker Sommer 2020 H. Högl, Teams 1-6 und 51-56, Versuche V1-V6 V1 V2 V3 V4 V5 V6 2 JavaScript 3 Git/Gitlab 4 Gitlab CI/CD 5 ? 6 Git 51 Jenkins 52 Rust 53 Dart/Flutter 54 SE/CRYPT 56 Git ---- Neue Versuche: - app: Android App - ar: Augmented Reality (+ virtual reality) - blockchain - container - cs: Client/Server, Virtualisierung (ESX) - db: Datenbank - deep: Deep Learning - docker (auch mit "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 Alles Sonstige -------------- * Wenn möglich, sollten Sie die Versuche mit dem Betriebssystem *Linux* und *freier Software* machen. * Beim Kryptografie-Versuch können Sie gerne auch mal das *Python Cryptography Toolkit* verwenden: https://pypi.org/project/pycrypto * Bei den Literaturangaben zu den Versuchen sollten wir öfter Bücher erwähnen, die wir als Hochschule von der Verlagen herunterladen können. Wir zahlen den Verlagen dafür auch viel Geld, deshalb sollten wir das Angebot nutzen. Nur ein paar Beispiele: * Michael Welschenbach, **Kryptographie in C und C++**, 2001, Springer. https://link.springer.com/book/10.1007%2F978-3-642-56445-1 oder * Albrecht Beutelspacher, **Kryptologie**, 10. Auflage, Springer 2015. https://link.springer.com/content/pdf/10.1007%2F978-3-658-05976-7.pdf oder * Wolfgang Ertel, **Angewandte Kryptographie**, 4. Auflage, Hanser 2012. https://www.hanser-elibrary.com (Zugang über VPN oder Shibboleth) Die wichtigsten Links sind - Springer https://link.springer.com - Hanser https://www.hs-augsburg.de/bibliothek/Hanser-eLibrary.html Mehr finden Sie unter https://www.hs-augsburg.de/bibliothek/bibliothek-a-z.html * Ausserdem gibt es mittlerweile viele freie Bücher zu vielen Themen, die unter offenen Lizenzen erschienen sind. Solche Literaturangaben sollte man immer an erster Stelle nennen. 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). 4. Christina Czeschik und Matthias Lindhorst, Weniger schlecht über IT schreiben, O'Reilly 2018 (https://proquest.tech.safaribooksonline.de/book/communications/9781492070177).