# Informatikwerkstatt __Organisation__ --- ## Warum? Um zu * __motivieren__, selbstständig zu werden * __probieren__, ob Ihr mit dem Informatiker-Denken klar kommt * __kommunizieren__, mit Euren Kommilitonen und uns * __experimentieren__, was Euch Spaß macht (Theorie / Praxis) * __bleiben__, damit Ihr in Clausthal erfolgreich studieren könnt --- ## Wer sind wir? === ### Dipl.-Inf. Philipp Kraus  * Vorlesung / inhaltliche Fragen * Projektthemen * technische Probleme
#### Werdegang * Studium Computervisualistik, Universität Koblenz-Landau * Ausbildung Fachinformatiker - Anwendungsentwicklung * Studium theoretische Informatik, TU Clausthal im Bereich Machine Learning, Parallel Computing, Nebenfach Mathematik * seit 2013 Promotion am Lehrstuhl Wirtschaftsinformatik (Prof. Müller), Multiagentensysteme / künstliche Intelligenz * seit ca 17 Jahren Software-Entwickler (Freelancer) === ### Stefanie Schneider, Bsc.  * Termin- / Vortragsorganisation * Anwesenheitsliste / Krankmeldungen * Ausgabe Android Tablets === ### Tutoren * Hendrik Czolbe * Nikita Maslov, B.Sc. * Niklas Schünemann --- ## Die Spielregeln * Termine im IFI PC Pool * betreute Übung Di 17:15-19:00 Uhr (Anwesenheitspflicht) * Vorlesung Mi 08:30-10:00 Uhr (Anwesenheitspflicht) * unbetreute Übungen Mi 10:00-12:00 Uhr & Fr 13:00-15:00 * pünktliches Erscheinen um 17:15 bzw. 08:30 Uhr (st / sine tempore) * einmaliges Zuspätkommen / Fehlen an den Pflichtterminen erlaubt * bei weiteren Fehlzeiten Vorlage eines ärztlichen Attests erforderlich! * wir erwarten kontinuierliche Mitarbeit; sehen wir diese nicht, behalten wir uns Sanktionen vor --- ## Ablauf & Termine === ### Vorlesung (bis Dez) | Datum | Thema & Erläuterung | |:--------|:--------------------| | 23. Okt | [Organisation](/organisation/) | | 24. Okt | [Java Grundlagen](/java-grundlagen/) - Programmiersprachen Basiskonzepte| | 07. Nov | [OOP Grundlagen](/oop-grundlagen/) - Programmiersprachen Strukturkonzepte | | 14. Nov | [OOP Grundlagen](/oop-grundlagen/) - Programmiersprachen Strukturkonzepte | | 21. Nov | [Git & Github Einführung](/git-github/) - Software Entwicklungsorganisation | | 28. Nov | [Android Grundlagen](/android-grundlagen/) - Verwendung Frameworks und Tools | | 05. Dez | Android-Programmierung 1 | | 12. Dez | Android-Programmierung 2 | | 19. Dez | Android-Programmierung 3 | === ### Projektzeitraum (ab Dez) | Datum | Thema | |:--------|:------| | Di 4. Dez | Beginn Projekt- und Gruppenfindung | | Di 18. Dez | Vorstellung der Projektthemen (Vortrag pro Gruppe: 5 Minuten) | | Mi 23. Jan | 1. Milestone (Vortrag pro Gruppe: 7 Minuten ) | | Di 29. Jan | Besprechung der Poster | | Mi 06. Feb | 2. Milestone : Teaser-Vortrag: 1 Minute; danach Posterpräsentation | ⇒ Praxisvorträge - Mi 6. Februar === ### Pflichtabgaben * Ab Kapitel 2 bis zum 5.12.2018 gibt es wöchentliche Pflichtabgaben * Gewisse Übungen in den Folien sind als "Pflichtabgaben" markiert * Sie sind zu den in der Vorlesung genannten Terminen zu bearbeiten * Diese Übungen werden in der Dienstagsübung von den Tutoren abgenommen und benotet * nicht bearbeitet: 0 Punkte * ansatzweise bearbeitet: 1 Punkt * teilweise bearbeitet: 2 Punkte * vollständig bearbeitet: 3 Punkte * Die Abnahmetermine sind nicht dazu da, Fragen zu stellen. Dies solltet Ihr rechtzeitig vorher tun * Ihr müsst insgesamt mindestens 50% der Übungspunkte erreichen, um die Informatikwerkstatt zu bestehen --- ## Hinweise zur Projektorganisation * Auf den folgenden Folien geben wir Euch einige Hinweise, wie ihr bei der Organisation Eures Projektes vorgehen sollt. * In der Softwareentwicklung nennt man das "Vorgehensmodell" * Beispiele: [Scrum](http://scrummethodology.com/), [V-Modell XT](https://www.cio.bund.de/Web/DE/Architekturen-und-Standards/V-Modell-XT/vmodell_xt_node.html) * Vorgehensmodelle in der Softwareentwicklung sind sehr detailliert und umfangreich * Ihr werdet sie während des Studiums noch kennen lernen * Für Euer Projekt in der Informatikwerkstatt geben wir nur ein paar elementare Tipps === ### Hinweise: Zeitplanung * Macht Euch einen groben Zeit-/Projektplan! * Was soll bis wann da sein? * Wer macht was? * Plant regelmäßige Treffen in der Gruppe! * Beachtet dabei die Planung die Meilensteintermine: * 23.01.2019: Erster Prototyp * 29.01.2019: Abgabe / Besprechung der Poster * 06.02.2019: Vorführfertiges System === ### Hinweise: Typische Aufgaben z.B. * Anforderungen (Funktionalität, "Storyboard") beschreiben * Systemarchitektur beschreiben (s.u.) * Klassen mit Attributen und Methoden, Interfaces mit Methoden festlegen und dokumentieren * Funktionalität implementieren * Implementierung testen * Dokumentation: Meilensteinvorträge, Poster! === ### Hinweise: Anforderungen und Architektur * Setzt Euch zunächst zusammen und definiert die geplante Funktionalität Eures Projektsystems * Entwickelt dann die Grobarchitektur Eures Systems, d.h.. * die wesentlichen Komponenten * Benutzeroberfläche (GUI) * Anwendungslogik * Backend, * Serverkommunikation * $\ldots$ evtl. weitere / andere * die Verbindungen zwischen den Komponenten (am besten: grafisch illustrieren, mit Papier, Powerpoint, UML, etc.). * Welche Informationsflüsse gibt es z.B. zwischen GUI, Anwendungslogik, und/oder Backend? === ### Hinweise: Zusammenarbeit * Nutzt GITHUB für die Zusammenarbeit, __NICHT Whatsapp__ * Repository zur gemeinsamen Erstellung des Codes * Issues zur Dokumentation von * Aufgaben * Probleme / auftretende Fehler * und deren Bearbeitungsstand * Trefft Euch regelmäßig! __redet miteinander!!__ * Bei Problemen im Team * früh ansprechen * wenn nicht selbst lösbar --> Betreuer einschalten === ### Hinweise: Dokumentation * Dokumentiert Euren Code, damit Eure Teammitglieder ihn verstehen können * Kurzer Kommentar zu jeder Klasse: Was tut die? * Kurzer Kommentar zu jeder nicht-trivialen Methode: * Was tut die? * Was liefert sie zurück? * Welche Eingaben werden erwartet? * Bei „schwierigen“ Code-Teilen kurzer Kommentar: was tut dieser Teil? Was habt Ihr Euch dabei gedacht? * Wer möchte, kann [Javadoc](https://www.oracle.com/technetwork/java/javase/index-137868.html) ausprobieren * siehe [Dokumentation des Codes im Lastrada-Beispiel](https://github.com/Informatikwerkstatt/informatikwerkstatt.github.io/raw/master/VL2/tasks/lastrada.zip) === # Hinweise: Betreuung * Nutzt die wöchentlichen betreuten Zeiten (Di 17-19 Uhr und Mi 8:30-10 Uhr), um * Fragen zu stellen, * mit den Tutoren Probleme zu besprechen und * Hilfestellung zu bekommen --- ### Projektthemen: Beispiele zur Inspiration * Ihr werdet ermutigt, Euch _eigene_ App-Ideen auszudenken (bitte Rücksprache mit uns halten)! * In der Folge findet Ihr ein paar Beispielideen __Einfachere Themen (beispielhaft)__ * Ideenmanager * Rezepte sammeln und nachschauen * (Persönlicher) Zeitplaner * Persönlicher Wecker (berechnet Weckzeit aus persönlichen Infos) * Lieferapp (Virtuelle Pizza in virtueller Pizzeria bestellen) * Boost Your Grades (Nachhilfeangebote finden und inserieren) * $...$ === ### Projektthemen: Beispiele zur Inspiration (2) __Mittelschwere Themen (beispielhaft)__ * Weihnachtslieferung * Sudoku * Uni Map * Schach * Ballspiele * Passwort Manager mit Funktion zum Generieren von Passwörtern unterschiedlicher Schwierigkeit * $...$ === ### Projektthemen: Beispiele zur Inspiration (3) __Themen für Fortgeschrittene - 2D / 3D Spiel__
[Türme von Hanoi](https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi) mit frei wählbarer Scheibenanzahl und Nutzung der Sensoren, um die Scheiben zu verschieben
[Kugellabyrinth](#/5/1), um eine Kugel mittels Sensoren durch ein beim Start zufällig generiertes Labyrinth zu steuern


=== ### Projektthemen: Beispiele zur Inspiration (4) __Fortgeschrittene / Profis - GPS mit Routing__ * [Schleichwegdatenbank](#/5/2), um alle geheimen Abkürzungen in Clausthal auf dem Handy zu haben * [Party-Route](#/5/2), um alle Partys in Clausthal zu verwalten und den kürzesten Weg zwischen den einzelnen Locations zu berechnen (die Aufnahme von Points-of-Interest, um z.B. etwas zu Essen auf dem Weg zu finden, wäre auch hilfreich) === ### Projektthemen: Beispiele zur Inspiration (5) __Profis - GPS mit Backend__ * [Scotland Yard](https://de.wikipedia.org/wiki/Scotland_Yard_(Spiel): Zu Beginn wird ein Spieler als Mr. X (zufällig) bestimmt. Ziel ist es, Mr. X zu fangen, indem man sich seiner Position nähert, alle paar Minuten werden die Positionen aller Spieler für alle anderen aktualisiert. * [Who-I-Am](#5/3): Es gibt eine Karte mit allen Spielerpositionen und eine Liste mit allen Namen. Jeder Spieler kann für einen Namen die Position oder zu einer Position den Namen erfragen. Der gefragte Spielpartner kann entscheiden, ob die Frage wahrheitsgemäß oder falsch (zufällig) beantwortet wird. Ziel ist es, alle Positionen und Namen korrekt zuzuordnen. --- ## Machst Du Dir Sorgen, das zu schaffen? Wo glaubst Du, dass Schwierigkeiten für Dich auftreten können? > Diskutieren mit den Nachbarn in Deiner Sitzreihe und einem / einer von uns diese Frage (10 Minuten)! === ### Training
=== ### Training
=== ### Training
=== ### Resultat
--- ## Was soll ich hier genau machen? * in der Vorlesung am Rechner mitarbeiten * in den Übungen das Gelernte ausprobieren und erweitern * mit den Kommilitonen links und rechts von Euch sprechen * während der Veranstaltung leise diskutieren und Euch gegenseitig helfen --- ## Welche Ziele sollt Ihr erreichen? * Umgang mit Programmierwerkzeugen (Java, Android, IDE) * Grundlagen der Projektorganisation (Teamarbeit, Organisation, Zeitmanagement) * Präsentation von eigenen Ergebnissen * Selbständiges zielorientiertes Arbeiten erlernen --- ## Darf ich Sachen kopieren? Grundsätzlich __Ja__ aber man muss die **Quelle** angeben, woher man etwas kopiert hat. Sonst ist es ein [Plagiat](https://de.wikipedia.org/wiki/Plagiat), das zum Ausschluss führen kann. > Lernen heißt aber selbstständig erarbeiten, beim Kopieren lernt man nicht! --- ## Wo bekomme ich Hilfe? * Von Kommilitonen, bei persönlichen Treffen & Diskussionen * Im Internet: [Stackoverflow](https://stackoverflow.com/), [Java Newsgroup](https://groups.google.com/forum/#!forum/comp.lang.java.programmer), [Android Developers](https://developer.android.com/support), [Github](https://github.com/) → [existierende Applikationen](https://github.com/search?q=android) anschauen * Für ausländische Studierende * [IZC H.E.L.P.](https://www.izc.tu-clausthal.de/sprachenzentrum/deutsch/help/) * [IZC Sprachtandem](https://www.izc.tu-clausthal.de/sprachenzentrum/deutsch/sprachtandem/) * Tutoren & Mitarbeiter - Beachtet bitte unsere Arbeits- und Wochenendzeiten, wir arbeiten nicht 24 Stunden 7 Tage die Woche --- ## Wo kann man sich zusammensetzen? * [Lebendige Lernorte](https://www.lernorte.tu-clausthal.de/) * [Schreibwerkstatt](https://www.schreibwerkstatt.tu-clausthal.de/) * Gelbes Hörsaalgebäude --- ## Wir bieten nur die Basis * Das Script und die Veranstaltung sind __nur__ eine Grundlage * Probiert selbstständig alles aus * Werdet aktiv bei Problemen / Fragen → Wir helfen Euch, zu lernen * Im Team lernt Ihr am meisten → arbeitet mit unterschiedlichen Menschen zusammen