The Programming Systems Laboratory (PSL) is seeking graduate and undergraduate students in computer science or related fields to participate in research projects for academic credit. The time commitment is approximately 12 hours per week for a 3-point project; prospective project students should have strong time management and organizational skills. Most work will be conducted in the Programming Systems Lab, located in 6LE1 CEPSR; some work can be conducted remotely.

- Social Networking User Interface: We are investigating the use of social networking within computer supported collaborative work, particularly in the domain of scientific computation. To support this, we require a user interface that allows users to perform such actions as joining social networks, seeing who is logged in, and getting advice and recommendations from the system. We are seeking a project student interested in software engineering to develop a Java-based GUI to enable this functionality. Applicants must have experience with Eclipse and the Java Swing toolset; a background in user interface design is recommended but not required. Contact: Swapneel Sheth, swapneel@cs.columbia.edu.

- Social Software Engineering: We have developed a tool called genSpace that enables collaboration and knowledge sharing via social networking metaphors. This tool is currently integrated with the geWorkbench platform for integrated genomics and computational biology, and is designed with a component-based, plug-in architecture. Further investigation is required to understand the software engineering implications of retrofitting social networking capabilities onto standalone applications, e.g., caching, fault tolerance, privacy, etc. We are seeking a project student to analyze and implement such features with an eye towards good software engineering practices. Applicants must have experience with Eclipse and Java. It is also recommended that applicants have completed a software engineering course and/or have worked in a professional software development environment; applicants should also have experience with Version Control (CVS/SVN) and Build Automation (ANT). Contact: Swapneel Sheth, swapneel@cs.columbia.edu.

- Collaborative Software Testing: Previously we have investigated an approach called "in vivo testing" that allows software to test itself "from within" as it is running in the field. Now we look to expand that functionality by allowing communities of software instances to share test results and responsibilities, but more importantly to also alert other instances when a defect is found, and to notify the user of the software when appropriate. We seek a project student interested in software testing and software engineering to design and implement such a system, and to conduct empirical studies with the goal of publishing the results. Applicants should have experience programming in C and Java, and be extremely organized and detail-oriented. Contact: Chris Murphy, cmurphy@cs.columbia.edu.

- Detecting Metamorphic Properties of Software: Many software applications (or functions within the application) have "metamorphic properties": that is, if the input is modified in some way, it is possible to predict what the new output will be, given the original output. We have been investigating the use of these properties to perform software testing; however, it often requires a human to specify what these properties are. We are seeking a project student to investigate the automatic detection of such properties, particularly in applications (e.g., machine learning) for which it is otherwise impossible to know the correct output for arbitrary input; the goal is to design and implement such a system, and to conduct empirical studies with the goal of publishing the results. Applicants should be interested in software testing, have experience programming in C and Java, and be extremely organized and detail-oriented. Contact: Chris Murphy, cmurphy@cs.columbia.edu.

- Autonomic Mechanisms for Reducing System Downtime due to Buggy "Upgrades": Our main objectives are to design, implement and evaluate innovative computer systems technology that focuses on autonomic support for administrators' time-consuming and error-prone operating system, application, library, utility, etc. upgrading and patching activities, particularly the testing of new "upgrades" prior to placing them into production use. Deux, a prototype implementation of such technology, will automate many of the administrators' activities while minimizing application downtime, in many cases to zero. We are seeking project students interested in software engineering, software testing, and operating systems to join our team. Applicants should be fluent in C and shell script programming for Linux, and should have taken an operating systems course. Contact: Leon Wu, leon@cs.columbia.edu.

Last updated August 13, 2008.
Copyright © 2008.