Enabling and Enforcing User-Defined Programming Disciplines Shane Markstrum University of California at Los Angeles Developing software requires a large investment of time and money to produce code that often has lurking bugs and security vulnerabilities, and a limited set of features. To help manage the complexity of building robust software systems, developers use "programming disciplines" during the creation process such as naming schemes for understandability, design patterns for extensibility, and lock ordering schemes to prevent program deadlock. But these disciplines are only informally specified and lack tooling support that would allow them to be enforced consistently on the code. This talk outlines an approach to developing tools for specifying and enforcing user defined programming disciplines and discusses an instantiation of the approach for Java called JavaCOP. The JavaCOP framework provides a declarative language for defining programming discipline rules and an extended Java compiler which enforces the discipline during compilation. The approach is validated by using a number of general purpose and domain specific programming disciplines on real open source Java projects to detect bugs and vulnerabilities. JavaCOP is an open source extension of Sun's OpenJDK javac compiler and is available at http://www.cs.ucla.edu/~smarkstr/javacop. Bio. Shane Markstrum is a Computer Science Ph.D. candidate at UCLA specializing in programming languages and tooling for software systems. His current work includes user extensible type system frameworks such as JavaCOP and Clarity, and refactoring support for concurrent languages.