University of California, Irvine
I am a professor in the Department of Computer Science at the University of California at Irvine. I have a courtesy appointment in the Department of Electrical Engineering and computer Science. I am a member of both the Center for Embedded and Cyber-physical Systems and the Institute for Software Research.
Graduate Students: I am currently seeking several PhD students in my group with full GSR support. Please contact me for details.
Undergraduate Students: I can accept a limited number of undergraduate research students. Students should have a 3.7 GPA or extensive software development experience.
Post-Doctoral Researchers: I am also seeking Post-Doctoral researchers. Strong candidates will have papers in first-tier programming language or other systems conferences (e.g., PLDI, OOPSLA, POPL, ASPLOS)
Brian Demsky is a professor in the 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. Brian is a Hertz Foundation Fellow.
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.
- 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.
EECS221 Multicore Programming
EECS228 Program Analysis
EECS221 Program Analysis
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 15 Spring 14 Spring 13 Spring 12
CSE25 Computational Tools for CSE
Winter 11 Winter 10
EECS10 Computational Methods in Electrical Engineering and Computer Engineering