progsys mascot

UCSD Programming Systems

The Programming Systems Group in the Department of Computer Science & Engineering at the University of California, San Diego is interested in developing new languages, compilers, program analysis techniques and development environments for making software systems easier to build, maintain and understand.

Faculty

Jeanne Ferrante
Optimizing Compilers, High Performance Computing
Bill Griswold
Evolution of Large Software Systems, Aspect-oriented Software Development
Ranjit Jhala
Software Verification, Model Checking, Program Analysis, Automated Deduction
Ingolf Krueger
Design, Implementation, and Verification of Distributed, Reactive Systems
Sorin Lerner
Compiler Correctness, Software Verification, Program Analysis, Domain-specific Languages

Affiliated Faculty

Brad Calder
Computer Architecture, Compiler Optimizations, Virtual Machines
Alin Deutsch
Privacy in Database Publishing, Interactive Tools for Data Integration, Specification and Verification of Database-powered Web Applications
Rajesh Gupta
Embedded System Specification, Embedded System Modeling and Synthesis, System-level Power Management
Yannis
Papakonstantinou
Web & Databases, Data Integration
space
Allan Snavely
High-performance Computing
Dean Tullsen
Computer Architecture, Simultaneous (and other) Mulithreading Processors, Compiling for Multithreaded Architectures and Low-power Processor Architectures
Amin Vahdat
Distributed Systems, Computer Networks, Operating Systems, Programming Tools for Implementing and Verifying Distributed Systems
Victor Vianu
Database Systems and Theory, Querying Semi-structured Data, Static Analysis for XML-based Mediators

Publications

Projects

BLAST
A verification tool for C programs based on Lazy (Predicate) Abstraction
Rhodium
A framework for provably correct compiler optimizations
Mace
A toolkit and language for building distributed systems
WAVE
A system for specifying and verifying interactive database-powered web applications
Trident
Event-driven compilation framework that allows compilation and execution to take place concurrently on a hardware multithreaded architecture.
BugNet
Software and hardware support for debugging
Aspect Browser
A tool for visualizing, organizing, and manipulating crosscutting concerns
SOSA-ADL
A language for describing the architecture of service-based applications
Service Semantics
A precise mathematical foundation for formalizing the notion of service
Entropia VM
A virtual machine for enabling safe desktop grid computing
LENS
A program-data manipulation framework to increase the flow of information between compilers and other tools
PSI
An assertion verifier for C programs based on Structural Invariants
PolicyL
A language and system for defining, manipulating, and checking security policies
Collider
A next-generation compilation system, successor to the Rhodium language and system

Courses Offered Regularly

CSE 230
graduate course on programming-language concepts, offered annually
CSE 231
graduate course on program analysis and compilers, offered annually
CSE 290
programming systems reading group offered every quarter
CSE 130
undergrad programming-languages course, offered 3 quarters each year
CSE 131A
undergraduate compilers course focusing on the front-end, offered 2 quarters each year
CSE 131B
undergraduate compilers course focusing on the back-end, offered 2 quarters each year

Special-topics Courses

Spring 2006
Software Reliability Methods (Ingolf Krueger, Ranjit Jhala, Sorin Lerner)
Winter 2006
Applied Automated Theorem Proving (Sorin Lerner)
Spring 2005
Software Reliability Methods (Ingolf Krueger)
Winter 2005
Static Analysis of Systems Code (Ranjit Jhala)

Join us

We are looking for new group members! If you are interested in the the research that we are working on, and would like to join our group, please let us know.