" - Sie können Codeschnippsel und Fragen im [gemeinsamen Etherpad](https://pad.okfn.org/p/ibi_spp) ablegen.\n",
" 2. Nach ca. 15 Minuten unterbrechen wir das Programmieren und Sie wechseln die Rollen (Navigator<->Fahrerin).\n",
" - Jetzt besteht die Möglichkeit, Fragen zu stellen und Probleme im Plenum anzusprechen. Dazu nutzen wir auch das [Etherpad](https://pad.okfn.org/p/ibi_spp).\n",
" 3. Wie wiederholen die Schritte 1.+2. bis zum Ende des Seminars.\n",
" 3. Wir wiederholen die Schritte 1.+2. bis zum Ende des Seminars.\n",
" 4. Nach dem Seminar arbeiten Sie bitte die übrigen Notebooks gemeinsam durch, insbesondere die Übungen.\n",
" - Wir werden im Seminar entscheiden, bis zu welchem Notebook Sie kommen sollten.\n",
"\n",
...
...
%% Cell type:markdown id: tags:
# Seminar Problemorientierte Programmierung
Diese Notebooks sind im Wesentlichen eine Übersetzung der 2. Ausgabe des Buches "Think Python" von Allen B. Downey. Sie finden den originalen Text hier: http://greenteapress.com/wp/think-python-2e/.
## Lernziele + Ablauf dieses Seminars
- Unser **Lernziel** ist, dass Sie **Programmieren lernen** (mit Python :-). Bis dahin ist es ein weiter Weg. Der beste Tipp ist: üben, üben, üben.
- Wir versuchen es dieses Mal mit folgendem **Ablauf** im Seminar:
1. Sie arbeiten als Pair-Programming-Team diese Jupyter-Notebooks durch.
- Währenddessen bin ich für Sie da, um Fragen zu beantworten und Probleme zu lösen.
- Sie können Codeschnippsel und Fragen im [gemeinsamen Etherpad](https://pad.okfn.org/p/ibi_spp) ablegen.
2. Nach ca. 15 Minuten unterbrechen wir das Programmieren und Sie wechseln die Rollen (Navigator<->Fahrerin).
- Jetzt besteht die Möglichkeit, Fragen zu stellen und Probleme im Plenum anzusprechen. Dazu nutzen wir auch das [Etherpad](https://pad.okfn.org/p/ibi_spp).
3. Wie wiederholen die Schritte 1.+2. bis zum Ende des Seminars.
3. Wir wiederholen die Schritte 1.+2. bis zum Ende des Seminars.
4. Nach dem Seminar arbeiten Sie bitte die übrigen Notebooks gemeinsam durch, insbesondere die Übungen.
- Wir werden im Seminar entscheiden, bis zu welchem Notebook Sie kommen sollten.
## Tipps
- Arbeiten Sie die Notebooks selbständig im Team durch und **probieren Sie möglichst viel aus**. Seien Sie kreativ, neugierig und manchmal auch destruktiv. Denn auch durch Fehler lernen Sie.
-**Sie können alles in Ihrem Notebook bearbeiten** ... nutzen Sie diese Möglichkeit. Ergänzen Sie also Text, löschen Sie, was Sie überflüssig finden, fügen Sie Ihre eigenen Notizen oder Programme hinzu. Dieses Notebook kann Ihr "Portfolio" werden: eine Demonstration dessen, was Sie schon können.
- Es gibt wiederkehrende Abschnitte in den Notebooks:
-**Exkurse** sind Material, welches Sie sich nur anschauen brauchen, falls es Sie interessiert. Bitte schauen Sie sich die Exkurse eher zu Hause an, als während des Seminars, damit Sie vorwärts kommen. Die Inhalte der Exkurse sind nicht notwendig, um vorwärts zu kommen, aber hilfreich, um mehr zu lernen.
-**Debugging**-Abschnitte erklären, wie Sie Fehler finden und beheben können.
-**Glossar**-Abschnitte listen die Begriffe auf, die im Kapitel vermittelt wurden. Es ist eine gute Übung für zu Hause, jeden Begriff dort noch einmal in eigenen Worten zu definieren.
- Schließlich gibt es **Übungen**, diese sollten Sie unbedingt durchführen und erst fortfahren, sobald Sie die Aufgaben lösen konnten und verstanden haben bzw. die Aufgaben nach dem Seminar lösen.
-**Falls Sie mal nicht weiterkommen:** helfen Sie sich gegenseitig und versuchen Sie verschiedene Dinge. Schreiben Sie Ihr Problem z.B. einfach mal ganz genau hier im Notebook auf. Oft hilft das Aufschreiben eines Problems schon bei der Lösung eines Problems.
- Je nachdem wie gut Sie in den letzten beiden Seminaren aufgepasst haben (oder sich Dinge eingeprägt haben), kommt Ihnen einiges schon bekannt vor ... entscheiden Sie selbst, wie schnell Sie vorwärts kommen. Das Ziel ist, dass Sie diese Inhalte hier verstehen und später wieder abrufen können.
- Für die **Fortgeschrittenen**: am besten schauen Sie sich nochmal kurz alle Abschnitte an und entscheiden selbst, was Sie überspringen können. Falls Sie einige der Übungsaufgaben noch nicht durchgeführt haben, ist das jetzt eine gute Möglichkeit. Und ansonsten gibt es am Ende des [3. Kapitels](seminar03.ipynb) eine Knobelaufgabe.
## Hinweise zur Benutzung von Jupyter
- Sie kommen deutlich schneller vorwärts, wenn Sie **Tastaturkürzel** nutzen (und nicht die Maus). Im "Help"-Menü gibt es dazu den "Keyboard Shortcuts"-Eintrag. Sie können aber auch einfach die Tastenkombination `ESC h` drücken (das bedeutet: die `ESC`-Taste drücken und dann die Taste `h`). Wichtigste Kombinationen: `ESC b` fügt einen neuen Block ein, `STRG-ENTER` (oder `STRG-RETURN`, also `STRG` gedrückt halten und dann `RETURN` drücken) führt den aktuellen Block aus, `ESC m` ändert den Typ des aktuellen Blocks auf Markdown (und `ESC y` zu Python), usw.
- Alternativ können Sie auch die Knöpfe oben mit der Maus bedienen.
- Es gibt zwei **Arten von Blöcken**: "Code" ist für Python-Code, "Markdown" ist für Texte, die Sie mit Hilfe der [Markdown-Syntax](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele) formatieren können.
- Sie können auf Text doppelt klicken, um sich den Markdown-Quellcode anzuzeigen. Probieren Sie es mit diesem Text aus.
- Wenn Sie mal etwas "kaputtgespielt" haben, hilft es evtl., im "Kernel"-Menü den "Restart"-Eintrag auszuwählen.
- Mit der Funktion `help` können Sie in Python zu vielen Funktionen Hilfe erhalten. Die offizielle Python-Dokumentation finden Sie hier: https://docs.python.org/3/.
## Ihre Lernziele
Beschreiben Sie in 2-3 Stichpunkten kurz was Sie im Seminar heute lernen wollen. Klicken Sie dazu doppelt auf diesen Text und bearbeiten Sie dann den Text:
-
-
-
%% Cell type:markdown id: tags:
## Exkurs: Was mir an Python gefällt
In dieser Rubrik, die immer am Anfang eines Kapitels steht, möchte ich Ihnen zeigen, wofür ich Python nutze und warum ich es mag. Sie werden vielleicht noch nicht verstehen, was ich genau mache, aber Sie sehen damit schon einmal die Möglichkeiten von Python und können später darauf zurückgreifen. Da dies auch ein Exkurs ist, können Sie diese Rubrik gerne auch erst einmal überspringen.
Ich finde toll, dass ich mit Python ganz einfach Zufallsexperimente durchtesten kann. Das hilft mir, Stochastik besser zu verstehen. Z.B. das Würfeln mit zwei Würfeln:
%% Cell type:code id: tags:
```
import random # Zufallszahlen, siehe https://docs.python.org/3/library/random.html
# Werte initialisieren, größtermöglicher Wert bei zwei Würfeln: 6+6=12