Wie du deine Programmieraufgaben löst!

In letzter Zeit erreichen mich häufig Nachrichten der Art.

Hi Kim! In der Vorlesung habe ich alles verstanden. Aber diese Hausaufgabe bringt mich noch ins Irrenhaus. Kannst du mir helfen?

Zunächst ein paar beruhigende Worte!

Du bist nicht verrückt und dir fehlt auch nicht das Talent.

Was dir fehlt sind Muskeln.

Jepp, und zwar die Problemlösungs-Muskeln.

Lass mich dir eine Geschichte erzählen!

Seit etwa zwei Jahren gehe ich ins Fitness-Studio.

Alles begann mit einer Einführungsstunde, in der mir ein Trainer zur Seite stand und mir alle Übungen beibrachte.

Und glaub mir! Ich hatte alles verstanden!

Paah! Habe ich gedacht, Bankdrücken super easy.

Also zwei 10kg Scheiben auf die Stange und los ging es.

Du kannst es dir denken. Ich hatte keine Chance!

Also 10kg scheiben wieder runter gemacht und die Übung nur mit Stange und ohne Gewichte durchgeführt und das 8 Wochen lang zweimal wöchentlich.

Nach acht Wochen habe ich es dann mit 2,5 kg, nach 3Monaten mit 5kg und nach einem halben Jahr mit 7,5kg geschafft.

Jetzt nach zwei Jahren sind immerhin schon 15kg daraus geworden.

Und das lehrt uns bereits zwei wichtige Lektionen fürs Leben.

  1. Um die coolen Dinge im Leben zu erreichen brauchst du Geduld und Ausdauer!
  2. Um etwas zu lernen musst du es machen. Hörst du? Nicht quatschen. TUN!

Und vergiss nie! Du willst besser werden. Du willst die 95kg Hantel.

Dafür darfst du nicht bei 10kg stehen bleiben.

Um besser zu werden musst du Sachen machen, die du noch nicht kannst.

Wer immer nur das macht was er schon kann, bleibt immer das was er schon ist.

Denke dran! Besser werden ist ein Prozess und das schlimmste ist nicht zum Training zu gehen.

Es ist nicht so wichtig, dass du alle Aufgaben vollständig löst. Bereits eine ernsthafte Beschäftigung trainiert deinen Problemlösungsmuskel.

Aber genau wie beim Sporttraining kannst du auch hierbei mit System vorgehen.

Im folgenden ein paar Tipps, welche aus meiner Erfahrung sinnvoll sind.

Analyse

Die Analyse!

Dein Gehirn arbeitet von allein!

Unser Gehirn arbeitet selbst während wir schlafen. Deshalb gib ihm genügend Zeit an einer Aufgabe zu arbeiten.

Sobald du deine Programmieraufgabe bekommen hast, wirf sofort einen Blick drauf und versuche das Problem, das du lösen sollst zu verstehen.

Dein Gehirn kann nur Aufgaben lösen, die es kennt.

Lies die Aufgabenstellung am besten gleich zweimal und zwar langsam!

Auch ist es deutlich effektiver täglich in einem überschaubaren Rahmen an der Aufgabe zu arbeiten als dir kurz vor Abgabetermin die Nacht um die Ohren zu hauen. Geh dann lieber in die Disko!

Hint: Setze dir gleich zu beginn eine Deadline, die ein oder zwei Tage vor dem eigentlichen Abgabetermin liegt. Dann hast du noch genügend Zeit um in die Disko zu gehen!

Die Lösung

In der Regel orientieren sich deine Aufgaben an Konzepten, die du in der Vorlesung behandelt hast.

Allerdings werden diese Konzepte bei Aufgaben von höheren Schwierigkeitsgraden nicht hintereinander abgeklopft, sondern du sollst lernen wie du die unterschiedlichen Konzepte miteinander kombinierst um damit ein Problem zu lösen.

Du hast Hammer und Nagel kennengelernt. Jetzt sollst du ein Bild an die Wand hängen!

Natürlich ist es wichtig den Sinn und Zweck der einzelnen Konzepte zu verstehen.

Hier ist es manchmal hilfreich die Dinge aus einer anderen perspektive erklärt zu bekommen.

Also, google oder hol dir ein Buch aus der Uni-Bibliothek und lies die Sachen nochmal nach.

Je nach Aufgabenstellung eignet sich auch eine visuelle Darstellung.

Zeichne beispielsweise bei einer Aufgabe zur objektorientierten Programmierung ein UML Klassendiagramm um die Beziehungen zwischen den Klassen herauszuarbeiten.

Da es hierbei nur um eine Hilfestellung für dich geht, kommt es erstmal nicht auf formale Korrektheit an.

Eine andere beliebte Art von Hausaufgaben sind Programme, bei denen es um Algorithmen geht.

Bei solchen hast du die Möglichkeit diese Schritt für Schritt mit Bleistift und Papier durchzuführen um dir über die Funktionsweise klar zu werden.

Verwende echte Sprache!

Schreibe dir die Schritte, die du hierbei durchführst in vernünftigen aber in kurzen Sätzen auf.

Achte hierbei auf Signalwörter wie beispielsweise wenn oder solange. Solche Signalwörter kannst du super schnell in Programmcode übersetzen.

Das Signalwort wenn deutet daraufhin, dass du eine if-Bedingung verwenden musst und das Wort solange kann normalerweise im Quellcode durch eine Schleife ausgedrückt werden.

Schreibe den Quellcode.

Nach all diesen Schritten kannst du endlich beginnen deinen Quellcode zu schreiben.

Es ist nicht beunruhigenden wenn du zu diesem Zeitpunkt bereits ein Drittel deiner geplanten Arbeitszeit verbraucht hast.

Den weißen Bildschirm mit schwarzem Quellcode zu füllen ist der Schritt, der vielen schwer fällt.

Doch Dank deiner Vorüberlegungen und deiner sprachlichen Beschreibung sollte dir dieser Schritt schon deutlich leichter fallen.

Halte es am Anfang einfach! Versuche deine Überlegungen von oben in Quellcode zu übersetzen.

Verwende die Methode der Iterationen.

Konzentriere dich im ersten Schritt darauf lauffähigen Code zu erstellen.

Sobald du das geschafft hast, analysiere das größte Problem deines Programms und stell es ab.

Jetzt analysiere den Quellcode erneut und löse das nächste Problem. Wiederhole diesen Vorgang solange bis du mit der Qualität deiner Software zufrieden bist.

Hierbei handelt es sich übrigens um ein Vorgehen, welches sich nicht nur auf Übungsaufgaben beschränkt sondern auch im echten Leben eines Softwareentwicklers Anwendung findet.

Große Softwareprojekte werden heutzutage mit sogenannten agilen Vorgehensmodellen umgesetzt, in denen genau dieser Iterationsprozess einen Grundpfeiler bildet.

Iteration

Der Test und die Nachbearbeitung

Möglicherweise ist dein erster Versuch noch kein Volltreffer gewesen. Daher ist jetzt ein guter Zeitpunkt den Freund eines jeden Programmierers zu bemühen. Und zwar den Debugger!

Mit Hilfe des Debuggers kannst du dein Programm Schritt für Schritt, Zeile für Zeile ausführen. Genauso wie du es in deinen Vorüberlegungen mit Bleistift auf Papier gemacht hast.

Du musst jetzt also nur die von dir per Hand manuell ausgeführten Testdaten mit den Ergebnissen im Debugger vergleichen und dein Programm an der Stelle korrigieren, an der du eine Abweichung feststellst.

Irgendwann hast du deine Aufgaben abgegeben und du erhälst eine Musterlösung.

Diese solltest du auf unterschiedliche Aspekte analysieren.

Handelt es sich um einen Algorithmus, ist die interessanteste Frage natürlich die nach der Richtigkeit.

Liefert deine Lösung in bestimmten Testfällen ein anderes Ergebnis als die Musterlösung, analysiere den Unterschied und finde die Stelle, an der deine Lösung eine Lücke aufweist.

Gewöhne dir von Beginn an, an dass es beim Programmieren nicht nur darum geht, dass deine Programme irgendwie das machen was sie sollen sondern es auch wichtig ist, dass sie elegant strukturiert und von anderen verstanden werden können.

Besteht deine Lösung beispielsweise aus 100 Zeilen und die Musterlösung nur aus 10 solltest du auf jeden Fall analysieren woran das liegt.

Gibt es vielleicht eine Möglichkeit Zwischenschritte in Funktionen auszulagern? Enthält dein Programm redundanten Code?

Übrigens ist es eine ganz schlechte Idee sich nur auf die Nachbearbeitung zu beschränken, da in diesem Fall der Lerneffekt gegen Null geht.

Fazit: Ich hoffe ich konnte dir in diesem Artikel ein wenig Inspiration geben wie du künftig strukturierter an deinen Aufgaben arbeiten kannst. Besonders wichtig ist, dass du bereits bevor du in die Tasten haust einen Plan entwickelt hast wie du vorgehst und das Problem, das du lösen möchtest auch verstehst.

Wie trainierst du deinen Muskel? Erzähl uns in den Kommentaren davon!

Hat dir der Artikel gefallen? Dann folge uns doch gleich auf Facebook!

Hallo ich bin Kim und ich möchte ein großer Programmierer werden. Machst du mit?

Kommentare (2)

  • Antworte

    Wirklich ein sehr cooler Blog. Weiter so! (:

    • Vielen Dank!

Hinterlasse ein Kommentar