Brian Demsky

Associate Professor
Electrical Engineering and Computer Science
University of California, Irvine
email:
office:EH 4414
phone: (949) 824-0356
fax:(949) 824-3203
I am an associate professor in the Department of Electrical Engineering and Computer Science at the University of California at Irvine. I hold a courtesy appointment in the Department of Computer Science in the Donald Bren School of Information and Computer Sciences.

Students: I am currently seeking several PhD students in my group with full GSR support. Please contact me for details. It may still be possible to admit especially strong candidates for the 2014 Fall quarter.

Post-Doctoral Researchers: I am also seeking Post-Doctoral researchers.

Programming Language Research Group Page

Biographical Sketch


Brian Demsky is an Associate Professor in the Electrical Engineering and Computer Science Department at the University of California, Irvine. His current research interests include software reliability, security, software engineering, compilation, parallel software, program analysis, and program understanding. He received his B.S. degrees in Physics and Electrical Engineering from the University of Texas, Austin in 1998, his M.S. degree in Computer Science from MIT in 2001, and his Ph.D. degree in Computer Science from MIT in 2006.

Research


My group's research interests are programming languages, compilers, security, program analysis, and software engineering. Some of my group's ongoing research includes:
  • Model Checking and Testing Concurrent Data Structures: A critical component of making effective use of multi-core processors is developing scalable concurrent data structures. Developing concurrent data structures for realistic (and thus relaxed) memory models such as the C/C++11 memory model is extremely challenging. Even experts typically make subtle mistakes. We have developed the first practical tool for exhaustively unit testing C/C++11 data structures.

  • Language-Based Tools for Security: We are developing tools that learn the expected behavior of common applications and detect attacks as deviations from this behavior. Our tools can handle large software systems including MS Office, Chrome, and Adobe Acrobat.

  • Languages and Analysis for Parallelization: We do research on language designs and static and dynamic analysis for parallelization.

  • Language Design for Robust Software Systems: We have developed a static analysis that ensure that embedded systems can recover from arbitrary state corruption. We have developed languages that can isolate failures to components of a software system.

  • Bristlecone: Robust Software Systems: We have a developed a language-based approach for building robust software systems. This approach decomposes software systems into a set of a tasks, and uses task specifications to describe how to combine these tasks. In the event of a failure, our system reasons about these task specifications to adapt the execution and continue to provide service.

  • Garm: Protecting Private Data in Legacy Applications: We have developed Garm, a new tool for tracing data provenance and enforcing data access policies with arbitrary binaries. Users can use Garm to attach access policies to arbitrary data files (or parts of files) and Garm ensures that all accesses to the data across all applications and executions are consistent with the policy.

  • Data Structure Repair: We have developed data structure repair, a technique to enable programs to recover from data structure corruption errors. This technique can be applied to both volatile data structures inside a running program and persistent data structures stored on disk.

Select Publications (Complete List)



A Model Counter For Constraints Over Unbounded Strings (bibtex)
Loi Luu, Shweta Shinde, Prateek Saxena, and Brian Demsky
Proceedings of the 35th Annual ACM SIGPLAN Conference on Programming Language Design and Implementation
Edinburgh, United Kingdom June 2014

CDSChecker: Checking Concurrent Data Structures Written with C/C++ Atomics (bibtex)
Brian Norris and Brian Demsky
Proceedings of the 2013 Conference on Object-Oriented Programming, Systems, Languages, and Applications
Indianapolis, Indiana October 2013

Self-Stabilizing Java (bibtex)
Yong hun Eom and Brian Demsky
Proceedings of the 2012 Conference on Programming Language Design and Implementation
Beijing, China June 2012

DOJ: Dynamically Parallelizing Object-Oriented Programs (bibtex)
Yong hun Eom, Stephen Yang, James C. Jenista, and Brian Demsky
Proceedings of the ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming
New Orleans, Louisiana February 2012

OoOJava: Software Out-of-Order Execution (bibtex)
James C. Jenista, Yong hun Eom, and Brian Demsky
To Appear in the Proceedings of the ACM SIGPLAN Annual Symposium on Principles and Practice of Parallel Programming
February 2011

Bamboo: A Data-Centric, Object-Oriented Approach to Multi-core Software
Jin Zhou and Brian Demsky
Proceedings of the 2010 Conference on Programming Language Design and Implementation
June 2010

Views: Object-Inspired Concurrency Control
Brian Demsky and Patrick Lam
Proceedings of the 2010 International Conference on Software Engineering
May 2010

Bristlecone: A Language for Robust Software Systems
Brian Demsky and Alokika Dash
Proceedings of the 22nd European Conference on Object-Oriented Programming
July 2008

Inference and Enforcement of Data Structure Consistency Specifications
Brian Demsky, Michael D. Ernst, Philip J. Guo, Stephen McCamant, Jeff H. Perkins, and Martin Rinard
Proceedings of the 2006 International Symposium on Software Testing and Analysis
July 2006

Data Structure Repair Using Goal-Directed Reasoning
Brian Demsky and Martin C. Rinard
Proceedings of the 2005 International Conference on Software Engineering
May 2005
ACM SIGSOFT Distinguished Paper Award

Automatic Detection and Repair of Errors in Data Structures
Brian Demsky and Martin C. Rinard
Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications
October 2003

Role-Based Exploration of Object-Oriented Programs
Brian Demsky and Martin C. Rinard
Proceedings of the 2002 International Conference on Software Engineering
Orlando, Florida May 2002

Software


We have developed several software systems that are available for download.

Courses


EECS221 Program Analysis
Winter 14

EECS221 Compilers, Program Analysis, and Software Engineering
Spring 09 Spring 08 Winter 07

EECS218 Distributed Computer Systems
Spring 12 Spring 11 Spring 10 Spring 09 Spring 08

EECS215 Design and Analysis of Algorithms
Fall 12 Fall 06

EECS114 Engineering Data Structures and Algorithms
Fall 12 Fall 11 Fall 10 Fall 09 Fall 08 Fall 07 Fall 06

EECS40 Object-Oriented Systems and Programming
Spring 14 Spring 13 Spring 12

CSE25 Computational Tools for CSE
Winter 11 Winter 10

EECS10 Computational Methods in Electrical Engineering and Computer Engineering
Winter 06

Other


Check out my brother's mountaineering backpack company Figure Four Packs.