Programmierung für Clinical Data Management

Ich glaube, ich darf mich Dozent nennen, denn ich habe heute den ersten von zehn ganztägigen Workshops zum Thema Programmierung im Rahmen der Weiterbildung Clinical Data Management gegeben. Und das hat mal richtig Spaß gemacht!

Die Weiterbildung ist Teil des Angebotes der mibeg Institute, deren Mitarbeiterinnen mir einen wunderbaren Start bereitet haben: Begehung der Räumlichkeiten vor Ort, VPN, Remote-Zugriff auf ihre PCs, Online-Lernplattform und Videotelefonie via BigBlueButton. Alles da!

Ich darf vier aktive und begabte Teilnehmerinnen in PHP, JavaScript und etwas Objektorientierter Programmierung unterrichten; und zwar ohne endlose Präsentationen und theoretisches Blabla, sondern interaktiv und mit viel Zeit für eigene Experimente. So war zumindest mein Plan und ich bin überglücklich, dass einerseits die Teilnehmerinnen dazu bereit waren und andererseits das von mir ausgewählte Tooling super funktioniert hat.

Eigentlich bin ich seit der zunehmenden Enshittification durch Microsoft nicht mehr viel auf GitHub unterwegs, aber ich muss gestehen, dass GitHub Codespaces genau das Feature ist, das ich gebraucht habe: Konfigurierbare Cloud-Entwicklungsumgebungen mit VS Code im Browser und 120 kostenlosen Nutzungsstunden pro Monat. Ich habe den PHP Codespace aus Lyubomir Filipovs Blog-Post Using GitHub Codespaces for PHP Tutoring benutzt und alles hat auf Anhieb funktioniert: GitHub Repository forken, Codespace auf dem main Branch starten, PHP-Datei anlegen und im Terminal des im Browser laufenden VS Code Editors ausführen. Die Interaktions-Progression innerhalb der ersten 90 Minuten meines Workshops lief dann ungefähr so ab:

  1. Ich teile meinen Bildschirm via BigBlueButton und demonstriere einige PHP-Grundlagen im Browser.
  2. Dank des Live Share Features von VS Code kann ich die Teilnehmerinnen per Link (und ohne dass sie einen GitHub-Account brauchen) zur Kollaboration in meiner VS Code Instanz im Browser einladen. So können sie ihre ersten eigenen Zeilen Code schreiben.
  3. Die Teilnehmerinnen legen sich ein eigenes GitHub-Konto an, forken mein vorbereitetes PHP Codespace Repository, starten ihren eigenen Codespace und wir können so richtig loslegen.

Nach wenigen Minuten hatten alle ihre eigene Entwicklungsumgebung eingerichtet und arbeiteten an den ersten Übungen. Wenn du ein ähnliches Angebot kennst, das nicht so schwer auf dem Karma-Konto lastet, wie die Lösung von GitHub… immer her damit!

Im Folgenden dokumentiere ich stichpunktartig den durchgenommenen Stoff.

Session 01: Grundlagen von PHP

Datentypen

Strings (Zeichenketten) und von PHP mitgelieferte Funktionen

Übungen

  1. Schreiben Sie zu einer Variable $name = "…"; einen Ausdruck, der zu <Name> lernt gerade PHP! auswertet.
  2. Schreiben Sie einen Ausdruck, der für einen String $word prüft, ob es sich dabei um ein Palindrom handelt.

Konditionale

Eigene Funktionen schreiben

function which_is_smaller(int $n1, int $n2): int {
  if ($n1 < $n2) {
    return $n1;
  }
  else {
    return $n2;
  }
}
Quelle

Übungen

  1. Setzen Sie die Palindrom-Prüfung von oben als Funktion um.
  2. Erweitern Sie die Funktion which_is_smaller von oben derart, dass Argumente sowohl vom Typ int als auch float akzeptiert werden und der Rückgabewert bei Gleichheit der Argumente NULL ist.
  3. Implementieren Sie eine Funktion is_even_or_odd(int $num): string, die abhängig davon, ob $num gerade oder ungerade ist, even oder odd zurückgibt.

Schleifen

Übung

  1. Implementieren Sie eine Funktion make_tannenbaum(…), die ASCII-Tannenbäume ausgeben kann (siehe unten). Wählen Sie ansprechende Parameter, mindestens aber Breite des Baumes, Höhe des Stammes und ASCII-Zeichen für den Baum.
...#...
..###..
.#####.
#######
...#...
...#...