Beschreibung |
Ziel dieses Projekts ist es, Teams von 2 bis 3 Studierenden mit typischen Programmierherausforderungen in Programmierwettbewerben und bei Bewerbungen für IT-Firmen vertraut zu machen. Wir konzentrieren uns auf kurze Programmierwettbewerbe von 1 bis 3 Stunden und auf Probleme in Geometrie, Graphentheorie und Datenstrukturen. Die Studierenden lernen, wie man schnell effiziente Algorithmen und Datenstrukturen für die jeweiligen Probleme entwickelt und implementiert. Sie untersuchen bestehende Probleme und Lösungen sowie klassische Algorithmen und deren Variationen, die bei verschiedenen Programmierproblemen auftreten. Problemsätze werden von Websites wie https://www.spoj.com/, https://www.topcoder.com/, http://www.codeforces.com/ oder https://uva.onlinejudge.org übernommen. Eines der Ziele des Projekts ist es, die Studierenden zu motivieren, sich auf einen Programmierwettbewerb vorzubereiten und daran teilzunehmen. Zum Ende des Projekts werden die Studenten in der Lage sein, effiziente Algorithmen für eine Vielzahl von nicht-trivialen Problemen zu entwerfen und schnell zu implementieren. Dies ist auch eine wichtige Fähigkeit für die Bewerbung bei großen IT-Firmen, die regelmäßig Code Interviews durchführen. |
Voraussetzungen |
Programmiererfahrung in C++, Java oder Python sowie der erfolgreiche Abschluss von Vorlesungen zu algorithmischen Grundlagen wie Algorithmen und Datenstrukturen sind erforderlich. Der vorherige Besuch der Veranstaltung Komplexitätstheorie ist hilfreich, aber keine Bedingung. |