Picture of Chris Stone   Christopher A. Stone
  Associate Professor
 
Computer Science Department
Harvey Mudd College
301 Platt Boulevard
Claremont, CA 91711
 
Email: stone@cs.hmc.edu
Phone: (909) 607-8975
Secretary: (909) 621-8225
Fax: (909) 621-8465
Office: 1251 Olin
Horizontal Line

Teaching

This semester I'm teaching both sections of CS 60 (Principles of Computer Science). I am also faculty advisor for a clinic project.

My weekly schedule is available here.

Advising

My advising information for Joint CS/Math Majors and the companion advising information for CS majors should be useful to students and their advisors. I try to keep it up-to-date, so please let me know if there's anything I should change or add.

Research

My CV and most of my publications are available on-line.

My research usually involves the theory or implementation of programming languages. I am particularly interested in type systems for functional and object-based languages.

More recently I've started the Observationally Cooperative Multithreading (OCM) project with Melissa O'Neill and several students. In traditional Cooperative Multithreading (CM), one thread runs at a time, and each thread runs until it explicitly yields the processor to the next thread. This permits a very simple and efficient programming model, because the lack of unexpected preemption means that that locks and the problems that go with them (not enough locks = race conditions, too many locks or locks acquired in the wrong order = deadlock) can be avoided.

The goal of OCM is to port the CM model to a multiprocessor. When threads are non-interacting, we run them simultanously without any change in behavior except for improved speed. Preliminary experiments with modified Lua interpreters (an optimistic-concurrency implementation using Software Transactional Memory and a pessimistic implementation internally using locks) are very encouraging. We have an unpublished manuscript describing Observationally Cooperative Multithreading in more detail.

Previously I worked on a translator that turns constructive-mathematics specifications into interface code for programmers. The system answers questions like, "What would a programmer need to implement in order to get a complete and correct implementation of the mathematical real numbers [or a compact metric space, or a space of smooth functions, ...]?" From an educational perspective, it also provides explanations (in terms a programmer can understand) of the non-classical distinctions that arise in constructive mathematics. For example, one can explain the difference between a finite set and a set that is not infinite, and why there is a "size" function only for the former.

I have also worked on types for object-based languages (languages that permit adding new fields or methods to individual objects at run-time) and on type checking algorithms for recursively-defined types.

Other Stuff

Last modified January 10, 2012 by stone@cs.hmc.edu