Programmierkurs halten

Hi!

Kennt sich irgendjemand damit aus, einen Kurs zu halten?
Ich halte seit Anfang Februar bei mir in der Firma einen VBA-Kurs (die Programmiersprache war der Wunsch vom Chef). Anfangs waren es 2 Std/Woche, seit einigen Wochen wurde er auf 1 Std/Woche gekürzt.
Für den Kurs steht für jeden Teilnehmer ein Computer bereit, an dem er auch sitzt. Ich selber bin ohne Computer, weil ich Erklärungen ausgedruckt auf Papier dabeihabe und bei den Übungen denen jeweils an ihrem Rechner helfe.
Die Themen die ich bisher durchgenommen habe sind folgende:

  • Excel Grundlagen
  • Ausgaben
  • Variablen
  • Schleifen
  • Abfragen
  • Arrays
    Hierbei habe ich einen übungsbasierten Ansatz. Das heißt, ich beschreibe kurz wie z.B. Schleifen funktionieren und liefer dann vor allem viele Übungen dazu.
    Das Problem: Aufgaben, wo ich der Meinung bin, daß die Lösung ganz offensichtlisch ist, sind für die Teilnehmer ohne meine Hilfe nicht lösbar. Das ist schon von Anfang an so. Selbst bei - meiner Meinung nach - einfachsten Aufgaben hieß es “Ich komm nicht weiter, wenn Du mir nicht bei der Aufgabe hilfst, kann ich nicht weitermachen.”

Ich dachte, daß es sich mit der Zeit legen würde, aber es wurde nicht besser. Klar kommen die Teilnehmer (derzeit 3 an der Zahl) mit der Syntax von VBA einigermaßen zurecht. Aber selber ein Programm schreiben, geht bei denen noch immer nicht.

Inzwischen bin ich am verzweifeln.
Anfangs war einer von denen der Meinung, daß er es nicht richtig verstehe. Die dritte Person - die als besonders gut gilt - kam später dazu und ist auch nicht viel besser als die anderen. Wenngleich die dritte Person noch immer etwas motivierter ist.
Darin sehen sich jedoch nun die anderen beiden darin bestätigt, daß der Kurs zu schwer ist.

Hinzu kommt, daß vor allem in letzter Zeit betriebsbedingt auch nicht alle immer teilnehmen können. Das heißt, es sind drei Personen mit drei verschiedenen Wissensständen und drei verschiednenen Stellen bis welche Aufgabe bereits gelöst wurde.

Wenn gewünscht, kann ich alle Unterlagen, die ich denen gab (Beschreibung von Variablen, Schleifen, Arrays, etc. und die Aufgaben) hier hochladen.

Mit die letzten Aufgaben von den Arrays waren:

  • Schreibe ein Programm, das die Fibonacci-Folge berechnet (habe die Folge noch aufgeführt und wie sie sich zusammensetzt, etc).
  • zwei weitere Folgen, die etwas ähnlich aufgebaut sind, wie die Fibonacci-Folge
  • Berechne die Summe aller Zahlen eines Arrays
  • Ermittle die größte Zahl eines Arrays
  • Ermittle die kleinste Zahl eines Arrays
  • Ermittle die Anzahl der geraden Zahlen des Arrays

Da gibt es dann jedes Mal Probleme, dafür eine zusätzliche Variable anzulegen und diese sinnvoll zu nutzen. (Die Zwischensummen zwischenspeichern bei der Summenaufgabe; immer die gerade aktuell kleinste Zahl zwischenspeichern bei der kleinste-Zahl Aufgabe; etc.)

Meiner Meinung nach, gehe ich schon genauer drauf ein, als es jedes Buch und jedes Video täte. Aber es funktioniert trotzdem nicht.

Teilweise denke ich schon, daß Bücher und Videos für die vielleicht besser wären.
Auf der anderen Seite hingegen wollte mal ein Mitarbeiter bei uns in der Firma Programmieren lernen und ich gab ihm Bücher und Videos zu einer bestimmten Programmiersprache. Seine Antwort war später: “Ja, das kann ich inzwischen schon etwas. Nur das mit den Variablen habe ich nicht ganz verstanden.”

Von den drei Teilnehmern hatte sich nur einer (die dritte Person) die Aufgaben auch mal zu Hause angesehen. Ansonsten beschäftigen sie sich nur mit dem Thema, wenn der Kurs läuft, danach ist das Thema wieder erledigt.

Wie bringt man den Personen das Programmieren bei?
Es geht hier ja noch nicht mal um die Objektorientierung oder fortgeschrittene Entwicklungstechniken. Es geht einfach nur um die Grundlagen.

Ich arbeite in einer Dreherei. Und alle drei Teilnehmer sind Azubis, die diesen Monat mit ihrer Ausbildung fertig werden. Sie sind die ersten in unserer Firma, die ihre Ausbildung verkürzt hatten. Denn es sind die drei besten Azubis, die wir bisher hatten!
Mit ihrer Ausbildung haben sie kein Problem. Auch nicht mit CNC-Programmen, die zu ihrer Ausbildung dazugehören.
CNC-Programme sind normalen Computerprogrammen nicht allzu unähnlich. Nur die Syntax ist komplett anders. Sie besteht immer aus Buchstabe-Zahl kombinationen.
Einer der Teilnehmer sagt z.B. daß ihn das Thema Computer-Programmierung überhaupt nicht interessiert. Deswegen habe er in der Berufsschule auch lauter Einsen aber bei meinem Kurs steige er nicht durch.
Übelnehmen kann ich es ihm trotzdem nicht, denn die erste Teilnehmende Person, wollte den Kurs auf jeden Fall machen und wünschte es sich auch, daß ich es ihm ggf privat beibringe. Aber die Person, die gerne teilnehmen wollte, ist noch schlechter, als der unfreiwillige Teilnehmer, der vom Chef zur Teilnahme auserwählt wurde. Also kann ich da schlecht was gegen sagen.

Hat also irgendjemand hier, Erfahrungan damit, anderen Personen das Programmieren in einem Kurs beizubringen?

Grüße
theuserbl

Programmieren lernt man am ehesten dadurch, selbst Dinge auszuprobieren. Wenn die Personen nicht bereit dazu sind, außerhalb deines Kurses Zeit dafür aufzubringen oder gar nicht erst Interesse daran haben, hat das ganze wenig Sinn, fürchte ich.

Ich finde es erstaunlich, dass solch einfache Themen solche Probleme machen. Aber ich kenne das ein wenig vom Nachhilfegeben früher, interessierte Schüler lernen, desinteressierten Schüler kann man kaum helfen.

Wenn nicht die intrinsische Motivation da ist, dass es gut ist, Programmierung zu erlernen, kannst du vorn viel erzählen und wirst immer wieder bei jede Übung helfen müssen. Das ist ja kaum Sinn der Sache. Ich kann dir nun allerdings auch nicht sagen, wie du das besser machen kannst, außer vielleicht mit den Teilnehmern einen Schritt zurück zu gehen und darüber zu sprechen, warum sie da sind, wozu das gut ist, was dich selbst am Programmieren fesselt.

Vielleicht hast du auch irgendwas spannenderes, was du vorführen könntest und das die Leute interessiert, so dass sie motiviert sind, zu lernen. Auch wenn der Anfang ihnen dröge vorkommen mag.

Die einzigen Kurse die ich gehalten habe waren Fachbeiträge auf einem Treffen von an der Programmiersprache interessierten. Da traten solche Probleme natürlich nicht auf.

Programmieren lernt man am ehesten dadurch, selbst Dinge auszuprobieren.

Das ist ja gerade das, was irgendwie nicht klappt. Der als dritte Person hinzugekommene probiert noch am ehesten rum.
Die anderen machen es auch, aber dann kommt nur unbrauchbares bei raus.
Das hatte ich mir ja auch anfangs so vorgestellt, daß ich sie einfache Aufgaben alleine lösen lasse und nur zur Seite stehe, wenn es wirklich hakelig wird.
Aber wenn sie an einer sehr einfachen Stelle, über eine Stunde dran festsitzen, bleibt nichts anderes übrig, als sie an dieser Stelle auf die Lösung hinzuweisen, wie es geht. Und dann kommt die nächste einfache Stelle. Und am Ende habe ich die Aufgabe fast alleine gelöst.

Größe
theuserbl

wie steht es denn mit Wiederholung?

  • ‚Ermittle die größte Zahl eines Arrays‘ zusammen lösen…
  • durch 10 weitere Probleme quälen
    → kann neu gestellt dann ‚Ermittle die größte Zahl eines Arrays‘ selber gelöst werden?
    auch in Abwandlung (oder die Abwandlung sofort nach ‚Ermittle die größte Zahl eines Arrays‘ anbieten, ‚Ermittle die kleinste Zahl eines Arrays‘ ist ja genannt…) ?

lohnt nicht auf weitere Themen der Sprache zu wechseln wenn die Grundlagen nicht sitzen,
die kann man nur solange wiederholen wie Zeit ist,
und wenn am Ende des Kurs nur 10% geschafft oder weniger, dann ist das eben so,
andere Teilnehmer oder anderer Lehrer :wink: , wer immer dazu entscheidet

Vielleicht liegt es auch daran, daß ich selber nicht vorführe, wie man Aufgaben löst.
Aber wenn ich eine Aufgabe habe, überlege ich mir, ob es besser ist, wenn ich sie denen vorführe oder wenn ich sie die Aufgabe selber lösen lasse.
Ich entscheide mich für letzteres. Denn wenn die Aufgabe mit meiner Hilfe gelöst wurde, dann haben sie ja trotzdem auch wieder ein Programm, an dem sie sehen könne, wie es geht und das als Grudlage für die anderen Aufgaben diesen kann.

In den Beschreibungen, die ich denen liefer, werden Schlefen, Abfragen und so in Miniprogrammen vorgeführt.
Das Ziel dabei: In meiner Dokumentation die Programme sollte man leicht verstehen und nachvollziehen können und aus diesen Zutaten dann das eigene Programm - das dann umfangreicher ist - erstellen können.

Grüße
theuserbl

*** Edit ***

wie steht es denn mit Wiederholung?

Aufgaben die sie schon gemacht hatten, wollen sie nicht noch mal machen. Haben sie ja schließlich schon mal gemacht. Als die dritte Person hinzukam, wurden die Anfänge auch wiederholt. Das veranlasste die anderen beiden, auf ihr Smartphone zu gucken: „Die Aufgaben kennen wir schon“. Lösen konnten die sie trotzdem noch nicht.
Als dann eine Aufgabe kam, wo sie sahen, daß sie wirklich schwieriger war, holte der erste den Lösungszettel dazu raus und sagte: „Ich weiß die Lösung.“
Dann holte auch der andere seinen Lösungszettel dazu raus und sagte: „Ich weiß sie auch.“
Das war gleichzeitig der erste Tag, an dem ich Lösungszettel verteilte. Das liegt daran, weil in der Vorwoche einer der beiden meinte, es wäre hilfreich die gelösten Aufgaben auch noch mal ausgedruckt zu bekommen, um sie auf diesem Wege leichter nachvollziehen zu können.

Und mehr ähnliche Aufgaben geht nicht. Mir fallen nicht mehr Aufgaben ein, als die, die ich denen gestellt habe.
In der Mathemathik, da kann man z.B. bei Gleichungen mit einer Unbekannten mehrere ähnliche Aufgaben liefern:
x + 5 = 7
löse nach x auf
x + 9 = 8
etc. Da kann man unendlich viele von machen.

Wenn ich aber z.B. sage:
Ermittle die Zahl im Array, die der Zahl 200 am nähesten ist
dann hat eine zusätzliche Aufgabe mit
Ermittle die Zahl im Array, die der Zahl 300 am nähesten ist
wenig Sinn, weil dort einfach nur im Programm die 200 durch eine 300 ersetzt wird.

Grüße
theuserbl

irgendwann gibt es dann ja auch Fakten, woran es liegt, dann nicht weiter zu grübeln

ich glaube nicht an Zauberei, jemanden etwas beizubringen, was nicht weitgehend Schritt für Schritt von alleine gelernt


Und mehr ähnliche Aufgaben geht nicht. Mir fallen nicht mehr Aufgaben ein, als die, die ich denen gestellt habe.
In der Mathemathik, da kann man z.B. bei Gleichungen mit einer Unbekannten mehrere ähnliche Aufgaben liefern:
x + 5 = 7
löse nach x auf
x + 9 = 8
etc. Da kann man unendlich viele von machen.

Wenn ich aber z.B. sage:
Ermittle die Zahl im Array, die der Zahl 200 am nähesten ist
dann hat eine zusätzliche Aufgabe mit
Ermittle die Zahl im Array, die der Zahl 300 am nähesten ist
wenig Sinn, weil dort einfach nur im Programm die 200 durch eine 300 ersetzt wird.

wie würde es denn bei 200/ 300 (oder schlicht nochmal 200) ablaufen?,
das alte Programm als Datei vorhanden und geladen oder eine ausgedruckte Lösung vom Zettel 1:1 abgetippt?
dies müsste natürlich versucht werden zu vermeiden, Computer leer dürfte machbar sein, kein Abschreiben sieht man auch von weitem…

wenn aus dem Kopf die Lösung wieder hinbekommen ist das Ziel ja nun wirklich als erreicht zu bezeichnen…, dann können sie das eben lösen,
auch nicht so viel anders als die mathematischen Aufgaben nach Schema Y,

notfalls haben die die Zettel für den Rest des Lebens für Array-Aufgaben…, wie genau manifestiert sich dann nochmal ‚können nix lösen‘? :wink:
nur bei jeweils neuen Aufgaben?, tja


bei den Aufgaben-Varianten nicht so pessimistisch, ‚die Zahl im Array die …‘ ist zwar nur eine Sache,
aber du hast ja selber, wie jetzt erst nochmal wirklich nachgeschaut, schon weitere a la ‚Anzahl der geraden Zahlen des Arrays‘ genannt,

ok, das ist recht erschöpfend, Arrays direkt im Programm anscheinend durch…


das Äquivalent zu Textaufgaben wäre sicher noch wünschenswert, hinsichtlich Arrays ein Beispiel?..
im Programm ein langes Array [1, 5, 4, 6, … ] als 40 Schulnoten vorgeben, daraus soll eine vorgegebene Ausgabe korrekt erfolgen: wieviele 1en, 2en, Notendurchschnitt

ich zielte gerade eigentlich auf Verwendung ein 6er-Array für Zählung der Noten 1-6 ab, die Eingabe-Daten könnten auch anders vorliegen,
aber es muss ja kein Array zur Auswertung verwendet werden und alternative Lösungen wie mehrere Durchläufe zur Zählung der 1en, 2en usw. auch ok,
dann was über Methoden zu lernen, oder 6 verschiedenen Zähl-Variablen,
alles was die Aufgabe zum korrekten Ergebnis bringt wäre sicherlich erfreulich, und kaum rein aus vorherigen Programmen abzulesen,

möglicherweise aber dann auch nur „Ich komm nicht weiter“, sorry :wink:

Schwierig, da aus der Entfernung Empfehlungen zu geben. Es gibt einfach zu viele mögliche Facetten. Vielleicht sind sie überfordert, halten es für unwichtig, oder haben einfach keinen Bock („In einem Monat hab ich Ausbildung, dann bewerb’ ich mich bei ‚Deutschland sucht den Super-Dreher‘ und werd’ wie einer von den Yottas“).

Trotzdem, spontane Gedanken, von jemandem, der null Einfühlungsvermögen und soziale oder didaktische Kompetenz hat:

Drei Leute mit drei Rechnern. OK. Wenn die unregelmäßig da sind, ist das schon ein Problem. Ansonsten: Wie wäre es mit „drei Leute mit EINEM Rechner“? Ob jemand Motivation daraus zieht (das soll es geben…), wenn er anderen zeigen kann, dass er etwas besser kann als sie, ist schwer zu sagen. Aber sich gegenseitig Sachen erklären (!), oder sie von jemandem erklärt bekommen, der sie selbst erst gerade so verstanden hat (und das nicht alles für selbstverständlichen Trivialkram hält), würde ich als deutlich effektiver einschätzen, als wenn sie einen Aufgabenzettel hingeworfen kriegen, und sich dann 20 Minuten bei unbehaglichem Schweigen mit etwas beschäftigen sollen, was sie gar nicht interessiert, und wo sie davon ausgehen können, dass sie die Lösung gesagt bekommen, wenn sie nur glaubhaft genug versichern, dass sie zu blöd sind, das selbst zu machen.

Die Aufgaben: „Berechne die Fibonacci-Folge“ - „Fibowas? Ich zock’ lieber AngryBirds“.
Also, du hattest gemeint

Mit ihrer Ausbildung haben sie kein Problem. Auch nicht mit CNC-Programmen, die zu ihrer Ausbildung dazugehören.
CNC-Programme sind normalen Computerprogrammen nicht allzu unähnlich. Nur die Syntax ist komplett anders. Sie besteht immer aus Buchstabe-Zahl kombinationen.

Ohne einen Plan davon zu haben (ich stell mir mir das gerade etwa so vor wie Logo (Programmiersprache) – Wikipedia …) : Vielleicht würden sie eher einen Sinn in dem ganzen sehen, wenn es eine Aufgabe gäbe wie

Schreibe ein Programm, das ein einfaches CNC-Programm aus einer Datei liest, und …

  • auf dem Bildschirm ausgibt, was der Drehkopf macht
  • Die Weglänge berechnet, die der Drehkopf zurücklegt

Das könnten die drei „im Team“ bearbeiten. Sie könnten Aufgaben aufteilen (einer liest ein, einer gibt aus, einer berechnet…). Arrays und Rechnen kommen da „automatisch“ mit vor. Also, ein bißchen „Praxisbezug“ könnte vielleicht motivieren und helfen, und (was auch immer das übergeordnete Ziel des ganzen ist (*)) : Das Szenario wäre „realistischer“ in bezug auf das, was man als Softwareentwickler (angeblich) so den ganzen Tag macht.

(*) Beschäftigungstherapie? Irgendwelche Pro-Forma-Zertifikate wo draufsteht „Hat voll den krassen Programmierkurs mitgemacht“? Filtern, um zu sehen, wer im Betrieb gehalten wird? …

1 Std/Woche? Kannst es gleich sein lassen. Minimum sollten 4 Stunden Blöcke mit einer Pause sein.