Want to know how the machine works?
Consider COMP 40!
|
|
Send email to
nr@cs.tufts.edu.
Send physical documents
to my postal address.
If you come yourself you'll want directions.
Telephone +1 617 627 4923.
Skype (chat preferred): norman-ramsey
AIM: norman62ramsey
Yahoo chat: norman_ramsey
Fax +1 617 627 2227 (but if you can, scan and email instead)
My vita and public key are online.
I type
75 words per minute.
Test yourself.
|
|
|
Research
My research interests are broad, but grounded in programming
languages.
I like programming languages because there is nothing like
a good language to help us express computations precisely, in ways
that we can reason about them, while still keeping things
at a high level.
I focus on reusable, low-level programming-language infrastructure;
I want to make it easy and cheap to build the programming
languages of the future.
I also work in functional programming and programming-language design,
including the design of special-purpose languages for solving problems
in distributed systems.
My most recent work has been on reusable back ends, under the auspices
of the
C-- project,
which I direct.
My research is currently in transition: I am working on or
interested in
compilers; run-time systems; spam filtering;
precise, machine-checkable, composable specifications for programming
assignments; and
algorithms and infrastructure for managing replicated data.
I am recruiting PhD students for admission in 2010.
Selected papers
I have collected both highly significant and recent papers.
Links are to abstracts so you can check
out the topic without downloading a monster.
For a complete view, including older work, see my
publications list.
Five most significant papers
- Relocating Machine
Instructions by Currying.
Proceedings of the ACM
SIGPLAN '96 Conference on Programming Language Design and Implementation,
in SIGPLAN Notices, 31(5):226–236, May 1996.
This paper connects two worlds: the ``low cult'' of systems programming
and the pure, mathematical world of the lambda-calculus. The key insight is
that relocation, which is a low-level operation performed on binary code, is
an instance of currying, which is the expression of a multiple-argument
function in the lambda-calculus.
- A Single Intermediate Language
That Supports Multiple Implementations of Exceptions (with Simon L. Peyton
Jones).
Proceedings of the ACM SIGPLAN '00 Conference on Programming Language
Design and Implementation, in SIGPLAN Notices,
35(5):285–298, May 2000.
This paper is the most technical and rigorous of the C-- papers.
It exemplifies what I am trying to achieve in C--: clean, low-level
mechanisms that compiler writers can use to implement different
high-level–language features and to control cost tradeoffs.
- Stochastic Lambda Calculus and
Monads of Probability Distributions (with Avi Pfeffer).
Proceedings of the 29th ACM Symposium on the Principles of Programming
Languages, in SIGPLAN Notices, 37(1):154–165, January
2002.
This paper explores the design of probabilistic languages in a
foundational, principled way. Its special contribution is to analyze
important implementation techniques in a way that is completely formal and is
rigorously connected to the theory of probability.
- A Transformational Approach to
Binary Translation of Delayed Branches (with Cristina Cifuentes).
ACM Transactions on Programming Languages and Systems,
25(2):210–224, March 2003.
The paper solves a small but difficult problem in analysis of binary
codes. This problem is repeatedly a stumbling block for industry groups that
work with binary codes, and I believe our solution is definitive.
- An Expressive Language of
Signatures (with Kathleen Fisher and Paul Govereau).
In Proceedings of the Tenth
ACM SIGPLAN International Conference on Functional Programming
(ICFP'05), pages 27–40, September 2005.
In this paper, we identified an important class of programming problems
the solutions to which cannot be expressed in current languages, and we
showed that these problems can be solved by new mechanisms that cohere with
an existing language.
Five other significant papers
- Specifying Representations of
Machine Instructions (with Mary F.
Fernández).
ACM Transactions on Programming Languages and Systems,
19(3):492–524, May 1997.
This is the most technical and the definitive description of my early
work on declarative machine descriptions.
- An Algebraic Approach to File
Synchronization (with Elöd Csirmaz).
In Proceedings of the 8th European Software Engineering Conference (ESEC)
and 9th ACM SIGSOFT Symposium on the Foundations of Software Engineering
(FSE-9), pages 175–185, September 2001.
This paper discusses how to maintain consistency among multiple
replicas of files that may be modified concurrently. We proposed reasoning
about this problem by examining the algebraic structure of a sequence of
modifications.
- A Generalized Algorithm for
Graph-Coloring Register Allocation (with Michael D. Smith and
Glenn Holloway).
ACM SIGPLAN '04
Conference on Programming Language Design and Implementation, in
SIGPLAN Notices, 39(6):277–288, June 2004.
A new technique for dealing with irregularities in target machines,
which arise because not all machine registers can be used interchangeably. We
hope this will be the definitive paper on handling irregular register files
in a graph-coloring register allocator.
- Staged Allocation: A Compositional
Technique for Specifying and Implementing Procedure Calling Conventions
(with Reuben Olinsky and Christian Lindig).
In Proceedings of the
33rd ACM Symposium on the Principles of Programming Languages,
pages 409–421, January 2006.
A specification language for parameter passing, unique in having a
formal semantics. Together with an earlier paper on stack-frame layout, a
complete approach to calling conventions.
- Embedding an Interpreted Language
Using Higher-Order Functions and Types.
Journal of Functional
Programming, 2009.
To appear. (A previous version appeared
in ACM SIGPLAN 2003
Workshop on Interpreters, Virtual Machines and Emulators.).
Homage to Olivier Danvy: How to
embed an application-specific function into an interpreter simply by
describing its type. The paper, while not technically deep, shows the
capabilities of functional languages to elegant advantage, and it is
representative of my work on interpreters.
Other recent papers
These are some recent papers not listed above.
They are in chronological order,
so the most recent work is at the bottom.
For a complete view, including older work, see my
publications list.
The ACM requires this disclaimer:
The documents contained in these pages are included
to ensure timely
dissemination of scholarly and technical work on a
non-commercial basis. Copyright and all rights therein
are maintained by the authors or by other copyright
holders, notwithstanding that they have offered their
works here electronically. It is understood that all
persons copying this information will adhere to the terms
and constraints invoked by each author's copyright.
These works may not be reposted without the explicit
permission of the copyright holder.
Teaching
In Fall 2010 I am teaching COMP 40 (Machine Structures and Assembly-Language
Programming).
My Spring teaching plans are still fluid.
In the past, I have taught
COMP 40
(Computer Architecture) and
COMP 150FP (Advanced Functional Programming).
Resources for Students
Office
hours for
Fall 2010
are Wednesdays and Thursdays
from
4:30–5:30.
If you don't know whether to come to office hours,
you might like to read Stuart
Shieber's diatribe.
I am always interested in discussing
projects with students, and I
often have several undergraduate or master's students working with me part-time.
I have gathered material of interest to research
students, including resources for
writers,
and
how to give a talk.
Undergraduate research students might also be interested.
I was program chair for ICFP '07.
I no longer maintain a
hot list; this is more of a random list.
An interest in personal productivity and pointers from
Benjamin Pierce
and
Phil Wadler
got me to Inbox Zero
on Wed 21 Feb 2007 at 6:00 PM.
After serious lossage caused by various alarums and excursions,
I recovered Zero at 6:30 PM on Mon 31 Dec 2007.
It was a pleasure to start the New Year with an empty inbox!
After starting at Tufts, I got a little behind; at the end of my
first year, my email debt was over 600 messages, but I am not
yet ready to declare bankruptcy.
Although it surprises some people, for over thirty years I have
been a
football
fan.
When it's not football season, I've been known to play Guild Wars.
I also have a rare autographed copy of
Ad Verbum.
I try to avoid P. J. Brown's deadly sins.
I'm married to a licensed
psychologist and
game designer.
In my copious free time,
when I'm not reading Questionable
Content or xkcd,
I enjoy overworking.
My professional home is in the
Department of Computer Science
at Tufts University.
Some people think I'm a power user.