Advanced Competitive Programming (Sommersemester 2019)
Lecturer:
Prof. Dr. Tobias Friedrich
(Algorithm Engineering)
,
Dr. Pascal Lenzner
(Algorithm Engineering)
Course Website:
https://hpi.de/friedrich/teaching/ss19/competitive1.html
General Information
- Weekly Hours: 4
- Credits: 6
- Graded:
yes
- Enrolment Deadline: 26.04.2019
- Teaching Form: Project seminar
- Enrolment Type: Compulsory Elective Module
- Course Language: German
- Maximum number of participants: 30
Programs, Module Groups & Modules
- IT-Systems Engineering
- IT-Systems Engineering
- IT-Systems Engineering
- IT-Systems Engineering
- ISAE: Internet, Security & Algorithm Engineering
- HPI-ISAE-S Spezialisierung
- ISAE: Internet, Security & Algorithm Engineering
- HPI-ISAE-T Techniken und Werkzeuge
- ISAE: Internet, Security & Algorithm Engineering
- HPI-ISAE-K Konzepte und Methoden
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-K Konzepte und Methoden
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-S Spezialisierung
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-T Techniken und Werkzeuge
- SCAL: Scalable Data Systems
- HPI-SCAL-K Konzepte und Methode
- SCAL: Scalable Data Systems
- HPI-SCAL-T echniken und Werkzeuge
- SCAL: Scalable Data Systems
- HPI-SCAL-S Spezialisierung
- SCAD: Scalable Computing and Algorithms for Digital Health
- HPI-SCAD-S Specialization
Description
Beim Competitive Programming geht es darum, möglichst schnell möglichst gut zu programmieren. Die Zeit zum Programmieren ist beschränkt. Die Korrektheit und Effizienz wird über einen Online-Judge mit unbekannten Test-Cases überprüft. Diese Art der Programmierwettbewerbe haben eine lange Tradition. Die Association for Computing Machinery (ACM) richtet seit 1970 jährlich den International Collegiate Programming Contest (ICPC) aus. An diesem Format werden wir uns orientieren.
Beim ACM-ICPC geht es darum, daß Teams von drei Studierenden einer Uni an einem Computer möglichst viele Probleme gemeinsam lösen. Gewonnen hat, wer nach fünf Stunden mit seinen Programmen die meisten Aufgaben richtig gelöst hat. Es gibt fünf typische Arten von Aufgaben: Graphen-Probleme (z.B. Dijkstra), Suchprobleme (z.B. Backtracking), Geometrische Probleme (z.B. Schnittbildung), zahlentheoretische Probleme (z.B. Primzahl-Zerlegung), und sonstige Probleme (z.B. Brettspiele oder Parser). Das Problem Set Archive bietet über tausend Probleme, welche online gelöst werden können.
Das HPI hat bereits zwei Mal am europäischen Wettbewerb des ACM-ICPC teilgenommen. Das Ziel ist, auch für das Jahr 2018 ein HPI/UP-Team für den nordwesteuropäischen Regionalausscheid des ACM-ICPC (NWERC) aufzubauen und zu trainieren. Dies werden wir im Rahmen eines interaktiven Projektseminars umsetzen. Jeder Studierende am HPI und am IfI der UP ist dazu eingeladen.
Requirements
Voraussetzungen sind gute Programmierkentnisse in C/C++ und ein Basiswissen über Algorithmik, beispielsweise aus den Veranstaltungen Theoretische Informatik 1 , Einführung in die Algorithmik oder Algorithmix.
Wir setzen Grundkenntnisse in den Folgenden Bereichen voraus:
- Algorithmenentwurfsmethoden: Greedy, Divide and Conquer, dynamisches Programmieren, Backtracking und Rekursion
- Grundlegende Datenstrukturen: Arrays, Listen, Stacks, Queues, binäre Suchbäume, binäre Heaps, Adjazenzlisten und -matrizen
- Standardthemen der Algorithmik: O-Notation, Sortieren, Suchen, Hashing, einfache Graphenalgorithmen (z.B. Baumtraversierung, Breiten- und Tiefensuche)
Learning
Das Projektseminar soll maßgeblich von einer lebhaften interaktiven Diskussion unterschiedlicher Lösungsansätze und Tipps und Tricks geprägt sein. Zudem werden im Laufe des Seminars hilfreiche Konzepte eingeführt.
Examination
Im Laufe des Seminars wird es wöchentlich Programmieraufgaben geben, deren Lösung dann per Online-Judge ausgewertet und im Seminar diskutiert werden. Neben den wöchentlichen Aufgaben wird es mehrere Live-Contests geben, in welchen wir einen echten Progammierwettbewerb simulieren.
Die Bewertung der Veranstaltung basiert zu 25% auf den wöchentlichen Aufgaben und zu 75% auf den Contests im Laufe des Semesters.
Dates
Wöchentlich freitags von 13:30 - 16:45 Uhr im Raum H-E.51/52.
Zurück