Ich habe inzwischen vier Semester Informatik studiert und es ist nach wie vor spannend und macht mir Spaß. Das beste Modul im letzten Semester war „Eingebettete Systeme“, in den Übungen dazu habe ich gemeinsam mit Pablo mit einem Arduino, verschiedenen Motoren und Sensoren, einem alten Handydisplay und einem GPS-Modul gebastelt und programmiert. Die Prüfung hatte überhaupt nichts damit zu tun, lief aber dennoch sehr gut.

Mein Lieblingsspiel auf dem iPhone ist Rules.

Mit Conor Oberst Anfang August, Hundreds auf dem Dockville, Team Me vor zwei Wochen bei einem Wohnzimmerkonzert und Nils Frahm letzte Woche in der Kölner Philharmonie habe ich in kürzester Zeit gleich vier Top-10-aller-Zeiten-Konzerte erlebt. Wow.

Irgendwie mag ich wieder Fußball. Bei der Weltmeisterschaft im Sommer schaute ich erst viele Spiele nicht, dann viele nebenbei beim Hausaufgaben machen. Es war manchmal spannend und oft nett anzusehen. Dass Deutschland gewann, ist mir egal, und ich fühle mich nicht mit der Nationalmannschaft verbunden, dafür aber plötzlich wieder mit dem 1. FC Köln. Dass die Spieler von dem Verein bezahlt werden, in der Stadt leben, dort trainieren und oft aus der eigenen Jugend kommen, hat für mich mehr Bedeutung als Landesgrenzen oder Staatsbürgerschaften und ein dreiwöchiges Trainingslager vor Turnieren. Also schaute ich die ersten paar FC-Bundesligaspiele, und es gibt sicherlich schlechtere Dinge, die man samstagnachmittags tun kann. Es bleibt spannend, wie lange ich das jetzt durchhalte. (Mein Trikot, das ich mit 15 bekam und das mir damals viel zu groß war, habe ich mit nach Hamburg genommen. Man weiß ja nie)

Ich wohne plötzlich mit Insa zusammen und bisher gefällt es mir sehr.

Facebook without the News Feed

Facebook is an important communication tool to me. Most of my fellow students don’t use iMessage or Twitter DMs, so we talk on Facebook. However, I seem not to be able to just check my messages on Facebook. Instead, I wind up scrolling through the News Feed for a couple of minutes each time I visit Facebook in the browser. I recently looked at about 30 News Feed posts in detail and discovered these three things:

  • I didn’t care about any of the posts that described activities on Facebook. It doesn’t matter to me if $friend changed their profile picture or liked someone else’s status update.
  • I was interested in two link posts but I had already seen the exact same links on Twitter hours earlier.
  • People tend to create albums of mediocre photos on Facebook while they only post their best on Instagram. Many of my Facebook friends have Instagram accounts and I already follow the ones I’m interested in.

I concluded that I don’t need to read the News Feed, so I wrote a custom stylesheet that hides it. This is the result:

I’ve been using “Quiet Facebook” for a week now and I’m happy with it, so I put the CSS on GitHub. I just embed the stylesheet via Safari’s settings but someone could certainly build browser extensions that load the stylesheet from raw.github.com and toggle it when the user clicks a button. Feel free to submit pull requests (or suggest a better name for the whole thing)!

Comments on Hacker News

Update May 24: Chrome and Firefox users can install the stylesheet via Userstyles.org, using the Stylish extension. Safari users: Download the CSS from GitHub, open Safari Preferences, Advanced, select downloaded file in Style sheet dropdown.

Project Euler: Aufgabe 18

Diesen Beitrag habe ich ursprünglich für Daniel geschrieben, weil ich ihm meinen Lösungsweg für Aufgabe 18 von Project Euler erklären wollte. Nun, etwa zehn Minuten später, veröffentliche ich ihn auf meinem Blog.

Wir suchen die maximale Summe eines Pfades durch den Graphen. Der Pfad soll beim Wurzelknoten starten und von dort aus nach ganz unten führen. Bei diesem kleinen Graphen sieht das folgendermaßen aus:

Der rot markierte Pfad ist der Pfad mit der maximalen Summe: 3 + 7 + 4 + 9 = 23

Nun ergänzen wir unseren Graphen um eine weitere Ebene von Knoten.

Um nun den Pfad mit der maximalen Summe zu finden, müssen wir nicht die Summen aller möglichen Pfade bis zu den Knoten in der untersten Ebene neu berechnen. Die Summe des rot markierten Pfads kennen wir schon, und wir können sie weiterverwenden, denn Teilpfade eines Pfades mit maximaler Summe zwischen zwei Knoten sind ebenfalls Pfade mit maximaler Summe (Das bedeutet nicht, dass der rote Pfad Teilpfad jedes maximalen Pfades von der Wurzel bis zur untersten Ebene ist!). Diese Beziehung veranschaulichen wir uns wie folgt:

Sei der rote Pfad wieder der maximale Pfad vom Wurzelknoten bis zum dritten Knoten von links in der untersten Ebene (Knoten [5, 3]). Dann kann es keinen (hier blau markierten) Pfad geben, der eine größere Summe erzeugt als der rote Teilpfad daneben. Der Pfad, der von [2, 1] bis [5, 3] die größte Summe erzeugt, muss der rote Pfad sein, denn sonst wäre der rote Pfad vom Wurzelknoten bis [5, 3] nicht mehr der maximale Pfad (sondern der Pfad, der den blauen Teilpfad enthält; Beweis durch Widerspruch, as you do).

Weil wir nur an der maximalen Summe interessiert sind, merken wir uns nun keine Pfade mehr, sondern einfach für jeden Knoten die maximale Summe, die bis zu ihm erreicht werden kann. In unserem Graphen, den wir um eine Ebene ergänzt haben, sind das folgende Summen: (rechnet ruhig selbst nach!)

Um nun für die nächste Zeile die maximal erreichbaren Summen zu berechnen, müssen wir für jeden Knoten höchstens zwei Additionen durchführen (für die Knoten ganz links und rechts nur eine) und das größere Ergebnis speichern.

20 + 9 = 29, max(20 + 4, 19 + 4) = 24, …

Die maximale Pfadsumme im ergänzten Graphen ist also 29.

Lernen

In der Schule habe ich nicht gelernt. Vor Klassenarbeiten und Klausuren habe ich mir, wenn überhaupt, Sachen noch mal angeschaut, aber nichts auswendig gelernt, nichts geübt und vor allem nicht länger als 20 Minuten mit der Vorbereitung verbracht. In der fünften Klasse hatte ich ein Fach namens „Lernen lernen“1, für das meine Schule scheinbar bekannt war, aber alles, an das ich mich daraus erinnern kann, ist, dass wir erklärt bekamen, wie man Arbeitsblätter richtig in Schnellheftern sortiert.

Für die Abiturprüfungen wollte ich dann richtig lernen, aber ich sah erst nur riesige Lernstoff-Berge vor mir und konnte keinen Anfang finden. Letztendlich hatte ich für Deutsch, Englisch und Geschichte zu unstrukturierte und zu ausführliche Stichpunkte und Zusammenfassungen auf Papier, wusste nicht, wo ich welches Thema finde und wie alles zusammenhängt. In Mathe lief es besser: ich bekam ein paar Seiten mit sinnvollen und kurzen Stichpunkten von einer Mitschülerin kopiert und verbrachte meine Lernzeit mit üben, also Durchrechnen von Haus- und Klausuraufgaben, bis ich überall sicher war.

Wollte man nun ein Lernsystem für Fächer/Studiengänge wie Mathematik, Informatik, usw. aufstellen, dann fällt folgendes auf:

  • Eine gut strukturierte, knappe Zusammenfassung ist essentiell
  • Üben ist wichtiger und einfacher als auswendig lernen

Außerdem wäre es großartig, beim Lernen zu jeder Zeit genau zu wissen, wo man sich im Stoff befindet, wie das aktuell behandelte Thema mit weiteren Themen zusammenhängt und was es für den großen Kontext bedeutet.

Ich habe all das für mich mit einem gut ausgeklügelten System aus Mindmaps und Karteikarten gelöst.

Der erste Schritt beim Lernen ist, Folien oder Skripte durchzugehen (oft reicht schon das Inhaltsverzeichnis, wenn es eins gibt) und eine Mindmap der Themen zu erstellen. Der Wurzelknoten ist der Name der Veranstaltung, die großen (bis ca. 5) Oberthemen die obersten Kindknoten und alles weitere wird darunter einsortiert und alles verbunden, was zusammengehört. Dabei markiert man Knoten bestimmter Kategorien gleich (Beispiel: Für mein Modul Algorithmen und Datenstrukturen markierte ich Algorithmen rot und Datenstrukturen blau). Mir hilft das sehr dabei, Zusammenhänge zu erkennen, und in der Klausur weiß ich genau, welches Thema wo in der Mindmap steht und wo ich im Kopf nach Kontextwissen suchen muss. Außerdem macht es mir immer wieder Spaß, das hervorragende OmniGraffle zu benutzen.

Dann arbeitet man die Mindmap von außen nach innen, Zweig für Zweig im Skript ab, liest sich Textpassagen ganz durch und hält das wichtigste (vor allem Sachen, die man auswendig wissen muss) auf Karteikarten fest. Diese Karteikarten helfen dann beim dritten Schritt, dem Üben. Dazu habe ich keine großartigen Tipps – meist gibt es Hausaufgaben oder Demo-Klausuraufgaben, die man (noch mal) durchrechnen kann, dann überlegt man sich ggf. eigene Aufgaben, die besondere Grenzfälle abdecken und arbeitet auch darauf hin, schnell erkennen zu können, was bei Aufgaben zu tun ist.

Vielleicht ergibt all das ja auch für jemanden von euch Sinn. Bonusmaterial: die vollständige Mindmap zur Chomsky-Hierarchie (Grammatik-Klassen sind grün, Verfahren sind blau).


  1. Ja, die offizielle Abkürzung war LL. Ich bin auch nicht froh darüber.