I'm a first year PhD student interested primarily in improving software reliability by providing guarantees of interesting and useful properties of programs. I'm partial towards various forms of static analysis or choice of programming abstractions that disallow certain classes of errors. I'm particularly interested in applying these techniques to parallel programs, operating system kernels, and language runtimes. So I study programming languages. I'm part of the programming languages (WASP) and software engineering (UW SE) groups at UW.
In the past I was an undergrad at Brown University. While I was there I worked on a few projects and was involved in the Brown PLT group. I worked with Shriram Krishnamurthi, doing some fiddling with a model checking formalism, an attempt at a type system to ensure lock-free data structure implementations are linearizable, and work on type-safe stack inspection for a garbage collector in ML (honors thesis). I also worked with Maurice Herlihy on software and hardware transactional memory. In between all those things I TAed a number of courses, including several introductory courses, the operating systems course, and the upper level software engineering course. During the summers I had 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.
In my spare time, I tend to pick up hobbies and drop them within a few months, so I've had experience with many, but mastered few. When I was younger I wrestled, played piano, and did Tae Kwon Do. In the somewhat more recent past I've done intramural soccer and softball, guitar, and rock climbing. More recently I got my motorcycle license. The things I've managed to stick with over the years are reading (non-CS), cooking, and bass guitar, though I'm still not so great at that last one.
And now, I will summarize my life as a series of bullet points.
Refereed
- 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 ]
Unrefereed
- Colin Stebbins Gordon. Type-Safe Stack Inspection 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 | department page | pdf ]
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 Application WO/2008/133977, International Patent
Application PCT/US/2008/005333. Filed April, 2007. Assigned to Network
Appliance.
[ Application at WIPO | Application at USPTO ]
Sadly not everything can make it to the presses (though sometimes this is for the best).
- 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 - 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 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
- 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)