Lehrzeit

Schule & Informatik

Kategorie: Informatik (Seite 2 von 55)

Was bislang passiert ist

In den vergangenen Wochen war es hier ein wenig ruhiger: Schule & Privatleben waren ein wenig turbulenter, wobei hier zweiteres nichts zur Sache tut.

Informatikabitur 2017

Das diesjährige, schriftliche Informatikabitur verlief problemlos. Die gestellten Aufgaben war recht unterschiedlich im Aufbau, so dass eine Auswahl leicht fiel. Gefragt wurden alle Standarddiagramme (Klassendiagramm, Objektdiagramm, Sequenzdiagramm, Zustandsdiagramm), wobei ich mir gewünscht hätte, dass die Aufgabenformulierung hie und da noch eindeutiger hätte sein können.

So unterscheide ich zwischen „Klassendiagrammen“, in denen nur die Klassennamen und Kardinalitäten vorkommen, das Kompositum-Entwurfsmuster stelle ich immer so dar und auch in der Angabe war es so gezeichnet. Ein „erweitertes Klassendiagramm“ umfasst dann auch Attribute und Methoden mit Datentypen und Sichtbarkeiten (public, private, protected). Meist wird eine Mischung angegeben (Aufgabe 2), was ich nicht für glücklich halte. Auch die Tatsache, dass man sich nicht konsequent an UML hält, finde ich fragwürdig. Wofür gibt es denn einen Standard, wenn man ihn nicht benutzt? Das hat dann auch in meinen Augen nichts mit didaktischer Reduktion zu tun.

P-Seminar

Mein diesjähriges P-Seminar befindet sich auf einem, wie ich finde, spannenden Weg. Vom ursprünglichen Ziel „Kurzfilme, die Informatik-Themen“ problematisieren, ist nur wenig übrig geblieben. Dafür wurde die Ausstellung des örtlichen Energie-Solar-Vereins digitalisiert. Diese benutzen immer noch Plakate in den Ausstellungen, was nun nicht mehr nötig ist. Ein Teil der Schüler haben hierfür die Inhalte der Plakate als Website umgesetzt, welche nun mit Hilfe eines Tablets (unten) und rollbaren Fernsehers interaktiv präsentiert werden kann.

Zum Glück wollten aber nicht alle programmieren, so dass noch einige tolle Kurzfilme rund ums Thema alternative Energie entstanden sind bzw. entstehen. Ich hoffe, dass ich hier einige zeigen kann, denn ich finde es wirklich großartig, was die Schüler geleistet haben.

Das das P-Seminar im Übrigen eine andere Wendung nahm, finde ich im Nachhinein nicht so schlimm. In meinen Augen sollte es im P-Seminar vor allem darum gehen, dass die Schüler sich einfach mal frei, aber dennoch zielgerichtet ausprobieren können. Denn nur so können sie sich selbst besser kennenlernen und einen sinnvollen nächsten Schritt bei ihrer Berufswahl treffen.

Die kommenden P-Seminare

Im nächsten Schuljahr werde ich meine 3D-Drucker wieder mehr aktivieren und Quadrokopter mit den Schülern bauen. Das wird nicht ganz billig (ca. 150 Euro pro Modell), aber dafür gehört das Modell dann auch den Schülern. Allerdings werden wir gehörig auf die rechtliche Seite aufpassen müssen, hat sich da doch, dank einiger Spinner, die Lage doch sehr verschärft. Einfach so rumfliegen ist nicht mehr. Dennoch hoffe ich, dass wir tolle Flugrennen haben werden oder interessante Flugaufnahmen der Schule.

Beim Lesen meiner diversen abonnierten Blogs stieß ich auf den Hinweis, dass der Faust nun auch in Handschrift vorliegt. Hierzu haben 229 Personen jeweils einen Teil des Werks abgeschrieben, das Ganze wurde gebunden und kann nun beim X47-Verlag gekauft werden.Der Verlag bietet für den ein oder anderen Leser vielleicht noch weitere interessante Werke. Einfach mal vorbeischauen.

Das Konzept des Abschreibens erinnerte mich an irgendeine Religionslehrerin oder -lehrer, der als „Zusatzaufgabe bei Unterrichtsstörungen“ in seinem / ihren Unterricht immer eine Seite der Bibel abschreiben ließ. Am Ende seiner Schullaufbahn hatte er oder sie eine komplett handschriftliche Bibel. Eine schöne Idee. Schade, dass es so etwas nicht auch in Informatik gibt: DAS eine grundlegende Werk, das man kennen sollte. Mir würden zwar einige in Frage kommenden Werke einfallen, aber keines spielt im Unterrichtsgeschehen die eine Rolle, wie sie die Bibel oder ein Faust spielt.

Graphologie hat mich auch schon immer interessiert. Und bei der Menge an gefundene Handschriften in dem Buch, hätte man geügend Übungsmaterial. Schade, dass die Graphologie nicht für ein ganzes P-Seminar reicht im Fach Informatik reicht…. oder …. einen Roboter bauen, der handschriftlich schreibt?

Die andere Seite

Und dann ist da noch die andere Seite des Unterrichts, nämlich die des Vaters. Mein ältester Sohn ist selbst in der 11. Klasse und es für mich spannend zu erleben, wie Kollegen einer anderen Schule Unterricht P-Seminare gestalten:

  • Wieso muss man auf drei Berufsinformationsmessen gehen, wenn man weiß, was man mal studieren will?
  • Wieso muss jetzt mit Gewalt eine Sponsor gesucht werden, wenn es keinen gibt, den das Thema das P-Seminars interessiert?
  • Wieso müssen die Schüler alles in der Schule machen, wenn es manchmal besser ist, wenn Sie mal ein ganzes Wochenende oder wenigstens eine Tag an dem Thema zu Hause durcharbeiten?

Ich muss realisieren, dass viele Wege durch ein P-Seminar führen und „viel zu lernen ich noch habe“.

Informatik 11. Klasse

Inzwischen habe ich mein Graphen-Programmieren auf Basis mit Processing verbessert und die Tiefensuche kann nun schrittweise „durchgeklickt“ werden. Hierzu habe ich den Tiefensuche-Algorithmus nicht mehr rekursiv wie bisher implementiert, sondern – was ich bis jetzt noch gar nicht wusste, mit Hilfe eines Stacks. Auf diesem Stack liegen die als nächstes zu untersuchenden Knoten.

Ein ähnliches Konzept gibt es auch für die Breitensuche: Hier werden die noch zu untersuchenden Knoten allerdings in einer Queue verwaltet. Schade, dass ich diese Zusammenhänge erst jetzt entdeckt habe, denn so habe ich einen logischen Zusammenhang zwischen dem ersten Halbjahr und dem zweiten Halbjahr bislang noch gar nicht genutzt.

Hier also das BlueJ-Projekt: TiefensucheProcessingAnim

Einfach das Programm mit BlueJ oä starten, dann einen Knoten mit ’s’+Mausklick als Startknoten grün markieren. Dann ‚a‘ drücken, um den Algorithmus zu starten und anschließend ’s‘  für jeden Algorithmus-Schritt. Im Hintergrund wird der Stack jeweils mitausgegeben.

Die Breitensuche habe ich noch nicht umgesetzt, da wir im Unterricht jetzt beim Dijkstra sind. Danach noch Projektmanagement und das finale Endprojekt.

Graphen und Processing

Angeregt durch die Videos von Daniel Shiffman möchte ich dieses Jahr das Implementieren der Graphenalgorithmen in der elften Jahrgangsstufe auf Basis von processing mit wie immer Java machen.

Hierzu habe ich jetzt in BlueJ ein Grundprojekt programmier, dass den Schüler als Vorlage zum Weitermachen dienen soll. Folgende Features habe ich dabei umgesetzt:

  1. Graphen werden per Zufall erzeugt.
    Hierzu werden 20 Knoten zufällig im Fenster erzeugt, Die Kanten werden ebenfalls zufällig erzeugt. Um nicht nur vollständige Graphen zu bekommen, habe ich zu folgender Implementierung gegriffen:

    for(int i=0; i < maxKnoten; i=i+1) {
        for(int j=0; j < maxKnoten; j=j+1) {
            if(i==j) { //Diagonale mit Nullen belegen
                adjazenzmatrix[i][j] = 0;
            } else {
                int zufallsGewicht = (int)random(1,60);
                 //Die 3 oder das == durch != ersetzen
                if (zufallsGewicht%3==0)
                    adjazenzmatrix[i][j] = zufallsGewicht;
                else
                    adjazenzmatrix[i][j] = 0;
            }
        }
    }
    

    Dadurch erhalte ich alle möglichen Graphen mit einer unterschiedlichen Anzahl an Kanten. Auch mal nicht zusammenhängende Graphen.

  2. Ist der Graph mal erzeugt können die Knoten mit der Maus noch verschoben werden. Hierzu muss der Graph aber im Verschiebmodus sein. Dieser ist standardmäßig aktiviert und kann durch Drücken der Taste ‚m‘ verändert werden.
  3. Durch Drücken der Taste ‚i‘ werden die Knotennamen eingeblendet. Die Kantengewichte werden durch Drücken der Taste ‚e‘ ausgegeben.
    Die erstmalige Anzeige der Knotennamen dauert am Anfang etwas. Warum weiß ich nicht.
  4. Durch Drücken der Taste ‚a‘ wird ein Algorithmus gestartet, wobei im Moment noch keiner implementiert ist.
  5. Durch Drücken der Taste ’s‘ und mit einem Mausklick wird ein möglicher Startknoten grün markiert oder entmarkiert.
  6. Durch Drücken der Taste ‚t‘ und mit einem Mausklick wird ein möglicher Zielknoten rot markiert oder entmarkiert.
  7. Durch Drücken der Taste ‚h‘ kann auch während der Benutzung des Programms die Hilfe angezeigt werden. Auch das dauert am Anfang etwas.

Hier noch die zip-Datei zum Runterladen und weiterentwickeln:  ProcessingAdjazenzMatrix.

Didaktisches Problem?

„Fremdsprachen wie Französisch und Englisch lernen, aber bei 3 Zeilen Java schon aussteigen.“, das ging mir durch den Kopf, als ich meinen aktuellen Zehnklässlern folgende kleine Aufgabe gab:

Aufgabe

Ergänze den Quelltext der GUI so, dass ein Vorschlag angezeigt wird.

Den Quelltext kann man hier herunterladen: Ratgeber2

Die Klasse TippGeber hatte ich mit den Schülern zusammen erstellt und dabei Felder und die Zählwiederholung eingeführt:

import java.util.*; 

public class TippGeber {
    private String[] tipp;

    public TippGeber() {
        tipp = new String[] {
            "Essen",
            "Schlafen",
            "Lernen",
            "Kino",
            "Freunde treffen",
            "Aufrauemen",
            "Lesen",
            "Musik machen"
        };
    }
    
    public String getZufallsEintrag() {
        //Wuerfel definieren
        Random wuerferl = new Random();
        //Wuertfel werfen
        int wurfErgebnis = wuerferl.nextInt(tipp.length);
        //tipp zurueckgeben
        return tipp[wurfErgebnis];
    }
    
    public void tippsAusgeben() {
        for (int index=0; index<tipp.length; index++) {
            System.out.println("tipp["+index+"]="+tipp[index]);
        }
    }
}

Ergänzt werden sollte also nur die folgende Methode in der GUI, die ich wie immer mit dem Java-Editor erstellt habe:

public void jButton_zeigeTipp(ActionEvent evt) {
    //TippGeber initialisieren

    //zufallsEintrag holen
   
    //Tipp anzeigen

}

Da dieses Zusammenspiel zwischen einer Oberfläche und einem Backend bereits gemacht wurde (Quader), dachte ich, dass sei kein Problem. Falsch gedacht. Von 30 Schüler wusste es keiner! Ein paar wenige konnte zwar aus dem alten Projekt die paar nötigen Zeilen rüber kopieren und anpassen. Als aber einer am Lehrercomputer vorprogrammieren sollte, kam er ungefähr soweit:

public void jButton_zeigeTipp(ActionEvent evt) {
    //TippGeber initialisieren
    new TippGeber tipps
    //zufallsEintrag holen
    ??????
    //Tipp anzeigen
    ??????
}

Welche Vorstellung oder Nicht-Vorstellung liegt da vor? Ich stelle mal ein paar Vermutungen auf:

  1. Es ist immer noch nicht klar, dass Programmierzeilen oder zumindest Zuweisungen in der Regel von Rechts nach Links gelesen werden, ähnlich wie in der Mathematik: y=2*5+1
  2. Der Konstruktor ist eine besondere Methode und benötigt daher Klammern… wurde nicht gemacht,
  3. Erkannt wurde, dass Objekte Namen haben müssen… Immerhin
  4. Erkannt wurde, dass komplexe Objekte mit new erzeugt werden… auch schon mal gut.
  5. Anweisungen werden in Java mit einem Semikolon beendet… wurde nicht gemacht, wäre aber, wenn es nicht so gehäuft wie oben auftritt, auch nicht so schlimm.

Aber nicht nur, dass wir das fast schon mal so gemacht hatten. Ich hatte in meiner Grundwissens-Zusammenfassung das alles auch schon stehen::

 Ein Objekt im Quelltext erzeugen können:
 new – Konstruktorname – ( - Werteliste - )
 Beispiel: 
 Hausaufgabe neueHA = new Hausaufgabe("M", "20161101", "B: S 12/1");

Das „-“ verbindet dabei die Token wie ’new‘ und steht für ein Leerzeichen. Ein eingerahmter Begriff bzw, Token kann vom Programmierer frei gewählt werden. Wie im folgenden Beispiel:

public – class – EigenerName – { – }

Hier ist nur das Token „Eigene Name“ frei wählbar. „public“, „class“ und die Klammern müssen so genau an dieser Stelle und genau in dieser Schreibweise stehen.

Was ist nun also schief gelaufen? War die Abstraktion mit den Token zu groß? War der Lerndruck zu gering, was ich vermute? Wie erklärt ihr das?

Kennt ihr auch solche Probleme? Wie löst ihr das? Hat jemand das Programmieren-Lernen über Token irgendwie verbessert? Oder hat einen ganz anderen Ansatz?

Gibt es einen Erklär- und/oder Trainingsansatz ohne Computer? Ich denke da an Spielkarten.

Der Vollständigkeit halber sei erwähnt, dass es in der Parallelklasse mindestens 1 Schüler gibt, der kein Problem damit hatte und das, obwohl er ohne Programmiervorkenntnisse in die 10. Klasse gekommen ist.

Ältere Beiträge Neuere Beiträge

© 2017 Lehrzeit

Theme von Anders NorénHoch ↑