Grundlagen des Programmierens in Python

Anforderungen an Inspirer

Um Python zu erklären, solltest du selbst Erfahrung mit Python haben. Wenn du einen Python-Kurs geben willst, check Folgendes für dich ab:
  • Du bist in der Lage funktionsfähige Pythonskripte zu erstellen und Fehler zu debuggen.
  • Du weißt, wie Repl funktioniert und kannst eine verständliche und hilfreiche Einführung dazu halten.
  • Du kannst mit 9.- 11.-Klässler:innen so kommunizieren, dass sie sich ernst genommen fühlen.
  • Du kannst eine Balance zwischen Verständnis, Echtheit der Programmiererfahrung und Interessenförderung für jeden Teilnehmenden finden. Das kann bei einer abstrakteren Sprache wie Python schwierig werden - aber wenn du dir dessen bewusst bist, machst du das bestimmt auch gut.

Genereller Ablauf

  • Der Kurs beginnt mit der Begrüßung im Plenum. Ein erfahrener Inspirer übernimmt die Einführung in das Thema und versucht sicherzustellen, dass die Technik bei den Meisten funktioniert. Danach werden die Teilnehmenden in kleine Teams eingeteilt. Jeder Inspirer ist während dem Kurs für etwa 4 bis 6 Teilnehmende verantwortlich.
  • Die eingeteilten Teams werden in Breakout-Rooms (bei Zoom) eingeteilt. Wenn ihr in den Breakout Rooms Fragen habt, ruft gerne über Zoom um Hilfe. Der Haupt-Inspirer wird dann zu euch in den Breakout-Room kommen.
  • Vorstellungsrunde in den Gruppen. Stellt euch einmal vor und erklärt gerne, wie ihr zu der IT gekommen seid. Lasst die Teilnehmenden sich vorstellen, inklusive Programmiererfahrung, Erwartungen und Motivation.
  • Jetzt geht es ans Eingemachte: Programmieren! Mehr Informationen zu den Einheiten findet ihr unten.
  • Versucht nach etwa der Halbzeit eine Pause von 30 Minuten einzulegen.
  • Der Abschluss findet wieder im Plenum mit der gesamten Klasse statt. Hier stellt sich jeder Inspirer einmal kurz vor und erklärt, warum er*sie für IT brennt.

P.S.: Vergesst nicht, eure Pausen zu machen 🙂

Hinweise zum Konzept

Lernziele

  • Es geht darum, die Teilnehmenden zu begeistern. Unser Ziel ist es, dass sie nach den 3 Stunden Kurs Interesse haben, noch weiter zu recherchieren und zu programmieren. Wie das bei euch konkret aussieht, ist euch überlassen. Ihr merkt, die Teilnehmenden haben voll Lust mit euch eine halbe Stunde über Roboter zu reden? Macht das gerne.
  • Versucht eher, den Teilnehmenden grundlegende Konzepte beizubringen (“Wie debugge ich ein Programm?”), als Ihnen diese eine Eigenheit von Python lang und breit zu erklären. Zeigt/erklärt ihnen auch gerne, wo das, was sie gerade lernen, im echten Leben zum Einsatz kommt.
  • Lasst die Teilnehmenden so viele Schritte wie möglich selbst gehen. Sie werden so am meisten lernen, und sind hoffentlich auch in der Lage, an das Gelernte nach Ende des Kurses anknüpfen zu können.
  • Lasst sie dabei auch scheitern. Im Optimalfall versucht ihr dann mit ihnen gemeinsam zu ergründen, wieso ihr Ansatz nicht funktioniert hat – dadurch müssen sie ihre Gedanken kommunizieren und lernen so mehr.
  • Dieses Konzept ist unser Vorschlag, wie man Kinder und Jugendliche begeistern könnte. Seht es also mehr als groben Leitfaden und weniger als festen Lehrplan.

Feedback und Fragen an kurskonzepte@hacker-school.de.

Technologie

  • Wir arbeiten während dem Kurs mit dem Online-Editor Repl.it -> https://repl.it
  • Wie genau die Kids sich einloggen und mit welchen Accounts sie arbeiten, erklärt der Team-Inspirer am Anfang im Plenum. Das ist also nicht eure Aufgabe, darum kümmern wir uns.

Konzept

Begrüßung und generelle Motivation

  • Wer sind wir und was wünschen wir uns? (an die Kinder gerichtet)
    • Hacker School: Wir wollen, dass ihr alle etwas mitnehmen könnt. Uns ist es lieber, dass ihr Zusammenhänge verstanden habt, aber dafür insgesamt weniger Stoff. (Wird trotzdem vorkommen, dass euch Dinge überfordern, aber das ist normal. Behaltet das trotzdem im Hinterkopf)
    • Vordergründig bringen wir euch heute Programmieren bei, aber eigentlich geht es uns auch darum, euch mit Menschen zusammenzubringen, die das richtige Mindset haben. Damit ihr von Ihnen lernen könnt. Wenn ihr inhaltlich überhaupt nichts verstehen solltet, aber dafür die Fehlerkultur mitnehmt, sind wir happy.
    • A propos Fehlerkultur: Wenn ihr etwas nicht versteht – fragt nach. Das hier soll alles werden, bloß kein Frontalunterricht, in dem ihr Dinge schlucken, verdauen und nachher wieder auskotzen sollt. Uns geht es darum, dass ihr Spaß habt, und vor allem: etwas für euch lernt und mitnehmt. Und gerade dem stehen so ein paar Dinge im Weg, wie: Schon beim ersten kleinen Fitzelchen Syntax zu scheitern. Also: Wenn ihr jetzt gleich bei euren Inspirern seid und euer Programm nicht funktioniert, was macht ihr dann? Richtig. Fragt nach.
  • grober inhaltlicher Überblick
  • zeitlicher Überblick
  • Einmal kurz die Technologie durchgehen

Vorstellungsrunde

  • Stellt euch selber vor. (2-3 Sätze)
    • Was habt ihr gemacht, als ihr so alt wart wie die Teilnehmenden?
  • Lasst die Teilnehmenden sich vorstellen.
    • Wie heißt du?
    • Hast du schonmal programmiert?
    • Was erhoffst du dir von diesem Kurs?

Wichtig: achtet darauf, dass die Kinder sich nur mit Vornamen vorstellen – Datenschutz.

Hallo Welt!

  • Teilt euren Bildschirm und programmiert Hallo Welt.
  • Geht langsam, Zeichen für Zeichen durch den Code:

    • Warum sind da Klammern? Und welche sind das?
    • Was bedeuten die "" dort?
    • Was macht die Konsole? Was ist das überhaupt?
    • Wie führt man das Programm aus?
  • Lasst die Jugendlichen gerne auch mit anderen Texten herumspielen.

Lernziele

  • print()
  • Strings
  • Was die Konsole macht/ist
  • Ausführen eines Programms
  • Funktionsaufrufe (indirekt, da kommt ihr aber später nochmal dazu)

Code

1
print("Hallo, Welt!")

Hallo <Name>!

  • Arbeitet euch mit Variablendeklarationen, input() und Stringkonkatenation an unterstehendes Programm heran.
  • Lasst die Teilnehmenden damit herumspielen.

Lernziele

  • Variablendeklaration mit <Variablenname> = <Wert>
  • mit input("") eine Frage stellen
  • auf initialisierte Variablen zugreifen

Code

1
2
name = input("Wie heißt du? ")
print("Hallo " + name)

If und Else

  • Teilt euren Bildschirm und wagt euch zu dem Code weiter unten vor.

Lernziele

  • Fallunterscheidungen mit if <condition>: <then> else: <else>
  • was eine Fallunterscheidung ist
  • was eine Bedingung ist

Code

1
2
3
4
if name == "Inspirer":
    print("Oh, dich habe ich doch schon einmal gesehen!")
else: print("Hallo, " + name)

Funktionen (und Datentypen)

  • Eine kleine Motivation für Funktionen: Was ist eigentlich eine Funktion, wofür kann man sie benutzen?
  • Die Funktion malZwei(zahl) wird in der Kleingruppe live gecoded.
  • Lasst die Kids zunächst malZwei (oder malDrei) nachcoden - es lohnt sich, damit das Grundverständnis abzuchecken, bevor man sie selbst loslegen lässt. Vorschläge für weiterführende Funktionen:

    • betrag(zahl)
    • signum(zahl)
    • quadrat(zahl)
    • wurzel(zahl)
  • Wenn ihr eine sehr fitte Gruppe habt, würde sich hier auch ein kleiner Exkurs zu Datentypen anbieten.

Lernziele

  • Wie man Funktionen definiert:

    1
    def <name>(*params): <body>
  • Was Funktionen sind (mehr als diese Graphen in Mathe)
  • Wie Funktionen einem Arbeit abnehmen können

Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

#Diese Funktion wird live gecoded
def malZwei(x): return 2*x
#malZwei(2) => 4
#malZwei(4) => 8

#Das sollten die Teilnehmenden am Ende dieser Einheit selber schreiben (können)
def betrag(x): if x < 0: return -x if x >= 0: return x

Wenn ihr hier bei in etwa der Hälfte der Zeit seid (und noch keine gemacht habt), würde sich hier eine größere Pause von 30 Minuten anbieten. Dann hättet ihr eine klare Einteilung zwischen fachlichem Input und Projektarbeit.

Input zum Klimawandel

  • Eine kleine Runde reden über den Klimawandel - was wissen die Teilnehmenden schon, was fehlt ihnen?

    • Was stößt alles Treibhausgase aus, und wie viel?
    • Was ist ansonsten noch relevant?
    • Was ist mit den Kühen?
    • Gibt es ansonsten noch größere Probleme?
  • Je nach Bedarf ein kurzer Input zum Thema Treibhausgase

    • Erde + Atmosphäre
    • Reflexion der Sonneneinstrahlung an den Treibhausgasen in der Atmosphäre.
    • mehr Treibhausgase -> mehr Reflexion -> die Atmosphäre wird wärmer
    • Gibt es ansonsten noch größere Probleme?
  • Achtung! Der Rechner hier ist zwar ein nettes Beispiel, aber:
    um klimaneutral zu werden, muss sich die gesamte Wirtschaft dekarbonisieren.
    Wir Konsumenten können daran mithelfen, aber gelöst werden muss das Problem in der Politik.

Den Rest des Kurses werden wir mit 100 Punkte hat ein guter Tag arbeiten. Die Idee ist, dass wenn wir als Menschheit klimaneutral leben wollen, wir alle im Schnitt nicht das Budget von 100 Punkten am Tag überschreiten sollten. Schaut euch die Seite gerne im Vorhinein schon einmal an und zeigt sie auch jetzt den Kindern.

Code lesen

  • Und hier das erste "größere" Programm, das ihr nun gemeinsam analysiert.
  • Vorschlag: Lasst jetzt den Teilnehmenden ihren Raum.
    Hier können sie nun selbst prüfen, ob - und wie gut -
    sie bisher alles verstanden haben (und wie weit sie darüber hinaus denken könenn.)

Lernziele

  • Wie man komplexere Funktionen liest und versteht
  • Wie man Abläufe in (wiederverwendbare) Funktionen kapseln kann - und dadurch das Leben einfacher machen.
  • Was Kommentare sind

Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12

def CO2_berechnen(mult, weg): punkte = mult*weg return punkte

def zugfahrt(): multiplikator = 1.4 strecke = input("Wie weit fährst du mit dem Zug? (in km)") return CO2_berechnen(multiplikator, int(strecke))

punkte_zug = zugfahrt()
print("Durch deine Fahrt mit dem Zug hast du " + str(punkte_zug) + " Punkte
verbraucht.")

Projektarbeit

Wahrscheinlich seid ihr aber dann auch hier am Ende angekommen, vor allem, wenn ihr von den Kids genug ausgefragt wurdet.

Beispielprojekt + Ideen

Unten einmal eine ausgearbeitete Idee, wohin es gehen könnte - aber zuerst kommen hier noch ein paar Anregungen :)

  • Verschiedene Transportmittel einbauen
  • Müssen es Transportmittel sein?
  • Welche Freizeitaktivitäten haben welchen Ausstoß?
  • Wie sieht es mit Pflanzen aus?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

def CO2_berechnen(mult, weg): punkte = mult*weg return punkte

def zugfahrt(): multiplikator = 1.4 strecke = input("Wie weit fährst du mit dem Zug? (in km)") return CO2_berechnen(multiplikator, int(strecke))

def autofahrt(): multiplikator = 2 strecke = input("Wie weit fährst du mit dem Auto? (in km)") return CO2_berechnen(multiplikator, int(strecke))

def fahrradfahrt(): multiplikator = 0.0 strecke = input("Wie weit fährst du mit dem Fahrrad? (in km)") return CO2_berechnen(multiplikator, int(strecke))

vkmittel = input("Mit was fährst du? Auto, Zug oder Rad? \n")

if vkmittel == "Zug": punkte_zug = zugfahrt() print("Durch deine Fahrt mit dem Zug hast du " + str(punkte_zug) + " Punkte verbraucht.")
elif vkmittel == "Auto": punkte_auto = autofahrt() print("Durch deine Fahrt mit dem Auto hast du " + str(punkte_auto) + " Punkte verbraucht.")
elif vkmittel == "Rad": punkte_rad = fahrradfahrt() print("Durch deine Fahrt mit dem Rad hast du " + str(punkte_rad) + " Punkte verbraucht.")
else: print("Dieses Verkehrsmittel kenne ich leider nicht :(")

  • Es gibt hier sehr viele ähnliche Funktionen. Geht das besser/kürzer? Wie?

Abschluss

~5 min
  • Wenn ihr eurer Gruppe am Ende noch Feedback geben wollt, dann nehmt euch gerne jetzt Zeit dafür.
  • Fragt nach, ob jemand (in der Abschlussrunde im großen Plenum) vorstellen möchte, was ihr so gemacht habt.
~20 min
  • Die Teilnehmenden stellen ihre Projekte vor (eine*r pro Gruppe), und erzählen ein bisschen, was sie so gemacht haben.
  • Die Inspirer reden über sich, wie sie zur IT gekommen sind, was ihnen daran Spaß macht, wieso sie es weiterhin machen wollen, und was sie den Jugendlichen gerne mitgeben möchten.
  • (Wenn erwünscht, bekommt der*die Lehrer*in kurz das Wort)
  • Feedbacklink geht raus