Projekte im Sommercamp 2012
Während des Sommercamps arbeiten die Schülerinnen und Schüler in Projektgruppen und bearbeiten unterschiedliche Themen. In einigen Projekten wird in Java programmiert. Hier sind Programmierkenntnisse nützlich. Andere setzen keine speziellen Informatik-Kenntnisse voraus.
- Virtuelle Welten
- Distributed Computing mit MapReduce
- jRobots
- Entwicklung sensor-unterstützter Android Apps
- App Entwicklung mit dem Android SDK
- Linux Shell Programmierung
Virtuelle Welten
Worum geht es?
Raytracing ist eine Methode zur Erzeugung realistischer dreidimensionaler Darstellungen von einzelnen Objekten und ganzen Szenen. Grundlage dafür ist eine Beschreibung der Anordnung von Objekten, Lichtquellen und Kameras sowie des umgebenden Raumes (z. B. Nebel); diese Beschreibung wird dann durch ein automatisches Verfahren (hier das Programm POVRAY) zur Berechnung eines Bildes oder einer Bildfolge (Trickfilm) verwendet. Die Beschreibung erfolgt in einer Sprache, die als Programmiersprache (zum Erstellen eben jener Welten) bezeichnet werden kann.
Was wollen wir machen?
In der Gruppe sollen neben den Grundlagen von Raytracing besonders die dafür verwendeten Beschreibungsmethoden betrachtet werden. Diese bieten neue Ansätze zum Verständnis des Prinzips der Rekursion, einer fundamentalen Methode der Informatik. Natürlich kommt auch der Spaß nicht zu kurz, denn wo sonst hat man die Möglichkeit, die Welt so zu gestalten, wie man es möchte!?
- Die Erklärung des Prinzips "Raytracing".
- Die Vorstellung von POVRAY (Persistence of Vision Raytracer), einem Public-Domain-Raytracer.
- Eine Einführung in die Beschreibungssprache; die Beschreibung einfacher und zusammengesetzter Objekte sowie einfacher Szenen.
- Rekursion als Prinzip in der Informatik und die Verwendung von Rekursion zur Beschreibung von komplexen Objekten.
Java- bzw. Programmierkenntnisse
keine
Distributed Computing mit MapReduce
Worum geht es?
Beim Distributed Computing (auf deutsch: “Verteiltes Rechnen”) geht es um das parallele Rechnen auf mehreren PCs in einem Netzwerk. Ziel ist es, schwierige Aufgaben zu lösen, die auf einem einzelnen Rechner überhaupt nicht oder nur sehr langsam bearbeitet werden können. Der MapReduce-Ansatz ermöglicht dabei, komplexe Algorithmen relativ einfach zu beschreiben und zu implementieren.
Was wollen wir machen?
- Einführung in das MapReduce-Programmiermodell
- Vorstellung der benutzten Programmierwerkzeuge
- Erstellen einfacher MapReduce-Programme
- Einsatz von MapReduce zur Analyse der “Friend-of-a-friend”-Beziehung in sozialen Netzwerken
- Bei Interesse: Ansätze zur Visualisierung / interaktiven Navigation der Ergebnisse
Java- bzw. Programmierkenntnisse
Grundlegende Java-Kenntnisse sind Voraussetzung; alternativ sind auch fortgeschrittene Kenntnisse in anderen Programmiersprachen nutzbar.
jRobots
Worum geht es?
Bei jRobots entwickeln die Projektteilnehmer einen Steuerungsalgorithmus für einen Java-Bot. Ziel ist es, den eigenen Bot mit ausgefeilter künstlicher Intelligenz auszustatten, so dass er sich gegen die Bots der anderen Teilnehmer im Wettkampf durchsetzen kann.
Was wollen wir machen?
- Die Woche beginnt mit einer Einführung in die objektorientierte Welt von Java. Auch werden geometrische Grundlagen aufgefrischt, die für Wegberechnung und Zielerfassung später wichtig sind.
- Nachdem die Kontrollen des jRobots erklärt sind, dürfen die Teilnehmer - in Teams aufgeteilt - ihre ersten Prototypen bauen, die sie immer weiter verfeinern werden.
- Während die Teams bisher unabhängig voneinander Steuerungen entwickelt haben, werden sie am Ende der Woche erstmalig im Wettbewerb auf großer Leinwand gegeneinander antreten.
Für die Abschlussveranstaltung ist geplant, alle Teilnehmerbots auf einmal gegeneinander antreten zu lassen.
Java- bzw. Programmierkenntnisse
Grundlagen in Java
Entwicklung sensor-unterstützter Android Apps
Worum geht es?
In einem ersten einführenden Schritt wird das Erstellen von Apps nach dem Baukastenprinzip vermittelt - als Entwicklungswerkzeug kommt dabei der Google App Inventor zum Einsatz.
Im Anschluss daran soll eine sensor-unterstützte App entwickelt werden, die den vollen Funktionsumfang des mobilen Gerätes wie Kamera, Beschleunigungssensoren, GPS, Kompass o.ä. ausnutzt. Grundlage hierfür ist der Einsatz der Android SDK unter Eclipse, um flexiblere und mächtigere Programme erstellen zu können.
Was wollen wir machen?
- Einführung in den Umgang mit Google App Inventor anhand eines kleinen Projekts
- Einarbeitung in Eclipse und Android SDK
- Implementierung einer sensor-unterstützten App mit Hilfe von Eclipse und des Android SDK unter Einbeziehung des vollen Funktionsumfangs wie Kamera, Beschleunigungssensoren, GPS, Kompass o.ä.
Java- bzw. Programmierkenntnisse
Für den Umgang mit Google App Inventor sind keine Vorkenntnisse nötig - für das Arbeiten mit Eclipse und der Android SDK sind Grundlagen in Java von Vorteil, aber nicht notwendig.
App Entwicklung mit dem Android SDK
Projektseite mit mehr Informationen
Worum geht es?
Die Projektteilnehmer erlernen grundlegende Techniken im Umgang mit dem Android SDK. Um sich diese anzueignen, wird das bekannte Spiel Mastermind implementiert.
Was wollen wir machen?
- Die Schüler machen sich mit Eclipse und dem SDK bekannt. Das Spiel Mastermind wird erläutert. Gruppen werden gebildet.
- Die grundlegende Klassenstruktur und ein Prototyp der GUI wird erstellt. Verwendung der Touch API.
- Erarbeiten von Lösungsstrategien (AI) und Fertigstellung der Implementierung.
In der Abschlussveranstaltung präsentieren die einzelnen Gruppen ihr Ergebnis.
Java- bzw. Programmierkenntnisse
Grundlagen in Java wünschenswert.
Linux Shell Programmierung
Worum geht es?
Viele komplexe Aufgaben können unter Unix (bzw. Linux) einfach durch die Verknüpfung von GNU Tools und einer Shell (zum Beispiel Bash, Z shell) gelöst werden. In diesem Projekt erlernen die Teilnehmer diese Tools einzusetzen um effizient zu arbeiten.
Was wollen wir machen?
- Verwendung von Linux Standardtools (wie z.B. less, grep, find, sed, sort, rsync...).
- Einführung in Linux Shells (insb. Bash & Z shell) und Shell Programmierung.
- Scripte hacken, Systeme verwalten und kleine Programme schreiben.
Java- bzw. Programmierkenntnisse
Keine; wichtig ist Interesse an Betriebssystemen aus dem Unix Umfeld (insb. Linux)