Software Engineering and Programming Languages

Software pervades all aspects of modern life; unfortunately, so do software failures. In other engineering disciplines product correctness and reliability are the norm, but in software engineering failures are a fact of life. The price tag of this inadequacy is massive: A study by the Consortium for Information and Software Quality estimated that, as of 2020, the cost of poor quality software in the USA exceeds $2.3 trillion. Like all complex, multi-dimensional problems, the challenge of software quality cannot be addressed by any single approach. Our software engineering research includes a rich, diverse portfolio of approaches (analytical, empirical), paradigms (static, dynamic), quality attributes (correctness, reliability, security), lifecycle phases (testing, verification, repair) and products (methods, tools, artifacts).