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 im Sommersemester 2020 die Lehrveranstaltungen an der JGU rein "virtuell" stattfinden, ohne persönliche Treffen in der Universität. Das Team der Veranstaltung "Einführung in die Softwareentwicklung" hat sich Mühe gegeben, in kurzer Zeit ein möglichst sinnvolles und ansprechendes "digitales" Angebot zu erstellen. Offensichtlich ist vieles improvisiert und experimentell - wir freuen uns daher auch über Feedback und Verbesserungsvorschläge (für geeignete Kanäle: siehe unten) und bitten um Verständnis, dass sich mit knappen Ressourcen natürlich nicht alles perfekt umsetzen läßt. Trotz allem sind wir aber überzeugt, Ihnen einen interessanten und wertvollen Kurs anbieten zu können und freuen uns auf das gemeinsame Abenteuer der ersten rein virtuellen Lehrveranstaltung.
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 in der Vorlesung 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 - hier ist das Modulhandbuch schuld) 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 arbeit 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.
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 in früheren Jahren / 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). Das Tutorium wird von einem studentischen Tutor gehalten, um möglichst nah an den Fragen der Studierenden zu sein.
- Übungensgruppen: Es gibt zusätzliche Übungen in Kleingruppen, gehalten von fünf weiteren studentischen Tutoren. In diesen Gruppen können individuelle Fragen und Probleme diskutiert werden. Die Tutorien finden Donnerstags an festen Terminen (Do10-12h, Do12-14h, 2x Do14-16h, Do16-18h) statt. Rein numerisch mus jede/r Tutor/in beim aktuellen Stand der Anmeldungen fast 50 Studierende betreuen. 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 über den Reader.
- Selbstorganisierte Arbeit in 5er-Gruppen: Die Übungsaufgaben zu dieser Veranstaltung müssen dieses Jahr in 5er-Gruppen (statt 3er-Gruppen, wie in den Vorjahren) 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 Klausur.
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 (wir kennen die genaue Lastsituation zu Semesterstart noch nicht).
- 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 Montags, 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" 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: Sobald sich Ihre 5er-Gruppe zusammengefunden hat, melden Sie sich bitte im Channel „5er Gruppen bitte hier anmelden“ in Microsoft Teams an. Danach können Sie sich im Reader für einen Übungsslot am Donnerstag (2h slot) anmelden. Die fünf 2h-Zeitslots, die hier zur Verfügung stehen, werden (je nach Auslastung) von den Tutoren weiter unterteilt. Die Unterteilung kann sich im Laufe des Semesters ändern (vergröbern, falls die Teilnehmerzahlen sinken sollten).
Elektronische Kommunikation
Wir nutzen drei Systeme in dieser Vorlesung:
- Den JGU-Reader benutzen wir für allgemeine Ankündigungen (Rundmails, Links auf diese Webseiten) sowie zur Einteilung der Übungsgruppen.
- 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.
- 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. Die Verteilung über den Webserver ist experimentell; sollten Probleme auftreten, informieren Sie uns bitte (dann schalten wir den Videodownload ab)!
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 (SoSe20)“.
Team Code: x6xi026
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.
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 knapp 250 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 Message-Center. Beachten Sie jedoch, dass das es bei Nachrichten über Message-Center erfahrungsgemäß zu längeren Verzögerungen kommen kann.
Vorlesung
- Die Vorlesung erfolgt per Videoupload.
- Uploadzeitpunkt: Alle Vorlesungen sind bereits online (einige Videoformate können in den ersten Tagen des Semesters u.U. hinterherhinken, da noch Übertragungszeiten/Transcoding nötig ist)
- Gleichzeitig können Diskussionen und Fragen im jeweiligen Channel (
Vorlesung 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.
- Das Tutorium wird Live im jeweils aktuellen Channel (
Tutorium 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 (Donnerstags)
Für die fünf Ü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 umgehend 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.
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 ersten einmalig unter gitlab.rlp.net mit ihren ZDV-Daten ein.
- Zurück zu Microsoft Teams:
- Sofern Sie noch keine 5er-Gruppe gebildet haben, können Sie sich im Channel
Learngruppe 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 ZDV-Namen (die IDs vor den E-Mailendungen @students.uni-mainz.de
) ihrer Gruppe durch Leerzeichen getrennt an. - Sie werden dann von uns unter
gitlab.rlp.net
als Gruppe registriert.
- Für jede Übungsaufgabe wird ein neues Repository in der Gitlab-Gruppe erscheinen.
- 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
Übungsaufgabe 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 stehen ab Samstag, dem 18. April 2020 online vollständig zur Verfügung. Einzelne Teile (Videos in alternativen Formaten bzw. gespiegelt auf dem Panopto-System) erscheinen ggf. verzögert, da die Leistungsfähigkeit der Systeme begrenzt ist (Bandbreite, Transcoding, etc.)
Das erste Zentraltutorium findet bereits am Montag, den 20. April 2020 um 14-16h c.t. statt. Hierzu wird ein entsprechender Kanal auf MS-Teams angelegt.
Die ersten Übungen in Kleingruppen finden ebenfalls bereits in der ersten Woche, ab dem 23. April 2020 statt.
Wir wünschen Ihnen viel Spaß und Erfolg mit der (ersten rein virtuellen) Einführung in die Softwareentwicklung 2020!