- Java 100%
Was es ist, fuer wen, wie man es startet und baut, womit man anfaengt, was didaktisch darin steckt und wo was liegt. Die Gruende hinter dem Aufbau bleiben in ARCHITECTURE.md - die README ist die Tuer, nicht das Haus. Die Lizenz steht ausdruecklich dabei: kostenlos, privat und nicht-kommerziell, Veraendern und Weitergeben ausgeschlossen. Das ist keine Open-Source-Lizenz, und ein Repo ohne diesen Hinweis liest sich wie eines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RCZZBUMQwRJPpQMqKHmri8 |
||
|---|---|---|
| app | ||
| aufgaben | ||
| beispiele | ||
| bilder | ||
| core | ||
| curriculum | ||
| gradle | ||
| lehrgaenge | ||
| model | ||
| ui | ||
| verify | ||
| .gitignore | ||
| ARCHITECTURE.md | ||
| build.gradle.kts | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
logic-learn
Lernsoftware für digitale Logik im Schulunterricht, angelehnt an LogiSim und das Spiel Turing Complete.
Schülerinnen und Schüler bauen Schaltungen aus Gattern, sehen die Signale fließen und arbeiten sich von einem einzelnen Draht bis zum Volladdierer vor. Die Reise endet bewusst bei Flipflops, Zählern, Registern und Vergleichsoperatoren - nicht bei einer CPU mit Assembler.
Starten
Gebraucht wird Java 17 oder neuer, sonst nichts. Keine Installation, keine Administratorrechte - gedacht für Computerräume, in denen man beides nicht hat.
java -jar logic-learn.jar
Wichtig ist das Arbeitsverzeichnis: Das Programm sucht aufgaben/,
lehrgaenge/ und beispiele/ neben sich. Die mitgelieferten Startdateien
(logic-learn.cmd für Windows, logic-learn.sh für Linux und macOS) wechseln
vorher dorthin.
Ein weitergabefertiges Paket mit Programm, Startdateien und allem Unterrichtsmaterial baut:
./gradlew :app:paket # -> app/build/paket/logic-learn.zip
Zum Bauen und Testen aus den Quellen:
./gradlew build # übersetzt, prüft, baut die Jar
./gradlew :app:run # startet direkt aus dem Quelltext
Gebaut wird mit JDK 21, übersetzt für Java 17. Gradle bringt sein Wrapper-Skript mit, es muss nichts installiert werden.
Womit man anfängt
Aufgabe ▸ Lehrgang öffnen … und lehrgaenge/grundkurs.json wählen. Zwanzig
Aufgaben in einer Reihenfolge, die aufeinander aufbaut: vom einzelnen Draht über
das NAND zu allen übrigen Gattern, weiter zu Paritätsprüfung, Verdoppeln und
Volladdierer. Offen ist immer die nächste Aufgabe, die noch nicht bestanden ist;
wer sie schafft, schaltet die folgende frei. Die ersten zehn folgen den ersten
zehn Leveln von Turing Complete.
F1 zeigt alle Gesten und Tastenkürzel. Die wichtigsten:
| Geste | Wirkung |
|---|---|
| Von einem Anschluss ziehen | Draht legen - der Weg knickt automatisch |
| Mitten auf einem Draht ziehen | Abzweig |
| Rechtsklick | Löschen |
| Rechte Maustaste ziehen | Rahmen um mehrere Dinge |
| Klick auf einen Schalter | Umlegen |
| R, Entf, Esc | Drehen, Löschen, Abbrechen |
Was darin steckt
Vier Werte je Bit statt zwei. Eine Leitung führt 0, 1, unbestimmt (blau) oder Kurzschluss (rot). Dadurch sieht man beim RS-Latch, dass es nach dem Einschalten noch keinen Zustand hat - und dass zwei Ausgänge auf einer Leitung kein Rechenergebnis liefern, sondern einen Widerspruch.
Simulation mit Laufzeit. Jedes Bauteil hat eine Verzögerung, Ereignisse werden der Reihe nach abgearbeitet. Gedächtnis entsteht daraus von selbst: ein Latch ist keine eingebaute Sonderform, sondern zwei Gatter, die sich gegenseitig treiben. Eine Schaltung, die nicht zur Ruhe kommt, wird nach einem Ereignisbudget abgebrochen und als schwingend gemeldet - mit dem Rasterpunkt, an dem es am meisten flackert.
Eigene Bauteile. Jede Schaltung des Projekts lässt sich als Bauteil in einer anderen verwenden, beliebig tief verschachtelt. Beim Aufbereiten werden sie flachgeklopft; jedes Exemplar behält seinen eigenen Zustand.
Aufgaben sind Daten, kein Code. Eine Aufgabe ist eine JSON-Datei mit Beschreibung, Hinweisen, erlaubten Bauteilen und erwarteter Tabelle. Eine Lehrkraft schreibt eigene, ohne zu programmieren - im Programm über Aufgabe ▸ Neue Aufgabe aus dieser Schaltung …, das die Tabelle aus einer gebauten Lösung rechnet. Geprüft wird jede Zeile aus dem Einschaltzustand heraus, damit keine Lösung besteht, die nur von der vorigen Zeile lebt.
Wo was liegt
| Ordner | Inhalt |
|---|---|
core/ |
Signale, Bauteile, Simulation - kennt keine Schaltung und kein Fenster |
model/ |
Schaltung, Drähte, Verbindungsanalyse, Kommandos, Dateiformat |
verify/ |
Wahrheitstabellen aus einer gebauten Schaltung |
curriculum/ |
Aufgaben, Lehrgänge, Prüfung |
ui/ |
Swing-Oberfläche: Zeichenfläche, Palette, Inspektor, Dialoge |
app/ |
Startpunkt, Fat-JAR, Paket |
beispiele/ |
Fertige Schaltungen zum Ansehen |
aufgaben/ |
Zwanzig Aufgaben mit automatischer Prüfung |
lehrgaenge/ |
Der Grundkurs: die Aufgaben der Reihe nach |
Die Entscheidungen hinter dem Aufbau - und die Gründe, die damals dagegen sprachen - stehen in ARCHITECTURE.md. Jeder Datenordner hat eine eigene README mit dem Dateiformat.
Lizenz
Urheber: Sören Biester - KielCode
Die Nutzung ist kostenlos und auf den privaten, nicht-kommerziellen Gebrauch
beschränkt; Verändern und Weitergeben sind ausgeschlossen. Den vollständigen
Text zeigt das Programm beim ersten Start und jederzeit über
Hilfe ▸ Lizenzvereinbarung …; er steht im Quelltext in
ui/src/main/java/de/logiclearn/ui/LicenseAgreement.java.