I'm seeking graduate and undergraduate students in computer science or related fields to participate in projects for academic credit. If the first project works out well, students may be funded for subsequent projects. Research activities include software design and implementation, application projects, and open-source software study. Research outcome may result in papers published at top International conferences and students will be funded to attend the conferences. Commitment of 9 to 12 hours per week is required.
Most projects require a computer science account. Students can apply for CS accounts on line. The fees for the CS account will be paid for by Prof Junfeng Yang.
We offer two types of projects: research projects and programming projects. The goal of a research project is to answer an open research question, thus it typically requires strong technical background and independent problem solving skills. Students working on research projects will typically be assigned PhD mentors to guide their progress in the project.
The goal of a programming project is to implement a piece of software. It is typically well defined, similar to one of the big programming assignments you do in your advance programing class. These projects are recommended for undergraduates who are good hackers but have not taken the advanced classes (e.g., OS or PLT) yet.
- Study Synchronization with Virtualization. Some
principles of operating systems can be applied directly to
virtual machine systems; however virtualization disrupts the
basis of synchronization in the guest operating system, which
results in performance degradation of multithreaded workloads in
virtual machines. We will re-study synchronization with
virtualization, and find effective solutions to improve the
performance of multithreaded applications in the virtualized
system.
Prerequisite: Good understanding of thread programming; C/C++; COMS W3137 Data Structures/Algorithms, and W3827 Fundamentals of Computer Systems; COMS W4118 Operating Systems I, and Linux Kernel.
Contact: rcs AT lists.cs - Defensive Synchronization. Driven by the rise of
multicore hardware, multithreaded programs is getting
increasingly critical. Unfortunately, these programs often
contain insidious errors such as data races and atomicity
violations. The goal of this project is to develop techniques
to detect, debug, and avoid errors in multithreaded
programs.
Prerequisite: Good understanding of thread programming; C/C++; COMS W3137 Data Structures/Algorithms, W3157 Advanced Programming, and W3827 Fundamentals of Computer Systems; one of COMS W4118 Operating Systems I, W4115 Programming Languages and Translators, or W4117 Compilers and Interpreters
Contact: rcs AT lists.cs - Analysis of Resource Races. Resource races occur
when multiple processes access shared resources such as files or
devices in conflicting ways. For example, a process may be
reading a file while another process writes to the file,
therefore causing the first process to read inconsistent data.
The goal of this project is to develop techniques to detect and
debug such errors. Towards this goal, we are seeking project
students to analyze known resource races and reproduce
them.
Prerequisite: Linux admin knowledge; script programming (shell, perl, or python);
Contact: rcs AT lists.cs - Implement Valgrind memcheck within LLVM, Pin, or
DynamoRio. Valgrind has a nice tool called memcheck to
detect memory errors. It is unfortunately kinda slow. In this
project, we will re-implement memcheck in
the LLVM compiler framework,
the Pin dynamic instrumentation
framework, or the Pin dynamic
instrumentation framework.
Prerequisite: Valgrind memcheck experience. W4115 Programming Languages and Translators or W4117 Compilers and Interpreters; LLVM or Pin experience
Contact: rcs AT lists.cs - Privacy Guarding Tools for Android. A
recent paper shows that
many Android applications steal user private information. In
this project, we will build a tool to prevent such information
leaks while still allowing these applications to run.
Prerequisite: Android programming.
Contact: rcs AT lists.cs - Privacy Guarding Tools for iPhone. Similar idea, but
on iPhone platform instead of Android. to run.
Prerequisite: iPhone programming.
Contact: rcs AT lists.cs - Guanyin.
Thorough software checking is crucial to improve software
reliability, but the checking coverage of most existing
techniques is severely hampered by where and how they are
applied. We're developing a distributed infrastructure that
perpetually check deployed software at end-user machines. This
approach increases checking coverage by harnessing the mass
software states created by real users (i.e., not fake testcases)
and idle resources at user machines. We are seeking project
students to apply Guanyin to their favorite applications to find
bugs, develop networking components of Guanyin, or investigate
OS mechanisms to improve Guanyin's performance and ease of
use.
Prerequisite: C/C++; COMS W3137 Data Structures/Algorithms, W3157 Advanced Programming, W3827 Fundamentals of Computer Systems, and COMS W4118 Operating Systems I
Contact: rcs AT lists.cs
- Linux .config Generator. A frequent headache when
compiling your own custom Linux kernel is to figure out a small
.config so that you can save kernel compilation time and still
have a bootable kernel on your machine. In this project, you'll
create a .config generator that takes (1) the output of lsmod
from a bootable kernel and (2) .config of this kernel, and
minimizes the .config.
Prerequisite: knows how to build a custom Linux kernel; script programming (e.g., Python, Perl, and Ruby)
Contact: rcs AT lists.cs - Small Language for interacting with TaskCoach
TaskCoach is a popular task
management software. Its user interface is kinda awkward: it
typically requires a bunch of mouse clicks in order to add a
task or do something. In this project, you'll design a small
language so that users can operate taskcoach purely from
keyboard. An example is the Google calendar's Quick Add
interface.
Prerequisite: Python programming.
Contact: rcs AT lists.cs - TaskCoach and Google Tasks Sync
TaskCoach is a popular task
management software. In this project, you will create a sync
module of TaskCoach so that we can sync the tasks between
TaskCoach and Google Tasks.
Prerequisite: Python programming.
Contact: rcs AT lists.cs - Port TaskCoach to Android
TaskCoach is a popular task
management software. In this project, you will port TaskCoach
to run on Android phones.
Prerequisite: Python programming; Android programming
Contact: rcs AT lists.cs