From managing bank transactions to controlling the space shuttle and pacemakers, software is everywhere. Today's software systems need to interact with the physical world, communicate through networks, and make decisions in real time in uncertain environments. With increasing complexity and scale, creating trustworthy software systems has become an intellectually daunting task. The software research group aims to develop techniques, algorithms, and tools that help developers and testers build reliable and secure software. The research areas covered by the group include (i) software security: developing static analysis tools for automatically discovering security flaws in software, (ii) programming languages: developing novel programming languages that enable writing dependable code, (iii) compilers: development of compilers that allow refinement of high-level models into code, and (iv) software engineering and tools: developing software engineering practices that promote effective management of software projects and automated tools that promote program understanding, software reuse, and easy maintenance of software artifacts.



Gerald Baumgartner: Compilers, Programming Languages, Software Engineering 

Doris Carver: Software Development, Reusability, Reverse Engineering

Sukhamay Kundu: Software Design, Modeling and Analysis

Supratik Mukhopadhyay: Execution Models, Program Analysis

Chris Branton (adjunct): Software Engineering and Tools

Anas (Nash) Mahmoud: Requirements Engineering, Natural Language Analysis of Code, Empirical Software Engineering


Specific Projects

Tensor contraction engine. Baumgartner works on a domain-specific language of tensor contraction (generalized matrix multiplication) equations and an optimizing compiler that generates high-performance code for a variety of different architectures. The TCE reduces the development time of quantum chemistry simulation models from months or years to hours. Supported by the NSF.

Brew project. Baumgartner investigates the design of language extensions and testing and debugging tools to improve programmer productivity.

Programming methods. Kundu works on techniques for automated object-oriented software design and techniques for improving programming productivity for beginning programmers. He also works on modeling and formal analysis of programs.

Chane-impact analysis of programs.

Formalization of Execution Models for Parallel Computing.

Video analytics. Mukhopadhyay develops an agile tracking framework for automated tracking of moving objects of different types (e.g., person, vehicle) in full-motion video (FMV). Supported by DARPA/RDECOM.

Natural language analysis of code. Mahmoud works on a novel text-processing paradigm customized for software. The main research objectives are to introduce an effective, scalable, and computationally-efficient paradigm for processing and analyzing the textual content of source code, and to integrate the proposed paradigm in working prototypes that provide support for several essential software engineering activities.