Programming Languages

Vikram Adve

Professor Adve's broad research interest lies in using compilers (more generally, program analysis and transformation techniques) as tools for improving the performance, programmability, and security of modern computer systems. His research emphasizes the development of novel systems, compilation techniques, and (where necessary) language features to address these problems.

Gul Agha

The goal of Prof. Agha's research is to understand the nature of concurrent computation. Results of the research will lead to new ways to build and maintain open distributed systems. Specifically, his group is developing concurrent programming languages and systems that support applications with high-performance, fault-tolerance, or real-time requirements.

Elsa L. Gunter

The focus of Prof. Gunter's research has been and continues to be on theorem proving with an automated assistant, and its application to reasoning about protocols, programs, and programming language semantics. Theorem provers capable of supporting general mathematical reasoning offer the greatest flexibility for developing programming language semantics and for proving properties of programs.

Ralph Johnson

Prof. Johnson is the leader of the UIUC patterns/Software Architecture Group and the coordinator of the senior projects program for the department. His professional interests cover nearly all things object-oriented, especially frameworks, patterns, business objects, and Smalltalk. He does a lot of research in refactoring, including work with Java, C, and Fortran.

Madhusudan Parthasarathy

Professor Parthasarathy applies formal methods to the development of trustworthy software. The Java Interface Synthesis Tool (JIST) is an example of that work. JIST is a set of automated tools and techniques to synthesize interfaces to Java modules.

Grigore Rosu

Professor Rosu is interested in software in a broad sense. He has worked on the following subjects.

Deterministic Parallel Java

funded by the National Science Foundation, Intel, and Microsoft

The Memory Model for Java

The memory consistency model for a multithreaded programming language determines the ease of programming and possible hardware and compiler optimizations. The Java programming language is perhaps the first commercially successful language to incorporate threads as first-class objects. Unfortunately, the memory model of Java is incompletely and incorrectly specified.

Safety Policy Checking

Software developers often overlook errors in their code. To make an error or a mistake is human, but software errors can be catastrophic these days. The problem of guaranteeing that a program is entirely correct is known to be unfeasible in non-academic environments.

SAFECode: A Compiler System for Enforcing Memory Safety in C Programs

funded by National Science Foundation, ONR, and the SRC MARCO/DARPA consortium