Projects Available for Academic Credits
The Reliable Computer Systems Laboratory (RCS) is seeking graduate and undergraduate students in computer science or related fields to participate in research projects for academic credit. 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.
- Defensive Synchronization. Multithreaded software is
getting mainstream to exploit multicore processors.
Unfortunately, programmers thinks sequentially, thus are prone to
mistakes in writing multithreaded software. The goal of this
project is to develop techniques to detect, debug, and fix
errors in multithreaded software. We are seeking project
students to investigate the following research questions: what
are the characteristics of existing errors in open-source
multithreaded applications? what are the performance tradeoffs
of different synchronization mechanisms? how to automatically
debug and repair errors in multi-threaded applications?.
Prerequisite: basic understanding of thread programming; C/C++; COMS W3137 Data Structures/Algorithms, W3157 Advanced Programming, and W3827 Fundamentals of Computer Systems (or equivalent of the three)
Recommended: one of COMS W4118 Operating Systems I, W4115 Programming Languages and Translators, or W4117 Compilers and Interpreters
Contact: Jingyue Wu (jingyue AT cs.columbia.edu) and Junfeng Yang - Application of Defensive Synchronization tools. We
are seeking project students to reproduce existing concurrency
errors in several open-source applications and apply the tools
we build to fix these errors. Specifically, students will use
an automated bug crawler to collect bugs from online bug
databases; build the corresponding software on one of our server
machines and reproduce collected bugs; apply a Defensive
Synchronization tool we build to fix the errors.
Prerequisite: basic understanding of C/C++, Linux, Makefile, and thread programming.
Contact: Jingyue Wu (jingyue AT cs.columbia.edu) and Junfeng Yang - 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, and W3827 Fundamentals of Computer Systems (or equivalent of the three)
Recommended: COMS W4118 Operating Systems I
Contact: Nageswar Rao Keetha (nk2340 AT columbia.edu) and Junfeng Yang - Application of Guanyin. We are seeking project
students to apply Guanyin to applications such as firefox
browser and emacs editor to find errors. Specifically, each
student will develop a testing tool for an application she or he
frequently uses and integrate the tool with Guanyin to find bugs
in this application.
Prerequisite: basic understanding of C/C++, Linux, and Makefile.
Contact: Nageswar Rao Keetha (nk2340 AT columbia.edu) and Junfeng Yang