Dr. D. Komm, Dr. T. Kohn, Dr. J. Závodný
Clevere Algorithmen programmieren
Der Kurs über clevere Lösungsstrategien und wie du sie in einem Python-Programm umsetzt. Für alle Schülerinnen und Schüler ab 15 Jahren; jeweils am Mittwochabend um 18 Uhr an der ETH Zürich. Aktuell wird unser Kurs nicht angeboten. Zum Kurs 2019 / 2020
Worum geht es?
- Du hast einen Korb voll antiker Münzen vor dir und darfst dir drei beliebige Münzen aussuchen und behalten. Dann stellt sich die Frage: Wie findest du am schnellsten die drei wertvollsten Münzen aus der ganzen Sammlung? Und was ändert sich an deiner Strategie, wenn du zu keiner Zeit mehr als drei Münzen aus dem Korb herausnehmen darfst?
- An der nächsten Prüfung darfst du ein grosses 1500-Seiten starkes Buch mitnehmen und alles nachschauen. Das Problem ist die Zeit: Um die Prüfung zu bestehen, musst du innerhalb von Sekunden alle Seiten im Buch finden, die zum Beispiel den Begriff «Streuselkuchen» erwähnen. Was für Notizen machst du dir am besten? Wie findest du die gesuchten Begriffe überhaupt so schnell? Und wie kann Google sogar Milliarden von Webseiten in Sekundenbruchteilen nach dem Begriff «Streuselkuchen» durchsuchen?
- Mäuse finden immer ihren Weg durch ein Labyrinth, holen sich den Käse und finden wieder heraus. Wie würdest du dich selbst in einem Labyrinth bewegen? Könntest du den Käse und danach den Ausgang finden, ohne dich zu verlaufen? Vielleicht hilft dir ja ein Programm wie das der Bahn: Dieses Programm findet den schnellsten Weg durch ein Labyrinth an Bahnhöfen und Verbindungen in Sekundenbruchteilen.
Interessieren dich clevere Strategien, um solche Probleme zu lösen? Möchtest du wissen, wie du ein Programm schreibst, das dir die Lösung möglichst schnell ausgibt? Tüftelst du gerne an der perfekten Lösungsstrategie herum? Oder willst du einmal die Schweiz an der Internationalen Informatik-Olympiade vertreten?
In diesem Kurs suchen wir nach effizienten, schnellen, überraschenden und vor allem cleveren Lösungsstrategien zu Problemen, die du mit einem Computer lösen kannst. Wichtiger als die eigentliche Lösung ist uns die Strategie bzw. der Algorithmus. Natürlich besprechen wir clevere Algorithmen nicht nur theoretisch, sondern setzen sie auch direkt mit einem Programm um. Als Programmiersprache verwenden wir Python.
An wen richtet sich der Kurs?
Kannst du bereits etwas programmieren? Bist du mit den Grundbegriffen wie Funktionen, Variablen und Schleifen vertraut? Wenn du dann noch Neugierde und Interesse mitbringst, dann bist du für unseren Kurs bestens gerüstet. Du brauchst kein Profi-Programmierer zu sein und schon alles zu wissen. Vielleicht hast du bis jetzt mit C++, Java, Haskell oder einer anderen Programmiersprache gearbeitet und kennst Python noch nicht. Dann hast du trotzdem bereits alles, was du brauchst. Den Rest bringen wir dir bei.
Weil wir Programme untersuchen und genau analysieren wollen, solltest du natürlich auch ein wenig Freude und Interesse an der Mathematik haben.
Der Kurs ist die ideale Vorbereitung, falls du für die Informatik-Olympiade trainieren oder später Informatik studieren möchtest. Das ist aber absolut keine Voraussetzung: Du bist genauso willkommen, wenn du einfach nur aus Interesse und Spass am Programmieren mitmachen willst.
Um am Kurs teilzunehmen, bist du etwa zwischen 15 und 20 Jahre alt und besuchst das Gymnasium oder machst eine Informatik-Lehre.
Wann und wo findet der Kurs statt?
Der Kurs läuft jeweils am Mittwoch Abend von 18 bis etwa 19:30 Uhr, jeweils an der ETH Zürich. Du bist in 10 Minuten vom Hauptbahnhof an der ETH. Je nach Teilnehmeranzahl kann es auch sein, dass der Kurs nur alle zwei Wochen stattfindet.
Die genauen Daten, Zeiten und Orte werden auf der aktuellen Kurs-Seite publiziert.
Was kostet der Kurs und wie melde ich mich an?
Der Kurs ist für alle Teilnehmer kostenlos. Damit wir die Räume planen und dir Informationen zum Kurs schicken können, solltest du uns kurz eine E-Mail schreiben, wenn du teilnehmen möchtest (). Wir sind dir dankbar, wenn du dich sicher zwei Tage vor dem Kurs meldest.
Wenn du dich anmeldest, dann gehst du damit keine Verpflichtung ein. Du kannst auch einfach einmal schnuppern und danach entscheiden, ob du wirklich mitmachen willst. Es ist auch kein Problem, wenn du einmal fehlen solltest und du kannst dich jederzeit wieder abmelden. Wenn du am Kurs teilnimmst, solltest du aber trotzdem möglichst regelmässig dabei sein.
Was sind die konkreten Inhalte?
Im Vordergrund stehen Algorithmen (Lösungsstrategien) und deren Umsetzung in Programmen. Es gibt zum Beispiel dutzende von verschiedenen Algorithmen zum Sortieren von Zahlen. Zunächst lernst du einige dieser Algorithmen kennen. Danach geht es aber um Fragen wie: Was sind die Vor- und Nachteile der einzelnen Algorithmen? Wie lässt sich ein konkreter Sortier-Algorithmus am besten in Python programmieren? Warum sind die theoretisch besten Verfahren nicht immer die praktischsten?
Wir besprechen nicht nur, was gute Algorithmen sind, sondern auch was gute Programmiertechniken sind. Indem du verschiedene Algorithmen und Techniken kombinierst, lernst du mit der Zeit, Probleme in der Informatik sehr schnell und einfach zu lösen. Dabei wirst du auch sehen, dass dich clevere Algorithmen viel weiter bringen als Programmiertricks.
Natürlich können wir nicht alles machen: Wir besprechen zum Beispiel nicht, wie du eine App programmierst oder wie du ein Netzwerk hacken kannst.
Kontakt
Um dich für den Kurs oder eine erste Kursstunde anzumelden, schreibe eine kurze E-Mail an Jakub Závodný.
- Dennis Komm:
- Jakub Závodný:
Links
Falls dich die Informatik interessiert, könnten dir auch folgende Seiten weiterhelfen: