I'm a third year PhD student interested primarily in improving software reliability by providing guarantees of interesting and useful properties of programs. I'm particularly interested in applying these techniques to parallel programs, operating system kernels, language runtimes, and security-critical code. So I study programming languages. I'm part of the programming languages (WASP) and software engineering (UW SE) groups at UW.
I'm currently working with Michael Ernst and Dan Grossman on a capability type system to prevent deadlock. The system uses static capabilities that are available for duration of a lock acquisition, and permit the further acquisition of specific additional locks. We are also using a variation on unique references that permit strong updates to part of a type (for example, which capability allows a particular lock to be acquired) while allowing aliasing at a less complete type (for example, that the referent is a lock, which may still be acquired by a thread holding no other locks).
In the past I was an undergrad at Brown University. While I was there I worked with Shriram Krishnamurthi and the Brown PLT group on several programming language and program analysis projects. I also worked with Maurice Herlihy on software and hardware transactional memory. In between all those things I TAed a number of courses and did internships in NetApp's filesystem group and the Solaris kernel group at Sun. After finishing undergrad I spent a bit over a year working on an operating system incubation project at Microsoft before starting at UW CSE.
Refereed
- Colin S. Gordon,
Michael D. Ernst, and
Dan Grossman. Static Lock Capabilities
for Deadlock Freedom. In Proceedings of the 8th Workshop on Types in
Language Design and Implementation (TLDI'12), Philadelphia, PA, USA. January 2012.
[+abstract] [+bibtex] [acm | pdf] [slides] [conference homepage] - Colin S. Gordon. Formal Semantics for Testing. In Off the Beaten Track
Workshop (OBT'12), Philadelphia, PA, USA. January 2012. Position paper.
[+abstract] [+bibtex] [pdf] [slides] [conference homepage | schedule] - Colin Gordon, Leo Meyerovich, Joel Weinberger, and Shriram Krishnamurthi.
Composition with Consistent Updates for Abstract State Machines. In
Proceedings of the 14th International Workshop on Abstract State Machines
(ASM'07), Grimstad, Norway. June 2007.
[+abstract] [+bibtex] [pdf] [proceedings]
Theses and Technical Reports
- Colin S. Gordon, Michael D. Ernst, Dan Grossman. Static Lock Capabilities for
Deadlock Freedom. Technical Report UW-CSE-11-10-01, Computer Science and Engineering,
University of Washington, Seattle, WA, USA. October 2011.
[+abstract] [+bibtex] [pdf ] [dept pdf | dept TRs]
- Colin Stebbins Gordon. Type-Safe Stack Traversal for Garbage
Collector Implementation. Brown University Senior Honors Thesis. May 2008.
Undergraduate Thesis.
[+abstract] [+bibtex] [pdf] [slides] [other honors theses] - Meyerovich, L.A., Weinberger, J.H.W., Gordon, C.S.,
Krishnamurthi, S.: ASM Relational Transducer Security Policies. Technical Report
CS-06-12, Computer Science Department, Brown University, Providence, RI, USA.
November, 2006.
[+abstract] [+bibtex] [pdf ] [department page]
This report is essentially an extended version of Composition with Consistent Updates for Abstract State Machines
- Colin Stebbins Gordon, Pratap Vikram Singh, and Donald Alvin
Trimmer. Data Containerization for Reducing Unused Space in a File
System. US Patent 7739312. Filed April, 2007, issued June 2010. Assigned to Network
Appliance.
[ Patent at USPTO ]
Sadly not everything can make it to the presses.
- Reducing the overhead of runtime instrumentation by running checks asynchronously (2010)
- Automatic inference of documentation for useful code properties (2010)
- Work towards a type system to check linearizability of lock-free data structure implementations (2008)
- Using hardware transactional memory to reduce power consumption in embedded systems (2007-2008)
- Dynamic rebalancing of software transactional memory contention management policies based on recent workload (2007)
- Microsoft: Technical Strategy Incubation - Intern, Program analysis work (Summer 2011)
- Microsoft: Technical Strategy Incubation - Full Time, Kernel developer on an unannounced systems project. Worked on kernel debugger implementation, interrupt handling, post-mortem debugging, platform abstractions, all work interacting with other subsystems. (August 2008 - September 2009)
- Sun Microsystems: Solaris Kernel Group - Intern, merged two processor grouping scheduler abstractions. (Summer 2007)
- NetApp: Filesystems Group - Intern, designed, documented, and implemented special-purpose filesystem. Resulted in two patent applications, one public so far: USPTO Application Record,WO/2008/133977 a.k.a. PCT/US2008/005333 (Summer 2006)
- Honorable Mention, CRA Outstanding Undergraduate Award 2008
- Graduated Brown University with Honors in Computer Science, Senior Prize with Distinction in Computer Science
- University of Washington CSE333: Systems Programming Grad TA, Spring 2011
- University of Washington CSEP551: Operating Systems (Graduate-level course) Grad TA, Fall 2009
- (a short hiatus from TA work while I was at Microsoft)
- Brown University CS190: Software System Design Head TA, Spring 2008 (the particular run I TAed)
- Brown University CS167/9: Operating Systems & Operating Systems Lab Head TA, Fall 2007 (students implement a small but full-featured OS kernel)
- Brown University CS017/018: Integrated Introduction to Computer Science Head TA, Fall 2006 - Spring 2007
- Brown University CS017/018: Integrated Introduction to Computer Science TA, Fall 2005 - Spring 2006
- Brown University CS004: Introduction to Scientific Computing TA, Spring 2005 (back when the course was taught in C)
- Benjamin Pierce's Great Works in Programming Languages collection
- Karl Crary's Classic Papers in Programming Languages and Logic course
- Patrick Cousot's Abstract Interpretation course (readings section)
- Matthew Might's Reading for Graduate Students includes a list of general resources for graduate students, particularly those working in PL, compilers, or static analysis.
- Matthias Felleisen's History of Programming Languages course readings
- Viktor Vafeiadis and Derek Dreyer's course on Concurrent Program Logics