Course Work

Algorithmics Lab (TUD 07/08)

We were given the task to develop a program which interactively visualizes Dijkstra’s algorithm for beginners. More information

Machine Learning (UBC 07)

This was a course project for Nando de Freitas’ course on Machine Learning at UBC.


This paper is about the implementation and details of a particle control method by Lars Blackmore. It achieves optimal robust predictive control by approximating all sources of uncertainty with particles to transform a stochastic control problem into a deterministic one. This can be solved to global optimality using Mixed Integer Linear Programming (MILP) in the case of linear system dynamics and a linear cost function. This is an interesting approach because it can be used for robust vehicle path planning under uncertainty without relying on Gaussian distributions. I will first give an overview over the method and then present details on how to model vehicle path planning as a MILP. My results verify the feasibility of Blackmore’s method.

Advanced Computer Networks (UBC 07)

This was a course project I did together with Mayukh Saubhasik for Son Vuong’s course on Advanced Computer Networks at UBC.


We consider the problem of bandwidth estimation and rate control in the context of the peer-to-peer video streaming application BitVampire. BitVampire requires each peer to maintain an estimate of its available upstream bandwidth. This is needed by a scheduling algorithm which takes information about peer’s bandwidth into account in order to minimize the initial buffering time when watching a video. It is also an interesting problem in general, since P2P applications can generally offer a better quality of service if they are aware of their bandwidth limitations. We looked into the area of bandwidth estimation and evaluated their applicability for the context of P2P applications. We found that it is not easy to use them in this context since most of them require very accurate timing and low level network access which is often not given by high-level programming languages like Java. We went for a pragmatic approach instead, which uses round-trip-time measurements as an indicator for the available bandwidth of a peer. We did a prototype implementation in Java and evaluated it in the LAN environment. Future work has to investigate about the choice of many policy decisions which arose when creating the prototype.

Artificial Intelligence I (UBC 06)

This was a course project I did together with Marcus Rohrbach for David Poole’s course on Artificial Intelligence I at UBC.


Current user interfaces are very complex with a large number of functions. Intelligent user interfaces try to help the users performing their tasks. We describe how Horvitz et al. (1998) construct and created a user model to meet the different challenges which exist. Building on this, we first look how Hui & Boutilier (2006) model the user’s features explicitly to suggest help based on the user’s state. Secondly, we explore how Shen et al. (2006) predict the user’s current task.