UROP Opportunities

The Undergraduate Research Opportunities Program (UROP) cultivates and supports research partnerships between MIT undergraduates and faculty. If you have any questions please contact merriman@csail.mit.edu or take a look at the How to UROP at CSAIL document (pdf format).

This program is available to MIT students only.

Thanks for visiting our UROP meeting on April 1, 2008! If you missed it, please check out the postings below and email the contact directly. Any questions, feel free to email Johm Merriman at merriman@csail.mit.edu.

Addressing Privacy Leakage from Search Engine Logs

The use of query logs for studying search engines, providing customized advertising, and improving information retrieval on the Web is invaluable. This use, however, is currently restricted as it might sacrifice user privacy and expose a significant amount of private and identifying information. Efforts to address online privacy issues have been overly dominated by access restriction and privacy-preserving algorithms such as anonymization, and generalization. An alternative is to provide greater information accountability as judged against rules governing appropriate use, rather than information security and access restriction.
As a UROP working on this project you will be involved in investigating potential privacy violations while using and aggregating data from query logs and developing policies and tools to capture these violations.

Requirements: Programming experience in Python and JavaScript highly desirable. Familiarity with logic programming and/or Semantic Web technologies a plus.

Contact:
Lalana Kagal (lkagal@csail.mit.edu)

Advanced Network Architecture Group

In network and distributed systems research, one of the vehicles for studying proposed ideas is to run them in a testbed, an environment allowing for experiments to be repeated or modified under the experimenter's control. Two primary testbed environments for this are PlanetLab and Emulab. In both of these testbeds, when the experimenter sets up a large experiment, it is very likely that one or more of the requested nodes fail to function properly. Because these are very complex environments with many things happening simultaneously, it often is not clear why a node is failing and whether that can be avoided in the future. The focus of this work is to build a management tool that will observe and collect information about such failures in order to develop models of the failures. The purpose is to either fix the problems or avoid them. Initially the work will be done in the DETER testbed, a testbed that uses the Emulab codebase, but has additional mechanism to make it suitable for challenging security experiments. This job requires operating systems experience and interest and can easily lead to an MEng thesis.

Requirements: Operating systems programming in C or C++, 6.033, 6.170, preferably also 6.824 or 6.828. Also helpful is an interest in either failure diagnosis or machine learning.

Contact:
Karen Sollins (sollins@csail.mit.edu) or Ji Li (jli@csail.mit.edu)

Advanced Network Architecture Group: Making networks intelligent

As networks become increasingly central to our computing, social, and economic activities, they also are decreasingly manageable. By this we mean that we have less control over how they function and how to solve problems when they aren’t functioning appropriately. In this context, we focus on core capabilities to make networks increasingly self-knowledgeable, self-analyzing and repairing, and self-improving. To do that we partition the problem space into tools for measuring and metering what is happening, tools for figuring out what is desired, and tools for figuring out whether what is happening is what is desired, necessary, or in need of improvement or repair. Two key components of the infrastructure are a distributed agent system and an underlying “information plane” for distributing and sharing the collected information, that support both cooperation across parts of the global internet and security and economic partitioning as required to be feasible. One of the objectives is to make tools and information as sharable and reusable as possible. We do this work in several testbed environments, (1) DETER, a testbed for security experimentation with particularly interesting security challenges, (2) PlanetLab, a much more open and widely available environment that allows us to scale to Internet size and distribution, and (3) we have plans for a testbed of small, hand-held wireless devices that we will build here at MIT that will allow us to experiment with issues of mobility.

Requirements: Seeking: up to 3 students for the summer. Projects range from introductory projects for students new to CSAIL to ones that will require operating systems programming in C or C++, 6.033, 6.170, preferably also 6.824 or 6.828. These latter projects are likely to lead to MEng theses as well.

Contact:
Karen Sollins (sollins@csail.mit.edu) Please send resume (classes taken), programming experience, including relevant projects, jobs either at MIT or elsewhere, and something about your interests.

Advanced Web Application: Tabulator

The Semantic Web is the newest, most transformative development in Web technology, and the Tabulator project, http://www.w3.org/2005/ajar/tab, is maybe the coolest project out there, as it provides the user with ability to explore the global of interconnectedness of all things, and to participate in the collaborative space.
This will be the third year of the project, which has been almost completely UROP-driven. Each year the Tabulator becomes more powerful. It is an add-on to the Firefox browser, and currently it allows one to explore the semantic web, slice and dice the information, making instant mashups such as maps and timelines, and also (since last year) editing new data and correcting incorrect data.
By the end of this summer, with your help, we want it to be yet more powerful, with enough smarts to allow a new user to take part in a completely decentralized social network, which unlike the SNSs you know connects between people across all sites. We would like the display to not not only allow editing, but to automatically update whenever a data item is edited elsewhere. (Sounds simple but not simple to engineer).
There is a large list of tasks large and small to be done. The tabulator forms a platform, which allows interesting developments to be done rapidly - you can both contribute to this and use it.

Requirements: You must be able to program in javascript, and you must be able to work in a team. If you have experience in dynamic HTML and/or Firefox, network programming, RDF, SPARQL etc that is useful but not essential. You will join an exiting team, but you have your own project within the larger project. You will contribute your part, but it must fit in well with other's work.

Contact:
Tim Berners-Lee (timbl+urop@w3c.org)or Ralph Swick (swick@csail.mit.edu)

Biological Network Analysis

UROP opening for highly motivated student to investigate biological networks. Student will be involved in designing and developing new methods for biological network analysis. Student should be able to work relatively independently. Work involves Harvard Medical School/MIT collaboration.

Prerequisites: Very strong Java background and knowledge of algorithm design.

Contact:
gil @ csail dot mit edu

Building a Verified NAND Flash Filesystem

Flash memory is increasingly being used in a wide variety of applications, such as portable music players, laptop drives, digital cameras, and more recently, on-board storage on the NASA's Mars Exploration Rovers. In a well-known incident, a flaw in the flash filesystem software caused a major system failure in one of the Rovers. Motivated in part by this incident, we at the Software Design Group are interested in applying rigorous software development techniques to build and verify a flash filesystem suitable for use under mission-critical settings.
We are looking for a summer UROP to work with us in the implementation of a NAND flash filesystem. The implementation, rather than being ad hoc, will closely follow a design specification of a flash filesystem written in Alloy, a declarative modeling language; the correctness of the specification has already been formally analyzed in the Alloy Analyzer. Once the implementation is completed, the UROP will then work with us to check the conformance of the code to the specification using the Forge analysis framework. During the project, the UROP will gain experiences in rigorous software development techniques, software modeling, and verification techniques.

Requirements: Excellent software engineering skills (6.005 or 6.170); Knowledge of a NAND flash filesystem, preferably gained through the first design project in 6.033 (Spring 2008 term); knowledge in first-order logic is a plus.

Contact:
Eunsuk Kang (eskang@csail.mit.edu)

Circuit Simulation on Parallel Computers

This a new research effort exploring how best to implement circuit simulation algorithms in parallel computing environments. Modern electronic circuits have millions of components operating concurrently and simulating those circuits at either the analog level (e.g., with Spice) or digital level (e.g., with Verilog) simulation offers opportunities for massive parallelism.
As a UROP working on this project you would be involved in one or more of the following:
* setting up a parallel development and execution environment on a new computing cluster (64 total cores, 8 machines each with two quad-core processors). Perform basic benchmarks on common parallel computing primitives in both multi-threaded and multi-processing contexts.
* evaluate (or create!) alternative performance measurement and visualization tools to analyze the detailed run-time behavior of parallel programs. Of particular interest are communication overheads and the utilization of processor cores.
* implement analog and digital simulation kernels using either Java or C++. Experiment with different techniques for parallelizing the kernels, making appropriate performance measurements.

Requirements: Some programming experience will be helpful. Students who have never had a UROP at CSAIL are particularly welcome!

Contact:
Chris Terman (cjt@mit.edu)

Cognitive Function Diagnosis From Drawings

Summer UROP (with continuation possible next year).

For several decades neurologists have used a deceptively simple test to help evaluate cognitive capability: patients are asked to draw a clock face showing 11:10. The long history of use of the test has allowed physicians to make significant diagnoses (e.g., stroke, Alzheimer's) from simple characteristics of the resulting drawing. With new technology available from a pen that digitizes as you write with it, we now have available data that is hundreds of times more precise than anything that can be discerned from ink on paper, along with virtually instant access to the data. This project involves helping to design and develop the next generation of analysis software, building on the foundation already in place. Along with the interesting analysis of penstroke data, there is the intriguing possibility of using machine learning techniques to find previously undetected diagnostic features.

Prerequisites: Solid knowledge of Java.

Contact:
Randall Davis (davis@csail.mit.edu)

Compiler for Multicore Architectures

The computer industry has recently embraced a trend known as multicore architectures: multiple independent processors that are integrated on a single chip. For example, the IBM/Sony Cell chip contains nine independent processing cores and the Tilera TILE64 processor contains 64 cores. However, it remains a central and critical challenge to develop a programming model that can naturally exploit the performance of such chips.

This project will focus on developing high-performance compiler backends for one or more multicore architectures. Our programming model is StreamIt: a novel language developed in our group that naturally exposes all of the parallelism needed to obtain good performance on multicores. In mapping StreamIt to a new multicore architecture, this project will give broad exposure to compiler design, computer architecture, and performance optimization.

Candidates should have excellent software engineering skills (A in 6.170) and compiler skills (A in 6.035, or currently enrolled). Knowledge and interest in computer architecture also helpful (6.004, 6.823). We are looking for a senior who plans to pursue an MEng, though exceptional juniors may also apply.

More information on this project is available at http://cag.csail.mit.edu/streamit

Contact:
Saman Amarasinghe (saman@mit.edu). Include a resume and a grades transcript.

Computer Graphics: Designing Stable Buildings

The aim of this project is to generate building designs that are physically stable, while requiring minimal structural know-how from the user. The focus is on masonry construction, since this is an example of architecture where the structure support is exposed in the form. There are three aspects to problem:
* Analysis -- determine the stability of a building with high geometric and structural complexity.
* Structural Design -- based on the stability assessment, apply optimizations to the structure that enforce feasibility and/or improve efficiency in terms of material use.
* Geometric Design -- a procedural system for efficiently creating many variations of building designs with high geometric detail.

Contact:
Fredo Durand (fredo@graphics.csail.mit.edu)

Detailed 3D CAD Modeling of Stata Center Interior

The Robotics, Vision, and Sensor Networks Group (RVSN) http://rvsn.csail.mit.edu seeks 1 to 2 UROPs to help create a detailed 3D CAD model of the interior of the Stata Center. Initially, we will shoot for a reasonably accurate model of each floor, with walls, support columns, ceilings, doors, and windows. The next step will be to fill in vertically connecting elements such as stairwells, elevator shafts, and ramps. Optionally, the student could also model major non-structural elements such as open-space seating partitions.

Requirements: We have some legacy data, including 2D floorplans from the architects. Achieving a useful 3D model will require proficiency with a 3D modeling tool (e.g. AutoCAD, CATIA, 3D Studio, etc.), ability to do field measurements, and optionally some ability to program, for example to parse 2D floorplans and "extrude" 3D polygons.
Such a model will have many uses; our primary need is for "ground truth" data to evaluate a number of current projects in robotic mapping and localization within RVSN.

Contact:
Seth Teller (teller@csail.mit.edu)

Distributed Stream-Processing Language for Sensor Networks

WaveScript is a new programming language for distributed real-time sensing applications that is being used to detect and track wild animals with microphone arrays, monitor EEG streams, and detect leaks in underground pipes using vibrations. It offers a number of innovative features to deal with very high data rates as well as the difficulties of operation in an embedded and wireless environment.
We are building a number of additional applications with WaveScript and extending the language and compiler in several exciting directions. Hence, we are looking for UROP students to try out our system, help us develop applications, and possibly become involved in compiler and programming language design. Interested students should also have strong software engineering skills (6.170); background in compilers (6.035) is not required but would be beneficial for students looking to work on system internals. Students interested in hacking hardware or building new sensors and platforms would also be welcome.
More details at: http://wavescope.csail.mit.edu/

Contact:
Sam Madden (madden@csail.mit.edu)

Grasping with a 7-DOF Robotic Arm

The Learning and Intelligent Systems Group has a 7-DOF Barrett arm that we're trying to use to grasp objects (http://lis.csail.mit.edu/wiki/index.php?n=Main.LluddTheWam). We're looking for someone to work on robot-related tasks, such as incorporating fingertip force-torque sensors, making touch sensors, creating a simple 2-D vision system to locate objects against a black background, and/or implementing low-level Cartesian trajectory control. Some experience coding in C (or C++) is required. The student would ideally start as soon as possible (or at least with some time before the summer starts) and continue through the summer.

Contact:
Kaijen Hsiao (kjhsiao@mit.edu)

GUI Development for a Simulation Model

We are looking for a student to participate in designing an interface for a model that is being used to make predictions for several unmanned vehicle systems.

Technical experience we are looking for (but not restricted to) includes: programming in Java, designing interfaces.

Contact:
Carl Nehme (nehme@mit.edu)

H-Store: Extremely high performance transaction processing

Databases are at the heart of many critical information systems, such as banks, airline reservation systems, and e-commerce. We want to make them much, much faster. We are building a database that is more than ten times faster than existing systems, such as MySQL, Oracle, or SQL Server.

Requirements: We are looking for a UROP to help us build the database of the future. We have a range of projects, depending on your interests. If you are interested in making databases go fast, come talk to us. Ideally, we are looking for people who understand C++ and have some experience building applications that use SQL databases. Web application experience in PHP, Ruby, or Python is a plus.

Contact:
Evan Jones (evanj@mit.edu)

Haystack Project

The Haystack project aims to develop new tools to help people organize, manipulate, and retrieve all the information they encounter on a day to day basis. A major focus is personalization, adapting over time to the specific information needs and preferences of individual users.

The research combines ideas from databases, human-computer interaction, and machine learning. We explore database tools to build a data representation rich and flexible enough to record all the information any individual consider important, and in particular make heavy use of Semantic Web technology for manipulating richly structured information on the world wide web. We apply ideas from human-computer interaction to develop interfaces that can present that rich data model and let the user work with it. And we apply ideas from machine learning to help the system observe and adapt to the preferences and perceptions of its user. We've built a number of tools including the Haystack "universal desktop client" for managing any kind of information you care about, an Ajax tool called Exhibit for creating fancy interactive web pages without any programming, and the "Jourknow" system for managing those scraps of information that don't seem to fit anywhere. You can find out more about these and other projects at the Haystack project page at http://haystack.csail.mit.edu .

We have openings for self-motivated UROPs who are interested in extending the capabilities of the system at all layers---the database back-end, the machine-learning core, or the user interface. Initiative is key as UROPs are given substantial flexibility to choose their own project. You will join a team of 6 graduate students and 5 undergraduates already working on the project. .

Contact:
Applicants should email David Karger (karger@csail.mit.edu)

Human-Computer Collaboration in Multi-UAV Supervision

We are looking for an undergraduate student to participate in the data collection and analysis phase of our Human-Computer Collaboration in Multi-UAV Supervision experiment. The job will include working with advanced Java and Matlab interfaces, importing, converting and analyzing data, and creating associated visualizations.

Requirements: Experience with Java and Matlab programming required. Experience with statistics required. Experience with SPSS a plus.

Contact:
Mary (Missy) Cummings (missyc@csail.mit.edu)

Information Access using Natural Language

The InfoLab group at CSAIL seeks students to work on the START question answering system, http://start.csail.mit.edu, which provides advanced access to information on the Web and in other databases via natural language. Knowledge of Scheme, Java, SQL, regular expressions, and basic linguistics is helpful but not required. Students will find and integrate new knowledge sources into the system, and update existing systems, immediately affecting the behavior of START as used by millions of people around the world.
Further research opportunities are available in large-scale corpus-based Question Answering, Information Retrieval, Information Extraction, and general Natural Language Processing

Contact:
Boris Katz (boris@mit.edu)

Integrating an eye-in-hand robotic arm on a mobile robot

We are interested in equipping our iRobot Create mobile robot platform with a robotic arm equipped with a camera mounted close to its end-effector (eye-in-hand) and a low-cost force-feedback sensor developed at CSAIL. Whereas the system should consist as much as possible from off-the-shelf components, small mechanical elements can be manufactured using our rapid prototyping system. As a demonstrator, we consider a weeding task. That is, the robot should be able to detect the presence of weeds in pots filled with earth using its force sensors, grab them and dispose them in a container mounted on the roboter. Emphasis of the project is less the accuracy of the gripper, but rather the robustness of the solution. A possible solution could be to try grasping the weed by trial and error, where monitoring the force sensor while pulling it will allow for ascertaining that grasping was successful. Alternatively, the student(s) can try implementing a berry-foraging task.

Contact:
Daniela Rus (rus@csail.mit.edu) and Nikolaus Correll (nikolaus@csail.mit.edu)

MIT Center for Collective Intelligence

The Center for Collective Intelligence (http://cci.mit.edu) is focused on answering the question, How can people and computers be connected so that- collectively-they act more intelligently than any person, group, or computer has ever done before? The Center includes faculty from around MIT, including CSAIL, Media Lab, and Sloan. We expect to have opportunities for summer jobs, MEng, UROP, or other student work on a project to combine human and machine intelligence in flexible new ways to make accurate predictions about future events such as product sales, political events, and outcomes of medical treatments. Initial work will include developing a flexible web server and user interfaces for on-line markets of various types.

Contacts:
Thomas Malone (malone@mit.edu), Randall Davis (davis@csail.mit.edu), or Peter Szolovits (psz@mit.edu).

Multimodal Dialogue Systems for Second Language Acquisition

Ongoing research in the Spoken Language Systems group at CSAIL, spanning the past several years, has involved developing spoken dialogue systems specifically designed to help a student learn a second language. Students play simple games on the computer, and communicate with the computer using natural spoken language. We are currently focusing on the language pair English/Mandarin, and several different game variants are being developed, in which a student learning Chinese interacts with a software dialogue partner by speaking in Chinese or by listening to spoken Chinese commands. A robotic "tutor" can both suggest possible dialogue moves and provide translation assistance. The Web-based remote server model potentially allows easy access to students from around the world.

Requirements: We are seeking a summer UROP to help with the development of these systems. Programming experience in Java is essential, and experience in C or C++ highly desirable. We will especially favor students who are both experienced in Java and fluent in Chinese. The research will involve a wide range of possible topics, such as developing new variants of computer games, developing high quality concatenative speech synthesis in narrow domains, or performing and analyzing user studies.

Contact:
Stephanie Seneff (seneff@csail.mit.edu)

Programming Spatial Computers

Space-filling computers are an emerging problem across a wide range of disciplines---sensor networks, biofilms, FPGAs, morphogenesis, swarm robotics, etc. A typical spatial computer is composed of a vast number of unreliable parts, and we need programming tools that can marshal them effectively to produce robust aggregate behavior. The amorphous medium abstraction enables this by breaking the task into three loosely coupled subproblems: global programs for a continuous space, a global to local compiler, and emulation of continuous space by a discrete network. We have implemented these ideas with our language Proto, and have begun applying it in the areas of sensor networks and reconfigurable robotics, both in simulation and on Mica2 Motes

More information on this project is available at http://people.csail.mit.edu/jrb/stp/stpg.htm

Contacts:
Hal Abelson, Jake Beal, Jonathan Bachrach (hal@mit.edu, jakebeal@mit.edu, and jrb@csail.mit.edu)

QLink Development

The T-Party Project has been working on developing the QLink, a hand- held device that provides a flexible user interface for smart devices in the local physical environment, helping them interact with the user's virtual environment. This summer we will be experimenting with building a QLink prototype on top of Linux-based mobile internet devices (MIDs).
As a UROP in this project you would be involved in one or more of the following:
* continued development of the Linux-based runtime environment for the MIDs
   - device drivers for the device's peripherals
   - a multi-radio communications stack
   - a virtualization layer that stores all device state non-locally
* development of a QLink SDK with emulation environment
* adaptation of T-Party APIs to the QLink environment
   - natural language interfaces
   - JustPlay: automated deployment of distributed applications
   - UIA: easy, secure connections between introduced devices
* creation of QLink applications

Requirements: Programming experience required, Linux experience will be helpful.

Contact:
Chris Stawarz (cstawarz@csail.mit.edu)

Security-enhancing dynamic binary rewriting

Programs running on modern CPUs are vulnerable to security risks induced by side-channel information leakage within the computer architecture. Contention for shared resources, such as memory and CPU units, creates inadvertent cross-talk between processes, which is devastating for security-sensitive applications, and has been demonstrated to allow attacks on cryptographic code. The issue is further aggravated by parallelism in multithreading and multicore processors. This project explores a novel approach to mitigating such attacks, using Dynamic Binary Rewriting (DBR) to transform programs in a way that reduces their inadvertent information leakage. It involves the study of this class of side channels and the design, implementation and testing of code transformations that improve programs' resilience to such security risks.

Prerequisites: Candidates should be senior or junior with excellent skills in software engineering (6.170 or 6.005) and knowledge in basic computer architecture (6.004). Knowledge in advanced architecture (6.823), compilers (6.035), security (6.857), exploits and/or the Linux kernel can be helpful.

Contact:
Saman Amarasinghe (saman@mit.edu) Include a resume and a grades transcript.

Sensor fusion for position estimation

Position estimation is a recurrent problem in robotics and sensor networks. Sensors currently being used include GPS, odometers, and accelerometers. All of these have their own strengths and weaknesses. Whereas GPS performs poorly indoors and when sub-meter accuracy is required, non-absolute measurements provided by odometers and accelerometers lead to accumulation of error. On the other hand, these sensors are very accurate when displacement of the robot is small. We are interested in developing an embedded solution for appropriately fusing sensor information. A sensor board providing GPS, accelerometer, and odometry information from a mobile robotic platform and providing them to a microcontroller is available at the lab. The student will first review the literature to identify a suitable algorithm for sensor fusion, design and analyze its own algorithm and then implement them first in Matlab and then on the microcontroller (in C). The system can then be tested on a mobile robot indoors and outdoors. The student should be at ease with programming and have a strong interest in working with embedded systems.

Contact:
Daniela Rus (rus@csail.mit.edu) and Nikolaus Correll (nikolaus@csail.mit.edu)

Should I use MATLAB(R), Octave, SciLab, Mathematica(R), Maple(R), Python/scipy, or R, and what's the real difference anyway?

These days, even at the highest tech schools such as MIT, people are using very high level mathematical systems, rather than programming in C,C++,Java, or dare I mention, FORTRAN? Probably none of the stereotypes are true. You may have heard them: MATLAB is the matrix language, Octave and SciLab are open source clones, Mathematica and Maple are the symbolic languages, Python is the glue language, and R is the statistics language. The truth is more complicated.
Also true these days are that many people learn one of these very high level languages and stay there. We want to set up a system that would allow consumers to move around these languages, and users to rate the languages for such tradeoffs as numerical quality, speed, and other factors.
For example, we tried sin(2^64) in a number of these languages. The argument is unusually large, but then again, it's the edge cases that indicate something about quality. The true answer is 0.0235985099044395586343659…, but on some systems answers such as 0.312821314503348 or 0.24726064630941769 arise. It seems to depend on the software, the platform (32 bit/64 bit linux/windows) and installed libraries. If you're the kind of student who wants to find these things and can figure out what's going on, I want to work with you.
Even MATLAB are Octave are different in so many ways that are subtle. If you can find arguments a,b, and c such that size(a:b:c) give answers that differ by one in the two languages, and can understand perhaps why, then you are very talented.
Whatever you call the function that takes an n-d array and returns n (ndims in matlab, TensorRank in mathematica, etc.) if you are curious that MATLAB allows n>=2, Mathematica n>=0, and python, sort of n>=1, and what that means, and why really n is infinite in MATLAB (with dimensions that eventually all of size 1) , then I want to work with you.
Other questions are, who really has the best optimization routines? The best differential equation solvers? What trouble is caused by the complex sort in MATLAB? Etc. etc. etc.
The goal of this work is to investigate carefully differences among the languages, and set up something like wiki pages to highlight the differences, encourage quality comparisons, and ultimately have the entire world participate in this process. There are some limited useful websites already, but what we envision is far grander, and hopefully far more useful.
Meanwhile, perhaps contemplate, if you are a MATLAB user, why if x=[1 -1 i]'; y=[1;-1;-i]; why it appears x==y, yet sort(x) and sort(y) yield different answers.

Contact:
Alan Edelman (edelman@csail.mit.edu)

Space Manager for Multiple Devices

Most of us have multiple computation and storage platforms. In this project we will implement a file manager whose task will be to ensure that only one copy of each file is stored, to keep track of where that file is (computer disk drive, telephone, ipod, etc) and to introduce the adequate pointers in case of duplicates.

Contact:
Daniela Rus (rus@csail.mit.edu)

Speech-based interfaces

The Spoken Language Systems group (http://www.sls.csail.mit.edu) seeks UROPs to help develop speech-based user interfaces. Opportunities for activities include web-based speech and pen interaction, small handheld devices, kiosks, and vehicle environments.

Qualifications (depending on project)
* Java, JavaScript, C++, or Python programming expertise
* Windows and/or Linux environments

Contact:
Applicants should contact Jim Glass (glass@mit.edu)

Stata 3D CAD modeling

We are seeking a student with some CAD modeling experience (preferably AutoCAD) to make field measurements and develop a comprehensive 3D model of the Stata Center. Project web site.

Contact:
Applicants should contact Seth Teller (teller@csail.mit.edu)

Stochastic Simulation for Cell Biology

Stochastic simulation has become an important tool in biochemistry and cell biology, allowing one to model, and then simulate in time, the complex network of molecular signals found within and between cells. Unfortunately, computationally efficient implementations of these simulation algorithms are often clumsy to code and offer little flexibility when the topology of the signalling network is changed (as may often occur).
Collaborating closely with the Department of Chemical Engineering, we are working on a Stochastic Simulation Compiler (SSC) which is able to translate high-level descriptions of arbitrary signalling networks into efficient stochastic simulation code. Moreover, to produce more accurate results, these algorithms take into account concentration gradients that may exist spatially within the cell -- something that must also be expressed by our high-level descriptions. Focusing on the human immune system, such simulations can reveal interesting cellular mechanisms such as enzyme concentration feedback loops, hysteresis, and bimodality.

Requirements: We are seeking an experienced programmer to help design and implement a graphical interface that a scientist can use to describe, visualize, and simulate high-level descriptions of signalling networks, focusing specifically on spatial aspects. Through this the student will be exposed to both techniques required to produce an efficient simulation tool and to scientific approaches required to perform biochemical research. Further research may focus on changes or extensions to the high-level descriptions that enable new experimentation, or static analysis of signalling networks that may reveal intransient processes.
Experience with GUI programming (in any language) is required. A familiarity with basic chemistry and biology is also a plus, as well as a basic understanding of functional programming languages.

Contacts:
Srini Devadas (devadas@mit.edu), Mieszko Lis (mieskzo@mit.edu), or Charles O'Donnell (cwo@mit.edu)

The Genesis Group

The Genesis Group at MIT CSAIL explores the computational nature of human intelligence. We sit at the intersection of Cognitive Science and Artificial Intelligence. We have numerous projects that would suit UROPs of all interests, and most if not all of these projects could be spun out into Undergraduate or M.Eng theses. We encourage motivated undergraduates who are interested in a long-term association with our group, whose interest are piqued by any one of the project descriptions, to inquire.

Data Structures: We need new implementations of sophisticated data structures from computational geometry and machine learning; for example, we need a Java implementation of these data structures, such as a kd-tree, to do efficient range searching in a 2d plane.

Natural Language Processing (NLP): We spend a lot of time processing text. We need new implementations of established NLP algorithms for extracting meaning from text, such as word sense disambiguation (technique: statistical learning from a corpus), anaphora resolution (rule-based engines), semantic role assignment (SVMs), and event extraction. We are also pushing into new areas where there are no established algorithms for the analysis of the meaning of those texts, for example, automatically extracting discourse structure, or determining the 'moral' of a story.

GUI Programming: One aspect of our work is collecting data from human subjects, and so we are heavily invested in working on user-friendly GUI's. Our current data-collection platform is built on top of the Eclipse IDE. We need UROPs who have an interest in learning how to program GUIs in the Eclipse graphical API (the Standard Widget Toolkit, or SWT), and want to design beautiful and functional GUIs for carrying out data collection procedures.

Human Experiments: In addition to constructing tools, we need UROPs who are interested in running experiments with those tools, to test their efficiency and accuracy, and actually use those tools to do experiments, such as studying how culture affects thought, or how people learn and understand language.

Contact:
Mark Finlayson (markaf@mit.edu)

The Program Analysis Group

The Program Analysis Group (PAG) has a number of projects at http://groups.csail.mit.edu/pag/pag/projects/. (Note: This URL is only accessible from the mit.edu domain.)

PAG's research aims to make software more reliable, more secure, and easier (and more fun!) to produce. Our work includes software engineering, static and dynamic program analysis, testing, security, type theory, programming language design, and verification. If you like building software, you will enjoy this research, which is about making programming less error-prone, less tedious, and more fun. If you ever have trouble building software, you will find the research results helpful, and you may be inspired to come up with new projects.

New 2008 Project Titles include: Validating bug reports, Automatically creating environments for software model checking, Preventing bugs with pluggable type-checking for Java, Mutation testing: How good is your test suite?, Run-time checker for Java specifications, Example Oriented (Java) API Document Generator, Detecting Whether a Software Upgrade Was Successfull, Retrofitting Parallelism into Existing Sequential Code, Refactoring-aware Version Control System, Dynamic Analysis Toolkit for Java Programs, Scalable data flow analysis for Java, C/C++ dynamic analysis tools, Generating specifications in practice, Concolic Testing Engine for NASA JavaPathFinder, Cross-Testing using a Software Model Checker, Grammar-based Whitebox Fuzzing for Java, An Ethnographic Study of Obsolete Test Suites, and Grammar constraint solver. Please visit the PAG website for more information.

PAG does the best MEng research in CSAIL! An MEng thesis from PAG has won the Charles and Jennifer Johnson Thesis Award (for outstanding computer science M.Eng. thesis) in 4 of the last 6 years: 2002, 2003, 2006, and 2007.

The Spoken Language Systems Group

The Spoken Language Systems group (http://www.sls.csail.mit.edu) is investigating ways to use speech and dialogue processing in distributed applications. Some examples are using natural speech as an interface to applications on mobile devices such as cell phones, adding speech and pen capability to web interactions, and providing ways to search, browse and annotate multi-media (including OCW lectures). Opportunities also exist for UROPs interested in developing software games for learning Mandarin. Experience comparable to 6.170 or 6.033 preferred, but not necessary.

Contact:
Applicants should contact Jim Glass (glass@mit.edu)

Tracking and Modeling Ground Equipment at an Airport

Airlines have many ground vehicles that are necessary for everyday operations. In this project we will develop a GPS-based sensor and tracking network that will show in real time the position of all equipment at the airport. The devices will be deployed on United ground vehicles at the Chicago airport. Data collected will be integrated with our existing motion modeling algorithms to develop behavior models for the ground vehicles. If time permits, a scheduler will be developed to do on-line task allocation that minimizes motion.

Contact:
Daniela Rus (rus@csail.mit.edu)

Voice-Based Wiki for Cell Phones, Freshmen/Sophomores Welcome!

The Computer Architecture Group in the Computer Science and Artificial Intelligence Laboratory is seeking a bright and enterprising UROP to play a leading role in a long-term, multi-disciplinary project.

This project seeks to develop an "audio wiki" -- an open platform (like Wikipedia) that people can freely access and contribute to, but rather than using a desktop computer, they use a cell phone. This means that all content will be spoken rather than written, and there are a host of interesting challenges in user interfaces, speech recognition, and audio processing that need to be tackled.

We have developed an initial prototype of the wiki and are looking for a self-motivated UROP to make the complete system a reality. We aim to deploy a real system in Boston this fall, attracting thousands of users by the spring. To make a splash, we are initially providing a platform for movie reviews -- anyone can call in and leave a review of a movie, listen to other reviews, or leave voicemail for other reviewers.

In the long term, we hope to deploy this system where it will make the biggest difference -- in rural communities in the developing world, where cell phones are often the only computing devices available. An audio wiki will provide a new infrastructure for sharing local knowledge, irrespective of language, literacy, and Internet connectivity.

This UROP will involve many things -- some systems design, some programming, some usability testing, and some marketing. You will need to do whatever it takes to make this product a success! Once the system is working, there is also the possibility of follow-up research in user interfaces, speech technologies, and other areas.

To apply for this UROP:
* Be passionate about making a polished and usable system that will be used by thousands of people.
* Have programming experience (current code is in C and php).
* Experience with VoIP services (e.g., Asterisk) a plus, not required.
* Be able to devote 8-10 hours per week in the fall semester.
* Freshmen and sophomores welcome!

Contact:
Saman Amarasinghe (saman@mit.edu). Please include a resume (don't worry about formatting) and, if you have been on grades at MIT, an informal grades transcript.

Paid Hourly Student Employee Opportunities - NON-UROP

We have two great paid opportunities for undergraduate students to work 10-15 hours/week with Rodney Brooks on a groundbreaking DARPA project, building a robot that plays the game of Go. The dexterity/manipulation and vision behaviors that are being developed for this Go-playing robot have far-reaching implications for future robots in the manufacturing environment.

#1 EECS Student:
- fully proficient in MACS
- can drive a sound system
- fully proficient in USB protocols
bonus qualifications:
- can maintain ARM-embedded processor code

#2 Mechanically oriented person to help us build robot structures.

If interested please contact (whittaker@csail.mit.edu;)