office | ECCS 121C |
---|---|
430 UCB, Boulder, CO 80309-0430 USA | |
phone | +1 303 492 8894 |
fax | +1 303 492 2844 |
zoom | 303 492 8894 |
Ph.D. Positions. I am always looking for enthusiastic students interested in working with me on research projects in programming languages and software systems. If you are interested in finding out more, please contact me.
For insight into the Programming Languages and Verification group, take a look at a recent recruiting talk.
I am an Associate Professor in the Department of Computer Science and the Department of Electrical, Computer, and Energy Engineering (by courtesy) at the University of Colorado Boulder. I co-direct the Programming Languages and Verification Group (CUPLV). I am also a Scholar with Amazon.
My research focuses on making software better and programmers more productive by investigating the fundamental principles and techniques needed to algorithmically assist the software developer throughout the software engineering process. Our advances seek to help users better specify what they care about, interact with automated reasoning engines, triage the alarms from tools, and leverage source code repositories to improve their software. This work is often driven the needs of today's real-world applications to ultimately inform tomorrow's designs.
I completed my Ph.D. with George Necula at the University of California, Berkeley and spent a semester as a postdoctoral researcher with Jeffrey S. Foster in the PLUM group at the University of Maryland, College Park before joining the University of Colorado Boulder.
Current PhD Students
Termination, complexity, and cost analysis: denial-of-service, algorithmic security vulnerabilities, Java. Co-advised with Pavol Černý. |
|
Specification and verification of event-driven systems: lifestate specifications, specification mining, callbacks, Android. |
Graduated PhD Students
Precise refutation analysis: heap reachability, may-witnesses, false alarm triage, memory leaks, Android, Java. |
|
Modular verification of almost-everywhere invariants: method reflection, Objective-C |
|
Abstract domain combinators for dynamic languages: reflective metaprogramming frameworks, JavaScript. Co-advised with Sriram Sankaranarayanan. |
|
Incremental and demand driven abstract interpretation; goal-directed abstract interpretation for dynamic languages. |
Past Research Scientists
Edmund S.L. Lam
|
Mining and understanding bug fixes for app-framework protocol defects: property-based testing of interactive apps, big data pipelines. |
Past Post-Doctoral Fellows
Mining and understanding bug fixes for app-framework protocol defects: event-based object protocol verification. |
Graduated MS Students
Yi-Fan Tsai
|
Incremental verification-validation: data structure invariants, incrementalization, C. |
Teaching
Principles of Programming Languages
|
CSCI 3155 |
Compiler Construction
|
CSCI 4555/5525, ECEN 4553/5523 |
Fundamentals of Programming Languages
|
CSCI 5535 |
Program Analysis: Theory and Practice
|
CSCI 7135 |
Program Analysis Practicum
Spring 2017 and Spring 2011
|
CSCI 7135 |
Readings in Programming Languages
Spring 2012: Analysis of Dynamic Languages
|
CSCI 7900 |
Selected Projects
Developing program analysis, probabilistic inference, program synthesis, social data mining, and big-data engineering tools to cooperative repair Android framework protocol misuses.
A community-driven modeling of the Android framework for static analysis of Android applications. Droidel seeks to be a general purpose model for static analysis based on minimal explication of dynamism in the Android framework code.
An abstract domain constructor for inferring invariants about sets and set properties of containers.
A static analysis tool for C and Objective-C that verifies invariants that hold almost everywhere, including the safety of reflective method calls.
A framework for incremental and demand-driven compositional abstract interpretation in arbitrary abstract domains and without loss of precision.
Recent Papers
Recent Talks
Professional Activities
OOPSLA 2024 |
Review Committee Co-Chair
ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications
|
CAV 2024 |
Program Committee Member
International Conference on Computer Aided Verification
|
SPLASH 2023 |
Sponsorship Co-Chair
ACM SIGPLAN Conference on Systems, Programming, Languages and Applications: Software for Humanity
|
CAV 2023 |
Program Committee Member
International Conference on Computer Aided Verification
|
VMCAI 2023 |
Program Committee Member
International Conference on Verification, Model Checking, and Abstract Interpretation
|
SPLASH 2022 |
Sponsorship Co-Chair
ACM SIGPLAN Conference on Systems, Programming, Languages and Applications: Software for Humanity
|
CAV 2022 |
Program Committee Member
International Conference on Computer Aided Verification
|
PLDI 2022 |
Program Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
CAV 2021 |
Program Committee Member
International Conference on Computer Aided Verification
|
CAV 2021 |
Sponsorship Chair
International Conference on Computer Aided Verification
|
PLDI 2021 |
Program Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
SAS 2020 |
Program Committee Member
International Static Analysis Symposium
|
PLDI 2020 |
External Review Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
POPL 2020 |
Program Committee Member
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
OOPSLA 2019 |
Review Committee Member
ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications
|
SAS 2019 |
Program Committee Chair
International Static Analysis Symposium
|
ISSTA 2019 |
Program Committee Member
International Symposium on Software Testing and Analysis
|
SAS 2018 |
Program Committee Member
International Static Analysis Symposium
|
ASPLOS 2018 |
External Review Committee Member
ACM International Conference on Architectural Support for Programming Languages and Operating Systems
|
APLAS 2017 |
Program Committee Chair
Asian Symposium on Programming Languages and Systems
|
ECOOP 2017 |
Program Committee Member
European Conference on Object-Oriented Programming
|
PLDI 2017 |
Program Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
APLAS 2016 |
Program Committee Member
Asian Symposium on Programming Languages and Systems
|
SAS 2016 |
Program Committee Member
International Static Analysis Symposium
|
VMCAI 2016 |
Program Committee Member
International Conference on Verification, Model Checking, and Abstract Interpretation
|
POPL 2016 |
Program Committee Member
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
VSTTE 2015 |
Program Committee Member
IFIP Working Conference on Verified Software: Theories, Tools, and Experiments
|
PLDI 2015 |
External Review Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
POPL 2015 |
External Review Committee Member
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
POPL 2014 |
Co-Treasurer
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
TAPAS 2013 |
Program Committee Chair
International Workshop on Tools for Automatic Program Analysis
|
POPL 2013 |
Treasurer
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
TAPAS 2012 |
Program Committee Member
International Workshop on Tools for Automatic Program Analysis
|
PLDI 2012 |
External Review Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
POPL 2012 |
Treasurer and External Review Committee Member
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
VMCAI 2012 |
Program Committee Member
International Conference on Verification, Model Checking, and Abstract Interpretation
|
NSAD 2011 |
Program Committee Member
International Workshop on Numerical and Symbolic Abstract Domains
|
LCPC 2011 |
Program Committee Member
International Workshop on Languages and Compilers for Parallel Computing
|
PASTE 2011 |
Program Committee Member
ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering
|
POPL 2011 |
Treasurer
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
POPL 2010 |
Co-Treasurer
ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages
|
FRACTAL F2009 |
Organizer
Front Range Architecture Compilers Tools and Languages Workshop
|
PLDI 2009 |
External Review Committee Member
ACM SIGPLAN Conference on Programming Language Design and Implementation
|
AIOOL 2005 |
Program Committee Member
International Workshop on Abstract Interpretation of Object-Oriented Languages
|