191.126 Competitive Programming for Programming Contests
Diese Lehrveranstaltung ist in allen zugeordneten Curricula Teil der STEOP.
Diese Lehrveranstaltung ist in mindestens einem zugeordneten Curriculum Teil der STEOP.

2024S, VU, 2.0h, 3.0EC
TUWEL

Merkmale

  • Semesterwochenstunden: 2.0
  • ECTS: 3.0
  • Typ: VU Vorlesung mit Übung
  • Format der Abhaltung: Präsenz

Lernergebnisse

Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage

  • Programmierprobleme schnell und detailliert zu analysieren,
  • die notwendigen, effizienten Algorithmen zum Lösen von Programmieraufgaben zu kennen und 
  • effiziente Programmiertechniken selbstständig beim Erstellen einer korrekten Lösung anzuwenden.

Inhalt der Lehrveranstaltung

Einführung und Überblick über Programming Contests

Detaillierte Analyse des ICPC-Programmierwettbewerbs

  • Arten der Probleme
  • Ein- und Ausgabeformate
  • Funktionsweise Online Judge
  • Aktuelle Contests

Vorstellung häufig benötigter Algorithmen

  • Graphalgorithmen (Breiten- und Tiefensuche, Single Source Shortest Path)
  • String-Matching
  • Zahlensysteme, Big Integer Programming
  •  Sortieren

 Programmiertechniken

  • Dynamic Programming
  • Backtracking
  • Branch-and-Bound
  • Encodings

Spezielle Algorithmen und deren Implementierung

  • Dijkstra
  • Knuth-Morris-Pratt
  • Bellman-Ford
  • Kruskal’s Algorithm

Effiziente Programmiertechniken

  • Syscalls vermeiden
  • Testbaren Code schreiben
  • Datentypen (Breite, Packing)
  • Code Inlining
  • Loop Unrolling
  • Effiziente Datenstrukturen (hashes, adjacency lists vs. arrays, etc.)

Überdies ist es ein Ziel, dass die besten Teams die TU Wien beim “Central Europe Regional Contest” (CERC) des ICPC-Programmierwettbewerbs vertreten.

 

Methoden

  • Programmierübungen
  • Lösen von Problemen vergangener Programmierwettbewerbe

Prüfungsmodus

Prüfungsimmanent

Weitere Informationen

ECTS breakdown

lectures: 10h (5x2h)
exercises: 6h (3x2h)
assignments: 35h (3x15h)
exam preparation: 14h
total: 75h = 3 ECTS

Wir werden bei der 1. Vorlesung auf den Modus der LVA eingehen und Gruppen finden. Da die Plätze limitiert sind, möchte ich vor allem keine Personen vorzeitig ablehnen müssen, da wahrscheinlich noch einige Studierende abspringen werden.

Vortragende Personen

Institut

LVA Termine

TagZeitDatumOrtBeschreibung
Do.14:00 - 16:0007.03.2024 - 06.06.2024Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Competitive Programming for Programming Contests - Einzeltermine
TagDatumZeitOrtBeschreibung
Do.07.03.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Do.14.03.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Do.21.03.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Do.02.05.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Do.16.05.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Do.23.05.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung
Do.06.06.202414:00 - 16:00Seminarraum FAV 01 A (Seminarraum 183/2) Vorlesung

Leistungsnachweis

Die Bewertung besteht aus zwei Teilen: ein Übungs- und Prüfungsteil.

Der Übungsteil sieht das Lösen von Programmieraufgaben in Gruppen vor.

Im Prüfungsteil muss man eine Aufgabe selbstständig bearbeiten.

Prüfungen

TagZeitDatumOrtPrüfungsmodusAnmeldefristAnmeldungPrüfung
Do.14:00 - 16:0027.06.2024Seminarraum AE U1 - 7 beurteilt01.05.2024 00:00 - 25.06.2024 23:59in TISSExam

LVA-Anmeldung

Von Bis Abmeldung bis
30.01.2024 00:00 21.03.2024 23:59 29.03.2024 22:59

Anmeldemodalitäten

Dieser Kurs ist speziell für Studierende gedacht, die die TU Wien bei dem ICPC-Wettbewerb vertreten können. Deshalb ist der Kurs für Studierende offen, welche noch keine 8 Semester absolviert haben.

Curricula

StudienkennzahlVerbindlichkeitSemesterAnm.Bed.Info
175 FW Freie Wahlfächer - Wirtschaftsinformatik Freifach
880 FW Freie Wahlfächer - Informatik Freifach

Literatur

Es wird kein Skriptum zur Lehrveranstaltung angeboten.

Vorkenntnisse

Ein gewisses Verständnis der folgenden Gebiete wird vorausgesetzt:

  • gute Kenntnis mind. einer der folgenden Programmersprachen: C/C++, Java, Python
  • Betriebssysteme
  • Compiler
  • Datenstrukturen
  • Graphentheorie
  • Linux
  • grundlegende Algorithmen (z.B. Quicksort)

Sprache

Englisch