Programming Languages, Formal Methods, and Software Engineering
The growing complexity and scale of software poses formidable challenges for reliability, security, performance, and productivity. Our faculty tackle these problems by developing innovative techniques in programming language design and semantics; techniques and tools for formal verification, software testing, and automated debugging; and models and verification techniques for embedded systems that interact with physical entities.
We are known for theoretical advances such as the Actor model of concurrency; rewriting logic and related semantic frameworks; concolic testing for automated test generation; automated logic reasoning; automated inference of specifications and invariants; and control-theoretic techniques for analyzing cyberphysical systems. We have also produced widely-used tools and techniques like the Maude rewriting engine; the LLVM compiler infrastructure; the Chisel optimization system for approximate computing; the first complete formalizations of C, Java, and Javascript; regression test suite reduction techniques; and educational tools based on automated test generation (CodeHunt;Pex4Fun) that have attracted over a million users.
CS Faculty, Affiliated Faculty, and Their Research Interests
Vikram Adve | Programming Languages, Compilers, Parallel Programming, Domain-Specific Languages, Automated Debugging, Formal Verification, Software Repositories |
Gul Agha | Models for Concurrent Computation; Parallel and Distributed Algorithms |
Mattox Beckman | Parsers and Parser Generators, Clone Detection, Functional Programming and Type Classes, Matching Logic, Category Theory |
Elsa Gunter | Formal Methods, Programming Languages, Software Engineering, Semantics, Interactive Theorem Proving, Model Checking, Type Systems, Program Verification, Compiler Correctness |
Darko Marinov | Software Engineering, Software Testing |
Jose Meseguer | Formal Executable Specification and Verification, Software Architecture |
Andrew Miller, Electrical & Computer Engineering | Design of Secure Decentralized Systems and Cryptocurrencies |
Sasa Misailovic | Program Optimization Systems, Approximate Computing Techniques |
Sayan Mitra, Electrical & Computer Engineering |
Formal Methods, Automated Reasoning |
David Padua | Program Analysis, Transformation, and Optimization |
Madhusudan Parthasarathy | Formal Methods, Software Verification, Model Checking, Decidable Logics |
Lawrence Rauchwerger | Languages for Parallel Computing, Run-Time Systems for Parallel Computing, Compilers for Domain Specific Parallel Languages |
Grigore Rosu | Software, Design, Semantics and Implementation of Programming Specification Languages |
Mahesh Viswanathan | Model Checking, Logic, Cyberphysical Systems, Software, Security |
Tao Xie | Software Engineering, Software Testing, Program Analysis, Software Analytics |
Tianyin Xu | Operating Systems, Cloud and Datacenter Systems, System Reliability and Resilience, Large-Scale System Management, Configuration Management, and Reliability Engineering |
Adjunct Faculty
Danny Dig, EECS Department, Oregon State University | Software Engineering, General and Interactive Program Transformations |
Programming Languages, Formal Methods, and Software Engineering Research Efforts and Groups
- PL/FM/SE at Illinois
- Coordinated Science Lab (CSL)
- Assured Cloud Computing-University Center of Excellence (ACC-UCoE) in the Information Trust Institute
- Science of Security (SOS) Lablet in the Information Trust Institute
- The LLVM Compiler Infrastructure
Seminars
Brett Daniel Software Engineering Seminar (cs591se), named in memory of Brett Daniel
https://wiki.cites.illinois.edu/wiki/display/SoftEng/Home
Subscribe to FM seminar mailing list