Digitale Lehrveranstaltung
Dieses Dokument beschreibt das Konzept und die Organisation der Lehrveranstaltung. Falls Sie es noch nicht kennen, lesen Sie sich die folgenden Erläuterungen bitte sorgfältig durch.
Vorwort
Aus bekanntem Anlass müssen auch im Sommersemester 2020/21 viele Lehrveranstaltungen an der JGU rein "virtuell" stattfinden, ohne persönliche Treffen in der Universität. Nach einer relativ erfolgreichen ersten virtuellen Veranstaltung im Sommersemester 2020 wird die Vorlesung auch in diesem Semester mit ähnlichem Konzept durchgeführt.
Effektives Lernen
Ein rein digitales Format bietet Chancen und Risiken, die anders gelagert sind als in der realen Vorlesung. Ein großer Vorteil ist sicher, nach eigenem Tempo lernen zu können. Wer hätte sich noch nie gewünscht, an einer langweiligen Stelle in der Vorlesung einfach vorspulen zu können? Gleichzeitig besteht aber ein größeres Risiko, die eigene Arbeit zu strukturieren und stetigen Fortschritt zu erzielen (wenn man persönlich in der Vorlesung sitzt und dort im Web surft bekommt man wenigstens mit einem Ohr mit, worum es geht). Auch soziologische Schwierigkeiten sind nicht zu unterschätzen - die Gruppenerfahrung ist für das Lernen sehr wichtig.
Das Konzept unserer Vorlesung sieht daher eine Reihe von Maßnahmen vor, die Ihnen dabei helfen sollen, die Aufgaben, die vor Ihnen liegen möglichst effektiv und effizient anzupacken, und die unangenehmen Seiteneffekte der rein digitalen Veranstaltung möglichst abzumildern.
Veranstaltungskonzept
Die Vorlesung "Einführung in die Softwareentwicklung" hat im wesentlichen drei (fast orthogonale) Ziele:
- Programmiertechniken:
Es sollen Programmiertechniken erlernt und vertieft werden, die in der Einführungsveranstaltung "Einführung in die Programmierung" keinen Platz mehr hatten. Dazu gehören z.B. graphische Benutzerschnittstellen, Eingabe/Ausgabe und Dateien (dieses mal in den Übungen), sowie Nebenläufigkeit (paralleles Programmieren).
- Statisch typisierte Low-Level Programmierung:
Seit einiger Zeit sieht das Lehrkonzept des Institutes für Informatik auch vor, dass in EiP Python unterrichtet wird und daher die Programmierung in einer statisch typisierten Sprache als zusätzliche Programmiertechnik gelernt werden soll. In dieser Veranstaltung wird die Programmiersprache C++ unterrichtet, welche besonders für effiziente und hardwarenahe Implementierungen geeignet ist und damit hinreichend komplementär zu Python ist. C++ hat bekanntermaßen eine hohe Komplexität und auch einige "Macken" die aus der (im Prinzip fünf Jahrzehnte) langen Geschichte der Sprache stammen. Daher ist einiger Aufwand notwendig, und dieser Teil nimmt ca. 50% der Veranstaltung ein. Der Aufwand lohnt sich aber, da man damit Kenntnisse und Fähigkeiten erwirbt, die einem mit Sprachen wie Python oder (dem strukturell sehr ähnlichen) JAVA nicht zugänglich sind.
- Softwaredesign:
Komplexere Softwaresysteme, jenseits von Übungsaufgaben, erfordern eine sorgfältige Planung und Strukturierung. Neben dem Programmieren ist auch eine gründliches Problemverständnis ("Anforderungsanalyse") sowie ein Design einer "Softwarearchitektur" notwendig. Diese Vorlesung behandelt vor allem letzteres: Wie strukturiere ich ein größeres Programm so, dass es (zuverlässig) das tut, was ich möchte, und sich leicht erweitern läßt (falls ich mich mit dem, was ich möchte, geirrt habe oder noch gar nicht endgültig festlegen konnte, was eigentlich fast immer eingangs der Fall ist). Hierzu werden im Schwerpunkt objektorientierte Ansätze besprochen (nicht nur, weil es im Modulhandbuch steht; es ist auch wirklich sehr praktisch für viele Probleme). Komplementär dazu gibt es einen (etwas kleineren) Ausblick auf funktionale Entwurfsstrategien und Muster, und es wird diskutiert, wie man diese beiden Ansätze für verschiedene Probleme gegeneinander abwiegen oder kombinieren kann. Das Feld der Architekturen ist natürlich sehr groß - die Veranstaltung arbeitet daher nicht akademisch-taxonomisch (hierzu gibt es Vertiefungsveranstaltungen) sondern beispielorientiert, mit dem Ziel ein möglichst praxisnahen Eindruck davon zu geben, "wozu das alles am Ende gut ist".
Auf diesen Webseiten sind die Materialien zu Thema C++ und die zum Thema Programmiertechniken und Design regelmäßig entsprechend als C++
und Software
markiert.
Anmerkung zu zukünftigen Plänen: Es ist schon seit längerem geplant, die Veranstaltungen zur Programmierung (EiP, EiS) konzeptionell zu überarbeiten. Nach aktuellem Stand wird die Veranstaltunge EiS mindestens bis zum Sommersemester 2021 in der hier vorgestellten Form (Programmiertechniken, C++, Softwareentwurf) angeboten. Dieser Hinweis ohne Gewähr - die Pläne können sich kurzfristig ändern.
Digitales Veranstaltungskonzept
Um die Veranstaltung im "rein digitalen" Format effektiv zu gestalten, haben wir sie wie folgt strukturiert:
Veranstaltungen
- Vorlesung: Die traditionelle Vorlesung wird in Form vorab aufgezeichneter Videos zur Verfügung gestellt. Man kann also, wie versprochen, vorspulen (ernst gesagt: man kann die Inhalte im eigenen Tempo nach Bedarf durchgehen).
- Zentrales Tutorium: Anders als im offline-Fall gibt es wöchentlich, zur Vorlesungszeit (also Mo 14-16h, c.t.) ein zentrales Tutorium, welches live über MS-Teams (eine interaktive Kommunikationsplatform mit Audio/Video/Textdiskussions-Funktionen) gehalten wird. Das Tutorium vertieft den Vorlesungsstoff und bereitet die Übungsaufgaben vor und nach. Im Tutorium können auch Fragen zur Veranstaltung gestellt werden; hierzu ist ein besonderes Protokoll vorgesehen (siehe unten).
- Übungensgruppen: Es gibt zusätzliche Übungen in Kleingruppen, gehalten von studentischen Tutoren. In diesen Gruppen können individuelle Fragen und Probleme diskutiert werden. Jedes Tutorium erhält einen festen 2h-Zeitslot (die Zeitplanung für die Tutorien ist noch nicht abgeschlossen). Aufgrund der hohen Teilnehmerzahlen gehen wir davon aus, dass ein/e einzelne/r Tutor/in sehr viele Studierende betreuen muss (letztes Semester waren es ca. 50 pro Tutor/in). Daher werden die genannten 2h-Slots von den Tutoren/innen nochmals (nach eigenem Ermessen) in kleinere Gruppen unterteilt. Wir planen derzeit mit ca. 30min pro Gruppe von bis zu 10-15 Studierenden (also 3-4 Gruppen). In den Übungsgruppen besteht, anders als in früheren Jahren, keine formale Teilnahmepflicht, die Teilnahme wird aber dringend empfohlen. Um den Arbeitsablauf etwas zu strukturieren und den Austausch in der Übungsgruppe zu befördern, wird von jedem/r Studierende/n erwartet, dass sie/er sich zu dem Zeitpunkt, an dem das Tutorium stattfindet, bereits aktive mit den Aufgaben beschäftigt hat (1-2h Arbeitszeit). Die Tutoren sind angehalten, jede(n) Teilnehmer(in) regelmäßig persönlich auf den Fortschritt bisherigen anzusprechen. Es ist selbstverständlich kein Problem, zu erklären, wo man hängengeblieben ist und daher noch nichts lösen konnte (z.B. "mein Compiler wirft wirre Fehlermeldungen vom Typ E2342 bei precompiled headers") – um solche Probleme anzugehen, ist die Übung gedacht. Es wird aber als unhöflich betrachtet, sich noch nicht intensiv mit den Aufgaben beschäftigt zu haben. Die Einteilung der Kleingruppen erfolgt zu Semesterbeginn (siehe Abschnitt "Übungsgruppen").
- Selbstorganisierte Arbeit in 5er-Gruppen: Die Übungsaufgaben zu dieser Veranstaltung müssen dieses Jahr in 5er-Gruppen (statt 3er-Gruppen, wie in den füheren Jahren) abgegeben werden. Dabei soll jede/r Teilnehmer/in eine eigene Lösung entwickeln. Zur Abgabe muss sich die 5er-Gruppe dann darüber abstimmen, welche Lösungen am besten sind und in die gemeinsame Abgabe aufgenommen werden soll. Die Studierenden sollen dazu alle Lösungen diskutieren und sich dabei gegenseitig Feedback geben. Zu der finalen Lösung wird es dann eine Korrektur (mit Bewertung) durch die Tutoren geben. Auch eine Diskussion der Lösungswege und Ansätze in der 5er-Gruppe ist natürlich empfohlen (solange alle Gruppenmitglieder sich aktiv involvieren). Wir hoffen, durch diesen tatsächlich etwas aufwändigeren Abstimmungsprozess die soziale Interaktion zu fördern. Grundsätzlich ist eine aktiver Austausch mit anderen Studierenden (natürlich virtuell, z.B. via Teams, nicht in persönlichen Treffen) wichtig und empfehlenswert. Beim isolierten Arbeiten lernt man weniger und es kann auch recht frustrierend sein. Achtung: Teilen Sie nicht einfach die Teilaufgaben auf die Gruppenmitglieder auf - dann lernt man nicht genug und hat schlechte Karten in der Abschlußprüfung.
- Abschlußprüfung: Die Veranstaltung wird mit einer Prüfung abgeschlossen. Diese wird auch im Sommersemester 2020/21 vorraussichtlich wieder die Form einer "Take-Home"-Prüfung haben, die zuhause bearbeitet werden muss. Dies muss allerdings noch vom Prüfungsauschuss genehmigt werden, deshalb gibt es an dieser stelle noch keine festen Zusagen von unserer Seite. Das genau Format wird später bekanntgegeben.
Materialien
- Vorlesungsmaterialien: Die Videos und PDFs der Folien stehen zu Download zur Verfügung. Aus Lastgründen ist ein Download und Ansehen der Videos im "Offline-Modus" durchaus sinnvoll (die Lastsituation kann schwanken und Probleme können auftreten – auch im Sommersemester 2020/21 ist unsere Infrastruktur immer noch teilweise provisorisch; im vergangenen Semester hat es allerdings alles halbwegs reibungslos geklappt, aber das ist natürlich keine Garantie).
- Tipps zur Nachbereitung: Zu jeder Lehreinheit (ein oder mehrere Vorlesungsvideos, die man in einer Woche durcharbeitet) gibt es einige Anregungen, wie man sich weiter mit dem Stoff beschäftigen kann, bevor man die Übungszettel bearbeitet. Dabei handelt es sich um leichtere und sehr praktisch orientierte Übungen, mit denen man den Vorlesungsstoff vertiefen kann. Es kann Sinn machen, das Video immer wieder auf Pause zu stellen und die Konzepte selbst direkt auszuprobieren. Der Schwerpunkt liegt hier auf dem C++ - Teil. Die Nachbereitung ist natürlich rein freiwillig; wir empfehlen aber dringend, nicht nur die Videos anzuschauen sondern Kernkonzepte direkt an (einfachen) Beispielen auszuprobieren.
- Übungsaufgaben: Wie gewohnt gibt es wöchentlich zu bearbeitende Übungszettel. Die Ausgabe und Abgabe erfolgt jeweils Dienstags, bis 14:00h. Übungsaufgaben müssen in Teams à fünf Studierender bearbeitet werden. Für die "aktive" Teilnahme ist es erforderlich, alle Übungsaufgaben zu bearbeiten (bei mehr als zwei fehlenden Abgaben ist eine Entschuldigung beim Tutor notwendig; nur wichtige Gründe sind zulässig [z.B. Krankheit] und die Genehmigung muss bei absehbaren Ereignissen im Voraus eingeholt werden) und dabei mindestens 50% der Punkte zu erreichen. Die Abgabe erfolgt über
gitlab.rlp.net/eis21
und Korrekturen werden elektronisch an die Gruppen zurückgeschickt. Die Übungsaufgaben sind das Kernstück der Veranstaltung. Hier wird der größte Lerneffekt erzielt; entsprechend ist die erfolgreiche Bearbeitung Pflicht.
Was muss ich zum Vorlesungsstart tun?
Zwei Dinge sind sehr wichtig:
- Lerngruppe bilden (5 Studierende): Sie müssen sich sofort zu Veranstaltungsstart in Gruppen zu fünf Studierenden zusammenfinden. Wenn Sie schon die richtigen Personen kennen/im Blick haben - rufen Sie diese an und machen Sie es fest. Wenn Sie noch nicht in einem festen Lernverband sind (der erwartete Fall), gibt es auf Teams den Kanal "Lerngruppe gesucht". Hier können Sie als einer oder Zweiergruppe nach zusätzlichen Mitstreiter(innen) Ausschau halten. Seien Sie offen und kontaktfreudig - die Situation ist speziell, aber eine gute Gelegenheit, neue Kontakte zu knüpfen. Vereinbaren Sie auch sofort, wo Sie sich virtuell treffen können (legen Sie z.B. einen eigenen Teams-Kanal an, oder nutzen Sie die Konferenzsoftware Ihrer Wahl).
- Auswahl der Übungsgruppe: Ihre Lerngruppe muss sich für einen Übungstermin (für die Übungen in Kleingruppen) entscheiden. Die Anmeldung als Lerngruppe muss die Information beinhalten, wann Sie die Übungen besuchen möchten. Die Anmeldung erfolgt über MS Teams. Das genaue Prozedere ist weiter unten im "MS Teams"-Abschnitt genauer beschrieben.
Elektronische Kommunikation
Wir nutzen (mindestens) drei Systeme in dieser Vorlesung:
- Die Jogustine-Mail-Funktion benutzen wir für allgemeine Ankündigungen (Rundmails, Links auf diese Webseiten).
- MS Teams benutzen wir für die individuelle und Gruppenkommunikation. Das Zentraltutorium findet dort statt, wie auch alle Übungen in Kleingruppen. Die Platform kann auch für die Arbeit in Fünfergruppen genutzt werden. Auch die Einteilung der Übungsgruppen erfolgt via Teams (s.u.).
- Diese Webseite: Alle Materialien und Videos werden über diese Webseite verfügbar gemacht. Der Einstiegspunkt ist stets im Reader verlinkt (falls unser Server überlastet sein sollte, könnte die Seite umziehen; daher immer im Reader nachschauen, wenn diese Seite down sein sollte). Die vorproduzierten Videos werden auf dem Panopto-System der JGU gespiegelt, um die Last besser zu handhaben. Ein Teil der Infrastruktur ist immer noch improvisiert – sollte es technische Probleme geben, sagen Sie uns bitte möglichst direkt auf MS Teams Bescheid. Die AG Visual Computing versucht ihr bestes, die Verfübarkeit zeitnah wieder herzustellen.
Kommunikation mit MS Teams
- Unsere Kommunikation erfolgt über Microsoft Teams.
Der Zugang erfolgt über ihre ZDV-Daten.
Wichtig: Beachten Sie, dass sie nach dem eintragen Ihrer E-Mail Adresse (zdvname@students.uni-mainz.de
) auf die Login-Site der JGU Mainz weitergeleitet werden. - Treten Sie dem Team dieser Veranstaltung bei: „Einführung in die Softwareentwicklung (SoSem2021)“.
Team Code: fck9e2b
Anleitung
- Sofern Sie im Browser eingeloggt sind, können Sie auf diesen Link klicken: Discover new Team
- Über die App:
- Gehen Sie dazu auf den Reiter (links) „Teams“,
- dann auf „Join or create Team“.
- Geben Sie den obenstehenden Code in das Feld „Join a Team with a Code“ ein.
Ein Beitritt ist ab sofort möglich. Die Kommunikation via Teams startet aber erst offiziell zum Semesterbeginn (12. April 2021). Vorher bleiben Beiträge und Fragen eventuell unbeantwortet. Alle weitere Kommunikation unsereseits wird vorwiegend auf Teams stattfinden.
Benutzung von Teams
- In jedem Team befinden sich mehrere Themenspezifische Channel (etwa
Vorlesung 01
, Tutorium 01
, etc.). - In jedem Channel können Sie Threads starten, indem Sie über „Start a new Conversation“ eine Nachricht in einen Channel posten.
- Wichtig In dieser Veranstaltung befinden sich ca. 200 Personen. Um die übersichtlichkeit der Channel zu gewährleisten:
- Antworten Sie bitte per „reply“ auf Threads, sofern sie auf eine Nachricht antworten wollen.
- Nutzen Sie gerne Emojis, bei umfrageähnlichen Threads.
Aktuelle Nachrichten / kurzfristige Änderungen
- Werden über Teams veröffentlicht.
- Als Fallback erfolgt auch eine Nachricht per Jogustine-Mail. Beachten Sie jedoch, dass das es bei Nachrichten über Jogustine-Mail. erfahrungsgemäß zu längeren Verzögerungen kommen kann.
Vorlesung
- Die Vorlesung erfolgt per Videoupload.
- Uploadzeitpunkt: Alle Vorlesungen sind bereits online
- Gleichzeitig können Diskussionen und Fragen im jeweiligen Channel (
LE x
) per Chat in Teams besprochen werden.
Diese Channel werden wöchentlich im Rythmus der zugehörigen Übungsaufgaben erstellt.
Zentrales Tutorium
- Im Tutorium werden Sie die praktische Grundlagen am Beispiel C++ kennen lernen, die sie zusätzlich zu den theoretischen Grundlagen der Vorlesung benötigen, um die Übungsaufgaben lösen zu können.
- Im Tutorium werden gegebenenfalls auch Lösungen der Übungsaufgaben besprochen.
- Das Tutorium wird Live im jeweils aktuellen Channel (
LE x
) durchgeführt. - Zeitpunkt: Montags 14 Uhr (ursprünglicher Termin der Vorlesung)
- Gleichzeitig können Sie ihre Fragen im gleichen Channel per Chat stellen.
- Nutzen Sie immer erst die Chatfunktion; vermeiden Sie es, im großen Tutorium ihr Video oder Audiosignal für alle anzuschalten; dies kann zu Chaos führen. Warten Sie immer darauf, dass Sie per Chat aufgerufen werden.
- Es ist wirklich wichtig, dass alle Teilnehmenden hier sehr diszipliniert agieren; ansonsten kann die Durchführung gefährdet werden. Achten Sie auch immer auf technische Ansagen / Aufforderungen (um z.B. die nötige Bandbreite zu reduzieren).
Übungsgruppen
Für die Übungsgruppen gibt es Kanäle in Teams (die Tutoren können bei Bedarf Kanäle für die Untergruppen anlegen). Um zu kommunizieren, welche Studierenden zusammen in einer Gruppe sind, müssen Sie sich in GitLab als Gruppe eintragen (siehe unten). Beachten Sie, dass dies direkt zu Semesterstart erfolgen sollte, da sonst die Einteilung auf die Untergruppen/Kanäle schwierig ist.
Die Übungs(unter-)gruppen treffen sich wöchentlich; dabei wird von jeder Gruppe ein Statusbericht angefragt (wo hängt's - und wenn nirgends, was habt Ihr gelernt?) und Probleme mit der Technik und der Programmierung können ausgiebig besprochen werden. Konkrete Teillösung direkt zu den Übungsaufgaben (über technische Hürden hinaus, wie Compiler-Konfiguration), können natürlich aus Gründen der Fairness nicht gegeben werden.
Folgende Termine stehen für die Übungsgruppen zur Auswahl:
- Mi 16-18 Jessica BOHLAND
- Do 10-12 Julius SCHELLENBERG
- Do 12-14 Quentin ZIMDARS
- Do 16-18 Yanick FRANK
Beachten Sie, dass Termine first-come-first-served vergeben werden. Anmeldungen müssen bis zum 24.4.21 um 12:00 erfolgen.
Abgabe in 5er-Gruppen
- Die Abgabe der Übungsaufgaben erfolgt in Kleingruppen über gitlab.rlp.net.
- Aber keine Angst: Wir werden die Verwendung von
git
bevor wir richtig beginnen ausgiebig üben. - Wichtig Melden Sie sich als erstes einmalig unter gitlab.rlp.net mit ihren ZDV-Daten an und merken Sie sich ihren Gitlab-Namen; in den meisten Fällen ist dieser gleich dem ZDV-Namen, allerdings gibt es auch abweichende Fälle. Wenn Sie sich bei Gitlab anmelden, überprüfen Sie Ihren Gitlab-Namen rechts-oben bei Ihrem Profil.
- Zurück zu Microsoft Teams:
- Sofern Sie noch keine 5er-Gruppe gebildet haben, können Sie sich im Channel
Lerngruppe gesucht
mit den anderen Studierenden absprechen. - Haben Sie eine 5er-Gruppe gebildet, melden Sie sich bitte im Channel
5er Gruppen bitte hier anmelden
an.
- Geben Sie dazu die Gitlab-Namen (zu sehen im Gitlab-Profil, rechts-oben klicken) ihrer Gruppe durch Leerzeichen getrennt an.
- Fügen Sie dahinter die Uhrzeit der von Ihnen gewünschten Übungsgruppe im Format TagStartzeit-Endzeit", also z.B. "
Do14-16
" an. - Die Übungstermine werden first-come-first-served vergeben. Sie sollten daher die von Ihnen bevorzugten Termine in der Reihenfolge angeben, die Sie bevorzugen (beste zuerst). Sie können beliebig viele Termine angeben; der erste, der paßt, wird benutzt.
- Sie sparen uns eine Menge Arbeit wenn Sie das Eingabeformat möglichst exakt einhalten.
- Beispieleintrag:
adamusterfrau bertbeispiel cecileexample dottyscala erwinkatze Do18-20 Do14-16 Fr20-22 Mo08-10
. - In dem Beispiel registrieren sich
adamusterfrau@student.uni-mainz.de
, bertbeispiel@student.uni-mainz.de
cecileexample@student.uni-mainz.de
, dottyscala@student.uni-mainz.de
sowie erwinkatze@student.uni-mainz.de
für eine gemeinsame Gruppe. Dabei wäre wäre Do18-20
der bevorzugte Termin der Gruppe, Do14-16
der nächstbeste, und Mo08-10
der am wenigsten gewünschte.
- Sie werden dann von uns in der Gitlab-Gruppe der Veranstaltung
gitlab.rlp.net/eis21
in der entsprechenden Übungs-Untergruppen als Gruppe registriert.
- Für jede Übungsaufgabe wird ein neues Repository in der Gitlab-Gruppe
Materialien
erscheinen. - Jede Übungsgruppe erhält automatisch einen Klon dieses Repositories mit Schreibrechten. Die Abgabe erfolgt in dieses Repository.
- Die Bewertung können Sie nach der Korrektur (als separater Branch
korrektur
) in dem selben Repository (z.B. per Web interface) abrufen.
- Fragen, die alle Betreffen, können Sie gerne im jeweiligen Microsoft-Teams Channel
LE - X
stellen. - Für die Organisation in den Kleingruppen selbst lohnt es sich sicher einen eigenen Chat in Microsoft Teams zu erstellen.
Anleitung
- Sofern Sie im Browser eingeloggt sind, können Sie auf diesen Link klicken:
Create a new Chat - Über die App:
- Klicken Sie auf den Reiter Chat (links in der Spalte).
- Klicken Sie auf den Bleistift auf einem Blatt Papier (oben in der Leiste neben dem schriftzug „Microsoft Teams“).
- Geben Sie die Namen der Personen ein mit denen Sie einen Chat starten möchten.
Aktueller Zeitplan
Die Vorlesungsfolien und -videos sowie diese Webseite ab sofort vollständig zur Verfügung.
Das erste Zentraltutorium findet am Montag, den 12. April 2021 um 14-16h c.t. im Kanal "LE01 - Hello EiS" auf Teams statt.
Die erste Übungsblatt erscheint am Dienstag, den 13. April 2021 um 14:00 und hat (ausnahmsweise) zwei Wochen Bearbeitungszeit um eventuelle Anfangschwierigkeiten (einrichten des Compilers und Git) zu kompensieren. Die ersten Übungen werden in der zweiten Woche in den entsprechenden Übungs-Channels in Teams stattfinden. Wir bitten euch die 5-er Gruppenwahl innerhalb der ersten Woche zu erledigen.
Wir wünschen Ihnen viel Spaß und Erfolg mit der Einführung in die Softwareentwicklung 2021!
– Ihr EIS Team im SS 21