Research papers by Norman Ramsey

These papers are listed in chronological order. The ACM holds copyrights to some of these papers, and it requires the following 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.

Refereed papers

Formation and Breakup Rates of RbXe van der Waals Molecules in He and \rm N2 Gas. Chemical Physics Letters, 102:340, 1983 (with Eli Miron, X. Zeng, and William Happer).

Developing Formally Verified Ada Programs. In Proceedings of the 5th International Workshop on Software Specification and Design, pages 257–265, Pittsburgh, PA, May 1989.

Literate Programming: Weaving a Language-Independent WEB. Communications of the ACM, 32(9):1051–1055, September 1989.

Literate Programming on a Team Project. Software—Practice &Experience, 21(7):677–683, July 1991 (with Carla Marceau).

A Retargetable Debugger. ACM SIGPLAN '92 Conference on Programming Language Design and Implementation, in SIGPLAN Notices, 27(7):22–31, July 1992 (with David R. Hanson).

Correctness of Trap-Based Breakpoint Implementations. In Proceedings of the 21st ACM Symposium on the Principles of Programming Languages, pages 15–24, Portland, OR, January 1994.

Literate Programming Simplified. IEEE Software, 11(5):97–105, September 1994.

The New Jersey Machine-Code Toolkit. In Proceedings of the 1995 USENIX Technical Conference, pages 289–302, January 1995 (with Mary F. Fernández).

A Simple Solver for Linear Equations Containing Nonlinear Operators. Software—Practice & Experience, 26(4):467–487, April 1996. (An earlier version appeared as Technical Report 95-068, Purdue University, Dept of Computer Sciences, November 1995.).

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.

Specifying Representations of Machine Instructions. ACM Transactions on Programming Languages and Systems, 19(3):492–524, May 1997 (with Mary F. Fernández).

Automatic Checking of Instruction Specifications. In Proceedings of the International Conference on Software Engineering, pages 326–336, May 1997 (with Mary F. Fernández).

Machine Descriptions to Build Tools for Embedded Systems. In ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems (LCTES'98), LNCS volume 1474, pages 172–188. Springer Verlag, June 1998 (with Jack W. Davidson).

Unparsing Expressions With Prefix and Postfix Operators. Software—Practice &Experience, 28(12):1327–1356, October 1998.

C–: A portable assembly language that supports garbage collection. In International Conference on Principles and Practice of Declarative Programming, LNCS volume 1702, pages 1–28. Springer Verlag, September 1999 (with Simon L. Peyton Jones and Fermin Reig). \ifx\position\undefined\let\next\gobbledot \else Invited paper\let\next\relax\fi \ifx\invitedtrue\undefined\else\invitedtrue\fi \next.

The Design of a Resourceable and Retargetable Binary Translator. In Proceedings of the Sixth Working Conference on Reverse Engineering (WCRE'99), pages 280–291, October 1999 (with Cristina Cifuentes and Mike Van Emmerik).

Eliminating Spurious Error Messages Using Exceptions, Polymorphism, and Higher-Order Functions. Computer Journal, 42(5):360–372, 1999.

A Single Intermediate Language That Supports Multiple Implementations of Exceptions. Proceedings of the ACM SIGPLAN '00 Conference on Programming Language Design and Implementation, in SIGPLAN Notices, 35(5):285–298, May 2000 (with Simon L. Peyton Jones).

An Algebraic Approach to File Synchronization. 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 (with Elöd Csirmaz).

Stochastic Lambda Calculus and Monads of Probability Distributions. Proceedings of the 29th ACM Symposium on the Principles of Programming Languages, in SIGPLAN Notices, 37(1):154–165, January 2002 (with Avi Pfeffer).

A Transformational Approach to Binary Translation of Delayed Branches. ACM Transactions on Programming Languages and Systems, 25(2):210–224, March 2003 (with Cristina Cifuentes).

Pragmatic Aspects of Reusable Program Generators. Journal of Functional Programming, 13(3):601–646, May 2003. A preliminary version of this paper appeared in \emph{Semantics, Application, and Implementation of Program Generation}, LNCS 1924, pages 149–171.

Widening Integer Arithmetic. In 13th International Conference on Compiler Construction (CC 2004), LNCS volume 2985, pages 232–249, April 2004 (with Kevin Redwine).

Declarative Composition of Stack Frames. In 13th International Conference on Compiler Construction (CC 2004), LNCS volume 2985, pages 298–312, April 2004 (with Christian Lindig).

A Generalized Algorithm for Graph-Coloring Register Allocation. ACM SIGPLAN '04 Conference on Programming Language Design and Implementation, in SIGPLAN Notices, 39(6):277–288, June 2004 (with Michael D. Smith and Glenn Holloway).

Source-level Debugging for Multiple Languages With Modest Programming Effort. In 14th International Conference on Compiler Construction (CC 2005), pages 10–26, April 2005 (with Sukyoung Ryu).

An Applicative Control-Flow Graph Based on Huet's Zipper. In ACM SIGPLAN Workshop on ML, pages 101–122, September 2005 (with João Dias).

ML Module Mania: A Type-Safe, Separately Compiled, Extensible Interpreter. In ACM SIGPLAN Workshop on ML, pages 172–202, September 2005.

An Expressive Language of Signatures. In Proceedings of the Tenth ACM SIGPLAN International Conference on Functional Programming (ICFP'05), pages 27–40, September 2005 (with Kathleen Fisher and Paul Govereau).

Staged Allocation: A Compositional Technique for Specifying and Implementing Procedure Calling Conventions. In Proceedings of the 33rd ACM Symposium on the Principles of Programming Languages, pages 409–421, January 2006 (with Reuben Olinsky and Christian Lindig).

Converting Intermediate Code to Assembly Code Using Declarative Machine Descriptions. In 15th International Conference on Compiler Construction (CC 2006), LNCS volume 3923, pages 217–231, March 2006 (with João Dias).

Automatically Generating Back Ends Using Declarative Machine Descriptions. In Proceedings of the 37th ACM Symposium on the Principles of Programming Languages, pages 403–416, January 2010 (with João Dias).

Hoopl: A Modular, Reusable Library for Dataflow Analysis and Transformation. In Proceedings of the 3rd ACM SIGPLAN Symposium on Haskell (Haskell 2010), September 2010 (with João Dias and Simon Peyton Jones).

Resourceable, Retargetable, Modular Instruction Selection Using a Machine-Independent, Type-Based Tiling of Low-Level Intermediate Code. In Proceedings of the 38th ACM Symposium on the Principles of Programming Languages, pages 575–586, January 2011 (with João Dias).

Embedding an Interpreted Language Using Higher-Order Functions and Types. Journal of Functional Programming, 21(6):585–615, November 2011. (A previous version appeared in ACM SIGPLAN 2003 Workshop on Interpreters, Virtual Machines and Emulators.).

Experience Report: Haskell in Computational Biology. In Proceedings of the Seventeenth ACM SIGPLAN International Conference on Functional Programming (ICFP'12), pages 227–234, September 2012 (with Noah M. Daniels and Andrew Gallant). Selected as one of the best papers of ICFP 2012.

MRFy: Remote Homology Detection for Beta-Structural Proteins Using Markov Random Fields and Stochastic Search. In Fourth ACM International Conference on Bioinformatics, Computational Biology, and Biomedical Informatics (ACM BCB 2013), pages 133–143, 2013 (with Noah Daniels, Andrew Gallant, and Lenore Cowen). Best Student Paper.

Engineering Definitional Interpreters. In Proceedings of the 15th International Symposium on Principles and Practice of Declarative Programming (PPDP'13), pages 121–132, September 2013 (with Jan Midtgaard and Bradford Larsen).

MRFy: Remote Homology Detection for Beta-Structural Proteins Using Markov Random Fields and Stochastic Search. IEEE/ACM Transactions on Computational Biology and Bioinformatics, November 2013 (with Noah Daniels, Andrew Gallant, Norman Ramsey, and Lenore Cowen). Revised version of our ACM BCB paper. Under review.

On Teaching \em How to Design Programs\/\rm: Observations from a Newcomer. In Proceedings of the Nineteenth ACM SIGPLAN International Conference on Functional Programming (ICFP'14), 2014. Under review.

Unpublished

Specifying Instructions' Semantics Using lambda-RTL (Interim Report). December 1999 (with Jack W. Davidson).

Featherweight Concurrency in a Portable Assembly Language. November 2000 (with Simon L. Peyton Jones).

Design Principles for Machine-Description Languages. 2001 (with Jack W. Davidson and Mary F. Fernández).

Custom Calling Conventions in a Portable Assembly Language. November 2002 (with Christian Lindig).

The C– Language Specification Version 2.0 (CVS Revision 1.128). February 2005 (with Simon Peyton Jones and Christian Lindig).

Hoopl: Dataflow Optimization Made Simple. July 2009 (with João Dias and Simon Peyton Jones).

Technical reports

A Search for Capacitance Fluctuations in Tunnel Capacitors (M.S. thesis). Technical report, Materials Science Center, Cornell University, August 1986.

A Spider User's Guide. Technical Report TR-225-89, Department of Computer Science, Princeton University, August 1989.

The Spidery WEB System of Structured Documentation. Technical Report TR-226-89, Department of Computer Science, Princeton University, August 1989.

Concurrent Programming in ML. Technical Report TR-262-90, Department of Computer Science, Princeton University, April 1990.

A Retargetable Debugger. PhD thesis, Princeton University, Department of Computer Science, January 1993. Also Technical Report CS-TR-403-92.

New Jersey Machine-Code Toolkit Architecture Specifications. Technical Report TR-470-94, Department of Computer Science, Princeton University, October 1994 (with Mary F. Fernández). Revised December, 1996.

New Jersey Machine-Code Toolkit Reference Manual. Technical Report TR-471-94, Department of Computer Science, Princeton University, October 1994 (with Mary F. Fernández). Revised December, 1996.

Specifying Instructions' Semantics Using CSDL (Preliminary Report). Technical Report CS-97-31, Department of Computer Science, University of Virginia, November 1997 (with Jack W. Davidson). See http://www.cs.virginia.edu/zephyr/csdl/lrtlindex.html. Revised, May 1998.

Machine-Independent Support for Garbage Collection, Debugging, Exception Handling, and Concurrency (Draft). Technical Report CS-98-19, Department of Computer Science, University of Virginia, August 1998 (with Simon L. Peyton Jones).

The 1999 ICFP Programming Contest. SIGPLAN Notices, 35(3):73–83, March 2000 (with J. Kevin Scott).

When Do Match-Compilation Heuristics Matter?. Technical Report CS-2000-13, Department of Computer Science, University of Virginia, May 2000 (with Kevin Scott).

Experience in the Design, Implementation, and Use of a Retargetable Static Binary Translation Framework. Technical Report TR-2002-105, Sun Microsystems Laboratories, Palo Alto, CA, January 2002 (with Cristina Cifuentes, Mike Van Emmerik, and Brian Lewis).

A Transformational Approach to Binary Translation of Delayed Branches with Applications to SPARC and PA-RISC Instruction Sets. Technical Report TR-2002-104, Sun Microsystems Laboratories, Palo Alto, CA, January 2002 (with Cristina Cifuentes).

The ldb interface. Technical Report TR-23-04, Division of Engineering and Applied Sciences, Harvard University, February 2005 (with Sukyoung Ryu).

Automatically Generating Back Ends for a Portable Assembly Language Using Declarative Machine Descriptions. Technical report, Harvard University, January 2008 (with João Dias).


Back to Norman Ramsey's home page