Programmieren an Schulen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Hallo,

Wie ich nun hier wieder sehe wird der Code, der von einem Informatiklehrer erstellt wurde, ... kritisiert. Ich möchte meine Meinung nun nicht auch noch in diesem Theard loswerden. Deswegen tue ich das hier einfach mal:

Ich gehe ich die 10. Klasse und habe seit einen Jahr 3 Stunden Informatik in der Woche. Seit ca. einem halben Jahr bin ich hier angemeldet und ich muss sagen, dass mich das Forum stark geprägt hat. Beispiele sind *-Import, Variablennamengebung...

Als ich neulich im Informatikunterricht vorgeschlagen hab das Problem mit einer for-Schleife zu lösen kam von meinem Lehrer nur ein erstauntes "Ja, das kann man auch machen" zurück (Das Problem war ein Testlauf für eine Klasse, die mit verschiedenen Zahlwerten instanziert werden musste. Mein Lehrer hat immer den jeweiligen Programmabschnitt kopiert die die Zahlen verändert :shock: )


Entgegnen kann man vielleicht noch, dass es beim Lesen verständlicher ist, als alles in Schleifen usw. zu verpacken. Das finde ich nicht! Aber vielleicht scheint es für den ein oder anderen Laien eindeutiger zu sein :roll:


Mich würde jetzt gerne mal ein Statement anderer Eingeweihter wie Außenstehender hören wollen.

Das war soweit meine Meinung.
Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", denn wir morgen schreiben einen. (verbessert für derdon)
Zuletzt geändert von Pascal am Montag 5. Oktober 2009, 19:55, insgesamt 2-mal geändert.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Das Thema "Qualität des Informatikunterrichts an deutschen Schulen" und "Ausbildung der Informatiklehrer" wurde schon gelegentlich in unterschiedlichen Threads mal behandelt. Man sollte die Sache nüchtern sehen. Dazu ein paar Gedanken:

Es gibt mehr Bedarf an Informatikunterricht, als es derzeit Lehrer gibt, die eine adäquate Ausbildung haben. Nach meiner Einschätzung ist auch nicht unbedingt davon auszugehen, dass sich das bald ändert. Bei einem Großteil der Informatiklehrer handelt es sich um Mathematik- oder Physiklehrer, die über Ergänzungskurse (oder nicht mal das) zur Informatik gekommen sind.

Wer als Informatiklehrer - wie vom OP geschildert - z.B. 2 dreistündige Kurse im Bereich der Klassen 8-10 hat, der hat eben außer diesen 6 Stunden noch - je nach Schulform und sonstigen Rahmenbedingungen - knapp 20 Stunden anderen Unterricht in den Fächern, für die er eigentlich ausgebildet wurde. Und von den 2 Jahren Informatikunterricht ist wiederum nur ein Teil (in der Regel etwa die Hälfte) Programmierunterricht. Und außer dem Unterrichten haben Lehrer auch noch einiges andere um die Ohren. Das heißt: Es fehlt den meisten Lehrern schlicht die Zeit, sich so intensiv mit einem kleinen Ausschnitt ihrer Gesamttätigkeit zu beschäftigen, dass sie eine bestimmte Programmiersprache - und zwar ausgerechnet die, die sie unterrichten (müssen?) - so gut beherrschen, dass sie ihren Schülern entsprechende Fähigkeiten vermitteln können.

Nicht wenige Informatiklehrer haben das Programmieren mit Pascal oder Basic gelernt, die Grundideen der OOP sind z.B. oft nicht vorhanden. Wenn man dann seine Grundkenntnisse der imperativen Programmierung 1:1 auf Python überträgt, dann kommt eben oft etwas dabei heraus, was dem "python way of programming" nicht unbedingt entspricht. Schon so grundlegende Sachen wie das Iterieren über eine Liste, ein Dictionary oder Datei oder das Arbeiten mit Listen (was, ohne ZEIGER?) können da gewöhnungsbedürftig sein.

Aber letztlich ist es doch immerhin gut, dass es Informatiklehrer gibt, die überhaupt Python unterrichten, auch wenn die Qualität zu wünschen übrig lässt.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Pascal hat geschrieben:Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", denn wir morgen schreiben.
Entweder Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", denn wir schreiben morgen. oder Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", den wir morgen schreiben.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

derdon hat geschrieben:
Pascal hat geschrieben:Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", denn wir morgen schreiben.
Entweder Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", denn wir schreiben morgen. oder Ich muss jetzt übrigens noch für meinen Informatiktest "lernen", den wir morgen schreiben.
Bist du pingelig. Ist Deutschtest doch keiner ...
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Ich habe leider keinen Informatikunterricht (weil ich so dumm war und italienisch genommen hab), trotzdem fängt jetzt der teil der Info hat demnächst mit JAVA an als vorbereitung nutzten sie so eine Art Robot Karol:
http://images.google.de/images?hl=de&so ... a=N&tab=wi was ich persöhnlich traurig finde, damit hätte man letztes Jahr beginnen können, sowie noch mit Perl oder Python um ins Programmieren rein zu kommen, dann wär das Ziel, Java einigermaßen zu beherrschen, in diesem Jahr, vielleicht erreichbar gewesen, so sehe ich für meine Parallelklasse viele Verzeifwlungen und keine Lust ab Programmieren

Ich frage mich, wie die Lehrer den Schülern in diesem Jahr noch Java beibringen wollen wenn sie nicht einmal Grundlagen lernen sondern viel zu spät anfangen und dann mit 'Kästchen setzten, Kästchen löschen', dann kamen noch so ein Paar qualifizierte ansagen wie, C ist Objektorientiert (gut ein anderes Thema)

mfg (vllt bin ich ein bisschen vom Thema abegekommen, aber dass musste einfach mal raus)

//Edit: Fazit: der Lehrplan ist Schuld, sowie unqualifizierte Lehrer!
the more they change the more they stay the same
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Die unqualifizierten Lehrer sind nicht das Problem, sie sind eine Folge des Problems.



derdon, der heute wohl seinen großen Klugscheißtag hat
lunar

Dav1d hat geschrieben://Edit: Fazit: der Lehrplan ist Schuld, sowie unqualifizierte Lehrer!
Du machst es Dir aber sehr einfach. Hast Du wirklich nicht weiter gedacht?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ich vermute, die wenigsten Lehrer haben echte (mehrjährige) Praxiserfahrung. Sie werden sich das meiste aus Büchern und anderem Unterrichtsmaterial zusammengesucht haben. Leute mit Programmiererfahrung sind wieder nicht wirklich Erfahren im Unterrichten. Könnte man mich auf eine Horde Schüler loslassen? Ich weiß nicht, wer da zuerst aufgeben würde... ich stelle mir das jedenfalls ganz schön schwer vor.

Und letztlich sind Details in der perfekten Ausnutzung einer Programmiersprache auch irrelevant für die Konzepte. Ganz nach dem Motto "Wat is'ne Dampfmaschin'? Da stellen wir uns mal ganz dumm..." Wenn es im Informatikunterricht um das Verständnis geht, was einen Computer im Innersten zusammenhält, dann ist es wurscht, ob man nun ein Sternchen-Import macht oder nicht. Schleifen, Bedingungen, Prozeduren, Rekursion, vielleicht noch funktionale und logische Programmierung, ein bisschen Objektorientierung mit Analyse und Design, das würde IMHO schon ausreichen.

Häufig ist es zudem auch wichtig, nicht das beste Konzept kennen zu lernen (falls es das überhaupt gibt), sondern die verschiedenen Konzepte (um sich auch zu lernen, dass es das Beste eben nicht gibt). Da finde ich es nicht verwunderlich, wenn es heißt, "while" statt "for" zu benutzen (oder umgekehrt).

PS: Dieses Java-Robot-Dingens ist nur das Endergebnis einer langen Reihe von Versuchen, die 1967 mit der Programmiersprache Logo (abgeleitet aus Lisp) begonnen hat, Normalsterblichen die Idee der Programmierung durch imperative Algorithmen anhand praktischer Beispiele einzubläuen.

PPS: Exaktheit (bis hin zur Pingeligkeit) ist eine Berufskrankheit von Softwareentwicklern, denn Programmierung heißt, absolut exakt zu sein.

Stefan
BlackJack

@sma: Der Quelltext in dem Thema, das im ersten Beitrag verlinkt wurde, ist wieder entfernt worden. Ich weiss also nicht, ob Du den gesehen hast. Aber IMHO war der ziemlich schlecht. Es gibt zum Beispiel ein Mass an Programmieren durch "kopieren & einfügen" das man auch nicht überschreiten sollte, wenn man kein perfektes Programm schreiben möchte.

Die Wahl der "richtigen" Schleife gehört IMHO auch in den Inf-Unterricht. Ich habe jedenfalls damals gelernt, dass die ``while``-Schleife die allgemeinere ist und wir hatten als Aufgabe die ``for``-Schleife damit zu implementieren, um die Gemeinsamkeiten und Unterschiede zu sehen, und dass man die ``for``-Schleife nimmt, wenn die Anzahl der Wiederholungen vor Schleifeneintritt bekannt ist. Solche grundlegenden Weisheiten sollten doch eigentlich im Unterrichtsmaterial stehen!?

Und dann war das Programm an einigen Stellen einfach kaputt. Zum Beispiel etwas das so ähnlich wie das hier aussah:

Code: Alles auswählen

    a = 7
    while a != 0:
        button = Button(root, text=str(a), command=lambda: setze_feld(a))
        button.pack()
        a -= 1
Der Codeblock war dann zig-mal mit anderen, zusätzlichen "magischen" Argumenten für `setze_feld()` untereinander kopiert, so dass ich jetzt nicht sagen kann, an welchen Wert `a` am Ende gebunden ist.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Informatik gehört meiner Meinung nach nicht in eine Schule. 3 Stunden pro Woche reichen für die Grundlagen alleine so eben aus, wenn überhaupt. Unterschiedliche Konzepte wie Objekt Orientierte, Funktionale, Imperative oder vielleicht sogar Stackbasierte Programmierung kann man in der Zeit nicht vermitteln. Abgesehen davon bleibt der praktische Nutzen auf der Strecke.

Der Fokus sollte eher sein Computer im richtigen Kontext zu nutzen, dass heisst Typografisches im Deutsch Unterricht, Recherche ginge in mehreren Fächern, Tabellenkalkulation kann man gut in Mathe/Physik nutzen und eventuell auch in SoWi für Umfragen(wenn man keinen Zugriff auf spezielle Software hat). Das würde viel mehr Sinn machen als der verzweifelte Versuch moderner zu wirken indem man irgendwie Computer in der Schule unterbringt und sie nur aus dem Selbstzweck heraus da sind, dass richtet mehr schaden an als dass es hilft.

Letztendlich ist so etwas ein Informatiklehrer sowieso nicht existent, die meisten machen dass über irgendein Zusatzangebot und haben keine nennenswerte Erfahrung und der Rest geht eher in die Erwachsenenbildung oder macht irgendwas anderes mit besseren Aufstiegschancen.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

DasIch hat geschrieben:Informatik gehört meiner Meinung nach nicht in eine Schule. 3 Stunden pro Woche reichen für die Grundlagen alleine so eben aus.
Mit dem Argument kannst du alles, was kein Leistungskurs ist, abschaffen...

Wichtiger als Programmieren waere vlt. allgemeineres Wissen, welches einem hilft, verantwortungsbewusst mit Computern und Daten umzugehen. Viren, Wuermer, https, Datensicherung, Verschluesselung etc. Https nuetzt zum Beispiel nicht viel, wenn die meisten Nutzer nicht wissen, was genau ein Zertifikat eigentlich aussagt; kaum jemandem ist bewusst dass Mails von jedem mitgelesen werden koennten etc.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

*rebeccasworteunterstreichenwill*
DasIch hat geschrieben:Der Fokus sollte eher sein Computer im richtigen Kontext zu nutzen, dass heisst Typografisches im Deutsch Unterricht, Recherche ginge in mehreren Fächern, Tabellenkalkulation kann man gut in Mathe/Physik nutzen und eventuell auch in SoWi für Umfragen(wenn man keinen Zugriff auf spezielle Software hat). Das würde viel mehr Sinn machen als der verzweifelte Versuch moderner zu wirken indem man irgendwie Computer in der Schule unterbringt und sie nur aus dem Selbstzweck heraus da sind, dass richtet mehr schaden an als dass es hilft.
Darüber kann man natürlich lange und in Länge diskutieren. Aber meinst Du tatsächlich, das Lehrer tatsächlich das Curriculum ihrer Fächer durch "Kulturtechniken" ausdünnen sollen? Ich habe mich immer darüber geärgert, wenn Studenten im Hauptstudium keine Tabellenkalkulation beherrschten, aber es so verdammt viel Zeit gekostet, dass ich nicht denke es sollte in die Schulphysik eingebettet werden - wo bliebe Zeit für die Physik? etc.
lunar

@DasIch: Ich halte es mit Rebecca.

Unmittelbarer praktischer Nutzen ist auch nicht immer das Ziel des Unterrichts, insbesondere nicht an höheren Schule und Einrichtungen wie Gymnasien und Universitäten. Es geht weniger darum, zu lehren, wie man etwas konkret nutzt, sondern mehr darum, Grundlagen zu schaffen, auf denen man später eigenverantwortlich aufbauen kann.

Insofern hat Informatikunterricht vielleicht auch ähnliche Zielsetzungen wie Latein: Es wird nicht das flüssige "Sprechen" der Sprache (sei es Latein oder eine x-beliebige Programmiersprache) gelehrt. Vielmehr möchte man das Denken schulen und allgemeinere Grundlagen vermitteln (klassische Bildung im Latein-Unterricht, Arbeitsweise von Computern im Informatikunterricht). Ebenso wie Latein ein über die konkrete Sprache hinausgehendes Verständnis für Sprachen schafft oder schaffen sollte, möchte man im Informatikunterricht wohl auch eher erreichen, dass Schüler überhaupt wissen, was Schleifen, Funktionen, Rekursionen, etc. sind.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

CM hat geschrieben:Ich habe mich immer darüber geärgert, wenn Studenten im Hauptstudium keine Tabellenkalkulation beherrschten, aber es so verdammt viel Zeit gekostet, dass ich nicht denke es sollte in die Schulphysik eingebettet werden - wo bliebe Zeit für die Physik? etc.
Es ist ja nicht so als ob dass nicht sowieso schon ein kleiner Teil der Lehrer machen. Gerade bei Zinsrechnung, quadratischen Funktionen oder für Testergebnisse z.B. bei Bewegungen kann man dass gut unterbringen aber dass passiert noch zu wenig.

Natürlich ist mir klar dass es in der Schule, vorallem bei einem Gymnasium, viel um Grundlagen geht aber wenn man anderthalb Jahre(die Zeit ist nicht ausgedacht) braucht bis man damit anfängt seinen Schülern OOP beibringt, sehe ich nicht dass die Zeit sinnvoll investiert ist. Ich denke dass es wichtiger ist sich mit Dingen wie Vorgehensmodellen zu beschäftigen, aus denen man auch Dinge ableiten kann die außerhalb der Informatik interessant sein können.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

DasIch hat geschrieben:wenn man anderthalb Jahre(die Zeit ist nicht ausgedacht) braucht bis man damit anfängt seinen Schülern OOP beibringt, sehe ich nicht dass die Zeit sinnvoll investiert ist.
Naja, hängt davon ab, was in den 1,5 Jahren bis dahin gemacht wurde.
Was OOP angeht, so ist sie im Informatikunterricht der Mittelstufe (Kl. 8-9/10) schwer sinnvoll unterzubringen, weil man ihren tatsächlichen Nutzen oder gar Notwendigkeit doch erst bei größeren Sachen, vorzugsweise bei Teamarbeit, erkennen kann.

Es gab schonmal einen Thread (ich meine, von Leonidas angestoßen), wo es darum ging, sinnvolle Beispiele für den Einstieg in die OOP zu finden, weil es eben schwierig ist, dies an kleinen Programmieraufgaben, auf die man in der Schule doch irgendwie beschränkt bleibt, einzuüben.

Aber auch ohne OOP halte ich eine Einführung in die Programmierung, wie sie Teil des Informatikunterrichts ist, nicht für vergeblich oder sinnlos, im Gegenteil. Wenn es anständig gemacht wird, dann kann man dort Grundlagen des algorithmischen, logisch-stringenten Denkens erarbeiten und fördern und nicht zuletzt auch junge Menschen erstmals in Kontakt mit der Programmierung bringen, die dadurch Geschmack an der Sache finden und sich danach aus eigenem Antrieb weiter damit beschäftigen.

Aber Informatikunterricht geht ja über Programmierung hinaus und enthält auch Elemente dessen, was man gemeinhin als "Informationstechnische Grundbildung" bezeichnet: Umgang mit Textverarbeitung und Tabellenkalkulation, ein bisschen Datenbanken, etwas HTML usw.

Der Bereich, den Rebecca angesprochen hat (Sicherheit, Viren, Würmer etc.), ist zweifellos wichtig, aber im Grunde doch noch anspruchsvoller (für einen Informatiklehrer) als die Vermittlung einer Programmiersprache, weil die Veränderungen und Neuerungen auf diesem Feld wesentlich schneller vonstatten gehen als bei der Programmierung, so dass es eines (noch) größeren Aufwandes (für den Lehrer) bedarf, um hier einigermaßen aktuelles Wissen zu vermitteln.
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

numerix hat geschrieben: Aber Informatikunterricht geht ja über Programmierung hinaus und enthält auch Elemente dessen, was man gemeinhin als "Informationstechnische Grundbildung" bezeichnet: Umgang mit Textverarbeitung und Tabellenkalkulation, ein bisschen Datenbanken, etwas HTML usw.
Unterricht mit Excel, Word, Power Point gibt soweit ich weiß an fast allen Schule: nennt sich ITG (informationstechnischer Grundkurs) und ist imho unvollständig bei uns unterrichtet worden. In der siebten Klasse ca. eine Stunde pro Woche, wo wir Textfelder mit Word erstellt haben, mit Power Point gespielt (!) haben ==> nicht sinnvoll

Ich habe Spaß am Programmieren gefunden. Das war bis jetzt allerdings auch der Hauptbestandteil. In Zukunft werden wir uns soweit ich informiert bin, vielen anderen Dingen widmen.
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Aber auch ohne OOP halte ich eine Einführung in die Programmierung, wie sie Teil des Informatikunterrichts ist, nicht für vergeblich oder sinnlos, im Gegenteil. Wenn es anständig gemacht wird, dann kann man dort Grundlagen des algorithmischen, logisch-stringenten Denkens erarbeiten und fördern und nicht zuletzt auch junge Menschen erstmals in Kontakt mit der Programmierung bringen, die dadurch Geschmack an der Sache finden und sich danach aus eigenem Antrieb weiter damit beschäftigen.
Ich möchte das hier mal dick unterstreichen. Wenn ich nicht in der 9/10. Klasse im Differenzierungskurs Informatik/Mathematik super Unterricht genossen hätte, studierte ich heute keine Informatik.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Jetzt machst du mir Angst. Auf unserer Schule wird gar kein Informatik unterrichtet und ich plane trotzdem, es zu studieren. Was hast du denn so elementares gelernt?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

derdon hat geschrieben:Jetzt machst du mir Angst. Auf unserer Schule wird gar kein Informatik unterrichtet und ich plane trotzdem, es zu studieren. Was hast du denn so elementares gelernt?
Ohne die letzte Frage beantworten zu können: Es dürften in vielen Fällen weniger die konkreten Lerninhalte sein, als vielmehr die Art und Weise, wie diese vermittelt wurden. Manch einer von uns wird sich gewiss an den ein oder anderen Lehrer erinnern, der es geschafft hat, Schüler durch seine eigene Begeisterung für die Sache anzustecken und ebenfalls dafür zu begeistern. Das führt dann dazu, dass man sich über den Unterricht hinaus mit der Materie beschäftigt und - schwupps, ist wieder ein Programmierer geboren ...

Informatikstudium ohne Informatikunterricht - warum nicht. Letztlich zählen da doch andere Qualitäten als der Anteil des zuvor angesammelten Wissens.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Noch ein paar Kommentare, bevor meine Konzentration endgültig nachlässt.

Im englischsprachigen Raum unterscheidet man zwischen "computer literacy" und "computer science". Informatik ist streng genommen letzteres. Da geht es um die Mathematik und die Theorien hinter der Programmierung. Das andere fasst den Umgang mit dem Computer um. Das wäre vielleicht eher etwas für die Schule, damit Kids die viel beschworene Medienkompetenz (am besten zusammen mit ihren Eltern) lernen, die verhindern hilft, dass peinliche Facebook-Bilder und Youtube-Videos einem die Karriere (oder auch nur die Ausbildung) ruinieren.

OOP ist nicht die Krone. Wenn schon, dann gebührt dieses Attribut der funktionalen Programmierung. Somit sollte Objektorientierung als ein wichtiges Paradigma gewürdigt werden, doch IMHO reicht es auch, wenn der Schüler (oder die Schülerin) ein paar imperative Progrämmchen hacken kann, wenn das hilft, die Angst vor den Maschinen zu nehmen und vielleicht inspiriert, ein entsprechendes Studium zu beginnen.

Zu der Closure mit der freien Variable kann ich nur sagen: Tja. Veränderliche Variablen haben so ihre Tücken und dieses Beispiel ist ein gutes für einen funktionaleren Stil. Doch wie würde ich einem Anfänger das mit den Closures erklären? Ich würde recht weit ausholen und bei Lisp beginnen, doch kann man das einer Schulklasse zumuten? Hilft es, das ganze einen Abschluss zu nennen und über Gültigkeitsbereiche und Lebendauern von Variablen zu reden, wo das gerade bei Python eher schwammig realisiert ist?

Manchmal sind die Nomen doch einfacher. Das OO-Muster "Command" wäre hier einfacher:

Code: Alles auswählen

class SetFieldCommand:
  def __init__(self, no): self.no = no
  def execute(self): ...
...
  command=SetFieldCommand(a)
Mit meinem vorherigen Posting wollte ich ja Lehrer so ein bisschen in Schutz nehmen. Ich habe da Respekt vor ihrer Aufgabe und viel Verständnis. Das hört aber bei Variablennamen wie "a" auf. Der Mann möge bitte sein Studium wiederholen. Da geht gar nicht. Setzen. Sechs.

Stefan
Antworten