Michael Hicks

E-mail: mwh@cs.umd.edu
Phone: +1-301-405-2710
Fax: +1-301-405-6707
Office: 4131 A.V. Williams Building
Address:

Dept. of Computer Science

University of Maryland

A.V. Williams Building

College Park, MD 20742



Publications Links

I am an associate professor in the Computer Science Department and UMIACS, and an affiliate associate professor in the Electrical and Computer Engineering Department, at the University of Maryland, College Park. During the Fall 2008, I will be on sabbatical at Microsoft Research, Cambridge and the University of Cambridge Computer Laboratory.

The overarching goal of my research is to learn how to develop more flexible, reliable, and secure software. My research bridges the areas of "systems" and programming languages, in that I have frequently applied or developed language-based technology to solve systems problems, particularly in networking and distributed systems. My current projects are described below.

I am fortunate to be a part of PLUM: Programming Languages research at the University of Maryland. We developed a strategy for running our research group, which we call Scram, that we think is interesting and effective; we'd be curious to get your thoughts.

Here is my current vita and a list of my publications, organized by year and by category.

I received my Ph.D. in Computer and Information Science from the University of Pennsylvania in August 2001, and I spent one year as a post-doctoral associate affiliated with the Information Assurance Institute of the Computer Science Department at Cornell University

How fast can you type? (My best so far is 97 wpm.)

Students

Current Students:
Brian Corcoran
Eric Hardisty
Chris Hayden*
Khoo Yit Phang*
Pavlos Papageorgiou
Saurabh Srivastava*

Graduated students:
Iulian Neamtiu Asst. Prof, UC Riverside, starting Fall 2008
Polyvios Pratikakis* Post-doc, CNRS/VERIMAG, starting Fall 2008
Nikhil Swamy Researcher, Microsoft Research, Redmond, starting Fall 2008
Jeff Meister* (undergrad) Grad student, UCSD, starting Fall 2008
Nick Petroni** Research scientist, IDA/CCS since Spring 2008
Manuel Oriol (postdoc) Lecturer, Chair of Software Engineering, ETH Zurich, since Fall 2005

* co-advised with Jeff Foster ** co-advised with Bill Arbaugh

I am also working with Mike Furr and David An (advised by Jeff Foster), Justin McCann (advised by Neil Spring), and Suriya Subramanian (advised by Kathryn McKinley) on a couple of projects. In the past I have worked with James Rose and Jaime Spacco.

Research

I am currently working on a number projects.
Ginseng (students: Iulian Neamtiu, Chris Hayden, Eric Hardisty) - a practical system for dynamically updating running software.
SELinks (students: Nik Swamy and Brian Corcoran) - a programming language that supports custom-defined security policies for web applications.
LockSmith (student: Polyvios Pratikakis) - a static analysis tool for proving the absence of race conditions in C programs, requiring few or no annotations.
Path Projection (student: Khoo Yit Phang) - an approach to presenting the results of static analysis tools that accounts for the user's cognitive process. Path projection is a browser-based UI toolkit for presenting, navigating, and querying paths emitted as static analysis results.
CMod (student: Saurabh Srivastava) - A module system for legacy C programs.
Measurement-aware Data Transport (students: Pavlos Papageorgiou and Justin McCann). We are exploring ways in which passive and active measurement schemes can be integrated with transport protocols to reduce overhead and improve performance.

Here are a number of currently-inactive projects, but have some shot at restarting:
Runtime Kernel Integrity Monitoring (student: Nick Petroni) - a technique for automatically monitoring the integrity of kernel code/control-flow behavior in an effort to detect rootkits.
Cyclone (student: Nik Swamy) - a dialect of C for more reliable and secure systems programming. A hallmark of Cyclone is type safety combined with a high degree of control over data layout and memory management.
RX (student: Nik Swamy) - a programming language that supports proving the absence of illicit information flows in programs while allowing policies to evolve over time. We are targeting multi-tier web applications.
Transparent Proxies for Java (students: Polyvios Pratikakis and Jaime Spacco). A static analysis for adding or checking proxy-based functionality in Java programs, e.g., to support asynchronous method invocation in which proxies store futures---the results of computations not yet completed.
FindLocks (students: James Rose and Nik Swamy) - a tool for proving the absence of race conditions in Java programs, which uses dynamic trace data to aid a sound static analysis.
MediaNet is a distribution network for streaming data using distributed, adaptive scheduling to provide Quality-of-Service.

Teaching

Professional Activities

I have served (or am serving) on the program committees for

2009 POPL, IEEE S&P
2008 CCS, CATARS, COORDINATION
2007 PLAS (general and program chair), OOPSLA, COORDINATION, PLDI
2006 FTfJP, PLAS, SPACE, OOPS (part of SAC 2006)
2005 SCOOL, VEE
2004 IWAN, ICPP, FUSE
2003 IWAN, USE
2002 IWAN, USE
2001 IWAN