www.plusplanet.de
Schulinfos von F. Töns



20.03.2024

Lies
https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/
Benutze ggf. deepl zur Übersetzung von Abschnitten.

Wenn man auf www.deepai.org geht und Rechenaufgaben stellt, scheinen diese alle korrekt beantwortet zu werden.

Beantworte dann folgende Fragen:
Was ist ein LLM?
Kann ein LLM rechnen?



13.03.2024

Für die Abi-Leute
• Grenzen endlicher Automaten -> https://info-wsf.de/grenzen-endlicher-automaten/  und https://www.inf-schule.de/automaten-sprachen/sprachenundautomaten/spracherkennung/regulaeresprachen/exkurs_grenzen
• kontextfreie Sprache (nicht Teil des GK-Abiturs)
• Schichtenmodell -> https://www.inf-schule.de/rechnernetze/grundlagen/schichtenmodelle/schichtenmodell_internet und https://de.wikipedia.org/wiki/Internetprotokollfamilie#TCP/IP-Referenzmodell
• symmetrische(Caesar, Vigenere, OTP) und asymmetrische Verschlüsselungsverfahren  lies Einleitung https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem
• Client-Server-Netzwerk
• ht1: was ist eine Assoziation und Spezialisierung: -> https://sibiwiki.de/wiki/index.php?title=Klassen-_und_Implementationsdiagramm oder  :neu: https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/k100047.html
ht2: Aufgabe1c)    lösung nicht verstanden

private List<Team> filtereTeams(Team pTeam, int pGleicheBegegnungen) -> Erklärt Euch die Signatur gegenseitig.




07.03.2024

Für die Nicht-Abiturienten:
Skript zu künstlicher Intelligenz:
20190311_eigenes_Skript_v20240306.pdf
Bearbeite selbstständig die Übungen im Skript.

Für die Abi4-Leute
Für die mündlichen Abileute hier ein Update der gesammelten Abithemen
Abithemen (eigene Sammlung)
OBJEKTE UND KLASSEN:
- Implementationsdiagramme
- Abstrakte klassen
- generische Klassen

DATENSTRUKTUREN
- lineare und nichtlineare datenstrukturen
- Datenstrukturen: nicht-dynamische vs. dynamische Datenstrukturen
- konkrete Vor- und Nachteile und Anwendungsgebiete von Array, Stack, Queue, List, Tree, BinarySearchTree

ANALYSE UND IMPLEMENTIERUNG VON ALGORITHMEN:
- Struktogramme
- Rekursion
- Iterative Verfahren vs. rekursive Verfahren
- Sortierverfahren, Konzept "Teilen und Herrschen" 
- Konkrete Algorithmen beherrschen: BubbleSort, Suche in unsortiertem Array, Suche in sortiertem Array, Mittelwert aus Arraywerten berechnen etc.

DATENBANKEN:
- Attribute, Relationen, Enitäten, Entitätsmengen und Kardinalitäten
- Entity-Relationship-Diagramm
- Primär- und Fremdschlüssel
- Datenbankschema
- SQL lesen und schreiben können
- Normalisierung von Datenbanken: 1. bis 3. Normalform
- Anwendung der Klasse DatabaseConnector und QueryResult

AUTOMATEN:
- NEA und DEA
- reguläre Grammatiken und reguläre Sprachen
- Darstellung von Automaten als Graph ("Zustandsübergangsdiagramm") oder Tabelle
- Überführung von Automat in Grammatik und umgekehrt
- Überführung eines NEA in einen DEA
- Grenzen von regulären Sprachen

INFORMATIK UND GESELLSCHAFT
- Grundprinzipien des Datenschutzes

HARDWARE
- Von-Neumann-Architektur
- Maschinensprache

Unklar:
- Client-Server Strukturen
- Modularisierung
- Abstrakte klassen(spezialisieren, generalisieren) ??
- Polymorphie


Aufgabe:
In meinem geschützten Verzeichnis habe ich vier Abiklausuren der letzten Jahre abgelegt. Bearbeite die Klausur von 2023. Denke über jede Teilaufgabe mindestens 2 Minuten nach, ohne in die Musterlösung zu schauen. Siehe http://www.plusplanet.de/htaccessdir2/


• Notiere Dir unklare Formulierungen, Vokabeln etc. die noch geklärt werden müssen.
• Notiere Begriffe, die man auf Karteikarten schreiben könnte, nach denen man auswendig lernen könnte.



06.03.2024

Für die Abiturienten:
Überprüfe folgendes Dokument:
20160309_Vokabeln_Kategorien_editiert.pdf

Suche aus dem Informatiklehrplan all jene Begriffe heraus, die man zu obiger Zusammenstellung hinzufügen könnte (nur Begriffe, ohne Erklärung)
https://www.schulentwicklung.nrw.de/lehrplaene/lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/



29.02.2024

Thema 1: Informatik und Gesellschaft
1. Lies Abiaufgabe "Sportfest" Aufgabe e) https://www.standardsicherung.schulministerium.nrw.de/cms/zentralabitur-gost/faecher/fach.php?fach=15
2. Lies https://www.inf-schule.de/gesellschaft/datenschutz
3. Beschreibe, wo die Argumente der Abiaufgaben-Lösung auf inf-schule zu finden sind.
4. Recherchiere Beispiele aus der Praxis, wo grobe Datenschutzverstöße/Datensicherheitsverstöße begangen wurden.
(5. Untersuche www.plusplanet.de auf mögliche Verstöße gegen Datenschutz und Datensicherheit)
Abgabe der Aufgaben 3, 4 (und ggf. 5) über das Formular.


Deine Rückmeldung:


Thema 2: Künstliche Intelligenz
1. Lies im Artikel "Generativer vortrainierter Transformer" auf Wikipedia: Einleitungstext, Geschichte, Grundlagenmodell.
2. Bearbeite folgende Aufgaben:
Aufklappen
Der Hund und der kleine Hase.
Als der Hund und der Hase spazieren gingen, war der kleine Hase sehr langsam.
Der Hund war aber stolz. Also ließ der Hund den Hasen zurück.

Aus obigem Text lässt sich folgende Datenstruktur bauen:
----------------------------------------------------------
Der: Hund**
Hund: und**, war*, den*
und: der**
der: Hund**, kleine**, Hase*
kleine: Hase**
Hase: .*, spazieren*, sehr*
.: Als*, Der*, Also*
Als: der*
spazieren: gingen*
gingen: ,* 
,: war*
war: der*, aber*
sehr: *langsam
langsam: .*
aber: stolz*
stolz: .*
Also: ließ*
ließ: der*
den: Hasen*
Hasen: zurück*
zurück: .*


Prompt (Wir setzen nun den Satz fort indem wir jeweils immer
das Token mit der höchsten Häufigkeit (oder das alphabetisch 
zuerst kommende) benutzen):
Der

Daraufhin generieren wir:
Der Hund und der Hund und der Hund und der Hund ......

Offenbar ist es interessanter, wenn wir nicht immer das "erstbeste"
Token nehmen. Besser ist, man wählt das nächste Token mit einer 
bestimmten Wahrscheinlichkeit aus - je nachdem, welche Häufigkeit
das nächste Token hatte.
Prompt: "Der"
Mögliches Ergebnis:
Der Hund war der kleine Hase sehr langsam.
(eindeutig)(geringere W'keit)("aber" wäre auch möglich gewesen)

Aufgabe
--------
1. Erzeuge aus der Datenstruktur einen Text mit dem Anfangspromt
 "Also". Das Folgewort ist soll immer das längste von allen möglichen
sein (im Zweifelsfall alphabetisch sortieren).
2. Erzeuge selbst auf Papier eine Datenstruktur
 für folgenden Text:
Das kleine Entchen war traurig, weil das kleine Hündchen
das große Entchen gebissen hat. Das Hündchen aber war
zufrieden und ging heim.
3. Erzeuge aus der Datenstruktur einen Text mit dem Startprompt "Das" mit der Regel aus Aufgabe 1.







22.02.2024

JavaProjekt für Graphen:
https://www.jdoodle.com/ia/WG0

Aufgaben:
0. Starte das Projekt (auf execute klicken).
1. Unkommentiere die Zeile 63 und 64 in der "Haupt.java"-Datei und schreibe die Methode "depth-first-search" (Die Methode ist schon in Pseudocode geschrieben worden)
2. Weil ja mittlerweile jeder bei kniffligen Aufgaben eine KI befragt, habe ich das schon für Euch erledigt. Schau' dir den Code unten an und erkläre ihn. Beantworte dazu folgende Fragen:
   - Beurteile, ob es sich bei dem KI-Code um einen gerichteten oder ungerichteten Graphen handelt.
   - Beurteile, ob und wie die "id" aus "unserer" Klasse Vertex sich auch in der KI-Version findet.
   - Erkläre die KI-Version insgesamt.

Aufgabe, die ich https://deepai.org/chat gestellt habe (Es lohnt sich, die Antwort in Notepad++ zu betrachten, weil dort das Syntax-Highlighting funktioniert):
please write a depth-first-search method in java for a graph datastructure

Antwort:


Sure! Here's an example of a depth-first search method in Java for a graph data structure:

```java
import java.util.*;

public class Graph {
    private int V;
    private LinkedList<Integer> adj[];

    Graph(int v) {
        V = v;
        adj = new LinkedList[v];
        
        for (int i=0; i<v; ++i)
            adj[i] = new LinkedList();
    }

    void addEdge(int v, int w) {
        adj[v].add(w);
    }

    void DFSUtil(int v, boolean visited[]) {
        visited[v] = true;
        System.out.println(v + " ");

        Iterator<Integer> i = adj[v].listIterator();
        while (i.hasNext()) {
            int n = i.next();
            if (!visited[n])
                DFSUtil(n, visited);
        }
    }

    void DFS(int v) {
        boolean visited[] = new boolean[V];

        DFSUtil(v, visited);
    }

    public static void main(String args[]) {
        Graph graph = new Graph(4);

        graph.addEdge(0, 1);
        graph.addEdge(0, 2);
        graph.addEdge(1, 2);
        graph.addEdge(2, 0);
        graph.addEdge(2, 3);
        graph.addEdge(3, 3);

        System.out.println("Following is Depth First Traversal " +
                           "(starting from vertex 2)");
        
        graph.DFS(2);
    }
}
```

This code provides a simple implementation of a depth-first search method in Java for a graph data structure using adjacency lists. It creates a graph with 4 vertices and adds edges between them. It then performs a depth-first traversal starting from vertex 2 and prints the visited vertices.




26.11.2023
Klausurthemen zur kommenden Klausur

Erstes Thema: Maschinensprache/Assembler mit dem Johnny-Modellcomputer
• Die Funktionsweise der Maschine und alle Befehle kennen. Assemblercode muss gelesen (und deren Wirkung vorhergesagt) werden können. Eigener Code in Assembler muss erstellt werden können.
Links dazu:
Unterrichtsreihe dazu: https://www.inf-schule.de/rechner/johnny
Direkter Download des Projekts https://sourceforge.net/projects/johnnysimulator/
Die Version mit dem eingebauten "Pixelbildschirm" habe ich selbst compiliert. Diese Version müsst ihr von mir (oder von den Rechnern aus dem Informatikraum beziehen)

Zweites Thema: Kryptografie
Alle Themen des im Unterricht behandelten Skripts: 00000000_Kryptographie_Diffie_Hellmann_v20231101.pdf

Drittes Thema: Formale Sprachen (fast nur Wiederholung aus der letzten Klausur)
• Mit Hilfe folgender Anleitung ( http://www.plusplanet.de/miscrawhtml/20230905_04_Theoretische_Informatik.html ) reguläre Ausdrücke formulieren und Lesen können.
• Skript "Formale Sprachen" (siehe den ersten Verweis auf der bekannten Seite http://www.gierhardt.de/informatik/theorie/index.html
) bis Seite 35. Dabei haben wir einige Aufgaben daraus bearbeitet und gelöst. (So z.B. S10 Nr2 und 3, S16 Nr 2 und 3, S23 Nr4 und Nr7) Allerdings haben wir kleine Teile des Skripts praktisch nicht bearbeitet (So z.B. die das Java-Programms auf S6f oder die Einführung in endliche Automaten mit dem Marienkäfer Kara auf S20.)
• Implementation eines Automaten in Java oder JavaScript (es kommt mir nur auf Pseudocode und passende if-then-else-Anweisungen an) bzw. aus einem Quelltext das Automatendiagramm erstellen.
• Im Skript wird der Algorithmus "Umwandlung eines NEA in einen DEA" erklärt. Vielleicht etwas umständlicher als bei uns (Ein gutes Erklärvideo dazu ist auch https://www.youtube.com/watch?v=fwwmUuoOFnI wobei wir eine Tabelle verwendet haben, die im Video einfach "im Kopf" gemacht wird). Im Skript fehlt aber der Algorithmus zur "Minimierung von DEA". Diesen haben wir auch im Unterricht gehabt. (Ein gutes Erklärvideo dazu ist z.B. https://youtu.be/2FNTDtabQz4?t=402 )
•  :neu: Lesen und Konstruieren von Programmcode für eine Turingmaschine http://math.hws.edu/eck/js/turing-machine/TM.html. Bedeutung der "Busy Beaver"-Programme für die Informatik. Im bekannten Skript steht dazu etwas auf Seite 44 bis 49 (wobei ich mich bei der Schreibweise für Turingmaschinen an die Struktur aus der o.g. Webseite halte. Die Tabellen aus dem Skript sind ja leicht anders)




22.11.2023
Mögliche Aufgaben für die Erstellung von Microcode:
• NOP
• DEC ACCU (DEA)
• INC ACCU (INA)
• Verdopple den Inhalt des Akkus (Operand egal)
• Verdopple den Inhalt einer Speicherstelle
• LDI XXX (Load indirect (also Lade den Wert, der an der Speicherstelle steht, die in Speicherstelle XXX steht)
• STI XXX (Save, Analog zu LDI XXX)

Wie wird Assemblercode aus C Code generiert? Ein paar Beispiele
https://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions



02.11.2023
Überblick über das Fach: Was ist noch zu tun bis zum Abitur?
https://www.schulentwicklung.nrw.de/lehrplaene/lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/informatik-klp/index.html
und:
https://gbg-duesseldorf.lms.schulon.org/course/view.php?id=96&section=3#tabs-tree-start

Also ToDo:
• symmetrische und asymmetrische Verschlüsselung
• Maschinensprache
• (nicht-)dynamische, (nicht-)lineare Datenstrukturen (Abiturklassen wie BinaryTree, BinarySearchTree), Traversierung
• Vertiefung und Abiturvorbereitung

00000000_Kryptographie_Diffie_Hellmann_v20231101.pdf



24.10.2023

Beendigung des Themas "Formale Sprachen" und "Theoretische Informatik":
• Betrachtung von S14 // S35,36 // S41 S43 //
• TM und Busy Beaver
http://math.hws.edu/eck/js/turing-machine/TM.html
Hinweis: Die Raute ist das "leere Symbol"

Aufgabe 1:
Konstruiere eine TM, die an einem Wort aus beliebig vielen Nullen sowohl links als auch rechts eine Null anhängt.
Aufgabe 2:
Konstruiere eine TM, welche bei einer binären Zahl ganz rechts beginnt und ganz links ein parity-bit anhängt (1 für ungerade Anzahl an Einsen, 0 für gerade Anzahl an Einsen)
Aufgabe 3:
Konstruiere eine TM, welche mit möglichst wenigen Zuständen möglichst viele Einsen aufs Band schreibt UND(!) irgendwann anhält! Beginne mit 2 Zuständen. Es ist möglich damit 4 Einsen zu schreiben. (Nullen interessieren hier nicht.)






02.10.2023
Klausurthemen zur kommenden Klausur

Erstes Thema: Datenbanken
• SQL-Befehle formulieren und lesen können
• Konzept "kartesisches Produkt" für Table-Joins verstehen
• ER-Diagramme lesen und erstellen können
• Datenbankschema lesen und erstellen können
• Aus einem ER-Diagramm ein Datenbankschema erstellen können (und umgekehrt - was aber eher ungewöhnlich wäre)
•  /!\ Auf das Konzept "Normalform" werden wir in der Klausur verzichten. /!\

• Vokabeln: ER-Diagramm (Entity und Entitymenge, Attribut und Attributwert, Primärschlüssel, Relationship, Kardinalitäten (nämlich 1:1, 1:n und m:n)), Normalisierung, Transformationsregeln zur Überführung in ein relationales Datenbankschema (Tabelle, Attribut, Datensatz, Primärschlüssel, Fremdschlüssel)

Übungsmaterial
• Seiten bis 161 im Buch (Datei "db_buch.pdf unter dem Link http://www.plusplanet.de/htaccessdir2/  wobei ihr die Zugangsdaten über Moodle bekommen habt)
• Die SQL-Befehls-Übersichten (siehe sqlite_tutorial_create_insert.pdf und sqlite_tutorial_select.pdf unter dem o.g. Link)

Zum Üben von SQL-Befehlen eignet sich ggf. auch:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

Zweites Thema: Formale Sprachen
• Mit Hilfe folgender Anleitung ( http://www.plusplanet.de/miscrawhtml/20230905_04_Theoretische_Informatik.html ) reguläre Ausdrücke formulieren und Lesen können.
• Skript "Formale Sprachen" (siehe den ersten Verweis auf der bekannten Seite http://www.gierhardt.de/informatik/theorie/index.html
) bis Seite 35. Dabei haben wir einige Aufgaben daraus bearbeitet und gelöst. (So z.B. S10 Nr2 und 3, S16 Nr 2 und 3, S23 Nr4 und Nr7) Allerdings haben wir kleine Teile des Skripts praktisch nicht bearbeitet (So z.B. die das Java-Programms auf S6f oder die Einführung in endliche Automaten mit dem Marienkäfer Kara auf S20.)
• Implementation eines Automaten in Java oder JavaScript (es kommt mir nur auf Pseudocode und passende if-then-else-Anweisungen an) bzw. aus einem Quelltext das Automatendiagramm erstellen.
• Im Skript wird der Algorithmus "Umwandlung eines NEA in einen DEA" erklärt. Vielleicht etwas umständlicher als bei uns (Ein gutes Erklärvideo dazu ist auch https://www.youtube.com/watch?v=fwwmUuoOFnI wobei wir eine Tabelle verwendet haben, die im Video einfach "im Kopf" gemacht wird). Im Skript fehlt aber der Algorithmus zur "Minimierung von DEA". Diesen haben wir auch im Unterricht gehabt. (Ein gutes Erklärvideo dazu ist z.B. https://youtu.be/2FNTDtabQz4?t=402 )



17.10.2023
Bild "Informatik_Abi2016:formale_sprachen.png"



14.09.2023
Notizen zur Stunde am 14.09.2023

Ein schönes Tool, um Syntaxdiagramme zu erstellen:
https://jacquev6.github.io/DrawGrammar/

Hausaufgabe zur nächsten Sitzung: S16 Nr2 und Nr3

Außerdem haben wir uns in der Stunde folgende Grammatiken angeschaut:

Aufgabe 1 von Seite 16
Ziffer     = 0|1|2|...|9
Buchstabe  = a|b|c|...|z
Bezeichner = Buchstabe {Buchstabe | Ziffer}

Ist diese Sprache regulär?
Versuch der Formulierung einer regulären Grammatik:
N = {S,Z,E}
T = {a,b...z,0..9}
Startsymbol: S

S --> aZ | bZ | .... | zZ
Z --> aZ | bZ | .... | zZ | 0Z | 1Z ... 9Z |
      a  | b  | .....| z  | 0  | 1 .... 9
      
Also ist die Sprache regulär.

---------------
Beispiel einer ziemlich einfachen, langweiligen Sprache:

Alphabet = {1,2,3,4,5,6,7,8,9,0}
N = {A,B,C,D}
T = Alphabet
S = A

Regeln
A --> 2B
B --> 4C
C --> D
D --> 9

Erzeugung eines Wortes:
A --> 2B --> 24C --> 24D --> 249

Es lässt sich nur dieses eine Wort erzeugen!
---------------
Noch ein Beispiel einer ziemlich einfachen, langweiligen Sprache:

Alphabet = {1,2,3,4,5,6,7,8,9,0}
N = {A,B,C,D}
T = Alphabet
S = A

Regeln
A --> 2B
B --> 3C | 4C
C --> D
D --> 9

Erzeugung von Wörtern:
A --> 2B --> 23C --> 23D --> 239
A --> 2B --> 24C --> 24D --> 249
Diese Sprache besteht aus genau zwei Wörtern, nämlich 239 und 249.

---------------
Beispiel einer Sprache mit unendlich vielen Wörtern

Alphabet = {1,2,3,4,5,6,7,8,9,0}
N = {A,B,C,D}
T = Alphabet
S = A

Regeln
A --> 2B
B --> 3B | 4B | D
D --> 9

Hier nun drei unterschiedliche Erzeugungen von Wörtern der Sprache:
A --> 2B --> 2D --> 29
A --> 2B --> 23B --> 233B --> 233D --> 2339
A --> 2B --> 23B --> 234B --> 2343B --> 2343D --> 23439

Die Sprache besteht also aus den Worten die mit 2 beginnen und auf 9 enden. Außerdem dürfen dazwischen beliebig viele dreien und vieren in beliebiger Reihenfolge auftauchen.

---------------
Auf Seite 13 des Skripts finden wir:

2.2.2 Beispiel 2:
Eine Grammatik G = (N, T, S, P) ist wie folgt gegeben:
N = {s, A,B}
T = {0, 1}
S = S
Regeln:
S --> 1S | 0A
A --> 1S | 0B
B --> 1S | 0B | 0

Eine gültige Ableitung ist z. B.
S −> 1S −> 10A −> 100B −> 1000
S -> 1S -> 11S -> 110A -> 1100B -> 11000
S -> 0A -> 00B -> ...(mehrmals B anw.) -> 00000
11111111111000

Offenbar besteht diese Sprache aus jenen Binärzahlen, die mindestens drei Nullen am Ende besitzen.


05.09.2023
Fahrplan für heute:
1) HA: Aufgabe 3 zu den regulären Ausdrucken

2) Einführung in die Theoretische Informatik
Wir arbeiten in folgendem Skript (erster Link auf der verlinkten Seite):
http://www.gierhardt.de/informatik/theorie/index.html



05.09.2023
Wir beschäftigen uns heute mit "regulären Ausdrücken" in Notepad++:
www.plusplanet.de/miscrawhtml/20230905_04_Theoretische_Informatik.html

10.08.2023
Gib hier bitte deine Ergebnisse ein:

Deine Rückmeldung:


21.06.2023
Gib hier bitte deine Auswertung ein:

Deine Rückmeldung:



05.06.2023
Zwei Methoden zum komfortablen Datei-einlesen und ausgeben.

static String readFile(String fn){
    String erg = "";
    Scanner scanner = null;
    try {
        scanner = new Scanner( new File(fn) );
        String text = scanner.useDelimiter("\\A").next();
        erg = text;
    } catch (Exception e) {
        System.out.println(e);
    } finally {
        scanner.close(); // Put this call in a finally block
    }
    return erg;
}

static void writeFile(String fn, String content) {
    PrintWriter out = null;
    try {
        out = new PrintWriter(fn);
        out.println(content);
        out.close();
    } catch(Exception e) {
        System.out.println(e);
    } finally {
        out.close();
    }
}


Codeschnipsel zum bauen einer Methode, die Zeilenweise einliest

scanner.useDelimiter(";|\r?\n|\r"); // Zeilenumbruch
while (scanner.hasNext()  ) {
    String s1 = scanner.next();
}



17.05.2023
Bild "Informatik_Q2_Abi2024:20230516_ER_diag.png"


Deine Rückmeldung:



15.05.2023
Hausaufgabe: Fragen zur besprochenen Klausur. Wenn ihr keine Fragen habt, so habe ich welche!

Die Datenbank aus der Klausur einmal als Datenbankdatei:
abi22_restaurantgutachten.db

Und für den Direktimport nach https://sqliteonline.com/ zum Testen:
abi22_restaurantgutachten.db.sql

Eine Select-Anweisung mit einem Left outer Join, die Aufgabe b iii löst:

Select Restaurant.Name, Restaurant.PLZ, Restaurant.Ortsname, bewertet.RestaurantID
From Restaurant
Left Outer Join bewertet
on Restaurant.ID = bewertet.RestaurantID
where restaurantID is null;



15.05.2023
Fahrplan für heute:
• Randnotiz zu "prepared statements"
• Klausurthemen
• Alte Klausur (siehe http://www.plusplanet.de/htaccessdir2/)

Klausurthemen: "Datenbanken"
• SQL-Befehle formulieren und lesen können
• Konzept "kartesisches Produkt" für Table-Joins verstehen
• ER-Diagramme lesen und erstellen können
• Datenbankschema lesen und erstellen können
• Aus einem ER-Diagramm ein Datenbankschema erstellen können (und umgekehrt - was aber eher ungewöhnlich wäre)
• Konzept "SQL-Injection" verstehen.
• 1. bis 3. Normalform verstehen und anwenden können (Die Beispiele auf Wikipedia erklären das Konzept sehr gut:
https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)#Erste_Normalform_(1NF)
https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)#Zweite_Normalform_(2NF)
https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)#Dritte_Normalform_(3NF)
• Vokabeln: ER-Diagramm (Entity und Entitymenge, Attribut und Attributwert, Primärschlüssel, Relationship, Kardinalitäten (nämlich 1:1, 1:n und m:n)), Normalisierung, Transformationsregeln zur Überführung in ein relationales Datenbankschema (Tabelle, Attribut, Datensatz, Primärschlüssel, Fremdschlüssel)

Übungsmaterial
• Seiten bis 161 im Buch
• Altklausur
• Die SQL-Befehls-Übersichten

Zum Üben von SQL-Befehlen eignet sich ggf. auch:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all


03.05.2023
Zu heute hattet ihr die Hausaufgabe, ein ER-Diagramm für die Schul-DB zu entwickeln. Dies muss noch in ein Schema überführt werden. (Siehe S159 bis 161). Das verschieben wir auf später.

Für die heutige Stunde macht ihr folgendes: Eine Klinik möchte ihre Patienten und deren Diagnosen (es können mehrere pro Patient sein!) in einer Datenbank organisieren. Folgendes ER-Diagramm wurde dazu angelegt:
Bild "Informatik_Q2_Abi2024:20230502_ifq1_er_diagramm_patient.jpg"
• Überführe das Modell (Siehe S159 bis 161) in ein Schema.
• Schreibe für das Schema eine SQL-Anweisung, die aus der so konstruierten Datenbank alle Lungenentzündungen aus Düsseldorf ermittelt.

Bitte gib die Ergebnisse der Stunde hier ein:

Deine Rückmeldung:


26.04.2023

Konstruktion einer "Schuldatenbank", die alle möglichen Anwendungsfälle in der Schule abdecken soll.

Brainstorming Begriffe:
Pausenaufsicht, Aufsicht, Stundenplan, Ordnungsdienst, Vertretung und Vertretungsplan, Zeugnisse, Noten, Einkaufsliste Schulmaterialien, Moodle und Schulwebsite, Schüler, Lehrer, Lehrerverteilung auf die Klassen, Räume und Raumverteilung, Schulleitung, Hausmeister, Klausurplan


Attribute der Entitätsklasse "Schüler":
- Name
- Alter
- Adresse
- Jahrgangsstufe
- aktuelle Kurse

Attribute der Entitätsklasse "Lehrer":
- Name
- Alter
- Adresse
- unterrichtet welche Fächer?
- Funktionstelle/Rolle (z.B. Stufenkoordination)

Attribute der Entitätsklasse "Kurs":
- Name (IFG1 in Q1)
- unterrichtenden Lehrer
- Fach

Attribute der Entitätsklasse "Fach":
- Name
- Aufgabenfeld (AFI ...)
- Lehrplan

Attribute der Entitätsklasse "Raum":
- Name
- Fachgebundenheit
- Ausstattung






24.04.2023
Hausaufgabe zu Mittwoch dem 26.04.2023

Unter dem Link http://www.plusplanet.de/htaccessdir2/ findet ihr (neben Altlasten für Mathekurse) auch das PDF mit dem Namen db_buch.pdf . Die Zugangsdaten habt ihr über Moodle bekommen.

In diesem Buch lest Ihr bitte S153 bis 161 Mitte. Ich weiß, dass ihr dabei nicht alles im Detail verstehen könnt. Aber die wesentlichen Ideen und Themen solltet ihr schon vorbereiten.


24.04.2023
Auszug aus dem Kernlehrplan zum Thema "Datenbanken":

Die Schülerinnen und Schüler...
• ermitteln für anwendungsbezogene Problemstellungen Entitäten, zugehörige Attribute, Relationen und Kardinalitäten (M),
• stellen Entitäten mit ihren Attributen und die Beziehungen zwischen Entitäten mit Kardinalitäten in einem Entity-Relationship-Diagramm grafisch dar (D),
• modifizieren eine Datenbankmodellierung (M),
• modellieren zu einem Entity-Relationship-Diagramm ein relationales Datenbankschema (M),
• bestimmen Primär- und Sekundärschlüssel (M),
• analysieren und erläutern eine Datenbankmodellierung (A),
• erläutern die Eigenschaften normalisierter Datenbankschemata (A),
• überprüfen Datenbankschemata auf vorgegebene Normalisierungseigenschaften(D),
• überführen Datenbankschemata in die 1. bis 3. Normalform (M).



19.04.2023
Bitte gib deine Hausaufgaben zu heute hier ein:

Deine Rückmeldung:


20.03.2023



____________________________________________________________
| Tauschring                                                 |
|____________________________________________________________|
|____________________________________________________________|
| + gibAus()                                                 |
| + verleihe(sache:Item, von:String, an:String):boolean      |
| + verleihEnde(sache:Item, von:String, an:String):boolean   |
|____________________________________________________________|
   |
   | - mitglieder
   |
   ---> List   ------------------------
                ContentType:Teilnehmer
               ------------------------

_________________________
|Teilnehmer               |
|_________________________|
|+ name                   |
|_________________________|
|+ gibSachen():List<Item> |
|_________________________|
   |
   | - sachen  
   |
   ----> List   ------------------
                 ContentType:Item
                ------------------
___________________________
| Item                      |
|___________________________|
| + name:String             |
| + verliehenAn: String     |
|___________________________|
|___________________________|




17.03.2023
Notiz zur Klausur:
Wir haben mit den Klassen List, Stack und Queue ja bereits im Unterricht gearbeitet. Falls ihr am Wochenende noch zuhause damit arbeiten wollt, so könnt ihr die Klassen vom Schulministerium herunterladen:
https://www.schulentwicklung.nrw.de/lehrplaene/upload/klp_SII/if/MaterialZABI/2020-03-11_Implementationen_von_Klassen_fuer_das_Zentralabitur_ab_2018.zip
In dieser Zip-Datei sind alle Klassen drin (in Unterverzeichnissen organisiert), die man in der Oberstufe benötigt. Für unsere Klausur sind nur folgende Klassen aus der Zipdatei wichtig:

01 Datenstrukturklassen --> 01 linear --> List.java
01 Datenstrukturklassen --> 01 linear --> Queue.java
01 Datenstrukturklassen --> 01 linear --> Stack.java



14.03.2023
Rückmeldungen von Euch zur letzten Stunde:
Ich habe die Aufgabenstellungen alle verstanden. Jedoch hätte Probleme gehabt die Aufgaben zu lösen, wo man selbst eine Methode schreiben muss und bei den Letzten Aufgaben, in dem man argumentieren muss.
-In der Abiturprüfung 2021 spricht die Aufgabe b) von einem double-object als auch den typen double. Ich würde gerne wissen, wo der unterschied genau liegt, denn dass es einen Typen double gibt wusste ich bereits, nur verstehe ich nicht was es mit dem double-object auf sich hat.
-Die Vererbung hatten wir in der EF nicht bearbeitet, weshalb ich dort Probleme beim Programmier Verständnis habe. Trotzdessen verstehe ich das Prinzip, nur fehlt mir die Praxis dazu.
im Bezug auf die letzte Stunde würde ich sagen, dass mein Problem das übersetzen von Texten oder ähnlichem, zu einem vollständigem funktionierendem Programm ist.


11.03.2023
Klausurvorbereitung zur Klausur am 20.03.2023
Thema 1: Netzwerkarchitektur mit Filius
• Struktur der Netzwerke, die im Skript in den Aufgaben vorkommen: Aufgaben ab Seite 9 ff: Aufgabe 1 -12 (Aufgaben zu Email und P2P auslassen) und Aufgabe 21  (DHCP)
• Umrechnung von Binär- in Dezimalzahlen (und umgekehrt), um Aufgaben zum IPv4-Adresssystem (IP-Adresse, Subnetzmaske, Netzwerkteil und Geräteteil) bearbeiten zu können

Thema 2: Lineare Datenstrukturen: Arrays, Listen, Stacks und Queues
• Eigenschaften o.g. Datenstrukturen kennen und damit umgehen können
• In dem unten verlinkten Dokumenten folgende Aufgaben lösen können:

Dokumentation_ZA-IF_GK-LK_ab_2018_2021_12_22(1).pdf: Seite 4-9 passiv verstehen, Seite 18-21 passiv verstehen
IF21_x_G_HT_GG.pdf: HT1 a,b,c (nicht d),e
IF22_x_G_HT_GG.pdf: HT1 a,b,c (nicht d),(nicht e)

20230311_ifq1_dateien.zip
(Hinweis zum Kennwort: Jeweilige Position unserer Informatikstunden während der Woche. Beispiel: Wenn wir Dienstags in der 3. Stunde, Mittwochs in der 4. Stunde und Donnerstags in der 2. Stunde Informatik hätten, sähe das Kennwort folgendermaßen aus: di3mi4do2 )


06.03.2023
Hausaufgabe:
Link zum bekannten Skript: http://www.lernsoftware-filius.de/downloads/Einfuehrung_Filius_2015.pdf
Hier sollt ihr auf S29 Nr2 und Nr3 erledigen.


Unterrichtsreihe Netzwerktechnik
Hinweise zum Rechnen mit Zahlensystemen im GTR:
www.plusplanet.de/video/20230306_gtr_zahlensysteme_binaersystem.mp4
Training zu Aufgabenformaten für Filius:
Aufgabe 1: Gegeben ist die IP-Adresse 192.168.239.123 und die Subnetzmaske 255.255.224.0. Bestimme den Netzwerkteil und den Geräteteil der Adresse.
Aufgabe 2: Gegeben ist der Netzwerkteil 192.168.240.0 und der Geräteteil 0.0.1.233. Gib die zugehörige IP-Adresse an und alle dazu passenden Subnetzmasken an.
Aufgabe 3: Baue in Filius folgendes Netzwerk nach:

Aufgabe 4 (eher umfangreich): Installiere ein "Modem" in deinem Rechner und im Rechner deines Sitznachbarn und versucht von einem Rechner eine Webseite vom anderen Rechner zu laden.
Aufgabe 4 (alternativ): Konstruiere eine Netzwerk und benutze in der "Befehlsfenster"-Software den Befehl traceroute. Konstruiere das Netz so, dass traceroute mindestens drei hops ausgibt.


Lösungen zu Nr1 und Nr2:





27.02.2023
Unterrichtsreihe Netzwerktechnik
Kurzüberblick Lehrplan: Siehe Kategorie "Verschiedenes" in der Navigationsleiste links.

• Klärung des Begriffs HTTP

• Lies das Filius-Skript und experimentiere mit der Filius-Software. ( Bearbeite dann die Übungen ab Seite 9 ff: Aufgabe 1 -12 (Aufgaben zu Email und P2P auslassen) und Aufgabe 21  (DHCP))

• Bearbeite folgendes Blatt: 00000000_jgst13_200_IF13_Networking_Grundlagen_Luecke.pdf

Lies folgenden Artikel: https://de.wikipedia.org/wiki/Internetprotokollfamilie#TCP/IP-Referenzmodell

Kläre für dich folgende Fragen:
• Worin unterscheiden sich die vier Schichten der Internetprotokollfamilie (Anwendungsschicht, Transportschicht, Internetschicht, Netzzugangsschicht) und welche Aufgaben haben sie?
• Welche Dienste, die man in Filius simulieren kann (Webseiten, ping, dns...) arbeiten auf welchen der vier Schichten? (Dazu kann man sich in Filius den Datenaustausch eines Gerätes anschauen)
• Wie baut man einfache Netze (in Filius) auf?


13.02.2023
Begriffs-Sammlung zum Thema Netzwerke

IP-Adresse und TCP/IP: Wenn eine Netzwerkverbindung über TCP/IP (Transmission Control Protocol/Internet Protocol) aufgebaut werden soll, so benötigen wir i.d.R. einen Server. Dieser Server ist eine Software auf einem Rechner mit IP-Adresse (z.B. 192.168.1.2) der auf einem Port (z.B. 80 ) lauscht, also auf eingehende Verbindungsanfragen wartet. Ein Client ist eine Software, die sich zu der oben genannten Adresse verbinden kann.
Erst wenn die Verbindung aufgebaut ist, können Nachrichten ausgetauscht werden.

HTTP: Hypertext Transfer Protocol
Übertragung von Hyptertext/Webseiten-Daten über die Anwendungsschicht zur Darstellung im Webbrowser.
Vorgang: Client schickt eine HTTP-Anfrage an einen Server, der Server antwortet entsprechend.

DDOS         (HA. für Mo)
IP-Spoofing  (HA. für Flo)
Netzwerk
Server und Client: Im Zusammenhang mit Internetverbindungen gibt es immer ein Rechner, der eine Verbindung aufbauen will (i.d.R. der Client) und ein Rechner, der eine eingehende Verbindungsanfragen akzeptiert (i.d.R. der Server). Beispielsweise ist ein Webbrowser (wie Firefox) ein (HTTP-)Client und das "Webseitenauslieferungsprogramm" ein HTTP-Server (oder Webserver, oft die Software "Apache").
Port: Bei TCP/IP-Verbindungen wird nicht nur die Adresse des Quell- und Zielrechners benötigt. Auch wird ein sogenannter Port (auf beiden Seiten) benötigt. Ein Port ist eine Zahl zwischen 0 und 65535. Vereinfacht kann man sich Ports als "Türnummer" vorstellen. Beispielsweise wartet ein Webserver standardmäßig auf Port 80 auf eingehende Verbindungen. Oft schreibt man 192.168.0.22:80 wenn man sowohl IP-Adresse als auch Port zusammenfassen möchte.

IPv4 und IPv6
DNS
Proxies
(Datenbank)

00000000_jgst13_200_IF13_Networking_Grundlagen_Luecke.pdf


09.01.2023
Lieber Informatikkurs

Problem: Klausur ist schlecht ausgefallen. Man kann vermuten, dass auch die Nicht-Klausurschreiberinnen nicht alles gekonnt hätten. Offenbar kommen so einige Dinge, die wir im Unterricht behandeln, nicht so bei Euch an, wie ich mir das wünsche. Andererseits bin ich natürlich an den Lehrplan gebunden.

Was meines Erachtens bei Euch nur schlecht funktioniert:(*)
• Zu einem Problem ein eigenes Vorgehen entwerfen und programmieren (z.B. "ermittle die zweitgrößte Zahl aus einem Array" oder "ermittle, wie oft jedes Arrayelement im Array vorkommt")
• bestehenden Java-Programmcode lesen und verstehen.

Bitte bearbeitet die folgenden zwei Aufgaben über mein Rückmeldeformular:

Deine Rückmeldung:

Aufgabe 3:
Lies bzw. überfliege noch einmal mein Java-Einführungsskript. 20220114_TOE_Java_Einfuehrung.pdf Notiere alle Begriffe oder Konzepte, die deiner Meinung in einer "Vokabelliste für Informatik" erklärt werden müssten. Erstelle dazu eine einfache Textdatei und sortiere die Begriffe (nur ein Begriff pro Zeile!) danach, wie wichtig Du Sie findest (wichtigste Begriffe zuerst!).

Beispiel: Liste von Maxi Mustermann:
• Objekt
• if
• Reset
• Unterschied Array und Liste
• Referenz

Aufgabe 4 (ggf. Hausaufgabe)
Informiere Dich in der Wikipedia über die Datenstruktur "Stapelspeicher" und beantworte folgende Fragen:
a) Wie funktioniert ein Stapelspeicher?
b) Welche Operationen stellt die Datenstruktur zur Verfügung und was bewirken sie?

Informiere Dich in der Wikipedia über die Datenstruktur "Warteschlange (Datenstruktur)" und beantworte folgende Fragen:
c) Wie funktioniert ein Warteschlange?
d) Welche Operationen stellt die Datenstruktur zur Verfügung und was bewirken sie?



19.11.2022
Lieber IF-Q1-Kurs,

Für die letzte Stunde vor den Ferien bereitet ihr bitte Folgendes vor:
Informiere Dich in der Wikipedia über die Datenstruktur "Stapelspeicher" und beantworte folgende Fragen:
a) Wie funktioniert ein Stapelspeicher? b) Welche Operationen stellt die Datenstruktur zur Verfügung und was bewirken sie?
Informiere Dich in der Wikipedia über die Datenstruktur "Warteschlange (Datenstruktur)" und beantworte folgende Fragen:
c) Wie funktioniert ein Warteschlange? d) Welche Operationen stellt die Datenstruktur zur Verfügung und was bewirken sie?

Viel Erfolg und bis morgen
Frank Töns


22.11.2022
Hier die Version unseres StringListe-Wunschzettelprojektes nach der Stunde am Dienstag:
20221122_q1_stringliste_nach_u.zip


22.11.2022
Klausurthemen IFQ1

Klausurthemen Grundlagen
• Konzepte Objekt, Klasse, Eigenschaft, Methode verstehen
• einfache Algorithmen (z.B. Primzahltest, Mittelwert oder Spannweite eines Arrays, größtes Element eines Arrays, Sortieren mit Bubble-Sort), selbst schreiben und "auf Papier" ausführen können.
• Zu Programmen bzw. Objektbeziehungen ein Diagramm des Speicherlayouts zeichnen ("Wölkchen") und umgekehrt.

Neue Themen:
• Komplexität von Algorithmen
• Sortierverfahren: "in place" und "stabil"
• Prinzip "Rekursion" verstehen. Z.B. Fibonaccizahlen oder Fakultät selbst schreiben können.
• Idee hinter "rekursivem Array-Reverse" verstehen.
• Mergesort: Verfahren verstehen und kleinere Teile davon selbstständig ergänzen können oder Fehler finden können
• Sowohl beim "rekursivem Array-Reverse" als auch bei "Mergesort" wird intensiv mit Arrays und trickreicher Indexmanipulation gearbeitet. Da sollte man einen Überblick behalten.
• Konzept "verkettete Liste" am Beispiel unserer Klasse StringListe verstehen. Einzelne Methoden (wie z.B. insertAfterCurrent) selbst schreiben können.



21.11.2022
StringListe nach dem Unterricht am Montag:
20221121_q1_stringliste_nach_u.zip

15.11.2022
Hier die gesamte Klasse, die Mergesort enthält und testet.



24.10.2022
Hausaufgabe und "EVA zu Hause":
Beantworte folgende Fragen:
- was bedeutet "in place" und "stabil" bei Sortierverfahren?
- wie arbeiten BubbleSort und Mergesort (in place? stabil?)
- Verschaffe dir einen Überblick über die Landau-Symbole (Stichwort Komplexität)

Grober Pseudocode für rekursiv implementierten Mergesort (mit angedeutetem Aufruf bei 8 Elementen):

mergesort(array, von 1 , bis 8) {
    falls array teilbar
        aufruf mergesort(array, 5 bis 8)
        aufruf mergesort(array, 1 bis 4)
    ansonsten
        return

    // zusammenführungsphase:
    betrachte "obere" Elemente der Teilstapel
    if(linkes Element < rechtes Element) {
        linkes Element in neues Array einfügen
    } else {
        linkes Element in neues Array einfügen
    }
    Sonderfall: linke oder rechte Liste leer:
        Rest der rechten oder linken Liste übernehmen
}


18.10.2022

Zum Begriff "Komplexität von Algorithmen"
20221016_komplexitaetsueberblick.pdf

Komplexitätsbetrachtungen zum Problem "Spannweite"





27.09.2022
Link zu den Security-Rätseln: https://0xf.at/
Gebt eure Ergebnisse über folgendes Rückmeldeformular ein:

Deine Lösungen:


20.09.2022
Klausurthemen:
• Konzepte Objekt, Klasse, Eigenschaft, Methode verstehen
• einfache Algorithmen (z.B. Primzahltest, Mittelwert oder Spannweite eines Arrays, größtes Element eines Arrays, Sortieren mit Bubble-Sort), selbst schreiben und "auf Papier" ausführen können.
• Zu Programmen bzw. Objektbeziehungen ein Diagramm des Speicherlayouts zeichnen ("Wölkchen") und umgekehrt. (siehe Aufgabe unten)

Decke jeweils eines der beiden verdeckten Elemente auf und generiere daraus das andere:


Aufgabe: Versuche vorherzusagen, welche Ausgabe die folgende (ziemlich sinnlose) Funktion erzeugt. Erst das Ergebnis notieren, dann ausführen! Sage das Ergebnis auch für andere Wörter als "hey" voraus!


19.09.2022
Überfliege das Grundlagenskript und notiere Dinge, die Du nicht verstehst:
20220114_TOE_Java_Einfuehrung.pdf

Hier ein Beispiel für einen Primzahltest




12.09.2022

Denkanstöße für heute:


05.09.2022
Speicherlayout, Referenztypen und atomare Datentypen:
20171012_Referenzen_Arrays_Speicherlayout.pdf

Denkanstöße für heute:


29.08.2022
Miniprojekt für die nächsten Stunden


15.08.2022

• Begrüßung, Leistungsbewertung, Themen im Schuljahr
• Welche Rechner und welche Programme habt ihr benutzt?
• Wer programmiert hobbymäßig?

Programmgerüst zum 15.08.2022
Wir kümmern uns zunächst um ein paar Informatikprobleme, die immer wieder auftauchen. Füge den folgenden Quelltext in ein neues Projekt ein und schreibe die angedeuteten Methoden.



Bitte nutzt folgendes Rückmeldeformular:

Deine Lösungen:



25.04.2023
"Geparkte" Information zum Unterricht


Begriffe aus dem db_buch.pdf
- Vermeidung von Redundanzen
- Konsistenz und Integrität
- Transaktionen
- Objekte in DBMS (Formular, Abfrage, Bericht zunächst für uns nicht wichtig)
- Entity: "Gerresheim" oder "Android"
- Entitymenge/Entitätsmenge: Bei unserer Umfrage: Teilnahme, Stadteil, OS
- Attribute der Entitymenge OS sind z.B. Name, aber ggf. auch Version
- Primärschlüssel ist eine Teilmenge der Attribute, die die Entity eindeutig identifiziert
- Relationship: Beziehung zwischen Entitymengen
- Relationships haben Kardinalitäten: 1:1 oder 1:n oder m:n
- ER-Modell ist ein Diagramm, aus dem die Entitymengen, Attribute, Relationships und deren Kardinalitäten ersichtlich sind
- Normalisierung, um die 1. , 2. und 3. Normalform zu erzeugen
- Normalformen: Gute Beispiele bei https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)#Zweite_Normalform_(2NF)
- 1. Normalform: alle Attribute sind atomar
- 2. Normalform: (nur bei mehreren Schlüsselattributen): Ist das Geburtsjahr des Interpreten nicht von der CDID abhängig
- 3. Normalform: (Zur Vermeidung von Redundanz): Geburtsjahr eines Interpreten hängt nur indirekt von der CDID ab.
- Transformation in ein relationales Modell / Datenbankschema
- Begriffe in einem relationalen Modell: Eine "Tabelle" ist 2D-Anordnung von Elementen, deren Spalten "Attribute" oder "Felder" heißen. Eine Zeile ist ein "Datensatz" (oder Tupel). Der Primärschlüssel ist eine Teilmenge der Attribute und identifiziert einen Datensatz. Fremdschlüssel sind Attributmengen, die in anderen Tabellen Primärschlüssel sind.
- Transformationsregeln: Entitymengen->Tabelle, 1:1-Relationen werden in eine Tabelle zusammengelegt, 1:n-Relationen werden in zwei Tabellen (mit Fremdschlüssel) aufgeteilt, m:n-Relationen werden mit einer Hilfstabelle abgebildet.

Sammlung von Begriffen aus der Schullandschaft (Ziel: eine umfassende Datenbank für alle schulischen Anwendungsfälle)