Computer-Ag am WvS Blog der Computer-AG am Werner von Siemens Gymnasium Berlin

28. November 2025

28.11.2025

Filed under: Allgemein,Scratch,Tagesberichte,Termine,Tisch — admin @ 15:38

Wir machen Scratch. Z.B. https://scratch.mit.edu/users/rayquazalegendbest/ und https://scratch.mit.edu/users/pokedote/

Und Farbmischer mit Javascript von anno dazumal: https://html-ag.wvs-berlin.de/Javascript/farbmischer.htm#

Nächste Mal normal.

14. November 2025

14.11.2025

Filed under: Allgemein,Delphi,Scratch,Tagesberichte,Termine,Tisch — admin @ 15:42

Zwei SuS aus J5 sind da. „Wir“ machen Scratch. Der Frosch soll nicht so schnell hüpfen, aber wir finden nicht, wo sich das einstellen lässt. Angelo und Jakob sind auch da. Wir reden u.a. über Delphi 😉 – wurde damals von Herrn Frank gelehrt. Bzw. die IDE hieß wohl Delphi.

Wir finden ein altes Foto von April 2006 – https://html-ag.wvs-berlin.de/html-ag-apr-06-500px.jpg – und eins mit Rob – https://html-ag.wvs-berlin.de/html-ag-ohne-phil-mit-rob-500px.jpg

Nächste Mal normal.

7. November 2025

7.11.2025

Filed under: Allgemein,Mathematik,Tagesberichte,Termine,Tisch — admin @ 17:25

Herbstferien sind vorbei. Angelo ist auch da. Und zwei aus J5 wie vor den Ferien. Wir machen Scratch und Geogebra und Manim. Nächste Mal normal.

26. September 2025

26.9.2025

Filed under: Allgemein,Tagesberichte,Termine,Tisch — admin @ 16:37

Das erste Mal nach den Ferien. Heute ist Schulfest. Es ist kalt draußen. Angelo und Morten sind da.
Angelo macht Differenzialgeometrie.

Nächste Mal normal.

11. Juli 2025

11.07.2025

Filed under: Allgemein,Tagesberichte,Termine,Tisch — admin @ 15:04

Morten und Angelo sind da. Schule ist ziemlich leer. Wir reden auch über Emacs. Angelo benutzt es mit Lisp. Irisch und Ergativ kommen auch vor in unseren Gesprächen. Nächste Mal ist letzte Mal. Vor den Ferien. Findet vermutlich nicht statt. Dann wieder nach den Ferien.

Wir reden über https://wiby.me/

Es geht auch um Internet und Usenet:

Das Internet und Usenet sind zwei verschiedene Dinge, die oft verwechselt werden:

Das Internet ist die grundlegende Netzwerkinfrastruktur – ein weltweites Netzwerk von miteinander verbundenen Computern, das verschiedene Protokolle wie HTTP, FTP, SMTP und andere verwendet. Es ist sozusagen das „Straßennetzwerk“ der digitalen Welt.

Usenet hingegen ist ein spezifischer Dienst, der über das Internet läuft. Es ist ein dezentrales Diskussionssystem, das aus tausenden von Newsgroups besteht – thematisch organisierten Foren zu allen möglichen Themen.

Die wichtigsten Unterschiede:

Entstehung: Usenet entstand 1980, noch vor dem modernen Internet. Ursprünglich lief es über UUCP (Unix-to-Unix Copy Protocol) zwischen Universitäten und wurde später ans Internet angebunden.

Struktur: Das Internet ist eine Infrastruktur für viele verschiedene Dienste (Web, E-Mail, etc.), während Usenet ein einziger, spezialisierter Diskussionsdienst ist.

Funktionsweise: Usenet funktioniert nach einem „Store-and-Forward“-Prinzip – Nachrichten werden zwischen Servern synchronisiert und eine Zeit lang gespeichert, bevor sie automatisch gelöscht werden.

Heutige Relevanz: Während das Internet allgegenwärtig ist, wird Usenet heute hauptsächlich noch für den Austausch großer Dateien und in spezialisierten Communities genutzt.

Vereinfacht gesagt: Das Internet ist das Netzwerk, Usenet ist eine Anwendung, die darüber läuft.

4. Juli 2025

04.07.2025

Filed under: Tagesberichte,Termine,Tisch — admin @ 14:40

Abistreich war heute. Schule ist leer. Morten und Angelo sind da. Angelo hat einen monadischen Parser geschrieben.

Nächste Mal normal. Noch zwei Mal, dann Ferien.

Claude fässt wie folgt zusammen:

Ein eleganter Parser-Combinator in OCaml – Was wir daraus lernen können

Ein Gastbeitrag der Computer-AG über funktionale Programmierung und Parser-Design


TL;DR – Das Wichtigste in Kürze

Ein Entwickler namens Angelo hat einen monadischen Parser in OCaml geschrieben, der zeigt, wie elegant funktionale Programmierung sein kann. Sein Code ist ein perfektes Beispiel dafür, warum OCaml in der Compiler-Entwicklung so geschätzt wird.

Was ist das? Ein Parser, der Code einer kleinen Programmiersprache lesen und verstehen kann – ähnlich wie wenn ihr euren Python-Code ausführt, muss der Computer ihn erst „parsen“.

Was macht diesen Parser so besonders?

🧠 Monaden – Klingt kompliziert, ist aber genial

Angelo verwendet Monaden – ein Konzept aus der Mathematik, das in der funktionalen Programmierung sehr mächtig ist:

let (>>=) p f stream = 
  match p stream with
  | None -> None
  | Some (x, stream') -> f x stream'

Was passiert hier? Parser können elegant miteinander kombiniert werden. Wenn einer fehlschlägt → Stopp. Wenn er erfolgreich ist → Weitermachen mit dem nächsten.

Das ist wie beim Dominoeffekt, nur dass intelligente Fehlerbehandlung eingebaut ist!

🔄 Lazy Streams – Memory wie ein Profi verwalten

type lazy_stream = Stream of (unit -> (char * lazy_stream) option)

Warum ist das schlau?

  • Der Parser liest nur so viele Zeichen, wie er wirklich braucht
  • Bei großen Dateien: Kein Memory-Overflow
  • „Backtracking“ möglich – der Parser kann zurückspulen wenn nötig

⚖️ Operator-Precedence – Mathematik richtig verstehen

Hier wird’s richtig cool! Der Parser versteht, dass 2 + 3 * 4 gleich 2 + (3 * 4) ist:

let prec = function
  | Multiply | Divide -> 6
  | Add | Subtract -> 5
  | Equ | Neq | Less | LEqu | Greater | GEqu -> 4

Das Problem: Wie bringt man einem Computer bei, dass * vor + kommt? Angelos Lösung: Elegante rekursive Funktionen, die die Mathematik-Regeln befolgen.

Ein praktisches Beispiel

Input:

if a = 2 then
  b := 1
else
  x := y + 3*4

Was der Parser daraus macht:

  1. Tokenizing: Zerlegt den Text in if, a, =, 2, etc.
  2. Parsing: Baut einen „Abstract Syntax Tree“ (AST)
  3. Pretty-Printing: Kann den Code wieder sauber ausgeben
IfElse (
  Binary(Equ, Symbol "a", Number 2),
  Binary(Assign, Symbol "b", Number 1),
  Binary(Assign, Symbol "x", 
    Binary(Add, Symbol "y", Binary(Multiply, Number 3, Number 4)))
)

Was können wir daraus lernen?

1. Funktionale Programmierung ist mächtig

  • Keine Mutation, keine Seiteneffekte
  • Mathematisch beweisbar korrekt
  • Sehr wenige Bugs möglich

2. OCaml eignet sich perfekt für Compiler

  • Pattern Matching für AST-Verarbeitung
  • Starkes Typsystem verhindert Laufzeitfehler
  • Performance comparable zu C/C++

3. Komplexe Probleme elegant lösen

Angelo’s Code zeigt: Mit den richtigen Abstraktionen werden komplizierte Probleme einfach.

Warum ist das relevant für uns?

Für die Computer-AG:

  • Compiler-Bau verstehen lernen
  • Funktionale Programmierung praktisch anwenden
  • Mathematische Konzepte in Code umsetzen

Für euer Studium/Beruf:

  • Parser sind überall: JSON, HTML, Konfigurationsdateien
  • Funktionale Sprachen werden immer wichtiger (Haskell, F#, Scala)
  • Problem-Solving-Skills durch mathematisches Denken

Code-Qualität auf höchstem Niveau

Was Angelo richtig macht:

  • ✅ Saubere Modularität (Lexer → Parser → AST → Pretty-Printer)
  • ✅ Aussagekräftige Funktionsnamen
  • ✅ Typ-getriebenes Design
  • ✅ Elegante Fehlerbehandlung
  • ✅ Vollständige, lauffähige Implementation

Rating: 9/10 – Das ist Profi-Code! 🚀

Challenge für die Computer-AG

Wer traut sich?

  1. Beginner: Versucht OCaml zu installieren und die ersten Zeilen zu verstehen
  2. Intermediate: Schreibt einen einfachen JSON-Parser
  3. Advanced: Erweitert Angelos Parser um neue Features

Nächstes Treffen: Wir schauen uns gemeinsam an, wie man sowas implementiert!


Weiterführende Links

Interesse geweckt? Kommt zum nächsten Computer-AG Meeting! Wir experimentieren mit funktionaler Programmierung und bauen vielleicht unseren eigenen kleinen Parser. 💻


Dieser Post entstand nach der Analyse von Angelo’s exzellentem Parser-Code. Thanks Angelo für das Teilen! 🙏

13. Juni 2025

13.6.2025

Filed under: AI,Allgemein,KI,Tagesberichte,Termine — admin @ 16:29

Noch keiner da im Raum 209. Angelo war da und Herr Hättig. Wir haben über KI geredet.

📋 Protokoll Computer-AG: „Von Matrizen zu KI“

Angelo’s Entdeckung: Matrix-Quadrierung 🎯

  • zählt automatisch Wege der Länge 2 in Graphen
  • Matrixpotenzen = Weg-Zähler (A³ = 3-Schritt-Wege, etc.)
  • Transposition A^T = alle Pfeile umdrehen

Lehrer-Input: Praktische Anwendungen 👨‍🏫

🌐 PageRank (Google-Algorithmus):

  • Webseiten = Knoten, Links = Kanten
  • Wichtigkeit durch iterative Matrix-Multiplikation

📊 Laplace-Matrizen (L = D – A):

  • Spektrales Clustering, Community-Detection
  • Netzwerk-Analyse, Diffusion

Abitur-Relevanz: Automatentheorie 📚

  • DFA = Adjazenzmatrizen für Zustandsübergänge
  • Matrix[i,j] = 1 bedeutet „Übergang von Zustand i zu j möglich“
  • Beispiele: Passwort-Validator, Binär-Checker, Münzautomat

Neuronale Netze: Der Paradigmenwechsel 🧠

Unterschied zu Automaten:

  • Automaten: Diskrete Logik (0 oder 1)
  • Neuronale Netze: Kontinuierliche Gewichtungen (0.0-1.0)

Mathematik:

  • Perceptron: z = w⃗ · x⃗ + b, y = σ(z)
  • Multilayer: Kaskade von Matrix-Multiplikationen
  • Forward Pass: W₁ → W₂ → W₃ → Output

Fazit

Von Angelo’s Computer-AG zu Hochschul-Informatik: Matrix-Quadrierung → PageRank → Automatentheorie → KI

Nächste Sitzung: Implementierung eigener DFA-Beispiele? 🤖


Protokollant: KI-Assistent | Teilnehmer: Angelo, Lehrer, Computer-AG

Nächste Mal vermutlich nicht.

6. Juni 2025

6.6.2025

Filed under: Allgemein,schräger Tisch,Tagesberichte,Termine,Tisch — admin @ 16:24

Angelo und Morten sind da, es war Abitur, wir reden über AI im Wesentlichen, Claude und ChatGPT. Robert macht Sachen mit Claude und ChatGPT. Und es wurden Videos erstellt. Wann wird gegrillt ist die wichtige Frage. Wir sind übrigens am schrägen Tisch im Raum 206. Wir generieren auch Bilder mit ChatGPT.

16. Mai 2025

16.5.2025

Filed under: Allgemein,Tagesberichte,Termine,Tisch — admin @ 14:42

Morten ist da. Wir sind im 206er. Angelo bringt seinen PDP1-Emulator mit und demonstriert ihn. Papiercode wird eingelesen. Mit Javascript kann er über unter 400 Zeilen Go den Emulator über Javascript steuern. Claude fasst das wie folgt zusammen:

Bearbeiten

Moderne Schnittstellen für historische Computer: PDP-1-Emulator trifft auf Webtechnologien

In unserer Computer-AG haben wir die Verbindung von Computergeschichte mit moderner Webtechnologie untersucht. Das vorgestellte Projekt macht einen PDP-1-Emulator (frühe 1960er Jahre) über Webtechnologien zugänglich.

Die technische Umsetzung

Die Architektur besteht aus drei Komponenten:

  1. Der PDP-1-Emulator läuft eigenständig und lauscht auf Netzwerk-Ports.
  2. Ein Go-basierter Webserver als Vermittler:
    • Kommuniziert mit dem Emulator über Netzwerk-Ports
    • Bietet WebSocket-Verbindungen für Browser
    • Wandelt Anfragen und Antworten um
    • Serialisiert Daten in JSON
  3. JavaScript im Browser für die Benutzeroberfläche:
    • Stellt eine moderne Bedienoberfläche dar
    • Kommuniziert über WebSockets
    • Visualisiert die Emulator-Ausgaben

Warum Go?

Go eignet sich für diese Middleware-Rolle durch:

  • Effiziente Nebenläufigkeit mit Goroutinen
  • Gute Netzwerkfähigkeiten
  • Kompakte Syntax für Datenvermittlung

Alternative Ansätze

Alternative Implementierungen:

  • Node.js als JavaScript-basierte Alternative
  • Apache/PHP mit zusätzlichen Komponenten für Echtzeit-Kommunikation

Erkenntnisse

Das Projekt demonstriert:

  • Zugänglichmachung historischer Technologie
  • Kombination verschiedener Technologien nach Stärken
  • Entwicklung von Echtzeit-Webanwendungen mit geringer Latenz

Nächste mal normal, wir sprachen über Sprache.

9. Mai 2025

9.5.2025

Filed under: Allgemein,Tagesberichte,Termine — admin @ 16:31

Angelo und Jakob waren da. War interessant. Nächste mal normal.

Older Posts »