Problemsolving with Programming
Das Projekt an dem Simon und ich gearbeitet haben befasste sich mit dem Euler Problem Nummer 204
Zusammenarbeit
Die Arbeit mit Simon hat sehr viel Spaß gemacht und meiner Meinung nach auch gut geklappt. Wir haben in unserer Heim-Hochschule in Deutschland schon mehrfach zusammen an Projekten gearbeitet und wussten daher schon von vorne herein wo die jeweiligen Schwächen und Stärken des anderen lagen. Deshalb viel es uns sehr leicht die Arbeit so aufzuteilen, um die Aufgaben möglichst effizient zu bearbeiten.
Meine schwächen und Stärken
Aufgrund unserer vorangegangenen Erfahrungen in Sachen Teamwork, speziell was das Programmieren anging, wusste ich schon, dass Simon darin sehr gut ist. Ich konnte viel von ihm lernen, da seine Lösungsansätze beim Codescheiben meist viel einfacher bzw. zeitsparender waren als die meinen. So konnte er mir zum beispiel einen einfacheren und effizienteren Wege zeigen wie man programmiert. Das hat mir noch einmal sehr geholfen die Art und Weise zu überdenken mit der ich bisher an ein Problem im Software-Engineering bin. Es lohnt sich beispielsweise sehr zunächst einmal zu überprüfen ob es zur Lösung eines Problems eine geeignete Built-In-Funktion gibt. Das hatte ich zuvor meist versucht eigenständig zu lösen, was dann zu mehr Code, weniger Übersichtlichkeit und natürlich auch zu mehr Fehlern führte.
Auf der anderen Seite fiel es mir sehr leicht den Code zu organisieren und so zu gestalten, dass er möglichst verständlich war. Ich denke, dass ist sehr wichtig wenn man im Team arbeitet. Auf diese Weise kann man unabhängig voneinander an verschiedenen Teilen des Programms arbeiten, ohne dabei den Überblick zu verlieren, was schlussendlich abermals Fehler reduzieren kann.
Technische Erfahrungen
Wir hatten dieses Semester das erste mal Python als Programmiersprache und auch wenn es sehr ähnlich zu C ist ist es doch sehr verschieden. Das wird bei der Arbeit mit Listen und allgemein bei der Vereinfachung und Verkürzung von Code ziemlich deutlich.
Ein Beispiel hierfür sind sogenannte „list-comprehensions“, wie sie die folgenden Code-Ausschnitte darstellen. Sie zeigen sehr deutlich wie man eine Funktion mit ein paar kurzen Befehlen auf eine einzelne Zeile bringen kann. Das spart nicht nur Zeit, sowohl beim Schreiben als auch beim Berechnen, sondern ist auch noch viel übersichtlicher und macht das Programm leichter verständlich.

Kombination as if und Schleife 
if-Statement 
for-Schleife
Tatsächlich konnten wir beide, Simon und ich, eine Menge durch das Projekt lernen. Erst dachte ich, dass wir uns wahrscheinlich eher leicht tun würden aber tatsächlich kamen wir beide an unsere Grenzen, da unser Computer an seine Rechenleistung kam, was ich vorher beim Programmieren noch nie erlebt hatte.
Wir mussten also umdenken und Schritt für Schritt den Code kürzen bzw umschreiben um diesem Problem effektiv entgegen zu treten. Schlussendlich haben wir herausgefunden, dass es in Python fast immer eine oder mehrere Möglichkeiten gibt Code anders zu schreiben oder zu verkürzen.
Erfahrungen rund um den Prozess und Teamwork
Auch diesbezüglich konnte ich meine bisherigen Erfahrungen in Sachen Projektarbeit weiter ausbauen.
Ich denke es ist sehr wichtig an ein Problem ruhig und organisiert heran zu gehen. Das wurde mir dieses mal um so mehr bewusst, da wir mit einer neuen Programmiersprache gearbeitet haben. Anfangs dachte ich ich kann das Programm schreiben wie ich es von C oder C++ gewohnt war. Was aber, wie schon weiter oben erwähnt, dazu führte, dass unserm Computer die Rechenleistung ausging. Es war daher umso wichtiger, dass wir unsere Stärken kombinierten um so unsere Schwächen gegenseitig auszugleichen.
Wenn es um das Programmieren ging haben wir versucht das Problem unseres Projekts Schritt füpr Schritt zu lösen. Wir gingen dabei wie folgt vor:
- Finden des Prim-Faktors jeder Zahl und Sicherstellen, dass diese kleiner als 100 waren
- Finden des größten Prim-Faktors jeder Zahl bis 100
- Finden jeder Primzahl bis 100 und Sicherstellung, dass diese korrekt sind
- Beschleunigung der Rechnungen durch Verwendung von Multiprocessing
RESUMÉ
Während des gesamten Projekts habe ich gelernt, dass sehr wichtig beim Programmieren in der Gruppe ist strukturiert und übersichtlich zu arbeiten. Bei kommenden Projekten möchte ich das gleich von beginn an machen, da es 1. Zeit spart und 2. auch vor mich selber leichter war nach einer Pause wieder in das Programm zurückzufinden.
Außerdem möchte ich wie schon erwähnt versuchen die Verkürzungen von Python auf andere Programm-Sprachen anzuwenden, bzw in einen wesentlich effektiveren Programmierstil zu entwickeln.
Alles in allem war das Abschluss-Projekt im Fach Problemsolving with Programming sehr lehrreich und hat neben wertvollen Erfahrungen auch noch Spaß gebracht.
Zum Schluss möchte ich noch auf Simons Blogpost zum Thema verweisen, der die Reflexion des Projekts in Englisch geschrieben hat.


