Ph.D. and M.S. in Computer Science
Graduate work in programming languages and computer architecture.
Thesis on Programming with Transactional Memory
showed that if transactional memory is to make parallel
programming easier, rather than just more scalable, the
programming interface requires more than simple atomic
transactions. JavaT was used to evaluate the performance
and demonstrate the limitations of simple transactional
memory semantics for Java programs. The Atomos programming
language was introduced, building on JavaT by removing
problematic Java concurrency constructs and replacing them
with transactional primitives. Semantic concurrency
control techniques, made possible by Atomos's novel
open-nested transactions, were used to create
Transactional Collection Classes, which eliminate
unnecessary memory-level dependencies in abstract data
types. An Atomos version of the SPECjbb2000 benchmark
using coarse-grained transactions was used to demonstrate
the ease of parallelization using the Transactional
Massachusetts Institute of Technology
M.Eng. in Computer Science and Electrical Engineering
Massachusetts Institute of Technology
S.B. in Computer Science and Electrical Engineering
Minor in Science, Technology, and Society.
Undergraduate project on a P2P messaging system.
Doctor of Philosophy Dissertation, Stanford University, June 2008
ACM SIGPLAN 2007 Conference on Principles and Practice of Parallel Computing, San Jose, California, March 2007
13th International Symposium on High-Performance Computer Architecture (HPCA), Phoenix, Arizona, USA, 13 February 2007
Micro's Top Picks, IEEE Micro January/February 2007 (Vol. 27, No. 1)
Science of Computer Programming, Volume 63, Issue 2, 1 December 2006, Pages 111-129
Proceedings of the Eleventh International Conference on Architectural Support for Programming Languages and Operating Systems, San Jose, California, 21-25 October 2004
Proceedings of the 33rd Annual International Symposium on Computer Architecture, Boston, Massachusetts, 17-21 June 2006
ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation, Ottawa, Canada, 12 June 2006
First Workshop on Software Tools for Multi-Core Systems, Manhattan, New York, NY, 26 March 2006
12th International Symposium on High Performance Computer Architecture (HPCA), Austin, Texas, USA, 11-15 February 2006
OOPSLA 2005 Workshop on Synchronization and Concurrency in Object-Oriented Languages (SCOOL), San Diego, California, USA, 16 October 2005
The Fourteenth International Conference on Parallel Architectures and Compilation Techniques, Saint Louis, Missouri, 19 September 2005
The 19th ACM International Conference on Supercomputing, Cambridge, MA, 20 June 2005
Micro's Top Picks, IEEE Micro November/December 2004 (Vol. 24, No. 6)
Proceedings of the Eleventh International Conference on Architectural Support for Programming Languages and Operating Systems, Boston, Massachusetts, 9-13 October 2004
Proceedings of the 31st Annual International Symposium on Computer Architecture, München, Germany, 19-23 June 2004
MIT Master of Engineering Thesis, Cambridge, MA, February 2001
MIT Laboratory for Computer Science, Cambridge, MA, 25 December 1994
Operating resource management system
Norman Adams, Marc Brown, Brian Carlstrom, Brian Elkin, Paul Hegarty, Guy Haskin, Boris Putanec
United States Patent 7,117,165
Awards & Honors
Intel Foundation Ph.D. Fellow 2005-2007.
Stanford School of Engineering Graduate Council 2005.
Stanford Computer Science Department Student Services Award 2004-2005.
Stanford Computer Science Department Ph.D. Program Commitee 2003-2007.
Stanford Computer Systems Laboratory
Member of the Transactional Coherence and Consistency project
researching hardware supported transactional memory models. Research
focused on parallel programming with transactional memory. Built upon IBM's Jikes
Research Virtual Machine to evaluate programming models, benchmarks, and
new programming language features. Significant C++ development on our
architecture simulator, including moving from PowerPC-only to include
support for x86.
Winter 2007 and Winter 2008
CS315a Parallel Architecture and Programming
MIT Media Lab & Laboratory for Computer Science
Co-author of the open source project Scsh: the Scheme Shell. Scsh is a
POSIX environment based on the Scheme dialect of the Lisp programming
language. Involved in all aspects of the system including design,
implementation, documentation, testing, and release. Scsh is used for
CGI scripts, network applications, and general purpose shell scripts.
Used Scsh to develop several applications including a mobile web browser
for the Apple Newton and a web server that is extensible in Scsh and
MIT Artificial Intelligence Laboratory
Developed sequential to parallel research compiler for the Scheme
dialect of Lisp. Implemented C Language back-end for modified Gambit
Scheme compiler. Implemented runtime system for workstation simulation
and for execution on the Thinking Machines CM-5.
MIT Flight Transportation Laboratory
Implemented airline schedule optimizer for NASA and McDonnell-Douglas.
Integrated optimizer with a graphical schedule editor and assisted in
product delivery including installation and user training. Set up and
administered lab of Sun and Apollo workstations.
Mountain View, CA
Staff Software Engineer
Part-time advisory role during my time as a Stanford graduate student.
Buyer and Platform Technical Architect
As architect for Buyer 8.0 release was involved in content definition,
planning, feature design reviews, and operational execution. Evolved
development process through component ownership practices. Consulted on
refactoring to create application platform, the core of new Ariba products.
Drove code cleanliness projects to remove JDK 1.1 limitations and
supportability issues. Worked with legal, documentation, and engineering
on many third party licensing issues. Drove technical leader review
process, identifying future candidates, and worked with managers on the
candidate's career development.
Server Technical Lead
Led Buyer 7.0 Server team projects which involved design reviews,
schedule tracking, and issue resolution. Delivered refactoring of server
technologies such as object-relational mapping, RPC, and utility
libraries for use by other products. Ariba Analysis was built from
scratch on this platform and existing applications have begun adoption.
Converted from RSA to Entrust crytography to reduce cost of goods sold,
at the same time enhancing our security API. Created first unit test
infrastructure and unit tests, now integrated with JUnit. Created 8.0
requirements and initial designs for database archiving and data
migration. As acting manager, heavily involved in recruiting including
college hiring. As acting director, coordinated office move.
Member of original team that designed and implemented the Ariba
Buyer product. Drove engineering closure on first product
spec. Created the Approvable document architecture, the user
permissions model, and a Scheme interpreter for business
rules. Implemented SMTP client and server for
notification. Responsible for HTTP server used for printing and
attachments and later converted it to the servlet API. Created
Inspector tool for runtime debugging.
Created command line monitoring tools to automate
operations. Removed explicit locking from object model to simplify
API. Converted RPC from using a thread per client to worker queues
to improve scalability. Created javadoc doclet to allow fine
grain control over published API. Assisted globalization by
removing deprecated JDK 1.0 APIs. Converted all production batch
and shell scripts to Perl for portability.
Created and maintained development web site, mailing lists, and
Emacs development environment.
Menlo Park, CA
Developer for OM-Express, a browser accelerator for Windows. Performed
memory analysis prior to 1.0 release. Analyzed networking performance
for various TCP/IP stacks. Reimplemented core URL technology to be RFC
Developed Java Virtual Machine for Magic Cap devices. Used this VM in
new implementation of MagicScript authoring language. Worked on port of
the Telescript language interpreter to Win32. Ported Telescript Access
Service to Windows 3.1 and Win32 to enable Visual Basic interfaces to
Parallel programming including transactional memory.
Advanced language implementation.
Cryptography including SSL and PKI.
Refactoring for reuse.
Automated build systems.
Fluent: Java, Perl, C
Proficient: C++, Scheme, elisp, sh, make, SQL, HTML, CSS
Emacs, Unix shell utilities, Perforce, Subversion, CVS, Apache, IIS, ASP, LaTeX
Windows, Unix, and Mac OS experience including basic administration