Plagiate in (Java) Quellcode finden

fadingLeider scheint bis jetzt niemand eine wirklich freie, gute und lokale Code-Plagiats-Applikation entwickelt zu haben. Ich wäre sehr gespannt, was AST-Vergleiche bringen würden. Nundenn, ein erster und unaufwändiger Vergleich von Quellcode (und bei Programmierprüfungen eventuell mit alten Lösungen) kann schon vieles zeigen. Die einfachste Variante, die ich bis jetzt gefunden habe, ist der CPD copy-paste-detector, der Teil des PMD-Packages ist.

Der CPD braucht nicht installiert zu werden: Herunterladen, entpacken und den Pfad bei den Einstellungen in Control Panel\System and Security\System\Advanced system SettingsAdvancedEnvironmentVariables setzen.

Pfad Setzen in Windows

Pfad Setzen in Windows

Danach eine Kommandozeile öffnen den Computer um Folgendes bitten:

cpd --encoding utf8 --minimum-tokens 200 --files E:\Pruefungen\IB13a\VMKN-226\files > similarities.txt

Das kann auch auf eine Sprache eigegrenzt werden:

cpd --language java --encoding utf8 --minimum-tokens 200 --files E:\Pruefungen\IB13a\VMKN-226\files > similarities.txt

Nun stehen in der Datei similarities.txt die Teile der Dateien, die gleich sind. Weitere Optionen können auf der CPD-Page gefunden werden.

Website mit Java-Programmieraufgaben, die automatisch korrigiert werden

batUnd es gibt sie: Die Perlen im Web. Man surft sich einfach so die Zeit weg, weil die Arbeit lauert und nur darauf wartet zuzupacken und versucht verzweifelt das schlechte Gewissen wegzusurfen und dann trifft einem der Hammer und eine Rechtfertigung für das Prokastrinieren: JavaBat. JavaBat ist undesigned, sehr technisch, aber einfach genial um Java zu lernen.

Auf JavaBat gibt es Programmieraufgaben zu verschiedenen Themen. Die Lösung wird als Java-Quellcode eingereicht, auf dem Server compiliert, ausgeführt und mittels Unit-Tests korrigiert. Eine geniale Idee: Schlicht und ergreifend und mit dem Potential süchtig zu machen. Zusätzlich besteht die Möglichkeit, einen „Teacher“ anzugeben, dieser kann dann die Fortschritte beobachten.

Diese Aufgabe wurde gelöst

Diese Aufgabe wurde gelöst

Aber wie machen die denn das? Wie bewahren sie sich davor, dass ich ihnen mit den Dateioperationen den Server überschreibe? Es wäre doch wunderbar, wenn man dieses Prinzip auch für andere Programmiersprachen anwenden könnte… Es scheint so, dass es bei Java sehr einfach ist: JavaBat verbietet Import-Statements, oder es kann über die JVM-Security-Policies gelöst werden (sagen sie bei Stackoverflow). Eine generellere Herangensweise zeigt Geordi: Hier werden die System-Calls geblockt. Mal sehen, wie sich das zum Nutzen Aller verwenden lässt…

Lokale Turniere für CodeRuler

coderulerCodeRuler ist ein geniales Programmierspiel von IBM. Es eignet sich sehr für eine spielerische Beschäftigung mit der Programmiersprache Java.

Für Turniere hat das Spiel eine eingebaute Serverfunktion. Rulers werden ganz bequem von Eclipse aus eingereicht und stehen dann auf dem Server zur Verfügung. Wenn man allerdings eigene Rulers gegeneinander antreten lassen möchte, oder wenn das Netz securitymässig so abgeriegelt ist dass Peer to Peer Verbindungen nicht möglich sind, muss man etwas tricksen. Hier die einfachste Möglichkeit unter Linux (eventuell portierbar), die ich gefunden habe. Kompliziertere Möglichkeiten gibt es natürlich auch.

  1. Die MyRuler.java Dateien müssen irgendwie auf den Servercomputer kommen. Ev. mit E-Mail, USB-Stick oder Flaschenpost.
  2. Den Server in Eclipse starten mittels: Window → Preferences → Games → Start. Eventuell sollte vor dem Start der Port angepasst werden (9999 ist gut).
  3. Für jeden Ruler muss ein eigenes „Game“ Projekt in Eclipse erstellt werden. Die MyRuler.java dorthin kopieren.
  4. Für jeden Ruler Folgendes erledigen:
    1. Projekt öffnen und Games.xml anklicken.
    2. Mit dem Pfeil den Bereich Game Server erweitern und die korrekten Daten ausfüllen.
    3. Identification ausfüllen.
    4. Ruler submitten.
    5. Im Workspace Verzeichnis (Ersichtlich unter File → Switch Workspace) in .metadata/.plugins/com.ibm.games/players wechseln
    6. Das Verzeichnis localhost in irgendetwas Anderes umbenennen

Turniere können nun an Zwei Orten durchgeführt werden:

  • Entweder Direkt von einem games.xml aus.
  • Im Turniermodus: Window → Preferences → Games → Tournaments.

Der Turniermodus ist ein Sensibelschen. Turniere scheinen nur mit neu submitteten Rulern möglich zu sein. Ausserdem: Im Hintergrund wird sofort mit dem Turnier begonnen! Das GUI zeigt keine direkte Reaktion, nicht mal ein Eintrag des neuen Turniers ist ersichtlich, aber im Hintergrund kämpfen die armen Gesellen. Das Spiel kann dann mit dem Button Play angesehen werden. Hier hat erst ein Klick auf den schwarzen Bereich das Spielfeld zum Vorschein gebracht.

15 Sekunden Ruhm; Moodle, e-Learning und die Berufsfachschule BBB im Fernsehen

TrophiesDie Berufsfachschule BBB ist wirklich ziemlich an vorderster Front was die Umsetzung von e-Learning im Präsenzunterricht angeht. Zum Einen wurde sie von IBM zur besten e-Schule in der Sekundarstufe II ausgezeichnet, zum Andern hat das Magazin Einstein des Schweizer Fernsehens einen kleinen, aber feinen Bericht darüber gedreht, der (oder direkt bei SF DRS) angesehen werden kann

Wer in den verschiedenen Beiträgen meine Fresse erkennt, kriegt drei Vaterunser und Eiswürfel, um sie auf die Augen zu legen 😀 .

Aja, den Juniorwebaward 2008 haben wir in unserer Altersklasse auch noch gewonnen…

Und es geht doch! GTCO Schoolboard unter Linux

Das Schoolboard

BlackboardBei uns sind diese relativ coolen Dinger, genannt „elektronische Wandtafel“ fest eingerichtet: Der Beamer projeziert die Laptopausgabe auf eine aktive, weisse Fläche. Diese Fläche kann die Bewegungen und klicks eines speziellen Stiftes tracken und über USB an den Laptop senden. Dabei können Mausbewegungen simuliert oder mit speziellen Tools Stifte und Marker nachgeahmt werden. Das Unterrichten gelingt so normalerweise flüssiger, wel nicht mehr zwischen Laptopschirm und Präsentationsfläche hin- und hergewechselt werden muss.

schoolboard principle

Lange Zeit gab es diese Software nur für Windows. Mittlerweile ist sie für Linux schon benutzbar, wenn sie auch noch ein paar Kinderkrankheiten hat.

Installation

Hardware

Die Ausgabe des Kommandos uname -a zeigt die Kernelversion. Bei mir hats mit 2.6.22 relativ gut funktioniert. Erst um 21, 22 herum ist der gtco Treiber beim Kernel dabei. Ob dieser Treiber lokal vorhanden ist sieht man mittels modprobe -v gtco. Wenn nicht reklamiert wird, dann ist er geladen und alles ist ok.
Sollte das gtco Modul allerdings nicht vorganden sein, so wird man es von der GTCO Website downloaden und selbst kompilieren müssen.

Um zu sehen ob das Schoolboard (USB Version) erkannt wurde, kommt lsusb zur Anwendung:

Bus 004 Device 004: ID 078c:0401 GTCO/CalComp

Software

Die neuste Interwrite Software ist ein Riesenteil. Für Linux gibt es sie zum freien Download. Vorsicht: die Software ändert die xorg.conf, darum ist der spezielle Hinweis dass ein Restarts (des X-Servers) vonnöten sei durchaus ernst zu nehmen. Irgendwie wird danach ein unheimlich ressourcenhungriger Prozess mit Namen IWDM gestartet.

Das Kalibrieren und ein erster Check des Boards geht mit Launch_Device_Manager. Die Werkzeugleiste kann mi Launch_InterWrite gestartet werden.

Probs und Anwendung

Leider funktioniert bei mir das onscreen Keyboard nicht. Hat das jemand zum Laufen gekriegt?

Unser Board hat eine Auflösung von 1024×768 Bildpunkten. Es gibt unter Anderen diese zwei Möglichkeiten, im Laufenden Betrieb umzuschalten:

  • Das KDE Kontrollzentrum (kcontrol) Angeschlossene Geräte → Anzeige.
  • Auf der Kommandozeile : xrandr -s 1024x768.

eLearning etwas anders…

Unter Elearning wird oftmals noch das dröge Lernen von verbugten, sturen CD’s seiner selbst willen verstanden. Einen Schritt weiter geht das Blended Learning und die Learning Management Systems (lms) wie zum Beispiel Moodle.

Es geht aber auch ganz einfach und ganz spassig: AK Kappenberg hat mit WinChemie eine Programmsammlung mit einigen Perlen gratis zum Download ins Web gestellt, und das nicht nur für Chemie!

Der grosse Preis

Bei Der grosse Preis wird die Klasse in mehrere Gruppen eingeteilt, die live und abwechslungsweise gegeneinander Fragen beantworten, die mit dem Beamer projiziert werden. Dabei können die Gruppen Punkte einsetzen, sich beraten, ärgern oder freuen. Der Lerneffekt ist riesig, weil es einfach Spass macht. Die Fragen können mit einem Editor geändert und für jedes Fachgebiet angepasst werden.

Achtung: Damit das Teil läuft müssen die EconNSoft Core Components von AK Kappenberg vorgängig installiert werden, ansonsten gibt es eine nichtssagende Fehlermeldung!

Als nächstes werde ich AK Riddle austesten. Das scheint über das Netzwerk zu funktionieren. Ein Erfahrungsbericht dürfte folgen…

Croquet: Die Zukunft des eLearning

Virtuelle Welten haben mich schon immer fasziniert. Wieso sollen wir uns mit den Limiten dieses reellen Dreckschollens begnügen auf dem wir hingeboren wurden? Etwas sehr schönes ist Croquet. Geschrieben in Smalltalk, eine lustige Sprache, die aber weh tut beim Programmieren. Da ist alles ein Bisschen anders…

CroquetNundenn, ich wollte einen Server ohne grafische Oberfläche, auf einem festen Port und dann loslegen. Es gibt viele Beispiele auf dem Web, aber entweder sind die für alte Versionen oder mein nichtvorhandenes Wissen über Smalltalk hat den Erfolg verhindert. Nach knapp 12 Stunden habe ich dann einiges herausgefunden… Das Teil stürt oft ab und hat immer mein Linux mitgerissen… In einer VM läuft es sauber, aber langsam wie ein Keks.
Nicht gemeistert habe ich einen äusserst blöden Fehler: In einer Funktion wollte Croquet einem nicht vorhandenen Objekt namens connection die Nachricht recvCypher nicht verstehen… Wie auch, war es doch klein und Null. Hab aber nicht aufgegeben und folgendes herausgefunden:

SimpleDemo (Master) ist fürs WAN vorbereitet. Der Port versteckt sich in Croquet-Harness -> CroquetHarness -> initialize -> CreateIsland ! Wenn man ihn dort setzt, dann hört der Router ganz friedlich und beständig da… Ebenfalls da sollte man die ID setzen:

id := TObjectID readHexFrom: 'ee3320a5924eaf79b1336d2151b80717'.

Nungut, wie startet man das Ganze nun kopflos? (Ohne grafische Anzeige) ?

Man macht ein kleines Script bbb-master.st:

bbbworld := SimpleDemoMaster new.
bbbworld setup.

Und startet es folgendermassen:

 /pfad/to/Croquet/bin/i686-pc-linux-gnu/squeak -plugins /pfad/to/Croquet/bin/i686-pc-linux-gnu  \
     -vm-display-X11 -swapbtn -headless /pfad/to/Croquet/Croquet1.0.10.image \
     /pfad/to/Croquet-Scripts/bbb-master.st

Was man auch automatisieren kann (/etc/init.d/bbb-master poste ich gerne auf Wunsch).

Zum Verbinden braucht es die IP und nicht den Namen!

Etwas das ich noch nicht herausgefunden habe wie man bei diesen Welten mit Menü ein 2D-Projekt als Portal übernimmt. Vielleicht sollte man eine andere Welt als Server wählen…? Ebenfalls schlecht ist die Uptime von 5 Minuten bei 4 aktiven Clients 🙁 … Aber es wird ja noch dran gearbeitet 🙂 ….