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.
|