BwInf-Workshop beim Hasso-Plattner-Institut 2020

  • 13.00 Uhr. Potsdam. Jugendherberge. Langsam aber stetig wächst die Menge an schweigenden Schülern, Schülerinnen und Studierenden in der Lobby. Nach kurzer Zeit des Schweigens und Gedankenlesens ist klar: Alle sind aus dem selben Grund hier. Das "Fit-für-BwInf-Camp", welches sich als Ziel gesetzt hat, die 30 eingeladene SchülerInnen und Studierende auf die nächsten Runden des Bundeswettbewerbs Informatik vorzubereiten. Mit immer mehr anwesenden Personen wächst nun auch langsam die Gesprächsbereitschaft. Kommunikationen über Namen, Lieblingsprogrammiersprache und Lieblingsalgorithmus beginnen.

    if (conversation.contains(interestingTopic)) {
    talk();
    }

    Nach dem Einchecken in die Zimmer um 14.00 Uhr geht es mit der S-Bahn zum Hasso Plattner Institut (HPI), wo das Camp zu großen Teilen stattfinden wird. Auf eine kurze Einführung und Vorstellung der Betreuenden folgt eine Führung über das Gelände und durch die Gebäude des HPIs. Dabei gibt es schon die ersten kurzen Fachvorträge der einzelnen Fachbereiche und wir beobachten eine Vorrichtung beim durchgängigen Balancieren eines Gewichts auf einem langen Stab durch Regelungen und Steuerungen.

    Die erste längere Vorlesung behandelt das Thema Approximationsalgorithmen für das TSP - das Traveling Salesman Problem. Dieses Optimierungsproblem beschreibt den Sachverhalt, dass eine Menge von Orten genau einmal besucht werden soll und die Reisestrecke dabei möglichst gering zu halten gilt. Außerdem soll der letzte Ort derselbe wie der Erste sein. Im ersten Moment klingt dieses Problem vielleicht trivial, betrachtet man jedoch alle 2053 Städte Deutschlands ist die Lösung des Problems alles andere als einfach, geschweige denn schnell (unter einem Jahrhundert), zu finden, da es so viele verschiedene mögliche Verbindungen zwischen den einzelnen Städten gibt. Ein Approximationsalgorithmus löst ein Optimierungsproblem, wie das TSP, näherungsweise. So ist es bislang nur gelungen eine 1.5 Approximation des TSP zu berechnen. Bei einem komplexen Problemen dieser Art erhalten wir also zumeist nicht den kürzesten Weg, sondern einen, der 1.5-fach so lang ist. Die wundervollen mathematischen und informatischen Hintergründe würde hier an dieser Stelle wohl aber leider den Rahmen sprengen.


    if (you[understandingTheContentOfText] == true) {
    listenCarefully();
    } else {
    askQuestions();
    }

    Zum Ende des Tages gibt es für jeden eine an den momentanen Wissensstand angepasste Einführung in die Programmiersprache Java. Nachdem wir am späten Abend die Jugendherberge wieder erreicht haben, konnten noch Spiele gespielt werden. Das bekannteste Spiel für große Gruppen dürfte wohl Werwolf sein. Da die normale Variante davon aber jedem bekannt ist und es auf Dauer dann doch eher eintönig wird, brachten wir mit der Informatiker Version von Werwolf einige interessante Neuerungen in das Spiel. Somit gibt es keine Wölfe, sondern die Manager, die sich jede Nacht heimlich einigen, wen sie feuern, und Product Owner, die Manager mit mehr Einfluss sind - also quasi wie Werwölfe, die vom Seher, in diesem Fall dem Datenbankadministrator, nicht erkannt werden können.


    switch (character) {
    case „Product Owner“:
    firePeopleAtNight();
    pretendBeingNice();
    break;
    case „Datenbankadmin“:
    spyOnPeople();
    break;
    case „Manager“:
    firePeopleAtNight();
    break;
    }

    Als wir am nächsten Tag das HPI erreichen, beginnen wir in 6er Gruppen mit einem kleinen Warm-up: Es gilt in 15 Minuten mithilfe von rohen Spagetti und Klebeband den höchsten Turm zu bauen. Mit sehr interessanten Komplexen erreichten manche Gruppen eine Höhe von über einem Meter.


    {
    buildHigher();
    } while (!tower.collapse)

    Während des gesamten Tages soll es sich nur um die geheimnisvolle Programmier-Challenge gehen. Nach einer Einteilung in Gruppen von sieben bzw. acht Personen und deren räumlicher Trennung wird uns endlich eröffnet, was deren Inhalt sein wird: Wir spielen den gesamten Tag über eine selbst programmierte Variante des „Spiels Plants vs. Zombies“. Zwei der vier Gruppen spielen als Zombies gegen die anderen beiden Pflanzengruppen. Das Platzieren von Pflanzen oder Zombies kostet jedoch „Coins“ und diese müssen wir uns durch das Lösen komplexer Programmierprobleme erarbeiten. Je schwerer eine Aufgabe, umso mehr „Coins“ gibt es für die korrekte Lösung. Da ein Team immer nur vier Aufgaben gleichzeitig bearbeiten darf, heißt es nun für den Rest des Tages: Unter Zeitdruck möglichst komplexe Programmierprobleme in Teamarbeit lösen und gleichzeitig das Spielfeld von „Plants vs. Zombies“ im Blick behalten.


    for(int i = 0; i < all; i++) {
    solveProblem();
    getCoins();
    winGame();
    }

    Jede Gruppe hat zwischen 15 und 20 Aufgaben gelöst. Jeder Einzelne lernte dabei sicher sehr viel. Mittlerweile ist es 21 Uhr. Nachdem wir gemeinsam über die Sinnhaftigkeit mancher Programmieraufgaben diskutiert haben (Eine Oma, die Weihnachtskarten an 2046 Personen schreibt. Ein Auto, dass mit 10-facher Lichtgeschwindigkeit geblitzt wird. Oder der Weihnachtsmann, dessen Lagerhäuser anscheinend eine so große Fläche einnehmen, dass die einzige Möglichkeit für seinen Wohnraum in unserem Sonnensystem wohl die Sonne wäre, von der er über ein dreiviertel der Fläche mit seinen Lagerhäusern einnimmt (ihr solltet eure Wunschzettel in Zukunft also zur Sonne - nicht zum Nordpol – adressieren).), sitzen wir nun gemeinsam mit vier Korrektoren und ehemaligen, erfolgreichen Teilnehmern des BwInfs zusammen und haben die Möglichkeit Fragen zu stellen. Jede Unklarheit wird beseitigt und wir lernen viel darüber, wie unsere Arbeiten bewertet werden. Den Rest des Abends verbringen wir mit Kartenspielen. Bis um 1 Uhr sitzen wir noch in der obersten Etage des HPIs und spielen Kahoot. Danach geht es zurück zur Jugendherberge.


    if (!values.AreMeaningful) {
    task = programmingTask;
    }

    Der letzte Tag bricht an. An diesem Tag werden wir speziell auf die Endrunde des BwInfs vorbereitet. Das bedeutet eine Stunde Zeit, um sich erneut in eine Aufgabe des vergangenen Tages einzuarbeiten und eine Präsentation des Lösungswegs und der Algorithmik vorzubereiten. Anschließend präsentieren wir die Ergebnisse im größten Hörsaal des HPIs. Nachdem jeder Teilnehmer einen speziellen Algorithmus erläutert hatte, zeigten uns Studenten und Mitarbeiter des HPIs einige Lösungen und Ansätze für Aufgaben, an denen wir am gestrigen Tag sehr lang gesessen hatten oder nur sehr ineffiziente und langsame Lösungen fanden.


    {
    tryOtherSolution();
    } while (task[neededTimeToGetSolution] > big);

    Zum Abschluss des Camps nutzen wir nun parallelisierte „Bubble-Sort-Algorithmen“, um uns auf einer Steinmauer stehend nach Alter, Größe und Länge der Schlafenszeit in der vergangenen Nacht zu ordnen.


    if (you[age] > personOnYoureLeftSide[age]) {
    goLeft();
    }

    Nach dem Camp sind wir nicht nur gut auf die nächsten Runden des Bundeswettbewerbs Informatik vorbereitet, sondern haben viele neue Verfahren kennengelernt, komplexe Probleme zu lösen. Außerdem haben wir in unserer Zeit im Camp viele Methoden zur effektiven Arbeit im Team an Programmieraufgaben entdeckt, die uns auch in Zukunft weiterbringen werden.

    Autor: Katharina Bade

0 Kommentare