Idee für Programmierkurs

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Idee für Programmierkurs

Beitrag von paedubucher » 13.08.2021 21:43:00

Ich beschäftige mich beruflich mit der Ausbildung von jungen Leuten, die gerne Softwareentwickler werden wollen. Was deutschsprachige Unterlagen und aktuell gängige Praktiken anbelangt, bin ich nicht recht zufrieden. Darum habe ich mir folgendes kleine Konzept ausgedacht:

Es gibt eine Reihe von Übungen, die jeweils aus einem Verzeichnis bestehen. Dort drin sind die Dateien input.json und program.py. Das erste, input.json, enthält die Eingabedaten, z.B. sowas:

Code: Alles auswählen

[
    "John",
    "Alice",
    "Mallory",
    "Bob"
]
Warum JSON? Weil man damit so ziemlich alles Datenstrukturen abbilden kann, ausser vielleicht binäre Daten: primitive Typen wie Ganzzahl, Fliesskommazahl, Boolean und Zeichenkette; zusammengesetzte Datentypen wie Listen und Maps. Das soll das Denken in Datenstrukturen und -typen schulen, ohne viel Theorie erläutern zu müssen.

Dann kommt das Grundgerüst für ein Programm (program.py), das etwa so aussieht:

Code: Alles auswählen

#!/usr/bin/env python3

import json
import sys


def process(data):
    # TODO process data according to spec()
    return data


def spec():
    '''
    Given: A list of names in random order.
    Result: A list of names in ascending, alpabetical order.
    '''
    return ['Alice', 'Bob', 'John', 'Mallory']


def debug(*args, **kwargs):
    print(*args, file=sys.stderr, **kwargs)


if __name__ == '__main__':
    json_input = json.load(sys.stdin)

    processed_data = process(json_input) 
    if processed_data != spec():
        debug('expected:', spec())
        debug('but was: ', processed_data)
        sys.exit(1)
    else:
        debug('ok')

    json_output = json.dumps(processed_data)
    print(json_output)
Das TODO beschreibt den Arbeitsauftrag, in der Funktion spec() wird das Ergebnis beschrieben und dargestellt. Warum Python? Weil das gerade so rumlag, und ich es täglich verwende. Tatsächlich kann praktisch jede beliebige Programmiersprache eingesetzt werden, deren Programme immer mit dem gleichen Befehl gestartet werden können. Und jetzt kommt der Befehl, der für alle Programme gleich sein soll:

Code: Alles auswählen

$ ./program.py <input.json >output.json
Das EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) wird damit verinnerlicht.

Da die Aufgabe noch nicht gelöst worden ist, erscheint folgende Ausgabe:

Code: Alles auswählen

$ ./program.py <input.json >output.json
expected: ['Alice', 'Bob', 'John', 'Mallory']
but was:  ['John', 'Alice', 'Mallory', 'Bob']
Implementiert man die Sortierung korrent (return sorted(data)), funktioniert es dann:

Code: Alles auswählen

$ ./program.py <input.json >output.json
ok
Konzeptionell wäre es evtl. schöner, hier auf die Ausgabe von "ok" nach stderr zu verzichten. Eine positive Rückmeldung dürfte jedoch motivierender sein als ein leerer Bildschirm.

Das ganze ist noch recht grob und roh, und den ganzen Boilerplate-Code könnte man wohl in ein gemeinsames Modul verschieben. Anschliessend müsste man eine Reihe von ca. 50-100 Aufgaben damit entwickeln, damit es überhaupt etwas bringt.

Was haltet ihr von diesem Ansatz? Ich denke, dass man damit ohne viel Brimborium viele Konzepte abarbeiten kann. (Moderne Web-APIs machen ja auch nichts anderes als JSON entgegenzunehmen und ein anderes JSON zurückzuliefern.) Man könnte die gegebenen Daten, z.B. Währungssymbole, auch noch mit Drittquellen anreichern, indem man etwa Wechselkurse von einem Online-Dienst lädt.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
hikaru
Moderator
Beiträge: 13585
Registriert: 09.04.2008 12:48:59

Re: Idee für Programmierkurs

Beitrag von hikaru » 13.08.2021 22:44:35

Zwei Gedanken:

I. Ich halte es didaktisch für sinnvoller, bei korrekter Lösung nicht einfach nur ein 'ok' auszugeben, sondern tatsächlich die erreichte Lösung - idealerweise in Sichtweite der erwarteten Ausgabe, so dass man "zu Fuß" vergleichen kann. Das 'ok' kann man dann als Zusammenfassung trotzdem ausgeben:

Code: Alles auswählen

$ ./program.py <input.json >output.json
expected:     ['Alice', 'Bob', 'John', 'Mallory']
accomplished: ['Alice', 'Bob', 'John', 'Mallory']
ok
II. Ich finde du nimmst den Schülern mit deinem Programmgerüst zu viel Arbeit ab, bzw. setzt ihnen unnötigerweise Code vor den sie noch gar nicht verstehen können.
Was ich damit meine ist, dass sie 36 Zeilen Code vor sich haben, in dem sie einen sehr kleinen Teil ändern sollen. Der Rest bleibt auf ihrem Kenntnisstand eine Black Box. Meiner Erwartung nach werden sich deine Schüler grob in vier Gruppen aufteilen:
1. "Der Eingeschüchterte" hat Angst vor der Black Box und wird sich streng an die aufgezeigten Grenzen ("hier editieren, da nicht") halten. Die Aufgabe wird vermutlich gelöst werden, aber Spaß am Programmieren kommt so nicht auf.
2. "Der Rebell" fühlt sich von den gesetzten Grenzen zur Überschreitung angestachelt. Du stellst zwar die Aufgabe "Sortiert die Namen!", aber was du prüfst ist in Wahrheit "Gibt das Programm 'ok' aus?" Diese Gruppe wird versuchen, dem Programm ein 'ok' zu entlocken. Ob die angedachte Aufgabe dabei gelöst wird ist nebensächlich. Das macht Spaß (was großartig ist), aber der Lernerfolg ist zweifelhaft.
3. "Der Konformist" versteht die Black Box ebenfalls nicht, akzeptiert das aber als "gottgegeben" (hier: Dozent=Gott) und erledigt stur die geforderte Aufgabe ohne dabei wirklich etwas zu lernen. Spaß ist irrelevant.
4. "Der Wissbegierige" wird die Aufgabe erledigen und sich nebenbei zumindest in Grundzügen aus Neugier selbst aneignen, was der Rest des Codes macht. Er lernt (mehr als du beabsichtigt hast) und hat Spaß dabei. Das ist die einzige Gruppe, die tatsächlich von der Übung profitiert.

Fazit: Bring den Schülern zunächst grundlegendes E/A bei! Wenn sie dieses Handwerkszeug beherrschen, dann schiebst du das V dazwischen und sie machen die gesamte Sortierung aus eigener Kraft, was viel befriedigender ist als "durch Reifen zu springen". Die Prüfung machst du extern. Als Kür(!) kannst du hinterher immer noch die Prüfung offenlegen, falls du merkst, dass du genug Wissbegierige vor dir hast um die Kursdynamik zu treiben.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Idee für Programmierkurs

Beitrag von eggy » 13.08.2021 22:47:39

Ohne Dich demotivieren zu wollen: wenig.

Stell Dir vor, die Aufgabe ist einen Sortieralgorithmus schreiben.
Und ich geb da als Lösungcode ein: return ["Alice", "Bob", "John", "Mallory"]

Gibt zwar volle Punkte, ist aber trotzdem falsch

Und ich wette, es dauert "keine Stunde" (naja je nach Kenntnisstand halt etwas länger) bis Deine Azubis rausgefunden haben, wie sie das System austricksen :mrgreen:

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von Meillo » 14.08.2021 07:57:06

Geht es um die Ausbildung einzelner Personen oder um die Schulung von ganzen Klassen? Im ersten Fall muss man naemlich nicht besonders automatisiert arbeiten, sondern kann die Personen besser individuell dort abholen wo sie stehen.

Wie ich schon an anderen Stellen geschrieben habe, bin ich kein Freund von Sandkastenprogrammen. Man braucht sie sicher zu einem Teil ganz am Anfang, bevor die Personen ueberhaupt programmieren koennen, dann aber hat mich selbst vor allem das weitergebracht, was fuer mich inhaltlich Sinn hatte. Das waren in erster Linie Spiele, aber auch Telefon-/Adressverwaltung, Vokabeltrainer, etc. Diese Anwendungen schaffen durch ihren inhaltlichen Sinn naemlich immer wieder neue Wuensche und Ideen fuer Veraenderungen und Erweiterungen. Damit lernt man am besten Programmieren, finde ich: inkrementelles Erweitern und Umbauen von Code. (Das ist auch viel praxisnaeher als das Bauen von Sandkastenprograemmchen auf der immer wieder neu gruenen Wiese.) Notfalls lieber selber ein Programmgeruest liefern (in einfachem Code) und die Person eine neue Funktion ein-/umbauen lassen als immer wieder Winzprogramme von Grund auf.

In 1:1-Situationen finde ich den Dialog besonders wertvoll. Man sollte viele Fragen stellen: Wieso hast du das so gemacht? Wie waere es wenn man das in der Weise tun wuerde? Jenes waere doch auch eine nette Funktion ... Und dann in der Weise die Person ein anfaenglich kleines Programm nach und nach erweitern und umbauen lassen. Bei Spielen kann man oft ganz gut Highscores einbauen (d.h. IO), Mehrspieler (d.h. verschiedene Programmmodi), simple KI (d.h. nicht nur Zufall sondern Entscheidungsbaeume und ggf. Gedaechtnis), Zeitlimits (d.h. Timer und Asynchronitaet), grafische Ausgabe, Client-Server, ... Selbst ein Tic-Tac-Toe oder Minesweeper bietet da eine Fuelle an Moeglichkeiten ... und macht dabei die ganze Zeit auch noch Spass zum Spielen.

Wenn man den Luxus von 1:1-Situationen hat, finde ich es auch wertvoll, wenn man nicht nur die Ausbildungsperson programmieren laesst und dazu etwas sagt, sondern wenn man ihr auch mal erzaehlt und erklaert was man selber gerade so programmiert, warum man es so macht, welche Sackgassen man ausprobiert hat, wie man zur Loesung gefunden hat, welche Techniken und Hilfsmittel man eingesetzt hat, wie die Gedankenprozesse waren. Dies kommt IMO oft zu kurz.

Gut sind auch Fragestellungen wie: Was macht dieser Code? Warum funktioniert das korrekt? Wo ist der Bug? -- Diese Fragen sind sowohl bei selbst ausfuehrbarem und veraenderbarem Code wertvoll als auch bei kurzen Codeausschnitten, die man im Kopf analysieren muss.

In Gruppen/Klassen kann man natuerlich nicht gleichermassen individuell auf die einzelnen Personen eingehen. Solange es aber nicht zu schulisch organisiert ist, wuerde ich dort aber auch versuchen, dass die Personen arbeiten worauf sie Lust haben und worin sie Sinn fuer sich selbst sehen. Dann gerne auch die Fragestellungen und Probleme in der grossen Runde vorstellen lassen und diskutieren.

(Ich kann leider keine grossen Praxiserfahrungen zu diesen Ueberlegungen vorweisen. Manches habe ich ausprobiert, aber nur in Einzelfaellen.)
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 14.08.2021 10:41:32

Ich danke euch schon einmal für die überraschend zahlreichen und ausführlichen Antworten!
hikaru hat geschrieben: ↑ zum Beitrag ↑
13.08.2021 22:44:35
I. Ich halte es didaktisch für sinnvoller, bei korrekter Lösung nicht einfach nur ein 'ok' auszugeben, sondern tatsächlich die erreichte Lösung
Das kann schon sinnvoll sein. Alternativ könnte man auch das >output.json weglassen.
hikaru hat geschrieben: II. Ich finde du nimmst den Schülern mit deinem Programmgerüst zu viel Arbeit ab, bzw. setzt ihnen unnötigerweise Code vor den sie noch gar nicht verstehen können.
Den Boilerplate-Code möchte ich ihnen in diesem Setup wegnehmen (Designziel), hierzu möchte ich ihn sogar noch besser verstecken (importiertes Modul statt copy-paste). Die Schüler schreiben dann eine Art Plugin-Code. Ich sehe die Problematik, wenn diese Art von Instruktion die einzige bleibt. Aber hier soll es um eine konkrete Programmiersprache gehen, ohne das ganze "Plumbing".
hikaru hat geschrieben: Meiner Erwartung nach werden sich deine Schüler grob in vier Gruppen aufteilen:
1. "Der Eingeschüchterte" hat Angst vor der Black Box und wird sich streng an die aufgezeigten Grenzen ("hier editieren, da nicht") halten. Die Aufgabe wird vermutlich gelöst werden, aber Spaß am Programmieren kommt so nicht auf.
2. "Der Rebell" fühlt sich von den gesetzten Grenzen zur Überschreitung angestachelt. Du stellst zwar die Aufgabe "Sortiert die Namen!", aber was du prüfst ist in Wahrheit "Gibt das Programm 'ok' aus?" Diese Gruppe wird versuchen, dem Programm ein 'ok' zu entlocken. Ob die angedachte Aufgabe dabei gelöst wird ist nebensächlich. Das macht Spaß (was großartig ist), aber der Lernerfolg ist zweifelhaft.
3. "Der Konformist" versteht die Black Box ebenfalls nicht, akzeptiert das aber als "gottgegeben" (hier: Dozent=Gott) und erledigt stur die geforderte Aufgabe ohne dabei wirklich etwas zu lernen. Spaß ist irrelevant.
4. "Der Wissbegierige" wird die Aufgabe erledigen und sich nebenbei zumindest in Grundzügen aus Neugier selbst aneignen, was der Rest des Codes macht. Er lernt (mehr als du beabsichtigt hast) und hat Spaß dabei. Das ist die einzige Gruppe, die tatsächlich von der Übung profitiert.
Der "Eingeschüchterte" wird wohl noch mehr von einer grünen Wiese haben, als vor der Black Box. Dem "Rebell" muss man natürlich klar machen, dass er eine Lösung gemäss Spezifikation schreiben muss. Die Bewertung/Benotung würde natürlich nicht automatisch passieren, sondern durch die Lehrperson. Der "Konformist" wird wohl jedes Setup so ähnlich akzeptieren müssen. Diese Gruppe macht wohl die Mehrheit aus. Der "Wissbegierige" dürfte wohl jedem möglichen Setup etwas abgewinnen können.

Ich finde diese Einteilung sehr interessant, und zu jeder Kategorie fallen mir spontan Leute ein, die dort hineinpassen würden. Dass man alle Gruppen mit einer Lösung gleich gut "abholen" kann, wird jedoch sehr schwierig.
hikaru hat geschrieben: Fazit: Bring den Schülern zunächst grundlegendes E/A bei! Wenn sie dieses Handwerkszeug beherrschen, dann schiebst du das V dazwischen und sie machen die gesamte Sortierung aus eigener Kraft, was viel befriedigender ist als "durch Reifen zu springen". Die Prüfung machst du extern. Als Kür(!) kannst du hinterher immer noch die Prüfung offenlegen, falls du merkst, dass du genug Wissbegierige vor dir hast um die Kursdynamik zu treiben.
Vielleicht sollte man wirklich mal auf der Kommandozeile anfangen und das Brimborium mit Python gleich weglassen. JSON kann man ja mit `jq` verarbeiten. Ist nicht immer schön, aber so ist halt die Welt.
eggy hat geschrieben: ↑ zum Beitrag ↑
13.08.2021 22:47:39
Ohne Dich demotivieren zu wollen: wenig.

Stell Dir vor, die Aufgabe ist einen Sortieralgorithmus schreiben.
Und ich geb da als Lösungcode ein: return ["Alice", "Bob", "John", "Mallory"]

Gibt zwar volle Punkte, ist aber trotzdem falsch

Und ich wette, es dauert "keine Stunde" (naja je nach Kenntnisstand halt etwas länger) bis Deine Azubis rausgefunden haben, wie sie das System austricksen :mrgreen:
Das ist natürlich das Problem mit praktisch jedem automatisierten Setup. Man könnte natürlich die eine Hälfte der Testfälle vorhalten, um das Problem zu entschärfen. Was aus meiner Beschreibung wohl zu wenig klar wurde: Der Code wird dann schon noch betrachtet.
Meillo hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 07:57:06
Geht es um die Ausbildung einzelner Personen oder um die Schulung von ganzen Klassen? Im ersten Fall muss man naemlich nicht besonders automatisiert arbeiten, sondern kann die Personen besser individuell dort abholen wo sie stehen.
Ich habe beide Situationen im Auge: im Klassenzimmer soll es den Kern bilden, in der Einzelausbildung ein Lückenfüller, wenn gerade kein Instruktor da ist. In beiden Fällen soll der Lösungscode mit dem Auszubildenden betrachtet werden, halt nicht gleich ausführlich.
meillo hat geschrieben: Wie ich schon an anderen Stellen geschrieben habe, bin ich kein Freund von Sandkastenprogrammen. Man braucht sie sicher zu einem Teil ganz am Anfang, bevor die Personen ueberhaupt programmieren koennen, dann aber hat mich selbst vor allem das weitergebracht, was fuer mich inhaltlich Sinn hatte.
Der Kurs soll auch ganz am Anfang der Programmierausbildung stehen. Ansonsten finde ich Sandkasten auch nicht ideal, weil sie die Leute zu stark an Java-Enterprise-Settings gewöhnen, wo man praktisch nur einzelne Codeschnippsel in formularartige Templates einfüllt. Schlussendlich soll man ja das komplette Programmieren inkl. Ressourcenverwaltung (Umgang mit Datenquellen usw.) lernen. (Ein schöner Rant zum Thema.)
meillo hat geschrieben: Das waren in erster Linie Spiele, aber auch Telefon-/Adressverwaltung, Vokabeltrainer, etc. Diese Anwendungen schaffen durch ihren inhaltlichen Sinn naemlich immer wieder neue Wuensche und Ideen fuer Veraenderungen und Erweiterungen. Damit lernt man am besten Programmieren, finde ich: inkrementelles Erweitern und Umbauen von Code. (Das ist auch viel praxisnaeher als das Bauen von Sandkastenprograemmchen auf der immer wieder neu gruenen Wiese.) Notfalls lieber selber ein Programmgeruest liefern (in einfachem Code) und die Person eine neue Funktion ein-/umbauen lassen als immer wieder Winzprogramme von Grund auf.
Ich bin völlig einverstanden, dass dies der Königsweg ist. Wie gesagt geht es mir aber eher um die ersten Gehversuche.
meillo hat geschrieben: In 1:1-Situationen finde ich den Dialog besonders wertvoll. Man sollte viele Fragen stellen: Wieso hast du das so gemacht? Wie waere es wenn man das in der Weise tun wuerde? Jenes waere doch auch eine nette Funktion ... Und dann in der Weise die Person ein anfaenglich kleines Programm nach und nach erweitern und umbauen lassen.
Genau in so eine Richtung möchte ich in der 1:1-Situation gehen. (Evtl. sogar inklusive Betrieb der Anwendung auf einem Server, halt je nach Art der Anwendung.) Mein Kurs soll Fingerübungen liefern.
meillo hat geschrieben: Wenn man den Luxus von 1:1-Situationen hat, finde ich es auch wertvoll, wenn man nicht nur die Ausbildungsperson programmieren laesst und dazu etwas sagt, sondern wenn man ihr auch mal erzaehlt und erklaert was man selber gerade so programmiert, warum man es so macht, welche Sackgassen man ausprobiert hat, wie man zur Loesung gefunden hat, welche Techniken und Hilfsmittel man eingesetzt hat, wie die Gedankenprozesse waren. Dies kommt IMO oft zu kurz.
Das wird sicher in der zweiten Ausbildungshälfte relevant. Das ist leider wirklich etwas, was ich in meiner Ausbildung zu selten erleben durfte.
meillo hat geschrieben: Gut sind auch Fragestellungen wie: Was macht dieser Code? Warum funktioniert das korrekt? Wo ist der Bug? -- Diese Fragen sind sowohl bei selbst ausfuehrbarem und veraenderbarem Code wertvoll als auch bei kurzen Codeausschnitten, die man im Kopf analysieren muss.
Die Korrektur von Bugs wäre mit meinem angedachten Setup natürlich auch eine Variante. Code lesen ist ja unglaublich wichtig. Wenn man jahrelang programmiert hat, kann man viele Sachen einfach so hinschreiben. Das liegt aber auch daran, dass man diese Sachen eben sehr oft gesehen hat.
meillo hat geschrieben: In Gruppen/Klassen kann man natuerlich nicht gleichermassen individuell auf die einzelnen Personen eingehen. Solange es aber nicht zu schulisch organisiert ist, wuerde ich dort aber auch versuchen, dass die Personen arbeiten worauf sie Lust haben und worin sie Sinn fuer sich selbst sehen. Dann gerne auch die Fragestellungen und Probleme in der grossen Runde vorstellen lassen und diskutieren.
Das benötigt natürlich einen bestimmten "Reifegrad" der jungen Programmierer. Wenn sie die Grundlagen mal gemeistert haben, finde ich natürlich Dialog viel besser als mit PowerPoint irgendwelche Techniken runterzupauken.

Fazit: Ich werde mal ein paar kleinere Beispiele nach meinem Ansatz an ein paar Testpersonen ausprobieren. Einige Defizite sind mir jetzt klar geworden. Der Kurs soll aber nicht die zwischenmenschliche Interaktion ersetzen, nur für einen ersten und unkomplizierten Feedback-Mechanismus sorgen.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Idee für Programmierkurs

Beitrag von thoerb » 14.08.2021 10:57:07

paedubucher hat geschrieben: ↑ zum Beitrag ↑
13.08.2021 21:43:00
Warum JSON? Weil man damit so ziemlich alles Datenstrukturen abbilden kann, ausser vielleicht binäre Daten: primitive Typen wie Ganzzahl, Fliesskommazahl, Boolean und Zeichenkette; zusammengesetzte Datentypen wie Listen und Maps. Das soll das Denken in Datenstrukturen und -typen schulen, ohne viel Theorie erläutern zu müssen.
Dann würde ich aber gleich eine richtige API dazu nutzen. Wetterdaten zum Beispiel. Wie Meillo schon geschrieben hat, das regt eher die Fantasie an und vielleicht auch den Wunsch noch mehr daraus zu machen. Und ich finde das fördert auch eher das Verständnis zur Aufgabe. Ich hatte mal vor langer Zeit an der Abendschule einen VB-Kurs besucht. Den habe ich ganz schnell abgebrochen, weil ich schon den Sinn der meisten Aufgabenstellungen erst gar nicht verstanden hatte. Danach war das Thema Programmieren erst mal über 10 Jahre für mich erledigt. Ich dachte leider, das sei zu abstrakt für mich.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von Meillo » 14.08.2021 11:38:05

thoerb hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 10:57:07
Dann würde ich aber gleich eine richtige API dazu nutzen. Wetterdaten zum Beispiel. Wie Meillo schon geschrieben hat, das regt eher die Fantasie an und vielleicht auch den Wunsch noch mehr daraus zu machen. Und ich finde das fördert auch eher das Verständnis zur Aufgabe.
Das finde ich eine tolle Idee. (Das vermittelt gleichzeitig auch die Moeglichkeiten der Informatik, sich fuer die eigenen Alltagsprobleme recht einfach individuell angepasst Loesungen zu schaffen.) Falls noetig kannst du den Abruf der Json-Daten als fertiges Modul zur Verfuegung stellen. (Besonders faehigen Teilnehmern kannst du dessen Implementierung zugaenglich machen.)


Btw: Immer wieder bemerkenswert an den Buechern von Kernighan finde ich, dass sie keine Sandkasten-Codebeispiele enthalten, wie fast alle anderen Computerbuecher. Bei Kernighan ist es immer Code aus seinem realen Computerumfeld. Manchmal sind es Reimplementierungen von existierenden Programmen oder Bibliotheksfunktionen in einer anderen Sprache, manchmal sind es kleine Shell- oder awk-Programme, die man direkt so auf die Kommandozeile tippen wuerde, aber stets ist es realer Code, der gerade passt und eben keine abstrakten Sandkastenprogramme, die nur einen spezifischen Teilaspekt darstellen. Letzteres kommt mir oft wie Vokabeln und Grammatik lernen vor: oede. Bei Kernighan bekomme ich ein Gefuehl wie richtige Programmierer richtigen Code schreiben ... so wie man beim angewandten Sprachenlernen mitbekommt wie richtige Menschen die Sprache richtig sprechen. Das Ziel sind ja nicht Sprachtheoretiker, sondern Personen, die die natuerliche oder Programmier-Sprache praktisch beherrschen.

Wenn es am Anfang zu komplex ist und die Leute noch gar nichts koennen, dann finde ich es besser, ihnen ein fertiges einfaches Programm (mit wenig Kryptischem und vielem Natuerlichsprachlichen oder Mathematischem) zu geben und sie das veraendern lassen, statt abstrakter Sprachkonstrukte oder von Null etwas aufbauen (abschreiben) zu lassen. (Eine Undo-Umgebung ist wichtig, damit sie jederzeit zurueck koennen, zu einem Zustand der noch funktioniert hat.)

Die Wetter-Idee finde ich super. Da kann man wunderbar eine Menge an Ausgabe gestalten. Man kann Bedingungen und Hilfsvariablen einfuehren.

Mehr solcher Ideen und du hast ein Set toller Einfuehrungsaufgaben. Nach der Haelfte der Kurszeit kannst du sie dann auch mal ein einfaches Programm selber schreiben lassen (Kommandozeilenargumente, I/O, ...).
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 14.08.2021 11:57:37

thoerb hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 10:57:07
Dann würde ich aber gleich eine richtige API dazu nutzen. Wetterdaten zum Beispiel.
Super Idee! Danke dafür. Ich habe mir auch schon überlegt, einen kleinen Server für solche Sachen wie Adressverwaltung zur Verfügung zu stellen, und die Schüler entwickeln dann Clients dafür.

API-Ansteuerung wurde mir schon von Kollegen mit Unterrichtserfahrung nahegelegt, z.B. automatisch in einen Slack-Channel reinspammen. So kann man die destruktive Energie, die man halt in der Pubertät doch manchmal hat, in produktive Bahnen lenken :mrgreen:

Überhaupt: Herausfinden, wie man etwas kaputt machen kann, gibt auch immer Hinweise in die Richtung, wie dieses Ding funktioniert.
Meillo hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 11:38:05
Btw: Immer wieder bemerkenswert an den Buechern von Kernighan finde ich, dass sie keine Sandkasten-Codebeispiele enthalten, wie fast alle anderen Computerbuecher. Bei Kernighan ist es immer Code aus seinem realen Computerumfeld.
Ich habe in seinem Buch "The Go Programming Language" wohl mehr über Informatik gelernt als sonst in meinem Studium, inkl. Mathematik! Komplexe Zahlen werden mal so eben im Vorübergehen in einem Beispiel verwendet, und man kann diese anschliessend direkt nutzen. Mit Go habe ich anschliessend sehr viele kleine Helferlein produziert, die u.a. ganz triviale Sachen machen, wie mir z.B. per dilbert-Befehl den tagesaktuellen Dilbert-Comic anzeigen. Gut, das Web Scraping war jetzt nicht ganz trivial...

In "The Go Programming Language" und "The C Programming Language" umfasst das erste Kapitel bereits umfassende Beispiele, die richtige Dinge machen. Dieses Gefühl für ganze Programme möglichst schon am Anfang als Langzeitperspektive zur Verfügung zu stellen, ist wohl didaktisch recht erfolgreich.

Stichwort Kernighan: AWK wäre eine mögliche Programmiersprache zur Einführung. Das EVA-Prinzip ist ja praktisch die Grundlage dafür. Zudem ist AWK eine Skriptsprache, die wirklich gut "nach unten" skaliert, d.h. perfekt ist für kleinste Trivialbeispiele, aber für kleine Sachen bis ca. 100 Zeilen immer noch sehr gut funktioniert. Die C-artige Syntax hilft dann auch für andere Sprachen weiter.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von Meillo » 14.08.2021 12:20:33

awk macht aber nur Sinn, wenn man die Shell schon beherrscht und dort auch arbeitet. Das wird bei deinen Teilnehmern wohl eher nicht gegeben sein. Da ist es schon gut eine Sprache zu nehmen, die ``batteries included'' hat. ;-)
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 14.08.2021 12:36:01

Meillo hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 12:20:33
awk macht aber nur Sinn, wenn man die Shell schon beherrscht und dort auch arbeitet. Das wird bei deinen Teilnehmern wohl eher nicht gegeben sein. Da ist es schon gut eine Sprache zu nehmen, die ``batteries included'' hat. ;-)
Bei meinem Post stand zuerst unten "Doch das ist eher ein Langzeitprojekt...", doch den Satz habe ich dann leider gelöscht. Du hast schon recht, man müsste auf der Shell anfangen mit ganz einfachen Programmen. Sowas habe ich mal an den Kandidaten für die Lehrstelle an einem Nachmittag ausprobiert (Schnuppern Kommandozeile, PDF).

Aber wenn das mal verstanden ist, wäre AWK evtl. schon interessant.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Idee für Programmierkurs

Beitrag von Cordess » 19.08.2021 06:10:18

Ganz ehrlich, ich halte von dieser Blackbox Code Methode absolut gar nichts.
So etwas habe ich schon in meinem Informatikstudium gehasst wie die Pest, wenn man so etwas vorgesetzt bekam.

Es schränkt einem nur in ein Korsett ein und dann muss man sich in dieses einfügen wie sich der Dozent das vorgestellt hat.
Der Code von meinem Dozenten war nicht einmal plattformunabhängig, ich war also gezwungen das unter Windows fertig zu programmieren.
Mach das bitte nicht!

Stattdessen mach es folgendermaßen:
Sage ihnen, das sind die Eingabedaten und so soll die Ausgabe aussehen.
Wie sie dann dieses Ziel erreichen, sollte ihnen ganz alleine überlassen werden.

Der Code den du ihnen also gibst, hat 0 Zeilen.

Wenn sie nicht wissen, wie man Code aus einer json Datei einliest, dann kannst du ja noch kleine funktionierende Beispielcodeschnipsel beigeben wo sie dann nachschlagen können.

Den Boildercode selber zu schreiben ist zudem auch einfacher zu lernen, als sich in einen bestehenden Code als Anfänger einzufügen.
hikaru hat das schon sehr richtig kritisiert, dieser Kritik schließe ich mich an.

Und was die Wetterdaten betrifft, das ist vielleicht gut gemeint, aber nicht gut durchdacht. Denn was machen denn die, die Zuhause keinen Internetanschluss haben oder der nicht zuverlässig funktioniert?


Und dann solltest du dich mal fragen, was das eigentliche Ziel des Kurses sein soll?
Sollen sie eine konkrete Programmiersprache lernen oder sollen sie lernen zu Programmieren und sich Gedanken über Algorithmen und Co zu denken und wie man die am besten implementiert und welche man am besten nimmt?

Für letzteres gibt es bessere Sandkastenumgebungen, die nutzen dann zwar meist eine Pseudoprogrammiersprache, aber dafür ist man in der Programmierung innerhalb dieses Sandkasten komplett frei und kann sich so auf das eigentliche Programmieren konzentrieren.
In folgendem Youtube Video hat das einer ganz gut aufgezeigt und ja, auch wenn man dort nicht mit einer konkreten bekannten Programmiersprache programmieren übt, so lernt man so doch in Algorithmen zu denken und wie programmieren ansich geht:
https://www.youtube.com/watch?v=3_Goj0_DJfA

Und das ist die Sandkastenumgebung dazu:
https://github.com/fredoverflow/karel

Eine konkrete Programmiersprache kann dann jeder hinterher immer noch selber lernen.

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 21.08.2021 21:39:07

Cordess hat geschrieben: ↑ zum Beitrag ↑
19.08.2021 06:10:18
Ganz ehrlich, ich halte von dieser Blackbox Code Methode absolut gar nichts.
So etwas habe ich schon in meinem Informatikstudium gehasst wie die Pest, wenn man so etwas vorgesetzt bekam.

Es schränkt einem nur in ein Korsett ein und dann muss man sich in dieses einfügen wie sich der Dozent das vorgestellt hat.
Nun ist das Informatikstudium eine grosse Stufe höher anzusiedeln als die Berufslehre. Ein bisschen mehr Begleitung ist da schon nötig.
Cordess hat geschrieben: Der Code von meinem Dozenten war nicht einmal plattformunabhängig, ich war also gezwungen das unter Windows fertig zu programmieren.
Mach das bitte nicht!
Sowas mache ich sicher nicht, keine Angst.
Cordess hat geschrieben: Stattdessen mach es folgendermaßen:
Sage ihnen, das sind die Eingabedaten und so soll die Ausgabe aussehen.
Wie sie dann dieses Ziel erreichen, sollte ihnen ganz alleine überlassen werden.

Der Code den du ihnen also gibst, hat 0 Zeilen.

Wenn sie nicht wissen, wie man Code aus einer json Datei einliest, dann kannst du ja noch kleine funktionierende Beispielcodeschnipsel beigeben wo sie dann nachschlagen können.
Im Endeffekt werden sich dann die meisten einfach die Schnipsel reinkopieren, teilweise daran scheitern. Für die zwei, drei, die schon weiter sind, könnte ich tatsächlich weniger Vorgaben machen. Für den Rest mache ich die Sache wohl nur unnötig kompliziert.
Cordess hat geschrieben: Den Boildercode selber zu schreiben ist zudem auch einfacher zu lernen, als sich in einen bestehenden Code als Anfänger einzufügen.
hikaru hat das schon sehr richtig kritisiert, dieser Kritik schließe ich mich an.
Die Methode mit dem Abtippen wird ja von Zed Shaw ("Learn Programming the Hard Way") propagiert, ich finde diese auch wirklich interessant. Ich konnte bisher nur noch nicht überprüfen, ob sie wirklich funktioniert. Aber abtippen wird da in meiner Klasse niemand was, copy-paste machen schon eher.
Cordess hat geschrieben: Und was die Wetterdaten betrifft, das ist vielleicht gut gemeint, aber nicht gut durchdacht. Denn was machen denn die, die Zuhause keinen Internetanschluss haben oder der nicht zuverlässig funktioniert?
Sorry, aber ich lebe in der Schweiz, nicht in Mecklenburg-Vorpommern :mrgreen:
Internetanschluss wird dir staatlich zu einer vernünftigen Mindestbandbreite garantiert. Und das ist nicht nur Theorie, das funktioniert hierzulande wirklich gut.

Dein Einwand ist an und für sich schon richtig: die Abhängigkeit zum Internet ist nicht wirklich nötig. Man könnte auch lokal ein kleines Programm laufen lassen, das via HTTP eine API anbietet. Doch das setzt die Hürde bloss noch höher.
Cordess hat geschrieben: Und dann solltest du dich mal fragen, was das eigentliche Ziel des Kurses sein soll?
Sollen sie eine konkrete Programmiersprache lernen oder sollen sie lernen zu Programmieren und sich Gedanken über Algorithmen und Co zu denken und wie man die am besten implementiert und welche man am besten nimmt?
Die Hauptsache ist, dass überhaupt programmiert wird. Im Fokus steht schon die jeweilige Programmiersprache (Grundlagen) und wie man damit einfache Programme schreibt. Vielleicht ist da mal ein Bubble Sort dabei oder eine Umrechnung von binär zu dezimal, sonst halt eher so Fingerübungen (Schleifen korrekt implementieren, Arrays aufsummieren: halt wirklich die Grundlagen.)
Cordess hat geschrieben: Für letzteres gibt es bessere Sandkastenumgebungen, die nutzen dann zwar meist eine Pseudoprogrammiersprache, aber dafür ist man in der Programmierung innerhalb dieses Sandkasten komplett frei und kann sich so auf das eigentliche Programmieren konzentrieren.
In folgendem Youtube Video hat das einer ganz gut aufgezeigt und ja, auch wenn man dort nicht mit einer konkreten bekannten Programmiersprache programmieren übt, so lernt man so doch in Algorithmen zu denken und wie programmieren ansich geht:
https://www.youtube.com/watch?v=3_Goj0_DJfA

Und das ist die Sandkastenumgebung dazu:
https://github.com/fredoverflow/karel
Danke für den Tipp! Diese Sandkastenumgebung sieht sogar wirklich interessant aus. Nicht so verspielt wie Scratch, aber mit optischem Feedback. Das werde ich mal an meinem Versuchskaninchen ausprobieren.
Eine konkrete Programmiersprache kann dann jeder hinterher immer noch selber lernen.
Ich werde verschiedene Kurse geben, im einen soll auch selber ein Projekt entwickelt werden. Da braucht es schon noch eine richtige Umgebung.


@all: Ich bin etwas von meinem Ansatz weggekommen. JSON halte ich immer noch für ein interessantes Vehikel um Datenstrukturen programmiersprachenunabhängig darzustellen; wesentlich besser als YAML oder XML. Derzeit betreue ich eine Auszubildende, der ich Unittests und etwas Stub-Code in Python zur Verfügung stelle. Die schnelle, automatisierte Rückmeldung halte ich schon für wertvoll, gerade bei Jugendlichen, wo man regelmässig etwas Dopamin einschiessen muss :wink:

Eine interessante Feststellung konnte ich schon machen. Ich habe mir Aufgaben ausgedacht wie: "Schreibe den Ausdruck a + b * c - d mithilfe der Funktionen add, multiply und subtract um, ohne dessen Wert zu ändern." Das hat sich als gewaltige Hürde herausgestellt, die dann aber plötzlich überwindbar wurde!
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: Idee für Programmierkurs

Beitrag von letzter3 » 21.08.2021 23:30:29

paedubucher hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 12:36:01
(Schnuppern Kommandozeile, PDF).
Eine Pipe wird mit dem Operator | umgesetzt (auf der Tastatur [Alt Gr] + [7]).
??? 8O

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 21.08.2021 23:57:03

letzter3 hat geschrieben: ↑ zum Beitrag ↑
21.08.2021 23:30:29
paedubucher hat geschrieben: ↑ zum Beitrag ↑
14.08.2021 12:36:01
(Schnuppern Kommandozeile, PDF).
Eine Pipe wird mit dem Operator | umgesetzt (auf der Tastatur [Alt Gr] + [7]).
??? 8O
Schweizer Keyboard-Layout, siehe auch Wikipedia.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
tkreutz
Beiträge: 61
Registriert: 07.06.2014 08:44:39

Re: Idee für Programmierkurs

Beitrag von tkreutz » 22.08.2021 09:40:38

paedubucher hat geschrieben: ↑ zum Beitrag ↑
13.08.2021 21:43:00
Ich beschäftige mich beruflich mit der Ausbildung von jungen Leuten, die gerne Softwareentwickler werden wollen. Was deutschsprachige Unterlagen und aktuell gängige Praktiken anbelangt, bin ich nicht recht zufrieden. Darum habe ich mir folgendes kleine Konzept ausgedacht:
Okay, das Forum ist Debian und Du hast Dich auf ein Konzept festgelegt. Aber was hältst Du beispielsweise von diesem Konzept ?

https://www.apple.com/de/swift/playgrounds/
https://www.apple.com/de/education/k12/teaching-code/

Hier ginge es um die Motivation über den Spaß-Faktor nebst entsprechendem didaktisch aufbereiteten Materialien für Lehrer und lernende. Gut, dazu bräuchte man natürlich Apple Tablets.

Es ist sicher lobenswert, wenn Lehrer sich dahingehend Mühe geben, eigene Materialien zu erstellen. Auf der anderen Seite, wenn es bereits gut strukturierte Materialien gibt, spräche sicher wenig dagegen, dieses zu verwenden.

Natürlich bezahlt man den Preis der Materialien über die Hardware. Dafür sind die Bücher aber danach kostenlos. Theoretisch kann man sich konzeptionell auch daran anlehnen, sollte man dennoch eigene Materialien erstellen wollen.

Natürlich gäbe es im Opensource Bereich auch Alternativen. z.B.

https://squeak.org

Was genau hat Dir an deutsprachigen Unterlagen mißfallen, gibt es dazu ein Beispiel, damit man verstehen kann, worum es konkret geht ?

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 22.08.2021 10:59:23

tkreutz hat geschrieben: ↑ zum Beitrag ↑
22.08.2021 09:40:38
paedubucher hat geschrieben: ↑ zum Beitrag ↑
13.08.2021 21:43:00
Ich beschäftige mich beruflich mit der Ausbildung von jungen Leuten, die gerne Softwareentwickler werden wollen. Was deutschsprachige Unterlagen und aktuell gängige Praktiken anbelangt, bin ich nicht recht zufrieden. Darum habe ich mir folgendes kleine Konzept ausgedacht:
Okay, das Forum ist Debian und Du hast Dich auf ein Konzept festgelegt. Aber was hältst Du beispielsweise von diesem Konzept ?

https://www.apple.com/de/swift/playgrounds/
https://www.apple.com/de/education/k12/teaching-code/

Hier ginge es um die Motivation über den Spaß-Faktor nebst entsprechendem didaktisch aufbereiteten Materialien für Lehrer und lernende. Gut, dazu bräuchte man natürlich Apple Tablets.
Wegen der Apple Tablets erledigt sich die Sache schon von.
tkreutz hat geschrieben: Es ist sicher lobenswert, wenn Lehrer sich dahingehend Mühe geben, eigene Materialien zu erstellen. Auf der anderen Seite, wenn es bereits gut strukturierte Materialien gibt, spräche sicher wenig dagegen, dieses zu verwenden.
Der Vorteil an eigenen Materialien ist es, dass man die Sache dann wirklich kennt. Bei fremden Materialien müsste man das dann haarklein durcharbeiten, wobei einem sicherlich Sachen auffallen, die einem nicht passen. Beispiel: In einem Shell-Lehrheft stand drin, dass man bei Unix nicht auf die Dateiendungen achten dürfe (richtig). Deshalb müsste man einfach jede Datei einmal aufmachen, um zu erfahren was drin ist (falsch: stattdessen file verwenden).
tkreutz hat geschrieben: Natürlich bezahlt man den Preis der Materialien über die Hardware. Dafür sind die Bücher aber danach kostenlos. Theoretisch kann man sich konzeptionell auch daran anlehnen, sollte man dennoch eigene Materialien erstellen wollen.
Die Auszubildenden müssen sich schon einen Laptop kaufen. Auf einer externen SSD haben sie aber verschiedene VMs, u.a. auch Ubuntu.
tkreutz hat geschrieben: Natürlich gäbe es im Opensource Bereich auch Alternativen. z.B.

https://squeak.org
Da sind meines Wissen sogar wirklich Leute mit pädagogischem (und nicht kommerziellem) Interesse dahinter, u.a. Alan Kay. In meinem Fall sollte aber direkt eine produktiv nutzbare Programmiersprache zum Einsatz kommen.
tkreutz hat geschrieben: Was genau hat Dir an deutsprachigen Unterlagen mißfallen, gibt es dazu ein Beispiel, damit man verstehen kann, worum es konkret geht ?
Die deutschsprachigen Unterlagen sind zu einem grossen Teil eine Untermenge der englischsprachigen Unterlagen. d.h. Übersetzungen. Es gibt kaum noch Bücher mit anspruchsvollen oder vielen Aufgaben. Ich habe bemerkt, dass da junge Leute das einfach ganz flott und problemlos durcharbeiten können, aber kaum etwas hängen bleibt. Es hat also nichts mit der Sprache an sich zu tun.

Sicherlich ist mein Blick auch eingeschränkt, da ich meine privaten Recherchen für Fachliteratur immer auf den Seiten von Manning, NoStarch, PragProg, Leanpub und InformIT mache. Evtl. hat jemand Tipps für gute deutschsprachige Fachbuchverlage?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
tkreutz
Beiträge: 61
Registriert: 07.06.2014 08:44:39

Re: Idee für Programmierkurs

Beitrag von tkreutz » 22.08.2021 11:28:25

paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.08.2021 10:59:23
Wegen der Apple Tablets erledigt sich die Sache schon von.

Die Auszubildenden müssen sich schon einen Laptop kaufen. Auf einer externen SSD haben sie aber verschiedene VMs, u.a. auch Ubuntu.

Die deutschsprachigen Unterlagen sind zu einem grossen Teil eine Untermenge der englischsprachigen Unterlagen. d.h. Übersetzungen. Es gibt kaum noch Bücher mit anspruchsvollen oder vielen Aufgaben. Ich habe bemerkt, dass da junge Leute das einfach ganz flott und problemlos durcharbeiten können, aber kaum etwas hängen bleibt. Es hat also nichts mit der Sprache an sich zu tun.

Sicherlich ist mein Blick auch eingeschränkt, da ich meine privaten Recherchen für Fachliteratur immer auf den Seiten von Manning, NoStarch, PragProg, Leanpub und InformIT mache. Evtl. hat jemand Tipps für gute deutschsprachige Fachbuchverlage?
Kommerzielles Interesse ist sicher ein Problem in der gesamten Bandbreite von Schule und Bildung, angefangen bei teuren Markenklamotten (da wäre ich tatsächlich ein Befürworter von Schuluniformen), bis zum Pausensnack.

Opensource bietet hier natürlich Möglichkeiten, die "closed" Source Systeme nicht bieten. Das Problem ist, dass dass Angebot an "Open Hardware" übersichtlich ist, sogar im Raspberry Pi stecken kommerzielle Patente.

Interessant wäre es natürlich, wenn Schüler ihren eigenen Computer "bauen" könnten. Ein Raspberry Pi mit entsprechendem Gehäuse würde sich dazu anbieten. Man könnte den Pi auch Modular gestalten, so daß er wahlweise in ein Tablet oder Laptop umgewandelt werden könnte - und zu Hause würde man dann Monitor und Tastatur anschließen. Leider sind die "kommerziellen" Gehversuche solcher Projekte in OLTP Kinderschuhen oder Lapdog Projekten "stecken" geblieben und nicht weiter entwickelt worden. (Lapdog war ein Gehäuse, was aus einem Raspberry Pi einen vollwertigen Laptop gemacht hat).

Das stimmt, die Abhängigkeiten im Bereich Kommerzialisierung haben wir leider auch im Bereich der "Schulbücher". In diesem Fall sind es die Verlage mit ihrem Urheberrecht.

Es gab aber mal gute Bücher, als die Homecomputer früher in Basic programmiert worden sind. Da wurden auch "Zahlenrätsel" dargestellt und gut erklärt.

Vielleicht wäre ein Retro-Computer basierend auf einem Raspberry Pi ein interessanter Ansatz. Leider müsste man sehr viel Zeit- und Herzblut in ein solches Konzept stecken, bevor man damit arbeiten könnte.

Ich konnte aber in der Retro-Computer Gruppe wenigstens einen Lehrer finden, der jetzt in GFA-Basic auf einem emulierten Atari Rechner seinen Unterricht macht. Dieses Konzept scheint sehr gut zu funktionieren. Leider ist GFA-Basic kein Opensource. Es befindet sich somit in einer rechtlichen Grauzone (Abandonware).

https://youtu.be/sDVSW-OZ4ZA

Aber der Unterricht scheint dahingehend aufzugehen, dass man noch auf (damals) gute Bücher- und Konzepte zurückgreifen kann, die aus Zeiten stammen, in denen die Kommerzialisierung noch in den Kinderschuhen steckte und Bildung wirklich im Vordergrund stand.

Der Vorteil für den Lehrer bei Einsatz eines Pi wäre übrigens, dass er vorbereitete SD-Card Images erstellen könnte. Damit hätten dann wirklich alle Kinder eine gleiche Umgebung und eine SD-Karte ist noch relativ kostengünstig.

https://youtu.be/zE2k_e0oSh4

Das Buch wurde vom Autor als PDF (heute) freigegeben.

https://forum.atari-home.de/index.php?topic=15930.0

Natürlich gibt es den Emulator auch mit freiem OS (EMU-TOS) und dieser läuft als VM (Emulator) auch auf jedem Laptop. Ich würde hier den Hatari empfehlen, da dieser von der Opensourcegemeinschaft unterstützt wird.

https://hatari.tuxfamily.org

Zudem lässt sich der Emulator auf nahezu jeder Plattform (Mac, Linux, PC) installieren. Zu pädagogischen Konzepten kann ich als Nicht-Pädagoge natürlich nichts sagen. Aber aus der Hintergrund, dass meine Generation (73er) mit Basic und Homecomputern groß geworden ist, würde ich schon sagen, dass Basic nicht völlig verkehrt wäre. Denn es geht ja nicht um Compilerbau der nächsten Informatik-Generation sondern rein um logisches Verständnis und dessen Zusammenhänge.

Das Basic ist ein geschlossenes System (gibt es als Interpreter und Compiler) und hier gibt es pädagogisch schön aufgebautes Lehrmaterial. Viele Funktionen für eine grafische Darstellung sind in der Sprache auch schon enthalten. Die Motivation, direkt ein Ergebnis zu sehen, ist damit gegeben. (Just My 2 Cents).

Es gibt heute noch viele Retro-Gruppen, die sich hierüber vernetzen. (z.B. Spiele Programmieren in GFA-Basic). Die Anforderungen, an heutige Spieleentwicklung, die ja mit einem Kinofilm gleichzusetzen ist, konnte man damit damals noch mit wenig Leuten bewältigen.

Übrigens sind "alte Computersysteme" nicht nur ein Thema für Leute von gestern, sondern es beschäftigen sich Informatiker in neuerer Zeit damit (s. Video).

https://youtu.be/0bmMNgAlvpY

Benutzeravatar
tkreutz
Beiträge: 61
Registriert: 07.06.2014 08:44:39

Re: Idee für Programmierkurs

Beitrag von tkreutz » 27.08.2021 11:52:32

paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.08.2021 10:59:23
Die deutschsprachigen Unterlagen sind zu einem grossen Teil eine Untermenge der englischsprachigen Unterlagen. d.h. Übersetzungen. Es gibt kaum noch Bücher mit anspruchsvollen oder vielen Aufgaben.
Ich bin gerade über dieses Buch gestolpert.

https://www.rheinwerk-verlag.de/algorit ... en-netzen/

Als YT Kanal kann ich noch diesen (englische Sprache) empfehlen.

https://www.youtube.com/user/Computerphile

Python könnte in der Tat ein guter Weg sein für eine Lernumgebung. Die englischen Bücher von Harvey und Deitel enthalten praxisorientierte Beispiele. (Man müsste halt selbst Material übersetzen, aber aus Praxissicht gäbe es hier einiges an Material).

https://deitel.com/intro-to-python-for- ... a-science/
https://deitel.com/training/

Viele Themen im amerikanischen Bildungssystem für Informatik sind im Pearson Programm erhältlich.

https://www.pearson.de

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 27.08.2021 16:28:08

tkreutz hat geschrieben: ↑ zum Beitrag ↑
27.08.2021 11:52:32
Ich bin gerade über dieses Buch gestolpert.

https://www.rheinwerk-verlag.de/algorit ... en-netzen/
Das ist sehr gut, vom Niveau aber eher für mich gedacht als für meine Zielgruppe. Aber vielleicht kann ich da später mal was rausnehmen. Das Buch an und für sich reizt mich schon.
tkreutz hat geschrieben: ↑ zum Beitrag ↑
27.08.2021 11:52:32
Als YT Kanal kann ich noch diesen (englische Sprache) empfehlen.

https://www.youtube.com/user/Computerphile
Kenne ich gut und schätze ich sehr! Ist für grundlegende Fragestellungen sicherlich eine hervorragende Quelle.
tkreutz hat geschrieben: ↑ zum Beitrag ↑
27.08.2021 11:52:32
Python könnte in der Tat ein guter Weg sein für eine Lernumgebung. Die englischen Bücher von Harvey und Deitel enthalten praxisorientierte Beispiele. (Man müsste halt selbst Material übersetzen, aber aus Praxissicht gäbe es hier einiges an Material).

https://deitel.com/intro-to-python-for- ... a-science/
https://deitel.com/training/

Viele Themen im amerikanischen Bildungssystem für Informatik sind im Pearson Programm erhältlich.

https://www.pearson.de
Pearson steht sicherlich für Qualität; dass sie auch deutschsprachige Publikationen haben, daran dachte ich gar nicht. (Eine kurze Suche offenbart aber leider nicht allzuviel für meinen Bedarf.)
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
tkreutz
Beiträge: 61
Registriert: 07.06.2014 08:44:39

Re: Idee für Programmierkurs

Beitrag von tkreutz » 28.08.2021 09:12:25

paedubucher hat geschrieben: ↑ zum Beitrag ↑
27.08.2021 16:28:08
Pearson steht sicherlich für Qualität; dass sie auch deutschsprachige Publikationen haben, daran dachte ich gar nicht. (Eine kurze Suche offenbart aber leider nicht allzuviel für meinen Bedarf.)
Das stimmt natürlich, der überwiegende Teil dürfte auch in englisch sein. Das sie auf den deutsprachigen Markt wollen, ist eine neuere Entwicklung. Hier ein Beispiel zu einem recht guten Grundlagenbuch (das Gegenstück wäre das IT-Handbuch für Fachinformatiker aus dem Galileo Press Verlag).

https://www.pearson.de/informatik-9783868949124

Ich rechne damit, dass künftig weitere Materialien auch im Bereich E-Learning kommen.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von Meillo » 29.08.2021 12:59:46

paedubucher hat geschrieben: ↑ zum Beitrag ↑
21.08.2021 21:39:07
Aber abtippen wird da in meiner Klasse niemand was, copy-paste machen schon eher.
Es gibt einen relevanten Unterschied zwischen Abtippen und Copy&Paste. Bei zweiterem lernt und denkt man weniger. Ich finde es durchaus sinnvoll, wenn Copy&Paste nicht moeglich ist, sondern der Code von Papier oder der Tafel abgeschrieben werden muss. Insgesamt kann man auch sagen, dass damit die fuer Informatiker wichtige Faehigkeit von genauem Arbeiten und Details wahrzunehmen geschult wird. Ein in meiner Erfahrung deutlicher Unterschied zwischen Informatikern und Nicht-Informatikern ist, dass zweitere so Details wie Satzzeichen und Leerzeichen einfach ueberlesen. Darum will man auch nicht, dass die Anwender einem Fehlermeldungen sagen, sondern man will, dass sie sie kopieren oder Screenshots machen, weil sie nicht gelernt haben, exakt das wiederzugeben was dort steht, denn sie schaffen es nicht ihren automatischen Abstraktionsblick abzuschalten. Wenn diese Schueler und Studenten selber abschreiben muessen, dann faellt ihnen das auf die Fuesse und wird ihnen damit bewusst. Bei Copy&Paste passiert das nicht.

Ebenso schaetze ich es, sie auch mal etwas auf Papier programmieren zu lassen. Das ist oft aussagekraeftig. ;-)

paedubucher hat geschrieben: ↑ zum Beitrag ↑
21.08.2021 21:39:07
Die Hauptsache ist, dass überhaupt programmiert wird. Im Fokus steht schon die jeweilige Programmiersprache (Grundlagen) und wie man damit einfache Programme schreibt. Vielleicht ist da mal ein Bubble Sort dabei oder eine Umrechnung von binär zu dezimal, sonst halt eher so Fingerübungen (Schleifen korrekt implementieren, Arrays aufsummieren: halt wirklich die Grundlagen.)
Das finde ich gut. Diese typischen Programmierproblemchen (die natuerlich meist mathematischer Art sind) sorgen fuer Uebung und Problemzerlegung im Kleinen. Gerne habe ich beispielsweise den Geldautomaten, der Wechselgeld rausgibt. Der laesst sich auch schoen erweitern, dass es auch funktioniert, wenn eine Muenzsorte aus ist.

Generell mag ich, wenn Programme nicht nur einmal geschrieben werden, sondern danach erweitert werden, weil das sehr viel praxisnaeher ist und eine wichtige Faehigkeit foerdert. Um so besser wenn sie dafuer nicht nur erweitert sondern nachtraeglich umstrukturiert werden muessen. Dabei lernt man viel.
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von paedubucher » 29.08.2021 14:52:36

Meillo hat geschrieben: ↑ zum Beitrag ↑
29.08.2021 12:59:46
paedubucher hat geschrieben: ↑ zum Beitrag ↑
21.08.2021 21:39:07
Aber abtippen wird da in meiner Klasse niemand was, copy-paste machen schon eher.
Es gibt einen relevanten Unterschied zwischen Abtippen und Copy&Paste. Bei zweiterem lernt und denkt man weniger. Ich finde es durchaus sinnvoll, wenn Copy&Paste nicht moeglich ist, sondern der Code von Papier oder der Tafel abgeschrieben werden muss.
Beim Abtippen muss alles einmal vom Auge durch das Gehirn in die Fingerspitzen gehen. Da ist schon nachvollziehbar, warum da mehr hängen bleibt.
Meillo hat geschrieben: Insgesamt kann man auch sagen, dass damit die fuer Informatiker wichtige Faehigkeit von genauem Arbeiten und Details wahrzunehmen geschult wird. Ein in meiner Erfahrung deutlicher Unterschied zwischen Informatikern und Nicht-Informatikern ist, dass zweitere so Details wie Satzzeichen und Leerzeichen einfach ueberlesen. Darum will man auch nicht, dass die Anwender einem Fehlermeldungen sagen, sondern man will, dass sie sie kopieren oder Screenshots machen, weil sie nicht gelernt haben, exakt das wiederzugeben was dort steht, denn sie schaffen es nicht ihren automatischen Abstraktionsblick abzuschalten. Wenn diese Schueler und Studenten selber abschreiben muessen, dann faellt ihnen das auf die Fuesse und wird ihnen damit bewusst. Bei Copy&Paste passiert das nicht.
Genau dieses genaue Arbeiten halte ich für eine grosse Hürde am Anfang. Ich möchte den jungen Leuten immer sagen, dass sie sich beim Programmieren einerseits möglichst dumm anstellen sollen (halt den Programmtext wie eine Maschine betrachten), andererseits sehr viel denken müssen, um auf die Problemlösung zu kommen.
Meillo hat geschrieben: Ebenso schaetze ich es, sie auch mal etwas auf Papier programmieren zu lassen. Das ist oft aussagekraeftig. ;-)
Das ist bei Prüfungen sicherlich sinnvoll, gerade beim Lesen von Code! So gibt es kein Probieren, sondern nur ein Verstehen.
Meillo hat geschrieben:
paedubucher hat geschrieben: ↑ zum Beitrag ↑
21.08.2021 21:39:07
Die Hauptsache ist, dass überhaupt programmiert wird. Im Fokus steht schon die jeweilige Programmiersprache (Grundlagen) und wie man damit einfache Programme schreibt. Vielleicht ist da mal ein Bubble Sort dabei oder eine Umrechnung von binär zu dezimal, sonst halt eher so Fingerübungen (Schleifen korrekt implementieren, Arrays aufsummieren: halt wirklich die Grundlagen.)
Das finde ich gut. Diese typischen Programmierproblemchen (die natuerlich meist mathematischer Art sind) sorgen fuer Uebung und Problemzerlegung im Kleinen. Gerne habe ich beispielsweise den Geldautomaten, der Wechselgeld rausgibt. Der laesst sich auch schoen erweitern, dass es auch funktioniert, wenn eine Muenzsorte aus ist.
Super Aufgabe, damit werde ich nächste Woche meine Auszubildende traktieren :)

Im Moment mache ich immer Aufgaben nach einem bestimmten Schema: Eine Funktion, bei der zunächst die Rückgabevariable auf einen sinnvollen Initialwert gesetzt werden muss. Diese Variable wird dann am Schluss zurückgegeben. Es folgt eine Schleife, welche den Funktionsparameter verarbeitet, üblicherweise eine Liste oder ein String, der ja eine Liste von Zeichen ist. Im Schleifenkörper muss dann die Rückgabevariable korrekt aktualisiert werden. Alleine dieses Schema einzuüben, braucht schon viel Arbeit.
Meillo hat geschrieben: Generell mag ich, wenn Programme nicht nur einmal geschrieben werden, sondern danach erweitert werden, weil das sehr viel praxisnaeher ist und eine wichtige Faehigkeit foerdert. Um so besser wenn sie dafuer nicht nur erweitert sondern nachtraeglich umstrukturiert werden muessen. Dabei lernt man viel.
Für mich ist das dann der nächste Schritt, nachdem die Grundlagen sitzen. Ich habe jetzt z.B. die Funktionsrümpfe (d.h. ohne Implementierung) mit entsprechenden Unittests für das Spiel TicTacToe zur Verfügung gestellt. Wenn die Implementierung dann keine Probleme mehr bereitet, können diese Funktionen in ein gesondertes Projekt rausgezogen werden, um ein richtiges Spiel zu programmieren.

Von den Auszubildenden höre ich, dass sie gerne grössere, zusammenhängende Sachen programmieren wollten, da sie hierfür motivierter seien. Hier blocke ich jedoch ab, da ich will, dass zunächst die Grundlagen (Schleifen, Variablen, if/else usw.) beherrscht werden. Es mag ja lustig sein, mit einem Brettspiel zu beginnen, indem man in Visual Studio mal ein Formular mit 64 Feldern zusammenklickt. Aber genau diesen planlosen Ansatz möchte ich vermeiden. Hier stehe ich leider völlig im Konflikt zwischen Motivation maximieren und Verständnis fördern. Andererseits sollten angehende Programmierer, die es ernst meinen, sich nicht nur für bunte Effekte interessieren, sondern für das Durchdringen der Materie.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Idee für Programmierkurs

Beitrag von Meillo » 29.08.2021 15:24:27

paedubucher hat geschrieben: ↑ zum Beitrag ↑
29.08.2021 14:52:36
Genau dieses genaue Arbeiten halte ich für eine grosse Hürde am Anfang. Ich möchte den jungen Leuten immer sagen, dass sie sich beim Programmieren einerseits möglichst dumm anstellen sollen (halt den Programmtext wie eine Maschine betrachten), andererseits sehr viel denken müssen, um auf die Problemlösung zu kommen.
Ja, das muessen sie beides lernen. Ich finde es immer wieder erstaunlich, dass es selbst promovierten Personen teilweise unmoeglich ist, ``Computer zu spielen'', also komplett stupide und mechanisch einer Handlungsanweisung zu folgen (und dabei alle Wahrnehmungsautomatismen, Pattern-Matching, vorschnelle Interpraetation und Vorausschauen abzustellen). Aber genau das ist noetig fuer's Debuggen: Nicht meinen was da stuende, sondern erkennen was da steht. ;-)

paedubucher hat geschrieben: ↑ zum Beitrag ↑
29.08.2021 14:52:36
Von den Auszubildenden höre ich, dass sie gerne grössere, zusammenhängende Sachen programmieren wollten, da sie hierfür motivierter seien. Hier blocke ich jedoch ab, da ich will, dass zunächst die Grundlagen (Schleifen, Variablen, if/else usw.) beherrscht werden. Es mag ja lustig sein, mit einem Brettspiel zu beginnen, indem man in Visual Studio mal ein Formular mit 64 Feldern zusammenklickt. Aber genau diesen planlosen Ansatz möchte ich vermeiden. Hier stehe ich leider völlig im Konflikt zwischen Motivation maximieren und Verständnis fördern. Andererseits sollten angehende Programmierer, die es ernst meinen, sich nicht nur für bunte Effekte interessieren, sondern für das Durchdringen der Materie.
Die Kommandozeile erleichtert das ganze Thema Input und Output, finde ich. Man kann sich dann auf das Eigentliche im Code konzentrieren, bloss dass es halt optisch nicht so schoen aussieht. Das finde ich sinnvoll, bevor man sich mit GUI-Zeug befasst. (Notfalls GUI in der Form, dass du eine fertige Blackbox anbietest in die sie nur ihre Daten einschieben und Userinput rauholen koennen. Sie ersetzen in ihrem Progamm dann nur ihren Kommandozeilenausgabeaufruf printffield() durch deine fertige Funktion printfield_gui(), bzw. ersetzen ihre Include-Datei mit deiner und haben eine andere Ausgabe ... ebenso bei der Eingabe.)

Motivation hatte ich immer bei Spielen, weil ich damit etwas tun konnte, nachdem sie fertig waren.

Ich bin kein grosser Freund von einem mehrteiligen Erstellen von Einzelteilen, die dann ein groesseres Programm zusammensetzen, weil das so sehr den Engineering-Ansatz ist ... so sehr Wasserfall/V-Modell. Ich finde es besser klein und funktionierend zu beginnen und dann inkrementell zu erweitern. Also schon im ersten Schritt ein funktionierendes, wenn auch noch so rudimentaeres Spiel erzeugen, dann aber jeweils einen Aspekt umbauen, verbessern, erweitern, anbauen ... bis man am Ende auch das grosse Spiel hat. In zweiterem Prozess ist fuer die Lernenden stets sichtbar was passiert und warum. Auch koennen sie selber mitentscheiden, Richtungen einschlagen, kreativ sein, ausprobieren.


Wahrscheinlich geht es dir aehnlich wie mir, dass ich denke, dass die Dinge zuerst verstanden werden muessen, bevor man sie wirklich anwenden kann. Wenn wir ehrlich sind funktioniert es aber auch bei uns selbst nicht so. Wir tun auch erst mit Halbwissen allerlei *um* dabei dann kennenzulernen wie es wirklich funktioniert. Das Ziel sollte wohl sein, dass deine Schueler/Azubis/Studenten Interesse an dem entwickeln was sie machen, damit sie Ausprobieren wollen. Schaffe ihnen kreativen Raum, in dem sie experimentieren koennen. Sage z.B. nur, dass es eine sinnvolle Ausgabe sein soll, lasse aber offen wie sie aussieht. Gib als extra Aufgabe, dass sie die Ausgabe schoen machen sollen. (So irrsinnig dies klingt, aber ich glaube, dass das eine hervorragende Aufgabenstellung ist.) Versuche, dass sie sich ueber ihre Erzeugnisse austauschen und diese ``lustige Sachen'' machen. (``Just for fun!'' -- Spass ist entscheidend.) Zuerst muessen sie Spass daran finden, dann kannst du ihnen sinnvolle Denkweisen zeigen. ... allerdings kann ich das alles nur nett hier hinschreiben, kann dir jedoch nicht sagen *wie* man das alles umsetzt. ;-)
Use ed once in a while!

Benutzeravatar
tkreutz
Beiträge: 61
Registriert: 07.06.2014 08:44:39

Re: Idee für Programmierkurs

Beitrag von tkreutz » 05.09.2021 10:42:51

Ich möchte noch eine Anregung geben zu dem Thema "Online", "Offline", "Paper" und "Klassenraumlösungen".

Was den Lerneffekt angeht, scheint mit Paper-Training ein sehr guter Ansatz zu sein, um a) eine Aufgabe zu geben b) in Ruhe die Schüler "Kopfarbeit" machen zu lassen und c) das Ergebnis anschließend auch zu kontrollieren.

Bei dem didaktischen Ansatz fand ich diesen hier gut (ich bin kein Lehrer, habe auch auch schon als Dozent für IT-Themen Kurse gegeben).

https://youtu.be/L0xTXGahEus

Bei Klassenraumlösungen zu dem Thema "Programmieren", könnte eine Cloud Lösung auch interessant sein, da es hier aus Sicht des Lehrers die Möglichkeit gibt quasi online die "Tippfehler" der Schüler mit zu verfolgen, was Zeit spart und mögliche Probleme (Klammern vergessen, falsch eingerückt, Tippfehler, Groß- und Kleinschreibung nicht beachtet usw.) direkt offenbart.

Die Lernumgebung BlueJ ist übrigens eine interaktive Lernumgebung zu Java (hier gibt es zumindest auch mindestens ein deutschsprachiges gutes Buch). Einfach nach BlueJ suchen. Pearson Edu nutzt diese Umgebung.

Zu Eclipse (IDE) gibt es mittlerweile auch Cloud Lösungen z.B. hier:
https://www.dirigible.io

Die Firma Jetbrains bietet ihre Entwicklertools / Programme auch für Schulen an. Andere Anbieter werden hier sicher folgen.

Auch Apple arbeitet an einer Cloud-Infrastruktur für Hardware independable Developer Projects, aktuelle ist die Beta für Entwickler hier im Umlauf, da kommt aber auch noch was.

Ich würde mir als Lehrer (vielleicht langfristig) auch eine Möglichkeit suchen, bei der ich die Möglichkeit hätte, die Klasse online zu Monitoren bei dem, was sie eintippen. Am Besten auch mit einem Quellcode-Repository, dann hat man die Möglichkeit zu dem Start einer Lektion alle auf den gleichen Stand zu heben, ohne an jedem Bildschirm gucken zu müssen, wer wo gerade einen Tippfehler gemacht hat.

Das ist mir noch eingefallen aus der Erfahrung einer Klasse mit Programmierschülern bei der der Lehrer ständig bei 20 Arbeitsplätzen hin und herlaufen musste, um in dann wachsenden Code, die Tippfehler der Schüler zu suchen.

Deswegen ist die "Lernumgebung" BlueJ so gebaut, dass sie den Scope von Prozeduren grafisch einfärbt. Eine vergessene Klammer in einem Block wirkt also auch direkt farblich aus. Der Lehrer sieht dann mit einem Blick, wenn etwas vergessen worden ist (was sicher mehr als einmal vorkommt).

https://www.bluej.org

https://www.amazon.de/Java-lernen-mit-B ... b_title_bk

Benutzeravatar
tkreutz
Beiträge: 61
Registriert: 07.06.2014 08:44:39

Re: Idee für Programmierkurs

Beitrag von tkreutz » 07.11.2021 09:20:56

Clean Code Author Robert C. Martin hat einen kleinen Programmierkurs online, der mit dem Environment Processing.org arbeitet.

https://processing.org/environment/

Dazu gibt es ein Video:

https://youtu.be/-1CuAiKdBQs

Die Online-Programmierumgebung setzt auch grafische Elemente ein. (Schalterbeispiel für Schaltalgebra). Ich hatte die Lernumgebung entdeckt, nachdem ich mich ein wenig mit Clean Code beschäftigt hatte. Vielleicht ein Thema, was man auch irgendwie einfließen lassen sollte.

Interessant wäre es mal, eine Rückmeldung zu kommen, wie der bisherige Kurs gelaufen ist.

Antworten