TexnicCenter, Adobe Reader 10 and DDE Commands

For those of you having problems with TexnicCenter and Adobe Reader 10 opening the generated PDF files.
I came accross the following solution which solved the problem for me.

Go to Build -> Define Output Profiles (Alt + F7) -> Select Profile "Latex => PDF" -> Viewer and change the server field from acroview to acroviewR10. That should do the trick.

 

Finden vollständiger Studienpläne als Suche im Zustandsraum

Hallo,
da nun meine letzte Prüfung vorbei ist, wende ich mich an diesem heutigen Freitag Morgen mal der These von Felix zu: "Die Anzahl gültiger Studienpläne lässt sich an einer Hand abzählen". Die bisherige Notation wird in diesem Artikel weiter verwendet.

Zunächst möchte ich den Begriff der Vollständigkeit für Studienpläne einführen :) . Wir nennen einen Studienplan S = \{S_1,\ldots,S_n\} vollständig, wenn die Bedingungen 1 bis 4 erfüllt sind. Um die Frage nach der Anzahl möglicher Studienpläne zu beantworten, ist es nötig, alle möglichen Anordnungen der Module aufzuzählen.
Wie im Titel angekündigt, kann man dieses Problem auch als Suche in einem Zustandsraum beschreiben und dann mit einer Breitensuche lösen.

Ein Zustand sei als Tupel (S,AG) bezeichnet, mit S = \{S_1,\ldots,S_n\} und AG \subseteq M . AG bezeichnet die Agenda, also die Liste der noch einzusortierenden Module. S partitioniert M \setminus AG , wobei die Elemente von S auch leer sein können. Ein Zielzustand ist dann ein Zustand, der eine leere Agenda besitzt und für den S vollständig ist. Abbildung 1 zeigt, wie ein Suchraum aufgebaut werden kann.

Zustandsraum für Studienpläne

Abb. 1: Zustandsraumrepräsentation des Studienplan-Problems

Startzustand ist ein leerer Studienplan mit AG = M . Auf jeder Ebene wird ein Modul in eines der n Semester einsortiert. Damit ergibt sich dann auch eine maximale Anzahl Knoten von n^{|M|} . Nur Knoten, die Bedingungen 2 bis 4 erfüllen werden weiter expandiert. Hier sei zu sagen, dass bei so einer Modellierung auf die unteren Schranken der Credit-Points pro Semester verzichtet werden muss.

Als konkrete Ausprägung des Modells habe ich den Bachelor Studienplan "Wirtschaftsinformatik" ausgewählt. Dieser hat 6 Semester und 28 Module. Weiter habe ich sehr restriktiv die Abhängigkeiten und die Verfügbarkeit der Module modelliert. Grund ist, eine Zustandsraumexplosion zu vermeiden, da sonst die 4 GB Hauptspeicher meines Laptops zu schnell aufgebraucht werden. Um ein Gefühl dafür zu bekommen, wie viele Möglichkeiten man hat, einen Studienplan zu gestalten, habe ich alle vollständigen Studienpläne generiert, die nicht mehr als X Credit-Points pro Semester haben. X ist hier eine Zahl zwischen 32 und 44, die ich sukzessive erhöht habe. Abbildung 2 zeigt die Ergebnisse. Eine Diskussion der Ergebnisse lasse ich hier mal offen. Aber der These, die Pläne ließen sich an einer Hand abzählen, kann vermutlich widersprochen werden.

Anzahl Studienpläne

Abb. 2: Anzahl vollständiger Pläne für den BA Winfo in Abhängigkeit der maximalen Credit-Points pro Semester

Planen eines Studienplans als Bin Packing Problem

Hallo,
nehmen wir an, man möchte einen Studienverlaufsplan erstellen. Dieses Szenario richtet sich vornehmlich an Hochschulen, könnte aber auch für sonstige Personen interessant sein. Als Fachschaft kommen wir immer mal wieder mit Änderungen an Studienplänen in Kontakt und werden nach unserer Meinung gefragt. Die Frage ist aber, wie schwierig ist es einen Studienverlaufsplan zu erstellen und wieviele verschiedene Möglichkeiten hat man?

Zur Beantwortung dieser Frage, sollte zunächst geklärt werden, was ein Studienverlaufsplan überhaupt ist. Es ist eine Menge von Modulen gegeben, die auf bestehende Semester verteilt werden soll. Manche Module haben Voraussetzungen; so sollte z.B. "Grundlagen der Programmierung 1" vor "Grundlagen der Programmierung 2" gehört werden. Diese bilden eine partielle Ordnung auf den Modulen, die zusätzlich berücksichtigt werden sollte. Module verfügen desweiteren über Credit-Points und in jedem Semester sollten um die 30 gehört werden. Auch wird nicht jedes Modul in jedem Semester angeboten. Ein Beispiel aus der Praxis findet sich hier :) .

Betrachtet man die Semester als "Bins", so kommt dieses Problem dem Bin Packing Problem schon recht nahe. Formalisiert könnte es so aussehen:

  • Eine Menge von n Semestern: S = \{S_1, \ldots, S_n\}
  • Eine Menge von k Modulen: M = \{m_1, \ldots, m_k\}
  • Die Credit Points pro Modul: ects: M \rightarrow \mathbb{N^+}
  • Eine partielle Ordnung (Voraussetzungs-Relation): \prec \subseteq M \times M
  • Eine Unter- und Obergrenze der ECTS pro Semester: lb/ub: S \rightarrow \mathbb{N^+}
  • Das Modulangebot: poss \subseteq S \times M

Das Problem einen Studienplan zu finden, gestaltet sich also wie folgt:

  1. S ist eine Partition von M
  2. Voraussetzungen beachten: (x,y \in M, x \prec y\text{ und } x\in S_i, y \in S_j) \Rightarrow i < j
  3. Credit-Points beachten: \forall s \in S \text{ } lb(s) \leq \sum_{m \in s}ects(m) \leq ub(s)
  4. Angebot der Module:  \forall s \in S\text{ }\forall m \in s \text{ } poss(s,m)

Auch deckt das Modell nicht alle Use-Cases (is ja auch schon spät) ab; so ist es nicht ohne weiteres möglich Restriktionen à la "Bachelor Arbeit erst nach erfolgreichen 120 CP" zu modellieren.
Natürlich könnte man sich noch Zielfunktionen überlegen. Wie z.B. die Minimierung des durchschnittlichen Aufwands pro Semester.
Insgesamt erscheint es mir aber sinnvoll, möglichst viele valide Anordnungen zu generieren und dann per Hand auszuwählen. Vermutung ist hier, dass die Restriktionen die Anzahl der Partitionen hinreichend reduziert.
Als Lösungsalgorithmen kommen natürlich die meisten Contraint-Programming Algorithmen in Frage. Auch habe ich damals ein Integer-Programming Model ohne Zielfunktion geschrieben, das ein ähnliches Problem löst. Dies eignet sich recht gut, da für IP Probleme gute Modellierungs-Sprachen existieren.

Wie es der Zufall will, habe ich mal wieder eine Prüfung am Donnerstag, so dass ich auch diese geistigen Ergüsse zunächst auf Eis legen werde.

Michel Friedman interviewt Michel Friedman

Vor einiger Zeit ging es bei Maybrit Illner um die Plagiatsaffäre unseres ehemaligen Bundesministers der Verteidigung. Mit zu Gast waren u.a. Michel Friedman und der CDU-Politiker Wolfgang Bosbach. Im Laufe der Sendung schlug eben dieser Politiker vor, Michel Friedman könnte doch ein neues TV-Format ins Leben rufen: "Michel Friedman interviewt Michel Friedman" :) .
Da ich zur Zeit Pause vom Lernen mache - hier schonmal ein erster Eindruck dieser künftigen Show auf N24:

Michel Friedman interviewt Michel Friedmann

Michel Friedman interviewt Michel Friedmann

MOF Meta-Model, oAW, MDSD und iUPB

Was sich hinter diesen Buzz-Words verbirgt, wusste ich bis vor einem Semester auch nicht. Dieses Semester habe ich die Veranstaltung "Model-Driven Software Development" bei Steffen Becker gehört. Leider haben mich die anderen Kurse zu stark zeitlich eingeschränkt, so dass ich mich erst jetzt richtig mit den Themen dieser Vorlesung auseinander setzen kann. Am Freitag habe ich also wieder eine mündliche Prüfung in eben dieser besagten Veranstaltung und das Thema hat mich so fasziniert, dass ich zur Zeit meinen Entwicklungsprozess für iUPB auf einen modellbasierten Ansatz umstelle.

Als Grundstock habe ich den Architecture-Centric MDSD Prozess von Völter und Stahl gewählt. Allerdings habe ich auf UML-Profiles als Meta-Modell verzichtet und ein eigenes ECORE (EMOF) Meta-Modell entwickelt. Das Meta-Modell ist noch lange nicht komplett, aber ich bin mittlerweile soweit, dass ich damit fast meine komplette App beschreiben und eben auch automatisiert Code dafür generieren lassen kann. Unten sieht man ein Bild als Ecore-Diagram.

MOF-Meta Modell zur Beschreibung meiner App

MOF-Meta Modell zur Beschreibung meiner App

Der Ablauf funktioniert so: Eine konkrete Modell-Instanz des Meta-Modells beschreibt die Struktur meiner App. Mittels openArchitectureWare-XPand habe ich eine Model-2-Text Transformation geschrieben, die mir meine komplette Platform (App Code) generiert. Möchte ich z.B. einen Table-View erstellen, der aus einem RSS-Feed Daten darstellt, so kann ich nun einfach in meinem Modell einen neuen Table-View hinzufügen; diesem einen Namen geben, ein Icon und einen RssDataProvider. Auf "Generate" geklickt und schon habe ich ca. 98% der Entwicklungsarbeit fertig gestellt.

Wenn dieses Meta-Modell soweit ausgereift ist, dass man es wirklich vernünftig auch anderen Personen an die Hand geben kann, dann werde ich es als OpenSource veröffentlichen. Bis dahin sollte ich aber erst einmal weiter für die Prüfung lernen und danach wieder für eine Prüfung lernen und dann, dann werde ich eine neue iUPB Version veröffentlichen - wenn meine Masterarbeit dann nicht dazwischen kommt.

iUPB - Neue Version

Hallo liebe Leser :) ,

nur noch drei mündliche Prüfungen trennen mich von meiner (Schein)-Freiheit (was ein Wortspiel). Am 18. März wird es soweit sein und dann habe ich endlich wieder ein wenig Zeit, iUPB weiter zu entwickeln. Leider habe ich verschlafen, meine iOS Developer-Lizenz zu erneuern, so dass die App anscheinend für einige Zeit nicht erreichbar war.

Zu den Planungen für die nächste Version:

  • Neues Logo
  • Update durch runterziehen jetzt auf allen TableViews
  • Der FUMI-Kalender - da muss ich aber noch mit der Fachschaft Mathe/Info sprechen
  • Aggregation von Uni-News Quellen

Bis heute haben knapp 2.000 Personen diese App heruntergeladen - vielen Dank :)

The Tree-Puzzle - Black and White

A couple of days ago, I stumbled across an old game of mine - Black and White 1. The programmers of the game implemented all kinds of combinatorical minigames.

The Tree-Puzzle is one of them.

The Tree-Puzzle in Island 3

Given a 3x3 matrix with every entry being in {0,1,2}. Each number represents a tree. If you uproot a tree, a new tree of a diffrent kind grows. In other words, the element gets increased by 1 modulo 3. But not only the element changes, but all horizontal and vertical neighbours (no diagonals) too.

The image in matrix-form is represented as follows:

0 1 2
0 2 0
1 2 1

Uprooting the tree in the upper-left corner would then lead the following new matrix:

1 2 2
1 2 0
1 2 1

The goal is to make all trees the same kind {0,1,2}.

To solve the puzzle I wrote a little PROLOG program. The Algorithm uses a Iterative deepening depth-first search. After I added a global Closed-List, it works quite well.

I think in the future I will implement a little A*-Algorithm to solve it optimally and then conduct a little computational study to find maximum-number of moves you need to solve it. Similiar to God's number.
Den Rest des Beitrages lesen »

iUPB - Mensaplan und Busverbindungen in Paderborn

Vor zwei Wochen habe ich meine erste IPhone-App veröffentlicht. Es handelt sich hier um ein Programm, dass die Speisepläne von Mensa, Mensula, Gownsmen's Pub und dem Palmengarten anzeigt.
Zusätzlich werden alle abfahrenden Busse aufgelistet. Natürlich habe ich die Informatiker nicht vergessen und das MuseumsForum ist auch mit dabei :) .

Das ganze gibt es auch schon in ähnlicher Form für den Firefox und für Android.

Wobei das nicht der Grund für die Entwicklung war. Denn entstanden ist diese App einzig für mich - denn dies sind die Infos, die ich am häufigsten benötige. Der Schritt zur Veröffentlichung war dann eigentlich klar, denn bei Apple muss man bereits 79€ bezahlen, um überhaupt Apps auf das eigene Telefon zu übertragen.

Bis zu diesem Zeitpunkt haben mindestens 45 Leute aus Deutschland iUPB runtergeladen. Das macht für mich also einen Gewinn von 45 * 0 - 79 €. Ich habe aber nicht vor, dafür Geld zu nehmen :) .

Witzig ist aber auch, dass zig Downloads auch aus anderen Ländern erfolgten - wahrscheinlich gibt es Leute, die voll automatisiert alle Apps des Appstores downloaden.
Auch ist bemerkenswert, dass meine App auf Seiten wie appzapp.de, telefon.de, iphone.wareseeker.com, appshopper.com, appo2.com und vielen mehr zu finden ist. Diese versuchen wohl über Affiliate-Links Geld zu verdienen. Den Rest des Beitrages lesen »

Warum Apple & Google gewinnen - und dein Unternehmen nicht!

Why Apple & Google win - and your company doesn't

Steckt ein wenig Wahrheit hinter - vielleicht machen wir es ja besser :)

Geld verdienen mit Onlinewerbung - So geht es wirklich!

Könnte ich vielleicht schreiben, wenn mein kleines Onlinewerbe-Projekt erfolgreich gewesen wäre.
Vor ca. 3 Monaten habe ich einen kleinen Beitrag über MobileMe verfasst und findet sich auf Platz 1 bei Google, wenn man nach "Mobileme billiger" sucht. Mein Plan war es, über einen Affiliate Link Besucher weiter in Richtung Ebay zu leiten und so eine Provision einzustreichen, wenn diese wie ich MobileMe über Ebay kaufen.

Bisherige Bilanz ist 1€ in total revenue:). Aber immerhin, 4 Leute haben durch mich etwas bei Ebay gekauft. Wenigstens konnte Ebay davon profitieren - ich werde nämlich erst ab einem Umsatz von 25€ ausgezahlt. Getreu nach dem Motto vom Kollegen Welch "Fix it, sell it or close it", werde ich meine kleine Goldgrube schließen und meine Informationsdienste nun wieder frei zu Verfügung stellen.