Software and services
Graduated PhD students
Current research assistants
Affiliations
|
Research interests
It is too hard to build trustworthy software systems
using conventional systems APIs. I work on higher-level,
language-based abstractions for programming that better
address important cross-cutting concerns:
security,
extensibility,
persistence,
distribution.
Selected recent publications
Diagnosing maximum-likelihood program error locations from constraint
system failures.
Pattern matching that verifies exhaustiveness and redundancy can
coexist with data abstraction and subtyping.
Program analysis and synthesis enable seamlessly moving data and
functionality between app and database servers.
For consistently good performance, Pyxis automatically migrates computation
and data to the database server.
A new architecture for secure mobile code, supporting secure use,
publication, and sharing of code across trust domains.
Awards
Distinguished paper award, PLDI 2013
Best paper award, CIDR 2013
Provost's Award for Distinguished Scholarship, 2010
James and Mary Tien Excellence in Teaching Award, 2010
ACM SIGPLAN Most Influential POPL Paper Award, 2009 (for POPL 1999)
Merrill Presidential Scholar Outstanding Educator Award, 2009
Best paper award, 21st ACM Symposium on Operating Systems Principles, 2007
Abraham
T.C. Wong '72, Excellence in Teaching Award, 2002
NSF CAREER Award, 2002
Alfred P. Sloan Research Fellowship, 2002
Best Paper Award, 18th ACM Symposium on Operating Systems Principles, 2001
George M. Sprowls Award for outstanding Ph.D. thesis (MIT EECS Dept.)
Current Projects
- Keynote address at POPL'13: How languages can save distributed computing.
-
Fabric: A federated system for securely storing, sharing, and computing information.
-
General methods for controlling timing channels.
-
Swift: Making web applications secure by construction.
- Jif: an extended
version of Java that protects privacy by controlling information flow
- Jx/J&:
language features for extensible, composable, adaptable software
-
Civitas: A practical, secure, remote voting system.
- JMatch: a
Java extension with pattern matching and interruptible iterators
- Polyglot:
a widely used, extensible Java compiler front end framework for rapid
experimentation with new language extensions.
- Program committees:
CCS'13,
POST'14,
ASPLOS'14 ERC
- Editorial Boards:
Journal of Computer Security (Co-Editor-in-Chief),
ACM Transactions on Computer Systems (Assoc. Editor)
-
▸Undergraduate and MEng research opportunities
-
[Show older projects]
Older Projects
- Program Committees:
Co-chair,
Computer Security Foundations 2010,
Co-chair,
IEEE Symposium on Security & Privacy (Oakland) '09;
PC member,
PLDI
'02, '10,
SOSP '01,
'07,
'09,
'11,
CSF/CSFW '04, '06,
'09, '10,
IEEE S&P (Oakland) '01, '04, '07, '08,
'09,
'11,
'12,
ASPLOS '13,
TLDI '09,
PLAS '08,
OOPSLA'06,
HOTDEP'06,
USENIX Security 2006,
FAST'05,
POPL '05,
'12,
OSDI '00, '04,
CCS '04,
'12,
'13
SIGOPS
European Workshop '04,
NDSS'04,
FOOL'00.
-
J\Mask: Java extended with masked types for safe, flexible object initialization.
-
SIF: Servlets with secure information flow.
-
STONESOUP: an IARPA-funded study on how to certify and run software of uncertain provenance securely
- DARPA Information Science and Technology Study Group (ISAT), 2005–2008
- Jif/split: a version of Jif that automatically partitions programs
to run securely on a distributed system.
-
J0: Java for novice programmers
- PolyJ: an extended
version of Java that supports parametric polymorphism, freely
available for both Windows and Unix.
- Thor, a
distributed object-oriented database, and Theta,
the internal programming language of Thor. This work provided scalable
techniques for efficiently implementing distributed, persistent
objects and language features such as methods and parametric polymorphism.
-
Organizer,
Dagstuhl seminar on Mobility, Ubiquity, and Security (Feb.'07)
- Invited and keynote talks:
ICISS 2010,
FMOODS 2008,
ESOP'05,
PASTE'05,
FMSE 2005
[Show courses taught]
Courses
-
Oregon PL Summer School on Logic, Languages, Compilation, and Verification, July 2012.
[ My notes ]
- Summer School Marktoberdorf 2009: Using Security Policies to Write Secure Software
- PLDI 2006 tutorial: Expressing and Enforcing Security with Programming Languages
-
Oregon Summer School on Software Security, June 2004
- CGO'03 tutorial: Security through Languages and Compilers
- CS211,
Computers and Programming (S06)
- CS2112,
Data Structures and Object-Oriented Design—Honors (S12)
- CS3110,
Data Structures and Functional Programming (S02–S04,S07,S08,F08) [CS312 Tournaments]
- CS4120/4121,
Introduction to Compilers (S99–S01,F09,F11)
- CS504, Applied Systems Engineering I (F00–F04)
- CS513, System Security (F06)
- CS6110,
Advanced Programming Languages
(F99–F01, F04–F05, F07, S09, F13)
- CS711,
Advanced Programming Languages Seminar (F02, F03)
- Engineering 150 (F04, F06)
- CS754,
Cornell Systems Lunch (2001–2010) (with E.
Gün Sirer, Paul Francis, Robbert van Renesse)
|