Department of Computer Sciences @ Purdue University
Search | General Information | Academics | Research | People | External Relations

Research Projects

These projects are a sampling of the variety of research activities underway in the Computer Science Department.


Parallel Numerical Linear Algebra
Ahmed Sameh

Areas:
Computational Science and Engineering

This research activity deals with the design and implementation of parallel algorithms for solving large sparse linear systems that arise in computational fluid dynamics, computational nanoelectronics, and computational nanomechanics. The research also deals with the development of efficient parallel algorithms for (i) the singular value decomposition, and (ii) symmetric and nonsymmetric eigenvalue problem solvers, for those large sparse matrices that arise in methods for model reduction of large-scale dynamical systems.


PLACE: Pervasive Location Aware Computing Environments
Walid Aref, Susanne Hambrusch, Sunil Prabhakar

Areas:
Databases
Networking, operating systems, distributed systems
Theory and algorithms

Combining the functionality of personal locator technologies, wireless and cellular telephone technologies, and information technologies enables new environments where virtually all objects of interest can determine their locations. The PLACE (Pervasive Location Aware Computing Environments) project focuses on the efficient support of location-aware services in such a new environment.
http://www.cs.purdue.edu/place/


Privacy Preserving Data Mining
Chris Clifton, Mike Atallah

Areas:
Databases
Information security

Data mining relies on the collection of massive amounts of data - but this often collides with privacy considerations. How do we mine data when privacy concerns limit access to the data? We are developing technology to address this in the distributed case: the data to be mined is contained at multiple sites, but the sites are unable to release the data. The solutions involve algorithms that share some information to calculate correct results, where the shared information can be shown not to disclose private data.
http://www.cs.purdue.edu/people/clifton#ppdm


Computer-Aided Mechanical Design
Elisha Sacks

Areas:
Graphics, visualization, and geometric modeling
Computational Science and Engineering

Joint work with: Leo Joskowicz, Hebrew University
Mechanical design is the task of devising an assembly of parts that performs a function reliably and economically. It is a ubiquitous activity with applications in mechanical, electrical, and biomedical engineering. Our research addresses the core design tasks of kinematic analysis and kinematic synthesis. Kinematic analysis determines the positions and orientations at which the parts of a system touch and the ways that the touching parts interact. It is a computational bottleneck in mechanical design, especially in systems with complex part shapes, tight fits, and contact changes. We have developed a general kinematic analysis method for planar mechanical systems based on configuration space computation. Kinematic synthesis is the task of devising a system that performs a specified function subject to cost, manufacturing, and safety constraints. We have developed an interactive synthesis algorithm based on configuration space manipulation. We have implemented a prototype design environment that integrates kinematic analysis and synthesis with simulation, tolerance analysis, and visualization. The software helps designers study system function under a range of operating conditions, find and correct design flaws, and optimize performance. We are working with industrial collaborators to develop practical mechanical design software based on our research, notably with Ford Motors on transmission design, with Sandia National Laboratory on micro-mechanism design, and with Israel Aircraft Industries on mechanism design.
http://www.cs.purdue.edu/visctr/cad.html


Robot Path Planning
Elisha Sacks

Areas:
Graphics, visualization, and geometric modeling
Theory and algorithms

Joint work with: Matt Mason, CMU
We are developing path planning algorithms for robots. One planner handles an articulated planar robot with a static obstacle. It has been validated on 11,000 random problems, which span dozens of robot/obstacle geometries with up to 43 moving parts and with narrow channels. Prior algorithms appear to fail on all of the test cases. A second planner handles a mobile robot, called a mobipulator, that uses four unsteered, independently driven wheels to manipulate sheets of paper on a desktop. Current work addresses spatial planning.
http://www.cs.purdue.edu/visctr/cad.html


Network Systems Design Using Network Processors
Douglas Comer
Internetworking Research Lab

Area:
Networking, operating systems, distributed systems

A network processor is a programmable processor with features that make it attractive as a building block for systems such as bridges, IP routers, firewalls, NAT boxes, and load balancers. This project seeks to understand the technology: it's capabilities, limitations, and potential uses. The project is supported with facilities from Agere Systems, IBM, and Intel; Intel has also supplied funding.


Reconfigurable Network Testbed
Douglas Comer
Internetworking Research Lab

Area:
Networking, operating systems, distributed systems

We are investigating a networking testbed that is reconfigurable. A user specifies an interconnection of hardware devices such as hosts, routers, basestations, etc., and the testbed software allocates the necessary devices, and uses switched hardware to automatically construct the specified topology and provides direct connections to the console of each device. The user then configures each device and uses the devices to run experiemnts and make measurements. Once the user finishes and releases them, the resources are placed back in a pool, making them available for reuse. We seek a system that is both sufficiantly general to handle arbitrary interconnections and sufficiently practical to operate in real time.


TCP Termination Using Network Processors
Douglas Comer
Internetworking Research Lab

Area:
Networking, operating systems, distributed systems

Network processors are programmable devices that can be used to build network systems. This project is investigating the use of network processors in devices such as web servers. There are two primary considerations that make TCP termination especially challenging: the number of simultaneous connections, and the number of new TCP connections that the system handles per unit time. We seek to maximize both. We are implementing TCP on an IBM network processor, and will use the protoctype to identify difficulties and bottlenecks.


Compiler-Assisted Research in Distributed Systems
Zhiyuan Li

Areas:
Programming Languages and Compilers
Networking, Operating Systems, Distributed Systems

This research project investigates compiler-assisted appoaches to analyze, develop, and manage applications in distributed computing systems, with the current focus on systems which consist of wireless-networked miniaturized computers. Compiler-based software tools are developed to analyze how a program's behavior corresponds to the changing data input and execution environment, using combinations of static program analysis and statistical analysis of experimental data. Such studies guide program transformations and run-time management to overcome the constraints of memory, communication bandwidth, and energy resource on wireless-networked miniaturized computers.
http://www.cs.purdue.edu/homes/li/Mobile.html


The Panorama Compiler Project
Zhiyuan Li

Areas:
Programming Languages and Compilers

The Panorama project investigates the interaction between compiler techniques and architecture designs for improved parallelism and memory performance on various classes of computers. The main experimentation tool built is the Panorama Fortran compiler.
http://www.cs.purdue.edu/homes/li/Panorama.html


Resource-Aware Compilation
Jens Palsberg
Secure Software Systems Group

Area:
Programming Languages and Compilers

Compilers are an important part of today's computational infrastructure. Programmers rely ever-increasingly on the correctness of their compilers as software is written in high- level programming languages like C, C++, and Java. It is essential that mission-critical software not fail, that mobile code can be trusted to behave properly, and that embedded software runs continuously while meeting deadlines. Even the smallest of bugs introduced by a compiler can lead to failures, security breaches, and crashes in an otherwise correct system. This project focuses on the challenges faced by compilers for embedded software. For embedded systems, predictability and resource awareness are of greater importance than execution efficiency. For example, if a compiler is not aware of the size of the instruction store for generated code, opportunities to squeeze code into the available space can be lost. A programmer can often hand-optimize generated code, but this is tedious and error-prone, and does not scale to large systems. This project is aimed towards a new generation of resource-aware compilers with solid foundations. Next-generation compilers will lead to increased confidence in a wide variety of embedded systems, including sensor networks, medical implants, engine control, and fly-by-wire/drive-by-wire systems.
http://www.cs.purdue.edu/people/palsberg


Customizable Virtual Machines: The Ovm Project
Jan Vitek, Antony Hosking
Secure Software Systems Group

Area:
Programming languages and compilers
Software engineering

Joint work with: Doug Lea, Bill Pugh, David Holmes
The goal of the Ovm project is to develop an open source framework for building customizable programming language runtime systems. Ovm is a DARPA funded collaborative effort between Purdue University, SUNY Oswego, University of Maryland, and DLTech. The current emphasis for this project is a Java™ personality for Ovm that is complies with the Real-Time Specification for Java. http://www.ovmj.org


Language-base Security
Jan Vitek
Secure Software Systems Group

Area:
Information security
Programming languages and compilers

Joint work with: Peter Sewell, Dominic Duggan
Programming languages have an important role to play in software system's security. Repeated exploits have shown that traditional languages such as C and C++ are inherently unsafe. On the other hand, programming languages can be powerful tools to enhance security in open systems as security policies can be expressed at level that is closer to the semantics of the data. This project is looking at different aspects of language-based security. The first research direction is the investigation of software composition techniques for building trusted systems out of components. We have introduced a small programming language, box-pi, which allows us to write security wrapper around untrusted components. The second research direction is looking at aliasing and ownership in object-oriented languages to define lightweight protection mechanisms. Finally, we have recently started a project on accountability in distributed systems based on cryptographic types.


Foundation and Implementation of Mobile Object System
Jan Vitek
Secure Software Systems Group

Area:
Networking, operating systems, distributed systems
Programming languages and compilers

Joint work with: Guiseppe Castagna
Programming applications over wide-area and ad-hoc networks present many challenges both from a linguistic perspective to answer such questions as what abstractions should be supported by the language; and from a system builder's point of view as issues of scale, connectivity and security must be dealt with. We are working on the Seal calculus, a higher-order distributed process calculus extended with mobility and security primitives to model mobile computations on large scale open networks. The goal of this work is to study the basic principles underlying internet programming languages and drive the design of a full fledged language. The JavaSeal system is an implementation of the Seal calculus which provides a secure and portable model of weak mobile computation for Java programs. GNUnet is a framework for secure peer-to-peer networking that does not use any centralized or otherwise trusted services. A first service implemented on top of the networking layer allows anonymous censorship-resistant file-sharing.