Programming Languages and Compilers

Programmers use programming languages to express the computations they want their software to perform, and compilers to translate the resulting programs to a form that can be executed on hardware.  Research in this area focuses on language and implementation issues: how language constructs influence the way in which computations are performed; how to reason about the behavior of programs; how to translate programs efficiently and effectively into low-level code; and how to improve the performance of code, e.g., with respect to size, speed, resource usage, and/or security.

Research on programming languages and compilers at the University of Arizona focuses on practical issues.  It spans a number of different topic areas and encompasses program analyses and transformations related to software security [Collberg], static and dynamic analysis for deobfuscation and code optimization [Debray] and novel compilation techniques for new and interesting languages [Proebsting]. Ongoing research projects in this area include code obfuscation using covert channels [Collberg and Debray], generic approaches to deobfuscation [Debray], and language-agnostic optimization and parallelization of interpreted code [Debray].

2024

2023

2022

Current active grant: 
Started: Sept 2023

Project name: ODIN 
Title: ABSTRACT INTERPRETATION DRIVEN PROGRAMMING LANGUAGES
Funded by: AFOSR -- AIR FORCE OFFICE OF SCIENTIFIC RESEARCH
Duration: 5 years
Amount: $839,740

Abstract: Modern software industry extensively utilizes third-party code and code generated through au- tomation. How can we trust the code we use? The so-called generative artificial intelligence, based on large language models, already produces “almost correct” code, but almost is not enough. Raising our confidence significantly can only be achieved through scalable and effective program analysis. The state-of-the-art of trustworthy program design combines the Code with a proof of its correctness Analysis(Code), often specified by an abstract interpreter, i.e., Program = Code + Analysis(Code). This has some drawbacks: (1) Static program analysis reports false alarms and, like any alarm system, the fewer the false alarms, the more credible is the analysis. (2) The precision of program analysis depends upon the way the code is written. Therefore, effective program analyses and abstract inter- preters are code-driven, but tailor the analyzer to the code is extremely complex and expensive. We reverse the approach: Choose the analysis beforehand and then structure the code in a manner that is compliant for that particular analysis. Compliant here means with the minimum of false alarms. ODIN’s ambition is to lay the foundation of a new discipline of programming where the code can be efficiently and precisely verified by simpler analyzers: Program = Code(Analysis) + Analysis. Compliance of code wrt program analysis is a new, largely unexplored, frontier of program- ming that will provide the key technological advantage to make program analysis more widely used. ODIN will pioneer the research in fundamental aspects of programming languages: The interplay be- tween semantics and analysis, the nature of false-alarms, how to isolate Domain Specific Languages (DSL) compliant with an analysis, how their expressivity changes when the analysis changes, how to bound the imprecision of the analysis, and which methods and operations can be used to build verifiable code within these DSL.

Programming Languages and Compilers Faculty

Image
Saumya Debray headshot

Saumya Debray

Professor
Office: GS 735
Research Interests: Compilers, program analysis and optimization, programming language implementation.
(Ph.D., The State University of New York at Stony Brook, 1986)
Image
Roberto Giacobazzi

Roberto Giacobazzi

Professor
Office: GS 711
Interests: Theory of computation, programming languages, abstract interpretation, program analysis and verification, logic in computer science, history of computing.
(Ph.D., University of Pisa in Italy, 1993)
Image
Todd Proebsting headshot

Todd Proebsting

Professor
Office: GS 747
Interests: Programming languages, compilers, cloud computing, information aggregation.
(Ph.D., University of Wisconsin, 1992)

PhD Students

Image
UA Blue and Red roadrunner standing on an open laptop

Sattwik (Sunny) Das

PhD Student
Office: GS 721
Advisor: Dr. Roberto Giacobazzi