Sollte sich einmal die Gelegenheit ergeben, würde ich gern einen Programmierkurs geben – vorrangig für Anfänger. Allerdings muss ich selbst dann erst einmal herausfinden, was die Probleme eines Anfängers sind und wie man etwas Anfängern erklärt, da ich nun fast 30 Jahre programmiere und weit, weit von den Anfängen entfernt bin.

Da man Programmieren nicht direkt erklären, sondern es nur anhand von vielen Beispielen erlernen kann, würde ich den Kurs anders als üblich gestalten – irgendwo habe ich einmal den Vergleich gelesen: dass ein Dichter nicht mit Schreiben, sondern mit Lesen beginnt. In diesem Sinne würde ich auch damit beginnen, bestehende Programme zu modifizieren und dabei Stück für Stück Code analysieren und debuggen. Damit sollten auch schneller Erfolgserlebnisse eintreten, anstatt bei primitiven Beispielen wie Hello World oder Türme von Hanoi.

Da Programmieren auch mehr als reines Quelltextschreiben ist und innerhalb von einer oder zwei Wochen keine vollständigen Programmierkenntnisse vermittelt werden können, würde ich viel Wert auf das Drumherum legen, also die Programmierphilosophie und das Verständnis, anstatt viel Quelltext zu schreiben.

Hier einmal die Skizze, wie ich einen solchen Kurs gestalten würde:

Aufruf

TODO

Einführung

Was ist Programmierung und was tut ein Programmierer?

+---------+        +---------------+         +----------+
|         |        |               |         |          |
| Aufgabe | -----> | Programmierer | ------> | Computer |
|         |        |               |         |          |
+---------+        +---------------+         +----------+
   |                    |     |                   |
   +----------+---------+     +-----------+-------+
              |                           |
              v                           v
    Problem-/Projektanalyse        Programmierung

Programmiersprachen

Zeitlicher Ablauf von Programmierung – Projektmanagement

Softwaretests

Aufgabe: TODO Erstellen von Softwaretests für ein existierendes Programm

Versionsverwaltung

Grundlagen der Computertechnik

Rechnerarchitektur

Aufgabe: lscpu angucken, Benchmarking von Speicherzugriffen

Alternativen

Ganzzahlen und Gleitkommazahlen

Arbeitsweise des Rechners und Organisation des Speichers

Theoretische Grundlagen

Zahlensysteme und Grundoperationen der CPU

(Effizienz von) Algorithmen und Datenstrukturen

Weiteres

Computergeschichte

Fehler

Definition

Fehlerbehandlung

Beispiele für Fehler

Maßnahmen zur Fehlerbehandlung