mugshot

Cormac Flanagan
Associate Professor of Computer Science

Software and Languages Research Group
Computer Science DeptSchool of EngineeringUCSC

Email:      cormac at ucsc.edu  
Phone:     831-459-5375    (fax)  831-459-4829
Address:  1156 High Street MS: SOE3, Santa Cruz CA 95064
Office:     Engineering 2 Building, room 367 (directions)
Misc:
       Vitae, publications, Google Scholar, DBLP, CiteSeer, Libra, h-index = 26


Students
Kenneth Knowles

Caitlin Sadowski

Aaron Tomb

Jaeheon Yi



Teaching
CMPS12A/L
Introduction to Programming S06  S08

CMPS203
Programming Languages F04  F05  F07

CMPS280G
Software Engineering Seminar W04 F04  S06  S08

CMPS290G
Topics in Software Engineering
W04 S05

CMPS115
Software Engineering Methodology
S04  W05 W06

CMPS112
Comparative Programming Languages
W07

CMPS253
Advanced Programming Languages
S07



Research Projects

Atomicity

Hybrid Type Checking


Extended Static Checking for Java (POPL'01, POPL'01.ppt, PLDI'02, POPL'02)


Static Race Detectors (ESOP'99, CONCUR'99, PLDI'00, PASTE'01, SAS'04, SAS’04.ppt)


Constraint logic for program checkers (ESOP'03, ESOP'03.ppt, CP+CV'04, CP+CV'04.ppt, Science of Computer Programming '04)


Calvin, a checker for multithreaded Java programs (ESOP'02, CAV'02, CAV'02.ppt) based on thread-modular reasoning (SPIN'03, SPIN'03.ppt) and reduction (MC'03)


Houdini, an annotation inference system for modular static checkers (IPL'00, FME'01, FME'01.ppt)


MrSpidey, an interactive static checker for Scheme (PLDI'96, Thesis) used in DrScheme (JFP'01, PLILP'97) and based on Componential Set-Based Analysis (TOPLAS'99, PLDI'97)



Selected Recent Publications (more)



Velodrome: A Sound and Complete Dynamic Analysis for Atomicity (PLDI '08)
Atomizer: A Dynamic Atomicity Checker for Multithreaded Programs (Science of Computer Programming '08)
Status Report: Specifying JavaScript with ML (ML’07)
Cartesian Partial-Order Reduction (SPIN '07)

Sage: Unified Hybrid Checking for First-Class Types, General Refinement Types, and Dynamic (extended technical report)

Unifying Hybrid Types and Contracts (TFP’07)

Space Efficient Gradual Typing (TFP’07)

Type Reconstruction for General Refinement Types (ESOP’07, extended paper)

Type Inference Against Races (Science of Computer Programming '06)

Types for Safe Locking: Static Race Detection for Java (TOPLAS’06)

Hybrid Type Checking (POPL’06)

Automatic Synchronization Correction (SCOOL’05)

Modular Verification of Multithreaded Programs (TCS 2005)

Extending JML for Modular Specification and Verification of Multi-Threaded Programs (ECOOP’05)

Dynamic Partial-Order Reduction for Model Checking Software_ (POPL’05)

Exploiting Purity for Atomicity (ISSTA'04 Distinguished Paper)

Retrospective: The Essence of Compiling with Continuations (Best of PLDI: 1979-1999)

A Type and Effect System for Atomicity (PLDI'03)

Extended Static Checking for Java (PLDI'02)



Tutorials



Lectures at the 2006 Summer School on Language-Based Techniques for Concurrent and Distributed Software on Static and Dynamic Analyses for Concurrency

PLDI 2005 tutorial on Atomicity for Reliable Concurrent Software