
The Software Practices Lab brings together researchers who want to build better software systems more effectively. Our projects span software engineering, programming languages, and software systems. We are interested in questions such as:
- When is a system tested enough?
- How can software developers navigate large information spaces?
- How can we express properties of a system in code effectively?
Software Engineering
We are committed to informing our work with a deep understanding of the context in which practicing software developers work. Practising developers must balance a number of different demands, including cost constraints, time limitations, existing code bases and environments, and the context in which software is applied. Recent research interests include improving how software teams work in the face of emerging AI tooling, improving how software is tested, and helping to improve developer productivity.
Programming Languages
One important avenue of work examines improving how developers express their intent and verifying that the programs they write accurately execute in practice. This line of work includes improving compilers, type systems, and approaches for verifying compilation.
Program Analysis & Verification
We also examine rigorous approaches for ensuring that software behaves as intended. This work combines both formal verification methods as well as dynamic approaches such as fuzzing to identify defects.
Location
We are located in ICICS/CS 308.