M.S. in Physics, University of California at Los Angeles, June 1965.
B.A. (with Honors) in Physics and Mathematics, Pacific Union
College, June 1963.
Honors Project: "Intercom 512: An Educational Interpreter."
May 2002–April 2005: McAfee, Inc. (formerly Network Associates, Inc.), Santa Clara, CA.
June 1996–April 2002: InterTrust Technologies Corporation, Santa Clara, CA.
February 1996–May 1996: Silicon Graphics Incorporated, Mountain View, CA.
January 1984–February 1996: Digital Equipment Corporation, Systems Research Center, Palo Alto, CA.
June 1977–January 1984: Xerox Corporation, Palo Alto Research Center, Computer Science Laboratory, Palo Alto, CA.
September 1969–June 1977: University of Toronto, Departments of Computer Science and Electrical Engineering, Toronto, Ontario, Canada.
September 1966–June 1968, September 1968–August 1969: Stanford University, Computation Center, Stanford, CA.
June–September 1968: IBM, T. J. Watson Research Center, Yorktown Heights, NY.
August 1965–September 1966: Loma Linda University, Scientific Computation Facility, Loma Linda,CA.
June 1964–August 1965: Hughes Aircraft Corporation, Guidance and Controls Division, Culver City, CA.
September 1963–June 1964: University of California at Los Angeles, Physics Department, Los Angeles, CA.
June–September 1963: Control Data Corporation, Palo Alto, CA.
June 1959–June 1961, September 1961–June 1962, September 1962–June 1963: Pacific Union College, Physics Department and Data Processing Laboratory, Angwin, CA.
June–September 1961, June–September 1962: Bendix Computer Division, El Segundo, CA.
"Risks of Technology-Oblivious Policy," with Barbara Simons, Inside Risks column, Communications of the ACM 48, 9, p. 136, September 2005.
"Coincidental Risks," Inside Risks column, Communications of the ACM 47, 4, p. 112, April 2004.
"Risks of Linear Thinking," with Peter J. Denning, Inside Risks column, Communications of the ACM, 45, 3, p. 120, March 2002.
"Learning from Experience," Inside Risks column, Communications of the ACM, 44, 7, p. 112, July 2001.
"The emperor’s new angels" [fable], IEEE Computer, The Open Channel, p. 85, Oct. 1986. [Translated and reprinted as "Des Kaisers neue Engel," Kursbuch 83, Rotbuch Verlag, March 1986.]
"The future of thinking for non-thinkers," IEEE Computer, The Open Channel, p. 90, Jul. 1984.
"LCLint: A Tool for Using Specifications to Check Code," with David Evans, John Guttag, and Yang Meng Tan, Proceedings of the Second ACM SIGSOFT Symposium on Foundations of Software Engineering, Software Engineering Notes, 19, 5, pp. 87–94, Dec. 1994.
"Using Transformations and Verification in Circuit Design," with James B. Saxe, Stephen J. Garland, and John V. Guttag, IFIP WG10.5/WG10.2 Workshop on Designing Correct Circuits, Elsevier, Sept. 1991. [Revised version published in Formal Methods in System Design, 3, pp. 181-209, 1993.]
"Debugging Larch Shared Language Specifications," with Stephen J. Garland and John V. Guttag, IEEE Transactions on Software Engineering, 16, 9, pp. 1044–1075, Sept. 1990. [Reprinted in System Programming in Modula-3, Greg Nelson (ed., ) 1991.]
"Synchronization Primitives for a Multiprocessor: A Formal Specification," with A. D. Birrell, J. V. Guttag, and R. Levin, Proceedings of the Eleventh ACM Symposium on Operating Systems Principles, Austin, Operating Systems Review, 21, 5, pp. 94–102, Nov. 1987.
"Report on the Larch Shared Language," with J. V. Guttag, Science of Computer Programming 6, pp. 103–134, 1986.
"A Larch Shared Language Handbook," with J. V. Guttag, Science of Computer Programming 6, pp. 135–157, 1986.
"The Larch Family of Specification Languages," with John V. Guttag and Jeannette M. Wing, IEEE Software 2, 5, pp. 24–36, Sept. 1985.
"Some Notes on Putting Formal Specifications to Productive Use," with John Guttag and Jeannette Wing, Science of Computer Programming2, pp. 53–68, 1982.
"Formal Specification as a Design Tool," with John V. Guttag, Conference Record of the Seventh Annual ACM Symposium on Principles of Programming Languages, Las Vegas, pp. 251–261, Jan. 1980. [Reprinted in Software Specification Techniques, N. Gehani and A. D. McGettrick (eds.), Addison-Wesley, pp. 187–208, 1986.]
"The Algebraic Specification of Abstract Data Types," with J. V. Guttag, Acta Informatica 10, pp. 27–52, 1978. [Reprinted in Programming Methodology, David Gries (ed.) Springer- Verlag, pp. 282–308, 1978.]
"Proof Rules for the Programming Language Euclid," with R. L. London, J. V. Guttag, B. W. Lampson, J. G. Mitchell, and G. J. Popek, Acta Informatica10, pp. 1–16, 1978. [Reprinted in Program Construction, F. L. Bauer and M. Broy (eds.), Springer-Verlag, pp. 133–163, 1979.]
"A Proof Rule for Euclid Procedures," with John V. Guttag and Ralph L. London, Formal Description of Programming Concepts, E. J. Neuhold (ed.), North-Holland, pp. 211–218, 1978.
"Software Hut: A Computer Program Engineering Project in the Form of a Game," with D. B. Wortman, IEEE Transactions on Software EngineeringSE-3, 4, pp. 325–330, Jul. 1977.
"Notes on the Design of Euclid," with G. J. Popek, B. W. Lampson, J. G. Mitchell, and R. L. London, Proceedings of an ACM Conference on Language Design for Reliable Software, SIGPLAN Notices 12, 3, pp. 11–18, Mar. 1977. [Reprinted in Programming Languages: A Grand Tour, Ellis Horowitz (ed.), Computer Science Press, pp. 252–259, 1983.]
"Language Design for Programming Reliability," with J. D. Gannon, IEEE Transactions on Software Engineering SE-1, 2, pp. 179–191, Jun. 1975.
"The Impact of Language Design on the Production of Reliable Software," with J. D. Gannon, Proceedings 1975 International Conference on Reliable Software, SIGPLAN Notices 10, 6, pp. 10–22, Jun. 1975.
"A Program Structure for Error Detection and Recovery," with H. C. Lauer, P. M. Melliar-Smith, and B. Randell, Operating Systems, Proceedings of an International Symposium, E. Gelenbe and C. Kaiser (eds.), Springer-Verlag, pp. 171–187, 1974. [Reprinted in Reliable Computer Systems, Santosh K. Shrivastava (ed.), Springer-Verlag, 1985.]
"Efficient LR(1) Parsers," with T. Anderson and J. Eve, Acta Informatica2, pp. 12–39, 1973.
"Reflections on a Language Designed to Write an Operating System," with B. L. Clark, Proceedings of ACM SIGPLAN-SIGOPS Interface Meeting, Savannah, SIGPLAN Notices 8, 9, pp. 52–56, Sept. 1973.
"Process Structuring," with B. Randell, ACM Computing Surveys5, 1, pp. 5–30, March 1973.
"Project SUE as a Learning Experience," with K. C. Sevcik, J. W. Atwood, M. S. Grushcow, R. C. Holt, and D. Tsichritzis, Proceedings of the 1972 Fall Joint Computer Conference, pp. 331–337, 1972.
"Experience with a New System Programming Language for the IBM/360," with B. L. Clark, Proceedings Canadian Computer Conference Session '72, Montreal, pp. 331401–331410, 1972.
"A Procedure for Grammatical Inference," Proceedings of IFIP Congress 71, Ljubljana, pp. 188–192, 1971.
"An LALR(k) Parser Generator," with W. R. Lalonde and E. S. Lee, Proceedings of IFIP Congress 71, Ljubljana, pp. 183–187, 1971.
"The System Language for Project SUE," with B. L. Clark, Proceedings of the ACM SIGPLAN Symposium on Languages for System Implementation, Lafayette, SIGPLAN Notices 6, 9, pp. 79–88, Sept. 1971.
"The XPL Compiler Generator System," with W. M. McKeeman, E. C. Nelson, and D. B. Wortman, Proceedings of the 1968 Fall Joint Computer Conference, pp. 617–636, 1968.
A Compiler Generator, with W. M. McKeeman and D. B. Wortman xi+527, Prentice-Hall, 1970, ISBN 0-131-55077-2.
"A Tutorial on Larch and LCL, a Larch/C Interface Language," with John V. Guttag, in VDM91: Formal Software Development Methods, Springer-Verlag, 1991.
"Formalizing Some Classic Synchronization Primitives," in Beauty is Our Business: A Birthday Salute to Edsger W. Dijkstra, W. H. J. Feijn, A. J. M van Gasteren, D. Gries, J. Misra (eds.), Springer-Verlag, pp. 212–219, 1990.
"Program Specification: Issues and Observations" [invited workshop summary] in Program Specification: Proceedings of a Workshop, Aarhus, Denmark, August 1981, J. Staunstrup (ed.), Springer-Verlag, pp. 5–24, 1982.
"Discussion of ‘Current Ideas on Programming Methodology’" in Research Directions in Software Technology, Peter Wegner (ed.), MIT Press, pp. 343–344, 1979.
"Programming Languages" in Computing Systems Reliability, T. Anderson and B. Randell (eds.), Cambridge University Press, pp. 109–152, 1979.
"A Case Study in Language Design: Euclid," "Verification of Euclid Programs," and "Programming Languages for Reliable Computing Systems" in Program Construction, F. L. Bauer and M. Broy (eds.), Springer-Verlag, pp. 125–132, 164–173, 494–530, 1979.
"The Software Project as a Serious Game" in Software Engineering Education: Needs and Objectives, Anthony I. Wasserman and Peter Freeman (eds.), Springer-Verlag, pp. 71–77, 1976.
"LR Grammars and Analysers," "Structuring Compiler Development," and "What the Compiler Should Tell the User" in Compiler Construction, an Advanced Course, F. L. Bauer and J. Eickel (eds.), Springer-Verlag, pp. 85–108, 498–513, 525–548, 1974.
"The Larch Shared Language: Some Open Problems," Joint 11th Workshop on Specification of Abstract Data Types and 8th COMPASS Workshop, Oslo, published in Recent Trends in Data Type Specification, Magne Haveraaen, Olaf Owe, and Ole-Johan Dahl (Eds.), Springer Lecture Notes in Computer Science 1130, 1996.
Keynote Address, "Computation Engineering: Foundations, Metaphors, and Metrics," Second ACM SIGSOFT Symposium on Foundations of Software Engineering, New Orleans, 1994.
"Larch Today," Software Engineering Tools and Methods (SETAM) workshop, Hull and Hamilton, 1994.
Keynote Address, "Exploiting Abstraction and Modularity," Fourth International Conference on Computer Languages, Oakland, 1992.
"Combining Algebraic and Predicative Specifications in Larch," International Joint Conference on Theory and Practice of Software Development, Berlin, Lecture Notes in Computer Science 186, Springer-Verlag, pp. 12–26, Mar. 1985.
"An Introduction to the Larch Shared Language," with J. V. Guttag, Proceedings of the IFIP 9th World Computer Conference, Paris, Information Processing 83, North-Holland, pp. 809–814, Sept. 1983.
"FP with Data Abstraction and Strong Typing," with John Guttag and John Williams, Proceedings of the ACM Conference on Functional Programming Languages and Computer Architecture, Wentworth-by-the-Sea, pp. 11–24, Oct. 1981.
"Essays in Computing Science, by C. A. R. Hoare, C. B. Jones (ed.)," Science of Computer Programming 12, 3, pp. 267–270, Sept. 1989.
"CR Rev. 39,225 ‘An experiment in small-scale application software engineering,’ by Barry W. Boehm," Computing Reviews 23, 4, p. 212, Apr. 1982.
"CR Rev. 38,889 ‘Software Methodology,’ by Harlan D. Mills (Panel Chairman)," Computing Reviews 23, 1, pp. 61–62, Jan. 1982.
"CR Rev. 35,752 ‘Structured programming: theory and practice,’ by R. C. Linger, H. D. Mills, and B. Witt," Computing Reviews 21, 2, pp. 49–50, Feb. 1980.
CRA Conference on Grand Research Challenges in Computer Science and Engineering, Airlie House, Warrenton, Virginia, June 23-26, 2002.
"Improving the Quality of Programming Through Better Languages," Canadian Computer Conference Session '76 Proceedings, Montreal, pp. 354–356, 1976.
"Some Desirable Properties of Data Abstraction Facilities," Proceedings of ACM SIGPLAN/SIGMOD Conference on Data: Abstraction Definition, and Structure, SIGPLAN Notices 11, Special issue, pp. 60–62, 1976.
"Yes! High Level Languages Should be Used to Write System Software," ACM’75 Proceedings, pp. 206–208, 1975.
"Designing MOLs and SILs for Reliability," IFIP Working Group 2.4, M. O. L. Bulletin 4, pp. 9–12, 1974.
Some Useful Modula-3 Interfaces, with Bill Kalsow, Paul McJones, and Greg Nelson, Digital Equipment Corporation, Systems Research Center, report 113, Dec. 1993.
Introduction to LCL: A Larch/C Interface Language, with John V. Guttag, Digital Equipment Corporation, Systems Research Center, report 74, Jul. 1991.
Report on the Larch Shared Language: Version 2.3, with John V. Guttag and Andres Modet, Digital Equipment Corporation, Systems Research Center, report 58, Apr. 1990.
Larch in Five Easy Pieces, with J. V. Guttag and J. M. Wing, Digital Equipment Corporation, Systems Research Center, report 5, Jul. 1985.
Preliminary Report on the Larch Shared Language, with J. V. Guttag, Xerox Corporation, Palo Alto Research Center, report CSL–83–6, Sept. 1983.
Report on the Programming Language Euclid (fourth version), with B. W. Lampson, R. L. London, J. G. Mitchell, and G. J. Popek, Xerox Corporation, Palo Alto Research Center, report CSL–81–12, Oct. 1981.
"Report on the Programming Language Euclid," with B. W. Lampson, R. L. London, J. G. Mitchell, and G. J. Popek, SIGPLAN Notices 12, 2 [special issue], Feb. 1977.
Programming Methodology: An Annotated Bibliography for IFIP Working Group 2.3, with Sol J. Greenspan, University of Toronto, Computer Systems Research Group, report CSRG–81, 1977.
Project SUE Status Report, with J. W. Atwood (ed.), B. L. Clark, S. Georgas, M. S. Grushcow, R. C. Holt, K. C. Sevcik, and D. Tsichritzis, University of Toronto, Computer Systems Research Group, report CSRG–11, 1972.
DIAL–-A Programming System for Interactive Algebraic Manipulation, with Alan C. M. Brown, University of Toronto, Computer Systems Research Group, report CSRG–5, 1971.
Empirical Comparison of LR(k) and Precedence Parsers, with W. R. Lalonde, University of Toronto, Computer Systems Research Group, report CSRG–1, Sept. 1970. [Reprinted in SIGPLAN Notices 5, 11, pp. 10-24, Nov. 1970.]
A Study of Grammatical Inference [Ph.D. thesis], Stanford University, Computer Science Department, report CS–139, Aug. 1969.
Grammatical Complexity and Inference, with J. A. Feldman, J. Gips, and S. Reder, Stanford University, Computer Science Department, report CS–125, AI Memo–89, Jun. 1969.
Structuring Complex Processes, with B. Randell, IBM, T. J. Watson Research Center, report RC 2459, 1969.
The Intercom 550 Programming System, with M. E. Barber, Control Data Corporation, publication SPD–04, 1963.
"Happenings: Dagstuhl Conference" [meeting report on Dagstuhl Seminar 9635, The History of Software Engineering], with Thomas J. Bergin, IEEE Annals of the History of Computing 19, 3, pp. 74-76, 1997.
"A Review of NCIC 2000: The Proposed Design for the National Crime Information Center," with Marc Rotenberg and Lenny Siegel (eds.) and Peter G. Neumann, David D. Redell, Janlori Goldman, and Diana R. Gordon [report to the Subcommittee on Civil and Constitutional Rights of the Committee on the Judiciary, United States House of Representatives], One Hundred First Congress, First Session, 48, pp. 513–580, Feb. 1989.
"A Note on Program Reliability" [letter], Software Engineering Notes 4, 4, pp. 6–8, Oct. 1979.
"History of Programming Languages Conference" [meeting report], Communications of the ACM 21, 8, pp. 698–699, Aug. 1978. [Reprinted in Annals of the History of Computing 1, 1, pp. 69–71, Jul. 1979.]
"Selected Papers from ACM Conference on Language Design for Reliable Software–-March 28–30, 1977" [introduction to special issue], Communications of the ACM 20, 8, p. 539, Aug. 1977.
"Chairman’s Remarks, Special Interest Group Reports" and "Report of Special Interest Group on Productivity Tools," Software Engineering Education Proceedings, Montebello, pp. 135–137, 1975.
"The Buddy Algorithm in SUE" [sample program], Machine Oriented Higher Level Languages, W. L. van der Poel and I. Maarssen (eds.), North-Holland, pp. 513–518, 1973.
"Bericht von einer zukünftigen Front," [translation of trip report], Kursbuch 83, Rotbuch Verlag, March 1986.
"Artificial Intelligence: Further Comments on the SRC Paper Symposium," [letter], IUCC Newsletter 2, 1, London, Sept. 1973.
"An Extension of the Intercom 500 System," Eighth Annual Conference, G-15 Users’ Exchange, Los Angeles, Control Data Corporation, 1963.
"The New G-15 CPM and PERT," Seventh Annual Conference, G-15 Users’ Exchange, Bendix Computer Division, 1962.
Member since 1965; Fellow since 1997.
Awards Committee Co-Chairman 2002–present.
Committee on Computers and Public Policy (CCPP): member 1985–present.
Committee on United States Public Policy (USACM): member 1992–present; member of Executive Committee, 1996–1998.
ACM Fellows Selection Committee: member 1998–2002; Chairman, 2001.
Ad Hoc Committee on Computer Systems Reliability and Risks to the Public: 1983–1984.
Editorial Board, History of Programming Languages, ACM Monograph Series, Academic Press: 1978–1981.
Associate Editor, ACM Transactions on Programming Languages and Systems: 1979–1980.
Programming Languages Editor, Communications of the ACM: 1977–1979.
Programming Languages and Systems Paper Award Committee:
1977–1979; Chairman, 1978.
Working Group 2.4 (System Implementation Languages): member 1974–1979; Acting Secretary, 1974.
Technical Committee 2 (Programming): U. S. Member,
1978–1981; Canadian Member, 1975–1977.
Technical Committee on Software Engineering, Executive
IFIP TC-2 Working Conference on Programming Concepts and Methods (PROCOMET’98), Shelter Island, 1998.
IEEE Computer Society Fourth International Conference on Software Reuse (ICSR4), Orlando, 1996.
IFIP TC-2 Working Conference on Programming Concepts, Methods, and Calculi (PROCOMET’94), San Miniato, 1994.
ACM SIGSOFT ’91 Conference on Software for Critical Systems, New Orleans, 1991.
IFIP TC-2 Working Conference on Programming Concepts and Methods (PROCOMET’90), Tiberias, 1990.
ACM SIGPLAN Symposium on Programming Language Issues in Software Systems (SPLISS’83), San Francisco, 1983.
ACM Conference on Language Design for Reliable Software (Chairman), Raleigh, 1977.
ACM Conference on DATA: Abstraction, Definition, and Structure, Salt Lake City, 1976.
International Conference on Reliable Software, Los
International Conference on Software Engineering, Los Angeles, 1999: "Software Engineering and Money."
ACM Policy’98, Washington, 1998: "Electronic Commerce" (moderator).
20th National Information Systems Security Conference, Baltimore, 1997: "The InterTrust Commerce Architecture" (research directions).
Fourth International Conference on Computer Languages, Oakland, 1992: "Tyrannical Languages Still Pre-empt System Design" (con).
IFIP Congress, Paris, 1983: "Formal Development Methods."
IEEE Specifications of Reliable Software Conference, Boston, 1979: "Specifications of Reliable Software—What Next?"
NCC, Anaheim, 1978: "History of Programming Languages."
IFIP Congress, Toronto, 1977: "Program Specification Techniques."
Canadian Computer Conference, Montreal, 1976: "Improving the Quality of Programming."
ACM SIGPLAN/SIGMOD Conference on Data, Salt Lake City, 1976: "Data Abstraction."
ACM Conference, Minneapolis, 1975: "System Implementation Languages."
IFIP Congress, Stockholm, 1974: "Structured
CRA Workshop on Grand Challenges in Computer Science and Engineering, Warrenton, 2002.
NSF: Software Research Strategies, Los Angeles, 1999.
DEC/SRC: Security and Languages, Palo Alto, 1997.
Dagstuhl: History of Software Engineering, Germany, 1996.
NSF: First International Workshop on Larch, Dedham, 1992.
IFIP: Industrial Experience Using Formal Methods in the Development of Computing Systems, Nice, 1990.
IEEE: How Will We Specify Concurrent Systems in the Year 2000? Lake Arrowhead, 1987.
ACM: What to do About Computer-Related Risks, Menlo Park, 1987.
NATO/EEC: Formal Software Development: Combining Specification Methods, Nyborg, 1984.
15th Joint International Seminar on the Teaching of Computer Science at the University Level: Formal Specifications, Newcastle upon Tyne, 1982.
EEC: Program Specification, Aarhus, 1981.
IFIP: Formal Description of Programming Concepts, St. Andrews, 1977.
ACM: Software Engineering Education, Irvine, 1976.
IBM: Software Engineering Education, Montebello, 1975.
IFIP: Machine Oriented Higher Level Languages, Trondheim, 1973.
IFIP: Programming Teaching Techniques, Zakopane,
Editorial Board, Springer-Verlag Texts and Monographs in Computer Science: 1977–1985.
Defense Advanced Research Projects Agency (DARPA) working group on Quality Software for Complex Tasks (QSCT): 1976–1983.
University of British Columbia, Dean’s Review Committee for Computer Science: 1975.
Local Arrangements Chairman, ACM SIGPLAN Workshop on the Attainment of Reliable Software: 1974.
"Dynamic Fine-grained Dependency Analysis for a Functional Language," with Martin Abadi, Roy Levin, Butler W. Lampson, Jean-Jacques Levy, and Yuan Yu. US patent 5,940,619; also patented internationally.
"Recursive Cache," with B. Randell, R. Kerr, P. M. Melliar-Smith, and H. C. Lauer. US Patent 4,164,017; also patented internationally.
2002–2005: McAfee, Inc. (formerly Network
Chief Scientist, McAfee Research, 2003–2005.
Manager, Security Architecture and Modeling Group, Network Associates Laboratories, 2002–2003.
1996–2002: InterTrust Technologies
Director of Intellectual Property Research, 2001–2002.
Director, Strategic Technologies and Architectural Research Laboratory, 1997–2001.
Senior Vice President, Research, 2001.
Research Fellow, 1996.
Design a language for electronic contracts.1996: Silicon Graphics Incorporated
Develop techniques for software self-protection.
Plan a lab, recruit its staff (eventually 18), and manage it.
Research potential infringements of InterTrust patents.
C++ compiler performance measurement.1984–1996: Digital Equipment Corporation
Manager of the Verax Project to formally specify the Alpha AXP architecture and the architectures of chips in the Alpha AXP family, and formal verification of the PALcode programs that cause the latter to implement the former.1977–1984: Xerox Corporation
Member of the Vesta 2 Project to develop software configuration management tools that scale gracefully to systems of several million lines of code; responsible for Vesta 2 language design and implementation.
Research on formal specification technology and programming methodology.
Senior consultant for PILLAR language design review.
Developed M68000 code generator for Modula-2+.
Research on specification technology and programming methodology.1969–1977: University of Toronto
Developed Interscript, a corporate interchange standard for editable documents.
Cedar project (experimental programming environment): first chairman of the steering committee and of the language features design committee, member of the consistent compilation design committee and of the implementation team, documentation coordinator.
Other projects: Laurel (electronic mail agent), Euclid (verifiable programming language).
Member of Computer Science Laboratory Senior Advisory Board.
Charter member of Computer Systems Research Group; chairman 1973–1975.January–March 1976: University of California at Santa Cruz
Initiated Project SUE to develop an advanced operating system for the IBM System/360 and supervised the project’s most successful component, the Project SUE System Language and its compiler.
Directed the design and implementation of the first LALR parser generator, which for several years was also one of the most widely used.
Supervised five Ph.D. theses (Michael Wharton, Laurence Weissman, James Donahue, John Gannon, John Guttag) and eight M.Sc. theses.
Designed and taught three new graduate courses: Compiler Construction, Computer Program Engineering, and Advanced Topics in Programming Languages.
Taught undergraduate courses in Programming Languages (designed course) and System Software.
Launched Computer Systems Research Group technical report series.
May–August 1973: University of Newcastle upon
Senior Research Fellow, Highly Reliable Computing Systems Project.
Co-invented "recovery block" structure for software fault tolerance and "recursive cache" mechanism to implement it efficiently.September–December 1970: University of Newcastle upon Tyne
1966–1969: Stanford University
Member of Student Programming Language project, which developed the XPL compiler generator system; responsible for the development of the MSP parser generator and major portions of the XPL compiler; co-author of book on XPL.1968: IBM
Developed a theory of process structuring for the Iterative Multi-level Modelling project.1965–1966: Loma Linda University
Ran an IBM 1620 II facility: directed system and application programmers; supervised operations of center; provided consultation for users.1964–1965: Hughes Aircraft Company
Real-time display of sensor data to Missile Control Officer for AWG-9 (Phoenix) system and design of a real-time emulator of system and environment for incorporation into MCO trainer.1962–1963: Pacific Union College
Taught all three courses of the computer programming curriculum.1961, 1962: Bendix Computer Division
Designed and implemented PERT/CPM, MTUR (magnetic tape utility routines), and MADDER (magnetic tape hardware diagnostic routines) packages for the G-15D.
Developed a Boolean function minimization package for the G-20.
July 1979: Advanced Course on Computing Systems Reliability, University of California Extension, Santa Cruz.
August 1978: EEC Advanced Course on Computing Systems Reliability, University of Newcastle upon Tyne, England.
July–August 1978: NATO International Summer School on Program Construction, Marktoberdorf, Germany.
March 1974: Advanced Course on Compiler Construction, Technical University of Munich, Germany.
August 1972: A Practical Course in the Mechanical Translation of Programming Languages (sole instructor), University of California Extension, Santa Cruz.
1975–1976: Toronto Credit Bureau: On-line credit data base.
1975–1976: Control Data Corporation, Advanced Systems Laboratory: Software Writers’ Language.
1975: Metropolitan Toronto Department of Ambulance Services: Computerized communication and dispatch system.
1975: United Nations Computing Research Centre, Bratislava: Software engineering research program.
1972–1974: Compagnie International pour L’Informatique, France: LIS language design review.
1974: General Motors Research Laboratories: Software engineering research.
1973: Software Sciences Limited, England: Algol compiler design.
1967: Computer Usage Corporation: Compiler for SABRE PL.