David R. Hanson
Google
720 4th Avenue
Kirkland, WA 98033
425 739-5725 Fax: 425 739-5601
drh @ google
com
http://drh.home.dyndns.org
BS (physics) 1970, Oregon State University
MS (optical sciences) 1972, PhD (computer science) 1976, University of Arizona
Google. Software Engineer, since Dec. 2004.
Microsoft Research. Senior Researcher, 1997-2004.
Princeton University. Professor of Computer Science, 1986-97; Visiting Associate Professor, 1984-85.
Institute for Defense Analyses, Center for Communications Research. Research Staff Member, 1984-85, 1995-96, summers 1980-83, 1989, 1994; FOCUS Advisory Committee, 1993-96.
Bell Laboratories. Consultant, 1988-96.
Digital Equipment, Systems Research Center. Visiting Scientist, summers 1992, 1993.
Adobe Systems. Computer Scientist, summer 1991.
University of Utah. Visiting Professor of Computer Science, 1989-90.
Los Alamos National Laboratory. Consultant, 1987-94; Computing Division External Advisory Committee, 1988-93.
University of Arizona. Professor of Computer Science, 1985-86; Department Head, 1981-86; Associate Professor, 1981-85; Assistant Professor, 1977-81; Research Associate, 1975-76; Systems Analyst, 1973-75.
Yale University. Assistant Professor of Computer Science, 1976-77.
Western Electric, Engineering Research Center. Member of the Research Staff, 1970-73.
Editor, SoftwarePractice and Experience, 1980-88; Editorial Board Member, since 1988.
Program Committee Member, SIGPLAN Symposium on Compiler Construction, 1979; SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 1980, 1981, 1989; SIGPLAN-SIGOA Symposium on Text Manipulation, 1981; SIGSOFT-SIGPLAN Symposium on High-Level Debugging, 1983; International Computer Science Conference, 1988; International Conference on Computer Languages, 1992; International Conference on Programming Languages and System Architectures, 1994; Fourth International Workshop on Automated Debugging, 2000.
Program Committee Chair, SIGPLAN Conference on Programming Language Design and Implementation, 1995.
Series Editor, Princeton University Press Series in Computer Science, since 1985; Computer Science Notes Series, since 1991.
Member, ACM Software Systems Award Committee, 1985-90; Chair, 1990.
Faculty Associate and Co-Principal Investigator, Formalizing and Automating the Implementation of Portable Software, National Science Foundation, $266,216, 1978-83.
Principal Investigator, Computer Science and Engineering Research Equipment, National Science Foundation, $158,596, 1981-82.
Principal Investigator, Programming Language Toolbox, National Science Foundation, $89,535, 1983-86.
Co-Principal Investigator, Very High-Level Programming Languages, AT&T, $325,000, 1985.
Principal Investigator, Coordinated Experimental Research Grant: Programming Systems, National Science Foundation, $3,586,660, 1984-89.
Co-Principal Investigator, HP Equipment Grant, Hewlett-Packard Corp., $150,328, 1992.
Principal Investigator, Alpha Workstation Grant, Alpha Innovators Program, Digital Equipment Corp., $120,000, 1993.
Principal Investigator, Compilers and Related Tools for 64-bit Architectures, AT&T Special-Purpose Grant in Science and Engineering, $40,000, 1993.
Principal Investigator, Very High-Level Languages for Networks, AT&T Special-Purpose Grant in Science and Engineering, $40,000, 1994.
Co-Principal Investigator, Development of a HIL/LIL Framework for a National Compiler Infrastructure, Advanced Research Projects Agency and the National Science Foundation, $1,397,293, 1996-99.
A Retargetable C Compiler: Design and Implementation, Addison-Wesley, Redwood City, CA, 1995 (with C. W. Fraser).
C Interfaces and Implementations: Techniques for Creating Reusable Software, Addison-Wesley, Menlo Park, CA, 1997.
A Simple Technique for Representing Strings in Fortran IV, Communications of the ACM 17 (11), 646-647, Nov. 1974. PDF (217KB).
A Simple Variant of the Boundary-Tag Algorithm for the Allocation of Coroutine Environments, Information Processing Letters 4 (4), 109-112, Jan. 1976. PDF (340KB).
Variable Associations in SNOBOL4, SoftwarePractice and Experience 6 (2), 245-254, Apr. 1976. PDF (608KB).
Storage Management for an Implementation of SNOBOL4, SoftwarePractice and Experience 7 (2), 179-192, Mar. 1977. PDF (1604KB).
RATSNOAn Experiment in Software Adaptability, SoftwarePractice and Experience 7 (5), 625-630, Sep. 1977. PDF (339KB).
Performance of Storage Management in an Implementation of SNOBOL4, IEEE Transactions on Software Engineering SE-4 (2), 130-137, Mar. 1978 (with G. D. Ripley and R. E. Griswold). PDF (1168KB).
Event Associations in SNOBOL4 for Program Debugging, SoftwarePractice and Experience 8 (2), 115-129, Mar. 1978. PDF (981KB).
The SL5 Procedure Mechanism, Communications of the ACM 21 (5), 392-400, May 1978 (with R. E. Griswold). PDF (876KB).
Filters in SL5, The Computer Journal 21 (2), 134-143, May 1978. PDF (1744KB).
Data Structures in SL5, Journal of Computer Languages 3 (3), 181-192, Oct. 1978. PDF (2168KB).
A Simple Technique for Controlled Communication Among Separately Compiled Modules, SoftwarePractice and Experience 9 (11), 921-924, Nov. 1979. PDF (257KB).
An Alternative to the Use of Patterns in String Processing, ACM Transactions on Programming Languages and Systems 2 (2), 153-172, Apr. 1980 (with R. E. Griswold). PDF (1217KB).
A Portable Storage Management System for the Icon Programming Language, SoftwarePractice and Experience 10 (6), 489-500, June 1980. PDF (677KB).
A Portable File Directory System, SoftwarePractice and Experience 10 (8), 623-634, Aug. 1980. PDF (707KB).
Code Improvement via Lazy Evaluation, Information Processing Letters 11 (4-5), 163-167, Dec. 1980. PDF (762KB).
Generators in Icon, ACM Transactions on Programming Languages and Systems 3 (2), 144-161, Apr. 1981 (with R. E. Griswold and J. T. Korb). PDF (1070KB).
Algorithm 568: PDSA Portable Directory System, ACM Transactions on Programming Languages and Systems 3 (2), 162-167, Apr. 1981. PDF (305KB).
Is Block Structure Necessary?, SoftwarePractice and Experience 11 (8), 853-866, Aug. 1981. PDF (794 KB).
A Machine-Independent Linker, SoftwarePractice and Experience 12 (4), 351-366, Apr. 1982 (with C. W. Fraser). Errata: PDF (21KB), Full paper w/errata: PDF (1041KB).
Exploiting Machine-Specific Pointer Operations in Abstract Machines, SoftwarePractice and Experience 12 (4), 367-373, Apr. 1982 (with C. W. Fraser). PDF (992KB).
Measuring the Performance and Behavior of Icon Programs, IEEE Transactions on Software Engineering SE-9 (1), 93-103, Jan. 1983 (with C. A. Coutant and R. E. Griswold). PDF (3240KB).
A Portable Input/Output System, SoftwarePractice and Experience 13 (1), 95-100, Jan. 1983. PDF (493KB).
Simple Code Optimizations, SoftwarePractice and Experience 13 (9), 745-764, Aug. 1983. PDF (1125 KB).
Compact Recursive-Descent Parsing of Expressions, SoftwarePractice and Experience 15 (12), 1205-1212, Dec. 1985. PDF (412 KB).
Optimization of Argument Evaluation Order, Information Processing Letters 26 (6), 391-395, Apr. 1987 (with C. W. Fraser). PDF (856KB).
Fast Allocation and Deallocation of Memory Based on Object Lifetimes, SoftwarePractice and Experience 20 (1), 5-12, Jan. 1990. Errata: PDF (9KB), Full paper w/errata: PDF (497KB).
A Code Generation Interface for ANSI C, SoftwarePractice and Experience 21 (9), 963-988, Sep. 1991 (with C. W. Fraser). PDF (88KB).
Simple Register Spilling in a Retargetable Compiler, SoftwarePractice and Experience 22 (1), 85-99, Jan. 1992 (with C. W. Fraser). PDF (63KB).
Garbage Collection Alternatives for Icon, SoftwarePractice and Experience 22 (8), 659-672, Aug. 1992 (with M. F. Fernandez). PDF (91KB).
Engineering a Simple, Efficient Code Generator Generator, ACM Letters on Programming Languages and Systems 1 (3), 213-226, Sep. 1992 (with C. W. Fraser and T. A. Proebsting). PDF (854KB). http://www.cs.princeton.edu/software/iburg/
A Machine-Independent Debugger, SoftwarePractice and Experience 26 (11), 1277-1299, Nov. 1996 (with M. Raghavachari). PDF (350KB), Talk slides: PDF (110KB). Slideshow. http://www.cs.princeton.edu/software/lcc/cdb/
Early Experience with ASDL in lcc, SoftwarePractice and Experience 29 (5), 417-435, Apr. 1999. PDF (120 KB). Talk slides: PDF (71 KB). Slideshow. http://www.cs.princeton.edu/software/lcc/asdl.html
A Machine-Independent DebuggerRevisited, SoftwarePractice and Experience 29 (10), 849-862, Aug. 1999. PDF (67 KB). http://www.cs.princeton.edu/software/lcc/cdb/
Lcc.NET: Targeting the .NET Common Intermediate Language from Standard C, SoftwarePractice and Experience 34 (3), 265-286, Mar. 2004. PDF (361 KB).
A Research C# Compiler, SoftwarePractice and Experience 34 (13), 1211-1224, Nov. 2004 (with T. A. Proebsting). PDF (122KB).
Procedure Referencing Environments in SL5, Conference Record of the Third ACM Symposium of Principles of Programming Languages, 185-191, Atlanta, Jan. 1976 (with D. E. Britton, F. C. Druseikis, R. E. Griswold and R. A. Holmes). PDF (620KB).
A Procedure Mechanism for Backtrack Programming, Proceedings of the ACM Annual Conference, 401-405, Houston, Oct. 1976. PDF (472KB).
Language Facilities for Programmable Backtracking, Proceedings of the SIGART-SIGPLAN Symposium on Artificial Intelligence and Programming Languages, 94-99, Rochester, Aug. 1977 (with R. E. Griswold). PDF (446KB).
A Portable File System, Proceedings of the JPL-SIGNUM Conference on the Computing Environment for Mathematical Software, 17-18, Pasadena, July 1981. PDF (368KB).
A High-Level Programming and Command Language, Proceedings of the SIGPLAN'83 Symposium on Programming Language Issues in Software Systems, 212-219, San Francisco, June 1983 (with C. W. Fraser). PDF (659KB).
High-Level Language Facilities for Low-Level Services, Conference Record of the Twelfth ACM Symposium on Principles of Programming Languages, 217-224, New Orleans, Jan. 1985 (with C. W. Fraser). PDF (801KB).
EZ
Processes, Proceedings of the 1990 International Conference on Computer Languages, 90-97, New Orleans, Mar. 1990 (with M. Kobayashi). PDF (95KB).
A Retargetable Debugger, Proceedings of the SIGPLAN'92 Conference on Programming Language Design and Implementation, 22-31, San Francisco, June 1992 (with N. Ramsey). PDF (112KB). http://www.eecs.harvard.edu/~nr/ldb/
Distributed EZ, Proceedings of the 16th Annual International Computer Software and Applications Conference, 136-142, Chicago, Sep. 1992 (with A. E. Campos). PDF (96KB).
DUELA Very High-Level Debugging Language, Proceedings of the Winter USENIX Technical Conference, 107-117, San Diego, Jan. 1993 (with M. Golan). PDF (164KB). ftp://ftp.cs.princeton.edu/pub/packages/duel/
Garbage Collection in Distributed EZ, Proceedings of the XIII International Conference of the Chilean Computer Science Society, 251-259, La Serena, Chile, Oct. 1993 (with A. E. Campos). PDF (62KB).
A Simple and Extensible Graphical Debugger, Proceedings of the Winter USENIX Technical Conference, 173-184, Anaheim, CA, Jan. 1997 (with J. L. Korn). PDF (137KB), Talk slides: PDF (67KB). http://www.cs.princeton.edu/~jlk/deet/
Dynamic Variables, Proceedings of the SIGPLAN'01 Conference on Programming Language Design and Implementation, 264-273, Snowbird, UT, June 2001 (with T. A. Proebsting). PDF (91 KB). Talkslides: PDF (75 KB). Slideshow.
Theory of a Zeeman Ring Laser, MS Thesis, University of Arizona, Tucson, 1972.
Theory of a Zeeman Ring Laser: General Formalism, Physical Review A 9 (1), 466-480, Jan. 1974 (with M. Sargent III). PDF (2157KB).
Procedure-Based Linguistic Mechanisms in Programming Languages, PhD Dissertation, University of Arizona, Tucson, Sep. 1976. PDF (493KB).
An Overview of SL5, SIGPLAN Notices 12 (4), 40-50, Apr. 1977 (with R. E. Griswold). PDF (712KB).
The Icon Programming Language: An Overview, SIGPLAN Notices 14 (4), 18-31, Apr. 1979 (with R. E. Griswold and J. T. Korb). PDF (627KB).
Theory of a Zeeman Ring LaserPart II: Special Cases, IEEE Journal of Quantum Electronics QE-15 (11), 1301-1309, Nov. 1979 (with W. Chow, J. Hambenne, M. Sargent III and M. O. Scully). PDF (695KB).
The Y Programming Language, SIGPLAN Notices 16 (2), 59-68, Feb. 1981. PDF (789KB).
String Processing Languages, Encyclopedia of Computer Science, 2nd ed., Van Nostrand Reinhold, NY, 1437-1444, 1983; 3rd ed., 1302-1308, 1993, PDF 85KB; 4th ed., Nature Publishing Group, 2000, 1694-1701,PDF 35KB (with R. E. Griswold). An abridged version appears in the Concise Encyclopedia of Computer Science, John Wiley & Sons, 2004, 724-727.
Printing Common Words, Communications of the ACM 30 (7), 594-599, July 1987. PDF (96KB; includes errata). See also http://doi.acm.org/10.1145/28569.315738.
A Retargetable Compiler for ANSI C, SIGPLAN Notices 26 (4), 29-43, Oct. 1991 (with C. W. Fraser). PDF (100KB).
A Brief Introduction to Icon, Preprints of the Second ACM SIGPLAN History of Programming Languages Conference (HOPL-II), SIGPLAN Notices 28 (3), 359-360, Mar. 1993.
Compile C Faster on Linux, Linux Journal (25), 32-33, May 1996 (with C. W. Fraser).
Machine Independent Debugger, US Patent 6795962, Sep. 21, 2004.
Method and Apparatus for Facilitating Execution of Applications Accepting Local Path and URL Specified File Parameters, US Patent 7073165, July 4, 2006.
Method and Apparatus for Providing Dynamically Scoped Variables Within a Statically Scoped Computer Programming Panguage, US Patent 7096456, Aug. 22, 2006 (with T. A. Proebsting).
Three patents pending.