Python interaktiv im Unterricht - Fragen zu IPython Notebook

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Hallo zusammen,
da ich gerade krank im Bett liege, habe ich ein wenig Zeit im Internet zu surfen ;)

Ich bin vor längerer Zeit mal über die IPython Notebooks gestolpert und habe mir heute das Ganze mal ein wenig näher angesehen, vor allem unter dem Gesichtspunkt der Einsatzmöglichkeiten im Informatik-Unterricht der Oberstufe.
Mein bisheriger "Workflow" der Unterrichtsvorbereitung und Materialerstellung beschränkt sich auf ein statisches pdf-Skript bzw. Arbeitsblätter, die ich mit LaTex erstelle. Hier verwende ich verschiedene packages, um Quelltext einzubinden, Struktogramme zu erstellen und Programmabläufe in Pseudocode darzustellen. Das funktioniert soweit gut. Leider ist es eben statisch.

Die interaktiven Möglichkeiten, die IPython Notebooks liefern sind da sehr reizvoll und Doku und Quelltext sind nicht mehr auf verschiedene Dateien aufgeteilt. Meine optimale Vorstellung wäre, dass ich im lokalen Netzwerk der Schule einen IPython Notebook Server aufsetze, die Unterrichtsmaterialien dort ablege und z.B. über git aktuell halten kann. Die Schüler können dann an ihren PCs mit dem Browser darüber arbeiten. BYOD wäre damit ja z.B. auch möglich. Bevor ich mir allerdings die Arbeit mache, alles umzustellen, habe ich noch ein paar Fragen, auf die ich bisher keine Anwort gefunden habe:
  • Ich habe es doch richtig verstanden, dass das Server-Verzeichnis, indem der Notebook-Server gestartet wird, dann für die Schüler freigegeben wird und quasi jeder Schüler dort ein eigenes Verzeichnis mit den zu bearbeitenden Dateien haben müsste (oder eben symlinks zu den entsprechenden Verzeichnissen auf den Netzlaufwerken). Das eigenständige anlegen von Ordnern und Dateien innerhalb des Serververzeichnisses geht nicht über die Web-Oberfläche, oder bin ich nur zu doof das zu finden?
  • Hat jemand schon Erfahrungen mit der Performance gemacht? Wenn sagen wir mal 30 Schülerinnen und Schüler gleichzeitig arbeiten und 2 davon eine Endlosschleife produzieren oder range statt xrange verwenden? ;) Wir haben einen Terminalserver, da kann ich immer aufpassen und die Prozesse von Hand killen, sonst haben alle eine (un)gewollte 5 Minutenpause ;)
  • Optimal wäre es, wenn der Notebook-Server auch im Internet erreichbar wäre, dafür bräuchte ich aber wohl einen dedizierten Server im Netz, da dort ja eine Python-Installation laufen muss, oder? Eine Weiterleitung in das Schulnetzwerk möchte ich vermeiden.
  • Gibt es irgendwelche Beschränkungen bzgl. der Python-Module, die ich so nicht sehe? Turtle inline zu betreiben, wäre schön, ist aber kein Muss.
  • Persönlich Einschätzung: Wie leicht/schwer ist die Installation unter Windows für Laien? Wenn ich keinen Notebook-Server im Internet habe, müssen die Schüler ja zu Hause auch die Möglichkeit haben, die Dateien lesen bzw. bearbeiten zu können. Alternativ gibt es ja eine Exportfunktion von ipynb nach py, so dass ggf. auch eine Python-Installation ausreicht.
  • Kennt jemand von euch RunestoneTools? Was haltet ihr davon? Das geht in die gleiche Richtung, liefert aber nachher wohl statisches HTML aus und kann auch über github veröffentlich werden, ein erster Versuch war erfolgreich.
Ich würde mich über Rückmeldungen freuen! Vielleicht gibt es ja auch noch Tools, die ich bisher gar nicht kenne.
Danke!
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

EmaNymton hat geschrieben:Alternativ gibt es ja eine Exportfunktion von ipynb nach py, so dass ggf. auch eine Python-Installation ausreicht.
Du kannst ein Notebook in der Browser-GUI auch als Python Code abspeichern.
EmaNymton hat geschrieben:Wenn sagen wir mal 30 Schülerinnen und Schüler gleichzeitig arbeiten und 2 davon eine Endlosschleife produzieren oder range statt xrange verwenden?
Das kommt darauf an, wieviel Cores dein Server hat. Wenn er genug Cores hat, dann stören 2 Endlosschleifen nicht und die Schüler mit den Endlosschleifen können den Prozess auch selbst beenden, wenn sie den Kernel neu starten. Problematischer wird es da erst, wenn die Schüler die Möglichkeiten von 2D-Plots und mehrdimensionalen Numpy-Arrays entdecken und dann austesten wieviel GB so ein Array haben kann.
EmaNymton hat geschrieben:Gibt es irgendwelche Beschränkungen bzgl. der Python-Module, die ich so nicht sehe? Turtle inline zu betreiben, wäre schön, ist aber kein Muss.
Sieh zu, dass Du die neue Version von ipython bekommst. Bei der Version die bei Ubuntu 12.04 im Paketmanager ist, gibt's die Inline Darstellung von Matplotlib Plots und die inline Darstellung von Sympy Gleichungen LaTeX formatiert noch nicht.
EmaNymton hat geschrieben:Optimal wäre es, wenn der Notebook-Server auch im Internet erreichbar wäre, dafür bräuchte ich aber wohl einen dedizierten Server im Netz, da dort ja eine Python-Installation laufen muss, oder? Eine Weiterleitung in das Schulnetzwerk möchte ich vermeiden.
Willst Du wirklich eine Python-Shell auf Deinem Server im Internet veröffentlichen? Ich würde ipython nur im Intranet betreiben, ich habe bislang noch keine "Sandbox" Funktionalität wie bei Java Servern bei ipython gefunden.

"IPython Interactive Computing and Visualization Cookbook" von Cyrille Rossant is übrigens ein sehr schönes Buch um zu sehen, was alles mit ipython so geht.
a fool with a tool is still a fool, www.magben.de, YouTube
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Danke für die Antworten, der Server wird wohl virtualisiert sein, d.h. ich kann prinzipiell bis zu 16 Cores und 12 GB RAM verwenden, wobei auf der Maschine auch schon der Terminalserver läuft, der einen Raum versorgt. Wie du richtig angemerkt hast, ist wohl eher der RAM die begrenzende Größe. Das merkt man beim Terminalserver, wenn er anfängt zu swappen wird es unschön. ;)

Danke für den Tipp mit der aktuellen Version von ipython, da ich tatsächlich noch 12.04 verwende.

@ Python-Shell auf Server im Internet: Ok, das Argument ist natürlich einleuchtend, wie löst das dann aber z.B. RunestoneTools? Da kann ich ja prinzipiell auch jeden Python-Code eingeben und ausführen lassen, oder habe ich da etwas missverstanden?
BlackJack

@EmaNymton: Da wird wahrscheinlich auch Virtualisierung benutzt um Rechenzeit und RAM zu beschränken. Eventuell plus Monitoring was bei zu starker Belastung die Übeltäter killt.
Antworten