Python: Unterschied zwischen den Versionen
Martin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Martin (Diskussion | Beiträge) |
||
| Zeile 33: | Zeile 33: | ||
Anmerkung: In den vergangenen Jahren habe ich sowohl an der VHS Tübingen als auch an Tübinger Gymnasien Python-Kurse gegeben. Zur Information der Kursteilnehmer dienten mir damals Seiten bei wikidot.com und zwar separat für die [http://tuepy.wikidot.com VHS] und [http://tuepy.wikidot.com/teclab Schulen]. Sie werden aber nicht mehr aktualisiert! | Anmerkung: In den vergangenen Jahren habe ich sowohl an der VHS Tübingen als auch an Tübinger Gymnasien Python-Kurse gegeben. Zur Information der Kursteilnehmer dienten mir damals Seiten bei wikidot.com und zwar separat für die [http://tuepy.wikidot.com VHS] und [http://tuepy.wikidot.com/teclab Schulen]. Sie werden aber nicht mehr aktualisiert! | ||
==Einführung== | |||
Wenn ihr euch für MINT - d.h. '''M'''athematik, '''I'''nformatik, '''N'''aturwissenschaft und '''T'''echnik interessiert, kann die Programmierung mit [https://de.wikipedia.org/wiki/Python_(Programmiersprache) Python] ein wichtiger Baustein für euer Lernen in diesen Fächern sein - und weit darüber hinaus. Kein Studium in diesen Bereichen kommt heutzutage ohne Programmierung aus und Python ist dabei eine ideale und praxistaugliche Programmiersprache. In Tübingen gibt es hunderte von Menschen an der Uni, in Firmen und wissenschaftlichen Instituten, die täglich mit Python arbeiten. | |||
Doch wie fängt man da an? Indem man das teclab-MINT besucht und zunächst die Einsteiger-AG absolviert. Anschließend könnt ihr euch allein oder in einer Gruppe eines der vielen Projekte vornehmen, die ich vorbereitet habe. Ich begleite euch dann mehr oder weniger intensiv - so, wie es euch gefällt - zum erfolgreichen Abschluss. Es muss auch nicht immer wissenschaftlich zugehen. Wer gerne Spiele programmiert, ist mit Python ebenfalls gut bedient! | |||
Die Bearbeitung eines Projektes während der Unterrichtsstunden läuft in etwa so ab: | |||
* Wir klären die Aufgabe: Was muss das Programm leisten? | |||
* Wir klären den Lösungsansatz: Was sind die Kernideen für das Programm-Design? | |||
* Wir klären den weiteren Ablauf: In welchen Schritten arbeiten wir an der Lösung? | |||
* Ich erläutere die Lösung für die erste Teilproblematik, gebe sie schrittweise ein und starte einen Testlauf. Programmcode und Ausgaben sind mittels Beamer / Whiteboard für alle sichtbar. (live programming) | |||
* Nach wenigen Minuten hat jede Teilnehmerin für sich ein lauffähiges Python-Programm auf ihrem PC eingetippt. Sie kann der vorgegebenen Lösung folgen, muss aber nicht. | |||
* Die Lösung wird bis zum geplanten Vollausabau schrittweise erweitert. Alle Zwischenlösungen stellen lauffähige Programme dar und werden separat gespeichert. So kann man im Problemfall jederzeit zurück zur letzten Stufe gehen. | |||
Wir benutzen die integrierte Entwicklungsumgebung [https://en.wikipedia.org/wiki/Thonny Thonny], die für Windows, Mac OS und Linux kostenfrei betrieben werden kann, also auch auf deinem privaten PC. | |||
Zu meiner Person: Als Diplomingenieur habe ich über 30 Jahre lang mit Software-Entwicklung mein Geld verdient. Tübinger Gymnasiast*innen konnten schon in den Jahren 2022-2026 an meinen Python-Kursen teilnehmen. Weiterhin pflege ich eine [https://martin-reiche.de Homepage] mit Inhalten, die ebenfalls oft einen MINT-Bezug haben. | |||
==Python Themen außer Reichweite (beyond scope)== | ==Python Themen außer Reichweite (beyond scope)== | ||
Version vom 7. September 2026, 21:10 Uhr
Willkommen bei der Python-AG im Schuljahr 2026/7
Mein Name ist Martin Reiche und ich bin euer AG-Leiter und Betreuer. Ihr könnt mich zu allen Fragen rund um die AG per E-Mail erreichen unter tuepsky@gmx.de. Die Begriffe "AG" (Arbeitsgemeinschaft) und "Kurs" haben hier dieselbe Bedeutung. Manche sagen so, sie anderen so :-)
Die AG steht für alle Schülerinnen und Schüler in Tübingen offen. Veranstaltungsort wird vermutlich wieder das Wildermuth-Gymnasium sein.
Ich plane sowohl einen Einsteiger- als auch einen Fortgeschrittenen-Kurs. Beim Fortgeschrittenen-Kurs wollen wir mit dem Maschinellen Lernen, der Grundlage von KI fortfahren. Als nächster Punkt stehen künstliche Neuronale Netze auf dem Programm, die wir in reinem Python programmieren wollen.
Wer grundsätzlich Interesse an der AG im Schuljahr 26/27 hat, schreibe bitte eine E-Mail an tuepsky@gmx.de! Die verpflichtet euch zu nichts. Aber dann habe ich euch in jedem Falle auf dem Radar und kann euch rechtzeitig mit Informationen versorgen. Ich plane für den Anfang des Schuljahres wieder Info-Veranstaltungen, die ich dann hier rechtzeitig ankündigen werde!
Auf dieser, dieser und dieser Seite könnt ihr sehen, was in den vergangenen Jahren so lief. Demnächst wird an Euren Schulen auch Python gelehrt. Das ist eine erfreuliche Entwicklung. Doch niemand sollte auf die Idee kommen, hier eine Konkurrenz erkennen zu wollen! Dafür ist die Welt der Programmierung einfach viel zu groß, wie schon an dieser und dieser Projektliste zu erkennen. Außerdem profitiert man immer auch von einer Wiederholung, falls sie denn auftritt. Und schließlich gilt: Auf zwei Rädern fährt es sich leichter als auf einem!
Meine Python-Kurse
Wichtige Informationen für jetzige und zukünftige Teilnehmer*innen finden sich hier:
- Projekte - Diese Projekte sind für den Einsatz in den Kursstunden gedacht.
- Übungen - Hier finden sich Projekte, die von den Kursteilnehmern wenig Spezialwissen erfordern und damit auch ohne Unterstützung zu bearbeiten sein sollten.
- Ressourcen - Nützliche Links und Zusatzwissen.
Siehe auch meine Homepage!
Anmerkung: In den vergangenen Jahren habe ich sowohl an der VHS Tübingen als auch an Tübinger Gymnasien Python-Kurse gegeben. Zur Information der Kursteilnehmer dienten mir damals Seiten bei wikidot.com und zwar separat für die VHS und Schulen. Sie werden aber nicht mehr aktualisiert!
Einführung
Wenn ihr euch für MINT - d.h. Mathematik, Informatik, Naturwissenschaft und Technik interessiert, kann die Programmierung mit Python ein wichtiger Baustein für euer Lernen in diesen Fächern sein - und weit darüber hinaus. Kein Studium in diesen Bereichen kommt heutzutage ohne Programmierung aus und Python ist dabei eine ideale und praxistaugliche Programmiersprache. In Tübingen gibt es hunderte von Menschen an der Uni, in Firmen und wissenschaftlichen Instituten, die täglich mit Python arbeiten. Doch wie fängt man da an? Indem man das teclab-MINT besucht und zunächst die Einsteiger-AG absolviert. Anschließend könnt ihr euch allein oder in einer Gruppe eines der vielen Projekte vornehmen, die ich vorbereitet habe. Ich begleite euch dann mehr oder weniger intensiv - so, wie es euch gefällt - zum erfolgreichen Abschluss. Es muss auch nicht immer wissenschaftlich zugehen. Wer gerne Spiele programmiert, ist mit Python ebenfalls gut bedient!
Die Bearbeitung eines Projektes während der Unterrichtsstunden läuft in etwa so ab:
- Wir klären die Aufgabe: Was muss das Programm leisten?
- Wir klären den Lösungsansatz: Was sind die Kernideen für das Programm-Design?
- Wir klären den weiteren Ablauf: In welchen Schritten arbeiten wir an der Lösung?
- Ich erläutere die Lösung für die erste Teilproblematik, gebe sie schrittweise ein und starte einen Testlauf. Programmcode und Ausgaben sind mittels Beamer / Whiteboard für alle sichtbar. (live programming)
- Nach wenigen Minuten hat jede Teilnehmerin für sich ein lauffähiges Python-Programm auf ihrem PC eingetippt. Sie kann der vorgegebenen Lösung folgen, muss aber nicht.
- Die Lösung wird bis zum geplanten Vollausabau schrittweise erweitert. Alle Zwischenlösungen stellen lauffähige Programme dar und werden separat gespeichert. So kann man im Problemfall jederzeit zurück zur letzten Stufe gehen.
Wir benutzen die integrierte Entwicklungsumgebung Thonny, die für Windows, Mac OS und Linux kostenfrei betrieben werden kann, also auch auf deinem privaten PC.
Zu meiner Person: Als Diplomingenieur habe ich über 30 Jahre lang mit Software-Entwicklung mein Geld verdient. Tübinger Gymnasiast*innen konnten schon in den Jahren 2022-2026 an meinen Python-Kursen teilnehmen. Weiterhin pflege ich eine Homepage mit Inhalten, die ebenfalls oft einen MINT-Bezug haben.
Python Themen außer Reichweite (beyond scope)
Im Anfänger-Kurs kommen viele Themen mit Python-Bezug aus Zeitgründen mit Absicht nicht vor, sind aber für die professionelle Software-Entwicklung meist unverzichtbar. In den Projekt-Kursen kann es allerdings Ausnahmen geben.
Python-Grundlagen betreffend
Python enthält viele Sprachelemente und Standard-Module, die wir nicht alle behandeln können. Trotzdem muss man sie als ernsthafter Python Entwickler kennen. Für die Sprache selbst bedeutet dies:
| Thema | Wir beschränken uns auf |
|---|---|
| Einfache Datentypen | bool, int, float, str |
| Zusammengesetzte Datentypen | tuple, list, set, dict (inkl. comprehensions) |
| Verzweigungen | if / elif / else, match / case, try / except * |
| Schleifen | for, while * |
| Built-In Funktionen | bool, int, float, str, list, set, len, abs, max, min, enumerate, input, open, print, range, sum, zip |
| Built-In Module | turtle, random, math, time, tkinter, os |
| Sprachkonstrukte zur Kapselung | Funktionen (def) und Klassen (class) |
*) Da gibt's auch nicht mehr!
In den bisherigen Durchläufen des Anfänger-Kurses konnten wir uns eine Diskussion des Laufzeit-Objekt-Modells ersparen. (Variablen-Namen verweisen auf Objekte, die durch Typ, Wert und ID gekennzeichnet sind. Bei Funktionsaufrufen werden Referenzen auf diese Objekte übergeben etc.)
Ebenso verwenden wir nur Pygame und die Matplotlib als separat zu installierende Module.
Wer mehr über Python lernen will, schaue sich tiefer gehende Bücher (z.B. von Mark Lutz oder dieses) bzw. YouTube Videos an oder auch die Python-Original-Dokumentation! Achtung: Letztere kann für Anfänger leicht überwältigend wirken!
Andere Themen mit Python-Bezug
Zum Umfeld der Python-Programm-Entwicklung gehören folgende Themen, die wir nicht adressieren können:
| Thema | Kommentar |
|---|---|
| Professionelle Entwicklungsumgebungen | z.B. PyCharm, Visual Studio Code. Für unsere Zwecke stellt Thonny den besten Kompromiss zwischen leichter Erlernbarkeit und Benutzbarkeit einerseits und Leistungsfähigkeit andererseits dar. |
| Jupyter Notebook | Eine sehr verbreitete interaktive Programmierumgebung hauptsächlich für komplexe Datenanalyse z.B. in der KI, Gen-Analyse (Biologie) oder auch Astronomie. |
| Python type hinting | Python Variablen können auf beliebige Datentypen verweisen. Das macht Python-Programme, besonders Funktionsaufrufe, fehleranfällig. Darum verwenden alle Profis das sogenannte Type-hinting, um diesen Problemen zu entgehen. |
| Source Code Versionierung | Ohne die Versionierung des Quellcodes z.B. mit Git ist eine professionelle Software-Entwicklung undenkbar. |
| Automatisches Testen | Ohne automatische Tests ist eine professionelle Software-Entwicklung undenkbar. Siehe unittest und Pytest. |
| Pakete wie numpy, pandas, scipy | Beinahe alle professionelle Anwendungen im mathematisch-naturwissenschaftlichen Bereich nutzen diese Pakete. |
| Dokumentation | Beschreibungen von Funktionalität, innerem Aufbau, mathematische Hintergründe, Teststrategie von Software etc. sind im professionellen Umfeld unverzichtbar, erfordern aber eine eigenes Management und Infrastruktur. Hier kann man viel zum Gelingen des Produkts beitragen, aber auch viel unnötigen Ballast generieren. |
| Modularisierung / Pakete für große Apps | Wohl kaum eine professionelle Software findet in einem Modul Platz! Wir können uns aber darauf beschränken. |
| Nebenläufigkeit / asynchrone / parallele Programm-Ausführung | Insbesondere für Web-basierte Programme ist dies wichtig. |
| Software-Architekturen | Sobald die Software größer wird, muss man sich um die globalen Strukturen Gedanken machen. Darum ist Software-Architektur auch eine eigene Disziplin. |
| Virtual environments (venv) | Professionelle Software-Entwicklungsumgebungen bzw. -Produkte müssen oft mit einer Mehrzahl von Versionierungsständen benutzter Pakete umgehen. Die daraus resultierenden Probleme adressieren diese virtuelle Umgebungen. |
| Reguläre Ausdrücke (regx) Pattern Matching | Leistungsfähige Erkennungsalgorithmen für Zeichenketten vermeiden in vielen professionellen Anwendungen die Neuerfindung des Rades. |