„Hallo Welt!“ für Fortgeschrittene Seminar im Sommersemester 2015 Tobias Werth, Daniel Brinkers Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Menü Überblick über Seminar und Programmierwettbewerb Seminarvorträge im Allgemeinen und Besonderen Einführung in Wiki, Forum und DomJudge Verteilung der Vorträge „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 2 Um was geht‘s? Vertiefung der in AuD erlernten Programmierfähigkeiten Kennenlernen von weiterführenden Algorithmen Erkennen eines Problems und Anwendung des passenden Algorithmus' Vorbereitung auf den ICPC-Programmierwettbewerb Erlernen von Präsentationstechniken: freier Vortrag vor Publikum (ihr schult Euch gegenseitig) Kennenlernen, Ausprobieren und Einüben verschiedener Teamstrategien „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 3 Was ist der ACM ICPC? ACM = Association for Computing Machinery Älteste weltweite Gesellschaft für Informatik ICPC = International Collegiate Programming Contest StudentInnen aus aller Welt messen sich in der Kunst des Programmierens Vorausscheidungen an den Unis, um max. 3 Teams à 3 Personen zu bilden, in Erlangen im Sommersemester Regional Contest (NWERC) mit ca. 100 Teams aus mehreren Ländern; die ersten zwei-drei Teams qualifizieren sich für die World Finals World Finals mit den besten ca. 115 Teams aus aller Welt Seit 2002 nehmen wieder Teams aus Erlangen teil http://icpc.cs.fau.de/ „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 4 Was für Aufgaben werden gestellt? Kniffelige Probleme, die aber meist recht kurz lösbar sind Wahl des passenden Algorithmus mit der passenden Komplexität sehr wichtig Schema der Aufgaben □ Kurze einleitende Geschichte □ Beschreibung des Problems □ Definition der Eingabedaten □ Definition der Ausgabedaten □ Kleine Beispiele Wahl der Programmiersprache (fast) frei: C, C++11, Java, (bald Python) zusätzlich Haskell im Online-Judge weitere (sinnvolle) Sprachen auf Anfrage „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 5 Vorläufiger Zeitplan 1. Woche: 3. Woche: 4. Woche: 5. Woche: 6. Woche: 7. Woche: 8. Woche: 9. Woche: 10. Woche: 11. Woche: 12. Woche: 13. Woche: ICPC in a nutshell Parsen Zeichenketten Sortier- und Suchalgorithmen + Datenstrukturen Dynamische Programmierung / Gierige Algorithmen Graph-Algorithmen 1 / 2 Flüsse, Schnitte, bipartite Abbildungen Zahlentheorie, Arithmetik und Algebra 1 / 2 Kombinatorik Geometrie 1 / 2 Große Lösungsräume Spieltheorie „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 6 Themen ICPC in a nutshell C++ im Rahmen von ICPC, Komplexität, typische Fehler, Debuggen, Teamstrategien, Training? Parsen Grammatiken, Rekursiver Abstieg, Top-Down, Bottom-Up, CYK, Einlesen und Ausgeben, Bibliotheksfunktionen... Zeichenketten Suche in Zeichenketten, KMP, Boyer-Moore, Suffix-Tries, Algorithmus von Manacher... Sortier- und Suchalgorithmen / Datenstrukturen Quickselect, binäre Suche, ternäre Suche, Bibliotheksfunktionen, … Binary Indexed Tree, Range Minimum Query, Segmentbäume... Graphalgorithmen 1+2 fortgeschrittene Grundlagen, Zusammenhangskomponenten, Brücken, Artikulationspunkte... Union/Find, Spannbäume, kürzeste Pfade, Euler Pfade, Färbbarkeit... „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 7 Themen Flüsse, Schnitte und bipartite Abbildungen Ford-Fulkerson, Preflow-Push, Zweifärbbarkeit, ... Dynamische Programmierung Wiederverwendung von Zwischenergebnissen, LIS/LCS, Inklusion/Exklusion, Memoization... Gierige Algorithmen Greedy-Choice Property, Scheduling, Abgrenzung zu DP,… Zahlentheorie, Arithmetik und Algebra 1+2 Primzahlen, Faktorisieren, modulare Arithmetik, Euklidischer Algorithmus, Lemma von Bezout... Chinesischer Restesatz, lineare diophantische Gleichungen, große Zahlen,lineare Rekurrenzen, Gauss-Algorithmus, RSA... Kombinatorik Binomial-Koeffizienten, Eulersche Zahlen, Catalan-Zahlen, StirlingZahlen, Permutationen, Integer-Partitionen,... „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 8 Themen Geometrie 1+2 Grundlagen, CCW, konvexe Hülle, Picks Theorem, Koordinatenkompression… closest pair, Histogramme, Bereichssuche, kD-Trees, Sweep-Line, Voronoi-Diagramme... Suche im großen Lösungsraum Backtracking, Branch und Bound, Pruning, Heuristiken, A*,... Spieltheorie Nim, Josephus, Nash-Gleichgewicht, Gefangendilemma, MinimaxTheorem, Alpha-Beta-Pruning... „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 9 Literatur: die gängigen Algorithmenbücher Competitive Programming Steven Halim, https://sites.google.com/site/stevenhalim/ Introduction to Algorithms Thomas H. Cormen, u. a. The MIT Press, 2001 Algorithms in Java Robert Sedgewick Addison-Wesley Professional, 2003 Grundlegende Algorithmen Volker Heun, Vieweg, 2003 The Design and Analysis of Algorithms Anany Levitin, Pearson International Edition, 2007 … TopCoder Algorithm Tutorials Training: Codeforces, TopCoder SRM/Practice Rooms, SPOJ, Uva Online Judge „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 10 Was wir bieten und was es kostet - Bachelor 5 ECTS Seminarschein (auch für „erfahrene Frühstudenten“): 45-60 Minuten Vortrag zum jeweiligen Thema → Note Spätestens eine Woche vor Termin „Statusbericht“ (Algorithmen-Templates) Zu jedem Thema werden Aufgaben gestellt, □ Davon ist mindestens eine zu lösen, 1 Ausnahme, insgesamt 30 Aufgaben □ Abgabe über FAU Online Judge (später mehr) □ (Bearbeitungszeitraum von zwei Wochen) □ (Bei 15 Aufgaben: 2,5 ECTS) „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 13 Was wir bieten und was es kostet – Bachelor 2 Schlüsselqualifikation: 45-60 Minuten Vortrag zum jeweiligen Thema Spätestens eine Woche vor Termin „Statusbericht“ Algorithmen-Templates Nur möglich, falls Informatik kein Haupt/Nebenfach Zu jedem Thema werden Aufgaben gestellt, □ Davon ist mindestens eine zu lösen □ Insgesamt aber 30 □ Abgabe über FAU Online Judge (später mehr) □ (Bearbeitungszeitraum von zwei Wochen) „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 14 Ziele des Seminarvortrags Wissen vermitteln Lösung ICPC-Aufgaben „Hallo Welt“ Algorithmik Theoretische Informatik Unterhaltungsfaktor Der Vortragende und das Publikum sollen Spaß haben „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 15 Inhaltsbestimmung Literatur sichten und lesen Basisalgorithmen selber programmieren Aufgaben zum eigenen Vortragsthema lösen Langjährige ICPC-ler befragen Vorwissen der Zuhörer beachten „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 16 Vorbereitung Beobachtet andere Vortragende Mindestens drei Wochen vorher beginnen Mindestens eine Woche vorher zur Besprechung mit vollständigem Foliensatz Folien Korrektur lesen lassen □ Tisch Bein □ Grösse □ Denglish Probevortrag halten □ Lieblingswörter □ ähhhh, öhhh, □ ganze Sätze Kritik annehmen Schriftgröße, Farben am Beamer und mit Ausdruck testen Pünktlich zum eigenen Vortrag erscheinen □ Laptop aufbauen □ Tafel wischen „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 17 Präsentation Sich auf das Wesentliche beschränken Mit eigenen Worten wiedergeben Keine Plagiate Alle Quellen angeben Folienerstellung □ Latex (beamer package) □ Powerpoint, OpenOffice □ PDF „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 18 Präsentation Ein Gedankengang pro Folie Stichwörter, keine ganzen Sätze Schriftgröße: 20-28pt (hier: 24) (Bunte) Bilder Nicht zu viele Stilelemente Animationen maßvoll einsetzen Pi mal Daumen: 1 –2 Minuten pro Folie sprechen Dem Zuhörer Zeit lassen, eine Folie zu lesen Auf den Inhalt einer Folie beim Sprechen eingehen „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 19 Aufnahmebereitschaft der Zuhörer (Fast) kein Mensch kann 60 Minuten nonstop konzentriert zuhören Aufmerksamkeitsspanne: 20 Minuten Zuhörer aufwecken, wach halten □ □ □ □ □ Themenwechsel „Leichte Kost“, z.B. Messungen Passendes Zitat einbauen Übergangsfolien Wechsel des Mediums: Tafel benutzen „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 20 ICPC Trainings-Wiki Ziel: Sammlung von Algorithmen-Templates für Wettbewerbe https://icpc.informatik.uni-erlangen.de/wiki/doku.php? id=start&do=register WICHTIG: Die Templates duerfen ausschließlich in Hallo-Welt (mit Quellenangabe), in lokalen Wettbewerben der Uni Erlangen oder von FAU-Teams beim ACM ICPC verwendet werden! (Also nicht bei TopCoder, USACO...) „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 23 Forum & IRC-Channel + hallowelt@i2 Zur Diskussion von Aufgaben, Algorithmen und möglichen Lösungen: IRC-Channel (im IRCnet, z.B. irc.uni-erlangen.de): #hallowelt Forum bei der FSI: http://fsi.informatik.uni-erlangen.de/forum/forum/87 Pfad: Community › Coding › ACM ICPC Bitte keine vollständigen Lösungen posten! Als Thema sollte der Aufgabenname/ID verwendet werden. Falls ihr nicht weiterkommt: [email protected] „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 24 FAU Online Judge https://icpc.informatik.uni-erlangen.de/oj/ Jeder hat sein eigenes Login (aus EST) Aufgabensammlung aus alten Erlanger Wettbewerben, Aufgaben sind einzelnen Seminarthemen zugeordnet Gegeben: Aufgabenstellungen, Beispiel-Eingabe, Beispielausgabe Eingabe über stdin, Ausgabe über stdout Abgabe Eurer Lösungen über Domjudge Antwort: Time Limit Exceeded, Wrong Answer, Presentation Error, Memory Limit Exceeded, Correct, ... „Hallo Welt!“ für Fortgeschrittene – T.Werth, D. Brinkers Sommersemester 2015 Folie 25
© Copyright 2024 ExpyDoc