INFPRJ07/08: Planning Parent-Teacher Conferences

For this project, we were asked to develop a web-application that would enable a school to automate the proces of planning their parent-teacher conferences. We were given a set of rules we needed to try a adhere to, like “Parents shouldn’t need to wait more than half an hour in total between different conferences.” And there were, of course, practical limitations we needed to account for, such as the number of available tables, the number of time-slots each evening and the annoying fact that teachers simply can’t be at to tables at once.

The assignment stated that we should use the Google App Engine platform, but we were free to choose the language. Because we already were familiar with Java, and the language Go was still in development, we chose to use Python.

We ended up building a system that allowed parents and guardians to pick what subjects needed to be discussed per child, and to order the available days according to preference as well as indicate if they had a preference to be planned early or late in the evening.

During the first part of this project, I focussed on the ingest of the available data into GAE’s datastore and on generating plausible parent-preferences to work on. The second part of the project I worked on the algorithm that generated the actual planning. The parents were first sorted by the number of conferences they requested. The parents with the most conferences were planned first, as they would be harder and harder to place as the schedule filled up. This would take into account their preference for day and time. All parents were planned with one empty time-slot between them. After a while all requested conferences would be planned, but there would be teachers planned at two or more tables at the same time, as shown in this PDF. The algorithm would then start reordering the planned conferences of each parent, until it found the order that resulted in the lowest number of conflicts. Ultimately, this would result in a planning that adhered to all the practical restrictions and most preferences, as shown in this PDF.

INFPRJ03 – Project 3: Build a webstore

This time we were asked to build a online store for a small computer electronics retailer. We were supplied with flat-file listing of all products and their attributes, and matching images.
We decided to use PHP because some of us had already worked with this language. One point of interest for this project is that we built a database that every product attribute could have sub-attributes, and each sub-attribute could have it’s own sub-attributes. At the same time attributes could have values associated with them.
For the editing of products we opted for a very user friendly Ajax approach: just click the part of the product you want to edit (the name or the description for instance) and that part changes into a text-field in which the text can be changed. Once you leave the field the change is committed to the database.
We also made it possible to nest an infinite amount of categories into each other, and to assign multiple categories to one product.

Unfortunately my web host currently does not support the PostgreSQL version that is needed for the solutions developed for this project. Therefore there is no working version of the end result at the moment.

INFPRJ02 – Project 2: Build a web-based game

The assignment for this project was design and develop a single player web-based game. We decided Java to build a mazing tower defense game. As background story we took the well known story of a slightly overweight Italian plumber who sets out to save the pink princess. However, in our game the story is told from the perspective of the spiky turtle that invited the princess to his castle.

You can play the final version of the game by clicking here.

We were also asked to make a trailer for the game. You can watch it below:

INFPRJ01 – Project 1: A website for a cinema

For this project we were asked to build a website for a new (fictitious) cinema in Rotterdam. One particular point of interest was these pricing-model we were asked to implement. Ticket-prices were based on the position of the seat in the theater: seats in the middle of the theater were the most expensive, but there was also a growing premium towards the back of the theater. However, there were 3 sizes of theaters. And not every show would use the same prices and distribution of prices. For instance, the middle of the theater isn’t as valuable for a romantic comedy, as it is for a special effects driven blockbuster.

Using JavaScript I built a model that would map out the different prices into a table, dividing the prices in color-coded ranks. In the prototype I used input fields for all relevant variables, so that the client would be able to set up different profiles for different types of shows. Those profiles were then entered into a database, to be used on the final website.

On the website, the client wanted to give visitors the opportunity to get pricing-information about their favorite seats. To accomplish this, I added a slider set that would grey-out the seats that are of no interest to the visitor.

Here’s a link to the final version of the Bioscoop Filmpje website. The assignment also called for a mobile version and a version that could be used on a touchscreen terminal. These versions all rely on the same basic code, with browser detection doing the initial switch for mobile browsers.

For this project students were also asked to make “Making of” video. Here’s what we came up with: