Präsentationskompetenzen1. Tag: Einstieg (ohne NAO)

1. Tag: Einstieg (8 Stunden) — ohne NAO

Vorstellung (ca. 45 Minuten)

Persönliche Vorstellung

  • Prof. am SZI der DHBW Lörrach seit 2013
  • davor 15 Jahre in unterschiedlichen Bereichen der Software-Entwicklung gearbeitet
  • Entwicklungsleiter der DHWB Lörrach Campus App (und auch der Campus Rallye App)
  • Themen: Programmierung, Webentwicklung, mobile Apps, …
  • Digitale Lehre: Online/Präsenz, Didaktik, …

Anekdote: Programmieren ist heute viel zugänglicher als zu meiner Studienzeit. Mitte der 90er Jahre gab es nur wenige Webseiten und kaum jemand besaß einen Computer…

Vorstellung des Kurses

  • Wie lautet Ihr Name?
  • In welchem Unternehmen sind Sie angestellt?
  • Was sind Ihre Erfahrungen mit Programmierung?
  • Was haben Sie in Informatik in der Schule behandelt?

⟶ Strichliste zu den Fragen am Whiteboard (Vorkenntnisse, Informatik in der Schule, Programmiersprachen)

Ziele dieser Veranstaltung

⟶ zu den Folien wechseln…

💡

Todo für Dozent — Folien hier einbetten?

🗓️

Präsentationstermine und Ablauf auf dem Whiteboard skizzieren.

Kurskalender am Projektor zeigen.

💡

Sollten Studierende kein Laptop oder Tablet haben, dann könnten sie für heute einen Laptop aus Raum A335 erhalten.

MakeCode Arcade (bis zu 45 Minuten)

Tutorial „Chase the Pizza“ parallel auf iPad oder zweitem Laptop durchklicken und vorführen zum Mitmachen, siehe https://arcade.makecode.com

→ Sprache in MakeCode Arcade auf Deutsch umstellen, damit Studies leichter folgen können!

Studierende gehen zu makecode.com und starten Arcade

Icons aus Galerie auswählen, Hardware, Konsole Vollbild, Am Ende auf Smartphone laden (Tutorial fertig), andere Tipps/Tricks?

Aufgabe: Geschwindigkeit ändern, Countdown ändern, stay in screen, second food with higher score, eigene Anpassungen?

MakeCode Arcade (bis zu 45 Minuten)

p5.js (Teil 1: Einführung, ca. 35 Minuten)

💡

Spickzettel (cheat sheet) für p5.js:

https://bmoren.github.io/p5js-cheat-sheet/de.html

  • p5.js-Editor vorstellen: https://editor.p5js.org
  • Play, Stop, Auto Refresh, Edit -> Tidy Code usw.
  • setup, draw, console.log zeigen
  • Koordinationsystem beginnt links oben, Referenz zeigen

Einfaches Beispiel:

function setup() {
  createCanvas(400, 400);
  rectMode(CENTER); // Rechtecke ausgehend von ihrer Mitte zeichnen
  noFill(); // Rechtecke nicht farbig ausfüllen
  noLoop(); // Programm nur einmal ausführen
}
 
function draw() {
  background('white');  // Farben: RGB, hexadezimale Werte, … möglich
  
  square(100, 120, 50); // kleines Quadrat oben links
  square(width/2, height/2, 200); // größeres Quadrat unten rechts
}

Generatives oder Creative Coding:

Vera Molnar

In Anlehnung an „Untitled 1974 (Squares)“ von Vera Molnár (*1924, Pionierin der Computerkunst).

Zwischenschritt 1 (nur draw, ohne setup):

function draw() {
  background("white");
 
  // 3 Quadrate mit aufsteigender Größe
  square(width / 2, height / 2, 20);
 
  square(width / 2, height / 2, 40);
 
  square(width / 2, height / 2, 60);
}

Zwischenschritt 2 (nur draw, ohne setup):

function draw() {
  background("white");
 
  // 3 paar Quadrate (aufsteigend groß, „zufälliger“ Versatz)
  let offsetX = 20;
  let offsetY = -10;
  let length = 20;
  square(width / 2 + offsetX, height / 2 + offsetY, length);
 
  offsetX = -12;
  offsetY = 23;
  length = 40;
  square(width / 2 + offsetX, height / 2 + offsetY, length);
 
  offsetX = 5;
  offsetY = -19;
  length = 60;
  square(width / 2 + offsetX, height / 2 + offsetY, length);
}

Lösung mit for-Schleife und random-Werten für offset:

// Eine Lösung für "Untitled 1974 (Squares)" von Vera Molnar
function setup() {
  createCanvas(400, 400);
  rectMode(CENTER);
  noLoop();
  noFill();
}
  
function draw() {
  background('white'); // Farben: RGB, hexadezimale Werte, … möglich
  
  for(let length = 10; length < 300; length += 10) {
    let offsetX = random(-30, 30);
    let offsetY = random(-30, 30);
  
    square(width/2 + offsetX, height/2 + offsetY, length);
  }
}

Aufgaben zum Experimentieren

⟶ Mit circle() Kreise statt Quadrate erstellen

Mit stroke() lässt sich die Linienfarbe festlegen (siehe https://p5js.org/reference/#/p5/stroke)

⟶ Farbe der Linien (zufällig) ändern, siehe Code-Beispiel:

let colors = ['red','white','blue','green','yellow','orange','black'];
 
// in der Schleife:
stroke(random(colors));
💡

Hier könnten wir auf ChatGPT als „KI-Tutor“ hinweisen:

Kenntnisstand abfragen:

  • Wer hat alles einen Zugang zu ChatGPT?
  • Wer von Ihnen nutzt ChatGPT regelmäßig?

In https://chatgpt.com ohne Login zeigen:

  • Erkläre mir Funktionen in p5.js
  • Was bewirkt dieser Code in p5.js:
    function setup() {
      createCanvas(400, 400);
      rectMode(CENTER);
      noLoop();
      noFill();
    }
  • Wie kann ich eine Ellipse in p5.js zeichnen? Erkläre mir die Details.

PAUSE

Gemeinsam arbeiten wir uns durch dieses Mini-Tutorial, welches ein einfaches Memory-Spiel mit p5.js schrittweise entwickelt.

Das fertig gestellte Memory-Spiel kann kurz im p5.js-Editor gezeigt werden: https://editor.p5js.org/behrends/sketches/gpnqu4ATk

👨‍💻

Je nach Situation oder Stimmung kann das Tutorial auch von den Studies selbstständig mit abschließender Beschprechung durchgearbeitet werden.

💡

Hinweis: Das Memory-Spiel wurde mit Hilfe von GitHub Copilot (basiert auf GPT) entwickelt.

💡

Bei Bedarf weitere passende Funktionalitäten in ChatGPT (Plus) zeigen.

Anwendungsfälle bzw. Situationen:

Konzepte für Leute mit wenig Erfahrung erklären lassen

  • Erkläre mir dieses Konzept in JavaScript: …
  • Erkläre mir diesen Code in p5.js: …

Code für Leute mit wenig Erfahrung erklären lassen

Ich habe noch keine Programmiererfahrungen. Erkläre mir diesen Code:…

Code aus Sicht anderer Sprachen verstehen

Ich habe ein wenig Erfahrung mit Java aber nicht in JavaScript. Erkläre mir diesen Code:…

p5.js (Teil 1: Einführung, ca. 35 Minuten)

Aufgaben zum Experimentieren

💡

Vorführung von ChatGPT Plus:

  • 4o: Fragen beantworten, Bilder erkennen und erzeugen, Daten analysieren
      Generiere eine Tabelle der 10 größten Länder mit 5 Spalten, die passende Daten 
      enthalten (Fläche, Einwohner, Hauptstadt, usw.).
      Erstelle daraus ein Balkendiagramm.
      Gib mir den Python-Code dazu.   
  • → Wir führen den Python-Code in Replit aus
  • Zeige o1-preview (Reasoning), Canvas oder was sonst noch neu oder exklusiv in ChatGPT Plus verfügbar ist.
‼️

ACHTUNG: Die Ergebnisse von KI-Tools sollten IMMER kritisch hinterfragt werden!

p5.js (Teil 2: Memory-Spiel, ca. 55 Minuten)

Vorstellung der Funktionsweise von GitHub Copilot in VS Code.

Vorbereitung Studierende:

Nun beginnen wir, das Spiel „Vier Gewinnt“ in p5.js mit Hilfe von GitHub Copilot zu entwickeln. Das fertige Spiel kann hier kurz gezeigt werden: https://editor.p5js.org/behrends/sketches/a3POvmyKN

Interaktive Demo von GitHub Copilot:

  • Die meisten Schritte werden in Copilot Chat ausgeführt.
  • Vorgehensweise für Spielentwicklung mit Copilot festlegen
  • Schrittweise durchgehen.
💡

Mit einer Vorgehensweise wie im Word-Dokument unter /assets/VierGewinntCopilot.docx dokumentiert, sollte es möglich sein, in Copilot das Spiel „Vier Gewinnt“ zu entwickeln.

Tipps zur Benutzung von Copilot:

  • Copilot Chat kann über „Activity Bar“ (linke Leiste) geöffnet werden.
  • Fenster von Copilot Chat in Editor öffnen (mit …-Menu oben und dann „Open Chat in Editor“). Danach nach unten oder neben den Code verschieben.
  • Copilot Chat beantwortet nur Fragen zur Programmierung. Manchmal müssen die Fragen mit direktem Bezug zum Code oder zur Programmierung umformuliert werden.
  • Anhand von Kommentaren und Autovervollständigung geniert Copilot passenden Code („ghost code“).
  • Copilot reagiert auf einige Tastenkombinationen:
    • TAB → Codevorschlag vervollständigen
    • Alt-] → durch alternative Vorschläge blättern
    • Hover → durch alternative Vorschläge blättern
    • CTRL-Enter → Alternativen anzeigen (neuer Bereich rechts wird geöffnet)
  • Rechtsklick im Code und dann Copilot-Menu wählen (inline chat, explain, fix, …)
  • jedes Jahr neue Features checken, Studierende fragen und ggf. aktualisieren
  • Copilot bei Bedarf ausschalten durch Klick auf das Copilot-Icon unten in der Status-Bar (wichtig für das Lernen der Programmierung im 1. Semester!)
Die Benutzung von Copilot erfordert Übung. Ständig kommen neue Features hinzu. Die offizielle Dokumentation oder YouTube-Videos zeigen weitere Möglichkeiten.
‼️

Die Studierenden werden ausdrücklich darauf hingewiesen, dass sie Copilot nur auf eigene Gefahr und Verantwortung nutzen sollen (Datenschutz, Urheberrecht, usw. im Unternehmen beachten).

Wer im 1. Semester Programmieren von Anfang an lernt, sollte Copilot deaktivieren und erst dann nutzen, wenn die Grundlagen beherrscht werden (Variablen, Schleifen, Funktionen, usw.).

GitHub Copilot kostenlos für Studierende beantragen:

💡

Interessant ist auch replit.com mit AI.

Dies kann auch kurz mit p5.js oder Java/Python gezeigt werden (AI als Chat und zur Code-Generierung).

MITTAGSPAUSE (ca. 45 Minuten)

KI-Tools allgemein (ca. 30 Minuten?)

crisp-game-lib ist eine JavaScript-Bibliothek für die Programmierung klassischer Arcade-Spiele, die im Browser ausgeführt werden. Oftmals sind diese Spiele so minimalistisch, das sie nur einen Button benötigen, d.h. nur mit einer Taste, Mausklick oder Antippen des Bildschirms gespielt werden können. Beispiele:

Gemeinsam entwickeln wir nun ein Spiel namens pin climb mit crisp-game-lib. Es kann hier gespielt werden: https://abagames.github.io/crisp-game-lib-11-games/?pinclimb

Für dieses Spiel werden wir nur ca. 60 Zeilen JavaScript-Code benötigen.

Mit dem folgenden Tutorial geht es nun los: https://behrends.github.io/mini-tutorials/pinclimb/

💡

Alle öffnen das Codepen-Template im Browser.

Codepen kurz erklären: HTML, CSS, JavaScript. Wesentlich ist der JavaScript-Teil.

Nützliche Links zu crisp-game-lib:

GitHub Copilot (bis zu 90 Minuten)

💡

In der Vorbereitung interessante KI-Tool ausprobieren und vorstellen, siehe auch die Liste auf der folgenden Seite.

Weitere Tools (jedes Jahr checken):

💡

Liste der Themen (nächste Seite) kurz zeigen und in Moodle veröffentlichen?