Software Engineering research in the Department of Computer Science (CS) advances the principles, methodologies, and tools that enable teams to design, build, test, and maintain high-quality software systems.
Our faculty investigate the technical and human factors that shape modern software development, emphasizing reliability, maintainability, comprehensibility, and effective engineering processes. This work strengthens the foundations of how software is created and sustained, regardless of domain, application area, or underlying platform.
Faculty explore core challenges in software correctness, developer productivity, software architecture, long-term evolution, and large-scale code comprehension. Their work combines empirical study, tool creation, and foundational engineering practices to improve outcomes for both developers and organizations.
Focus Areas
Software Quality and Analysis
Faculty develop techniques that improve the correctness and dependability of software, including automated testing, debugging, fault localization, program analysis, and methods for maintaining and evolving large codebases. This work enhances the robustness and long-term maintainability of modern software systems.
Developer Experience
This area investigates how developers work and how they navigate code, collaborate, make decisions, and interact with tools. Research includes the design of development environments, studies of real-world engineering practices, and approaches to improving productivity, comprehension, and coordination in software teams.
Software Design and Practice
Faculty explore approaches for structuring complex software systems, managing their evolution, and applying disciplined engineering methodologies. This includes research on software architecture, modularity, technical debt, real-time and mission-critical systems, and development processes such as Agile and model-driven engineering, particularly in high-assurance or large-scale environments.
Earn a MS in Software Engineering and learn advanced methods in program verification, debugging, and AI-assisted development, building the expertise needed to lead software projects across industries.