ECSL

Navigation

 

 

ECSL Master Project (523/524) List


Introduction

My belief is that every Master project should have a research and practical component to it. Therefore in each topic listed below, students are required to do a little research into the nature of the problem, and to carry out a solid implementation of the solution that arises out of the research. At the end of the project, the student is required to deliver a public presentation of the research results as well as a high-quality report.


Distributed Systems Support for Network Games

Artery is a distributed system that is designed to facilitate the development of network games. In particular, it supports various efficient techniques to support reliable IP multicast, trading off between consistency and network traffic volume. The goal of this project is to build such a distributed system in the form of user-level libraries that exploit state-of-the-art IP multicast capabilities and RSVP.

Interactive Game Development System

The goal of this project is to design and implement an interactive game development system for ordinary users, rather than for professional game developers. The emphasis is to make the system as interactive as possible without requiring users to go through laborious setup and/or specification. Our hypothesis is that such a tool will make an excellent entertainment facility for children as well as adults to express their imaginations. We will start with public-domain 2D game development systems such as sprite editors.

Testing of Computer Games

Testing of interactive applications, in general, is a challenging problem especially when it comes to some sort of automation mechanism. Computer game is an extreme form of interactive applications, and is therefore particularly difficult to test comprehensively and automatically. This project aims to developing tools that can significantly simplify the process of testing computer games and more generally network games.

Snooping and Trend Analysis of File Accesses on P2P Networks

P2P file sharing networks such as Kazaa and Gnutella provide a valuable barometer for the current user preferences towards music, movies, and software. This project aims to developing a tool that can transparently collect file access patterns on P2P networks and perform trend analysis on them.

Open-Source Skype

Skype is a proprietary VoIP application that uses similar P2P technology as Kazaa. There are two key ideas in Skype: One is application-level routing, and the other is support for connection set up between two hosts both of which are behind an NAT. This project aims to develop an open-source version of Skype and use it as a research vehicle for application-level routing research.

Running Windows Device Drivers under Linux

There are two general interfaces that an OS provides: One is the system call interface for application programmers, and the other is for device driver developers. This project aims to implement Windows's device driver interface within Linux such that the large number of Windows device drivers can run on Linux without any modification. More generally, this could be the device driver counterpart of the Wine project.

Wine + X = Terminal Service

Terminal service allows applications running on one machine to display their results at other machines. X Windows system does that in the Unix world. This project aims to combine X with Wine (Windows Emulator) into a replacement for Terminal Service that runs on the Linux platform.

Digital Preservation = Software + Data Backup

How to back up a WORD document so that it can be read ten years from now? This requires storing the bits of the WORD document, as well as the software (in this case WORD) that can interpret it, as well as the libraries and OS this software depends on, as well as the hardware they run on. The goal of this project is to develop a digital data preservation tool that can guarantee the accessibility of long-term archived data.

Activity Logging in a Windows Environment

One way to detect insider attacks is to detect anomaly in the user activity log. Unfortunately, on a Windows machine, user interactions are mostly in the form of mouse/keyboard events. Therefore, it is much more difficult to capture a log of high-level user activities, such as open file, save file, undo, etc., than on old Unix-based systems, where the command shell log provides sufficiently detailed information. The goal of this project is to develop a high-level user activity log for the Windows environment that can provide a clear and detailed picture of a user's activity on his/her machine.

Vision-based Mouse Position Detection

In an electronic lecture recording system, it is important to constantly detect and capture the mouse's position so that upon playback, the system can provide the focus of attention on the slides during the lecture. The goal of this project is to develop a mouse tracking system using image processing techniques and a wireless web camera. This tool can also serve as the basis of a wireless electronic "chalk."

P2P Distributed Video-on-Demand Server

Video-on-demand (VOD) has been touted as the next killer applications for more than one decade. With the advent of high-speed last-mile access technology such as DSL and cableTV, network bandwidth is lesser an issue now. However, how to architect a VOD server that can effectively support thousands of high-quality video streams simultaneously remains a technical challenge. This project aims to develop a P2P VoD server that distributes its storage across the client-side set-top boxes and takes advantage of physical proximity between servers and clients to reduce the load on backbone networks. The key technical issues in this project are resource allocation for individual VOD requests, and redundancy provisioning and fail-over to tolerate set-top box failure, and uplink bandwidth unavailability.

Transaction-level QoS for relational DBMS

Suppose a DBMS server hosts three sets of tables, each for a different department in an enterprise. How to provide each department a transaction-level throughput guarantee is the main focus of this project. The main research challenge here is how to account for the CPU/disk/network resource usage of each incoming SQL, charge it to the appropriate department accordingly, and then schedule subsequent requests to achieve the desired QoS.

Fine-grained polling using Hyperthreading

The hyperthreading support in Pentium4 architecture provides two architectural contexts on a single CPU. Switching from one thread to the other can be triggered by events such as a cache miss. One way to exploit hyperthreading is to use it to implement fine-grained polling system service for free. For example, high-resolution timer (say 100 nsec granularity) can be implemented by a polling thread that does nothing but to check the Pentium performance counter. As another example, interrupt-free packet reception in high-speed routers can be implemented by a polling thread that constantly checks the status of the ring buffer on the network interface. Finally, the same idea can be used to implement a mechanism that can unlock a kernel when it hangs.

ISP-Scale Network Data Backup System

ISPs such as cable modem or ADSL service providers are hard pressed to offer value-added service beyond the basic connectivity service to avoid being marginalized. An immediate candidate for this type of service is data backup for individual home computers that are connected to the Internet through broadband connections. Compared with enterprise network data backup systems, there are three additional design issues in ISP-scale network data backup systems. First, user data must be encrypted before being backed up to the ISP's disks. Second, the backup system must be scalable to a large number of clients in terms of performance and reliability. Finally, backup data should be readily available to end users without the intervention of system administrators.

Replica Management and Transactional Support for OpenLDAP

LDAP is a simple attribute-value database management system that has seen many applications in enterprise networking and telecommunications. It features a hierarchical name space similar to standard file system name space. OpenLDAP is an open-source implementation of LDAP that supports basic LDAP protocols as well as replication. The goal of this project is to add replicat management and transactional support to OpenLDAP, so that the resulting LDAP system is more scalable and fault-tolerant, and thus usable as the real-time database backbone for telecommunication networks, supporting functions such as mobility management, instant charging/billing, etc.

Resource Management for 3D Graphics Engine

Modern 3D graphics card has as much memory and CPU resource as the host computer, and yet so far has been beyond the reach of the host OS. The reason is that these 3D graphics cards are designed to run one application at a time, and fine-grained sharing among multiple applications is discouraged. This project aims to develop an resource manager for 3D graphics cards, such that it is possible to multiplex multiple processes on the same card in a temporally interleaved fashion without incurring significant performance overhead.

Debugger Support for GPU

Traditional CPUs provide support for single stepping and data/instruction breakpointing, from which higher-level debugger primitives are built. GPU, on the other hand, does not provide any hardware support along this line. How to develop an effective debugger for GPU program developer without such support thus becomes a challenging issue. In addition, given the programming model of GPU, traditional debugging primitives may no longer be effective. Exactly what debugging primitives should be added is another technical challenge.

Safe Execution of Native Methods of Java Applications

Preserving existing investments in non-Java technology is critical to the acceptance of Java technology. A primary way to connect Java to existing code is through the use of native methods. However, native methods may destroy the safety property of the Java programs containing them because they live in the same address space as the Java code. How to sandbox these native methods using segmentation hardware is the focus of this project.

Source/Binary Code Differencing

Comparing two programs at their control flow graph level to determine the difference between them has many applications, for example, authorship analysis, plagarism detection, and vulnerability identification. The goal of this project is to develop a comprehensive graph differencing tool that can identify the difference between two programs given their source code or binary code representation. Abstractly, this is a graph isomorphism problem and is thus an NP complete problem. Therefore, we need to develop heuristics that are tailored to program control flow graphs.

 

This page was last updated on 8-25-2005.