Bio


John Ousterhout is Professor of Computer Science at Stanford University. His research addresses a wide range of topics related to infrastructure for building software systems, including distributed systems, operating systems, storage systems, development frameworks, and programming languages. His current research is in the area of granular computing: new software stack layers that allow the execution of large numbers of very small tasks (as short as a few microseconds) in a datacenter. His current projects are developing new techniques for thread management, network communication, and logging. Ousterhout's prior positions include 14 years in industry, where he founded two companies (Scriptics and Electric Cloud), preceded by 14 years as Professor of Computer Science at U.C. Berkeley. He is the creator of the Tcl scripting language and is also well known for his work in distributed operating systems and file systems. Ousterhout received a BS degree in Physics from Yale University and a PhD in Computer Science from Carnegie Mellon University. He is a member of the National Academy of Engineering and has received numerous awards, including the ACM Software System Award, the ACM Grace Murray Hopper Award, the National Science Foundation Presidential Young Investigator Award, and the U.C. Berkeley Distinguished Teaching Award.

Academic Appointments


Honors & Awards


  • Distinguished Teaching Award, U.C. Berkeley (1985)
  • Grace Murray Hopper Award, ACM (1987)
  • Software System Award, ACM (1997)
  • Member, National Academy of Engineering (2001)
  • Reynold B. Johnson Information Storage Systems Award, IEEE (2014)

Boards, Advisory Committees, Professional Organizations


  • Member, National Academy of Engineering (2013 - Present)
  • Fellow, Association for Computing Machinery (1980 - Present)
  • Member, IEEE Computer Society (1980 - Present)

Professional Education


  • PhD, Carnegie Mellon, Computer Science (1980)
  • BS, Yale University, Physics (1975)

Patents


  • John Ousterhout. "United States Patent 8,042,089 Process Automation System and Method Employing Multi-Stage Report Generation", Electric Cloud, Inc., Oct 18, 2011
  • John Ousterhout. "United States Patent 7,886,265 Process Automation System and Method Employing Property Attachment Techniques", Electric Cloud, Inc., Feb 8, 2011
  • John Ousterhout. "United States Patent 7,725,524 Process Automation System and Method Having a Hierarchical Architecture With Multiple Tiers", Electric Cloud, Inc., May 25, 2010
  • John Ousterhout. "United States Patent 7,676,788 An Architecture and Method for Executing Program Builds", Electric Cloud, Inc., Mar 9, 2010
  • John Ousterhout. "United States Patent 7,539,976 A System and Method for Intelligently Distributing Source Files Within a Distributed Program Build Architecture", Electric Cloud, Inc., May 26, 2009
  • John Ousterhout. "United States Patent 7,395,529 Conflict Detection and Correction in a Program Build Environment", Electric Cloud, Inc., Jul 1, 2008
  • John Ousterhout. "United States Patent 7,168,064 System and Method for Supplementing Program Builds with File Usage Information", Electric Cloud, Inc., Jan 23, 2007
  • John Ousterhout. "United States Patent 7,086,063 System and Method for File Caching in a Distributed Program Build Environment", Electric Cloud, Inc., Aug 1, 2006

Current Research and Scholarly Interests


Ousterhout's research ranges across a variety of topics in system software, software development tools, and user interfaces. His current research is in the area of granular computing: new software stack layers that allow the execution of large numbers of very small tasks (as short as a few microseconds) in a datacenter. Current projects are developing new techniques for thread management, network communication, and logging.

2024-25 Courses


Stanford Advisees


All Publications


  • Always Measure One Level Deeper COMMUNICATIONS OF THE ACM Ousterhout, J. 2018; 61 (7): 74–83

    View details for DOI 10.1145/3213770

    View details for Web of Science ID 000436574400025

  • A Linux Kernel Implementation of the Homa Transport Protocol Ousterhout, J., USENIX ASSOC USENIX ASSOC. 2021: 773-787
  • EPaxos Revisited Tollman, S., Park, S., Ousterhout, J., USENIX Assoc USENIX ASSOC. 2021: 613-632
  • MilliSort and MilliQuery: Large-Scale Data-Intensive Computing in Milliseconds Li, Y., Park, S., Ousterhout, J., USENIX Assoc USENIX ASSOC. 2021: 593-612
  • Granular Computing Lee, C., Ousterhout, J., ACM ASSOC COMPUTING MACHINERY. 2019: 149–54
  • Exploiting Commutativity For Practical Fast Replication Park, S., Ousterhout, J., USENIX Assoc USENIX ASSOC. 2019: 47–64
  • NanoLog: A Nanosecond Scale Logging System Yang, S., Park, S., Ousterhout, J., USENIX Assoc USENIX ASSOC. 2018: 335-349
  • SLIK: Scalable Low-Latency Indexes for a Key-Value Store Kejriwal, A., Gopalan, A., Gupta, A., Jia, Z., Yang, S., Ousterhout, J., USENIX Assoc USENIX ASSOC. 2016: 57-70
  • The RAMCloud Storage System ACM TRANSACTIONS ON COMPUTER SYSTEMS Ousterhout, J., Gopalan, A., Gupta, A., Kejriwal, A., Lee, C., Montazeri, B., Ongaro, D., Park, S. J., Qin, H., Rosenblum, M., Rumble, S., Stutsman, R., Yang, S. 2015; 33 (3)

    View details for DOI 10.1145/2806887

    View details for Web of Science ID 000361156500001

  • Implementing Linearizability at Large Scale and Low Latency Lee, C., Park, S., Kejriwal, A., Matsushita, S., Ousterhout, J. K., Assoc Comp Machinery ASSOC COMPUTING MACHINERY. 2015: 71-86
  • Copysets: Reducing the Frequency of Data Loss in Cloud Storage Cidon, A., Rumble, S., Stutsman, R., Katti, S., Ousterhout, J., Rosenblum, M. 2013
  • Toward Common Patterns for Distributed, Concurrent, Fault-Tolerant Code 14th Workshop on Hot Topics in Operating Systems Stutsman, R., Ousterhout, J. 2013
  • Technical Perspective Is Scale Your Enemy, Or Is Scale Your Friend? COMMUNICATIONS OF THE ACM Ousterhout, J. 2011; 54 (7): 110-110
  • The Case for RAMCloud COMMUNICATIONS OF THE ACM Ousterhout, J., Agrawal, P., Erickson, D., Kozyrakis, C., Leverich, J., Mazieres, D., Mitra, S., Narayanan, A., Ongaro, D., Parulkar, G., Rosenblum, M., Rumble, S. M., Stratmann, E., Stutsman, R. 2011; 54 (7): 121-130
  • Fast Crash Recovery in RAMCloud 23rd ACM Symposium on Operating Systems Principles (SOSP 2011) Ongaro, D., Rumble, S. M., Stutsman, R., Ousterhout, J., Rosenblum, M. ASSOC COMPUTING MACHINERY. 2011: 29–41
  • Integrating Long Polling with an MVC Web Framework USENIX Conference on Web Application Development Stratmann, E., Ousterhout, J., Madan, S. 2011: 113-124
  • Is Scale Your Enemy, Or Is Scale Your Friend? Technical Perspective, Communications of the ACM Ousterhout, J. 2011; 54 (7): 110
  • It's Time for Low Latency 13th Workshop on Hot Topics in Operating Systems Rumble, S., Ongaro, D., Stutsman, R., Rosenblum, M., Ousterhout, J. 2011
  • Managing State for Ajax-Driven Web Components USENIX Conference on Web Application Development Ousterhout, J., Stratmann, E. 2010: 73-85
  • Fiz: A Component Framework for Web Applications Stanford Computer Science Department Technical Report Ousterhout, J. 2009
  • The Case for RAMClouds: Scalable High-Performance Storage Entirely in DRAM SIGOPS Operating Systems Review Ousterhout, J., Erickson, P., Agrawal, Kozyrakis, C., Leverich, J., Mazières, D., Mitra, S. 2009; 43 (4): 92-105
  • Scriptics Connect: An XML Integration Server Based on Tcl Melski, E., Stanton, S., Ousterhout, J. 2000
  • Integration Platforms: The Missing Link in Enterprise Computing Web Techniques Ousterhout, J. 1999; 4 (5): 73-76
  • The State of Tcl Performance Computing Ousterhout, J. 1999: 43-47
  • Free Software Needs Profit Communications of the ACM Ousterhout, J. 1999; 42 (4): 44-45
  • Extensibility in Tcl Dr. Dobbs Journal Ousterhout, J. 1999: 64-72
  • The Safe-Tcl Security Model Levy, J., Demailly, L., Ousterhout, J., Welch, B. 1998
  • Scripting: Higher-Level Programming for the 21st Century IEEE Computer Ousterhout, J. 1998; 31 (3): 23-30
  • What's New With Tcl? Unix Review Ousterhout, J. 1997; 15 (11): 43-45
  • Why Threads Are A Bad Idea (for most purposes) Ousterhout, J. 1996
  • The Zebra Striped Network File System ACM Transactions on Computer Systems, An earlier version appears in Proc. 14th Symposium on Operating Systems Principles Hartman, J., Ousterhout, J. 1995; 13 (3): 274-310
  • Tcl and the Tk Toolkit Ousterhout, J. Addison-Wesley. 1994
  • Sawmill: A High Bandwidth Logging File System Shirriff, K., Ousterhout, J. 1994
  • Hypertools: A GUI Revlolution The X Journal Ousterhout, J., Rowe, L. 1993; 2 (4): 74-81
  • Letter to the Editor ACM SIGOPS Operating Systems Review Hartman, J., Ousterhout, J. 1993; 27 (1): 7-10
  • The Zebra Striped Network File System Hartman, J., Ousterhout, J. 1993
  • Hypergraphics and Hypertext in Tk Ousterhout, J. 1993
  • THE DESIGN AND IMPLEMENTATION OF A LOG-STRUCTURED FILE SYSTEM ACM TRANSACTIONS ON COMPUTER SYSTEMS Rosenblum, M., Ousterhout, J. K. 1992; 10 (1): 26-52
  • Non-Volatile Memory for Fast, Reliable File Systems Baker, M., Asami, S., Deprit, E., Ousterhout, J., Seltzer, M. 1992
  • A Trace-Driven Analysis of Name and Attribute Caching in a Distributed System Shirriff, K., Ousterhout, J. 1992
  • Transparent Process Migration: Design Alternatives and the Sprite Implementation Software Practice and Experience Douglis, F., Ousterhout, J. 1991; 21 (8): 757-785
  • The Role of Distributed State CMU Computer Science: A 25th Anniversary Perspective Ousterhout, J. edited by Rashid, R. ACM Press. 1991: 199–217
  • A Comparison of Two Distributed Systems: Amoeba and Sprite Computing Systems Douglis, F., Kaashoek, M., F., Ousterhout, J., Tanenbaum, A., S. 1991; 4 (4): 353-384
  • An X11 Toolkit Based on the Tcl Language Ousterhout, J. 1991
  • Robo-line Storage: Low Latency, High Capacity Storage Systems Over Geographically Distributed Networks, technical report UCB/CSD 91/651 Computer Science Division (EECS) University of California at Berkeley Katz, R., Anderson, T., Ousterhout, J., Patterson, D. 1991
  • Tcl: An Embeddable Command Language Ousterhout, J. 1990
  • Why Aren't Operating Systems Getting Faster as Fast as Hardware? Ousterhout, J. 1990
  • Performance Measurements of a Multiprocessor Sprite Kernel Hartman, J., Ousterhout, J. 1990
  • Disk Scheduling Revisited Seltzer, M., Chen, P., Ousterhout, J. 1990
  • The LFS Storage Manager Rosenblum, M., Ousterhout, J. 1990
  • Availability in the Sprite Distributed File System Baker, M., Ousterhout, J. 1990
  • Sprite Engineering Manual, technical report UCB/CSD 89/512 Computer Science Division (EECS) University of California at Berkeley Ousterhout, J. 1989
  • Process Migration in Sprite: A Status Report Operating Systems Technical Committee Newsletter, IEEE Computer Society Douglis, F., Ousterhout, J. 1989; 3 (1): 8-10
  • Transparent Process Migration for Personal Workstations, technical report UCB/CSD 89/540 Computer Science Division (EECS) University of California at Berkeley Douglis, F., Ousterhout, J. 1989
  • Beating the I/O Bottleneck: A Case for Log-Structured File Systems Operating Systems Review Ousterhout, J., Douglis, F. 1989; 23 (1): 11-28
  • Caching in the Sprite Network File System ACM Transactions on Computer Systems Nelson, M., Welch, B., Ousterhout, J. 1988; 6 (1): 134-154
  • The Design of XPRS Stonebraker, M., Katz, R., Patterson, D., Ousterhout, J. edited by Bancilhon, F., DeWitt, D., J. 1988
  • The Sprite Network Operating System IEEE Computer Ousterhout, J., Cherenson, A., Douglis, F., Nelson, M., Welch, B. 1988; 21 (2): 23-36
  • Pseudo-Devices: User-Level Extensions to the Sprite File System Welch, B., Ousterhout, J. 1988
  • Copy-on-Write for Sprite Nelson, M., Ousterhout, J. 1988
  • Process Migration in the Sprite Operating System Douglis, F., Ousterhout, J. 1987
  • An Overview of the Sprite Project login: The USENIX Association Newsletter Ousterhout, J., Cherenson, A., Douglis, F., Nelson, M., Welch, B. 1987; 12 (1): 13-17
  • Caching in the Sprite Network File System Nelson, M., Welch, B., Ousterhout, J. 1987
  • Prefix Tables: A Simple Mechanism for Locating Files in a Distributed System Welch, B., Ousterhout, J. 1986
  • Magic's Circuit Extractor IEEE Design and Test of Computer Scott, W., Ousterhout, J. 1986; 3 (1): 24-34
  • Design Decisions in SPUR IEEE Computer Hill, M. 1986; 19 (11): 8-22
  • The Magic VLSI Layout System IEEE Design and Test of Computers Ousterhout, J., Hamachi, G., Mayo, R., Scott, W., Taylor, G. 1985; 2 (1): 19-30
  • 1985 VLSI Tools, technical report UCB/CSD 85/225 edited by Scott, W., Hamachi, G., Ousterhout, J. 1985
  • Magic's Obstacle-Avoiding Global Router Hamachi, G., Ousterhout, J. edited by Fuchs, H. 1985
  • 1986 VLSI Tools, technical report UCB/CSD 86/272 edited by Scott, W., Mayo, R., Hamachi, G. 1985
  • Magic's Circuit Extractor Scott, W., Ousterhout, J. 1985
  • A Trace-Driven Analysis of the UNIX 4.2 BSD File System Ousterhout, J., Costa, H., Da, Harrison, D., Kunze, J., Kupfer, M., Thompson, J. 1985
  • A Switch-Level Timing Verifier for Digital MOS VLSI IEEE Transactions on Computer-Aided Design Ousterhout, J. 1985; CAD-4 (3): 336-349
  • Corner Stitching: A Data Structuring Technique for VLSI Layout Tools IEEE Transactions on Computer-Aided Design Ousterhout, J. 1984; CAD-3 (3): 87-100
  • Plowing: Interactive Stretching and Compaction in Magic Scott, W., Ousterhout, J. 1984
  • The User Interface and Implementation of an IC Layout Editor IEEE Transactions on Computer-Aided Design Ousterhout, J. 1984; CAD-3 (3): 242-249
  • Magic's Incremental Design-Rule Checker Taylor, G., Ousterhout, J. 1984
  • Magic: A VLSI Layout System Ousterhout, J., Hamachi, G., Mayo, R., Scott, W., Taylor, G. 1984
  • Switch-Level Delay Models for Digital MOS VLSI Ousterhout, J. 1984
  • A Switchbox Router with Obstacle Avoidance Hamachi, G., Ousterhout, J. 1984
  • VLSI Tools and Architectures: Putting the New Technology to Work Ousterhout, J. 1983
  • 1983 VLSI Tools, technical report UCB/CSD 83/115, Computer Science Division (EECS) edited by Mayo, R., Ousterhout, J., Scott, W. 1983
  • Pictures with Parentheses: Combining Graphics and Procedures in a VLSI Layout Tool Mayo, R., Ousterhout, J. 1983
  • Crystal: A Timing Analyzer for nMOS VLSI Circuits Ousterhout, J. 1983
  • Scheduling Techniques for Concurrent Systems Ousterhout, J. 1982
  • Measurements of a VLSI Design Ousterhout, J., Ungar, D. 1982
  • Lyra: A New Approach to Geometric Layout Rule Checking Arnold, M., Ousterhout, J. 1982
  • Caesar: An Interactive Editor for VLSI Layouts VLSI Design Ousterhout, J. 1981; 2 (4)
  • Medusa: A Distributed Operating System Ousterhout, J. UMI Research Press. 1981
  • Medusa: An Experiment in Distributed Operating System Structure Communications of the ACM Ousterhout, J., Scelza, D., Sindhu, P. 1980; 23 (2): 92-105
  • Cm* Kmap Microprogramming Manual and Debugger Manual Ousterhout, J. 1978
  • Multi-microprocessors: An Overview and Working Example Fuller, S., Ousterhout, J., Raskin, L., Rubinfeld, P., Sindhu, P., Swan, R. 1978
  • The Implementation of the Cm* Multi-microprocessor Swan, R., Bechtolsheim, A., Ousterhout, J., Lai, K. 1977
  • Kmap Microprograms Ousterhout, J. edited by Fuller, S., Jones, A., Durham, I. 1977
  • Measurements of a Distributed File System Baker, M., Hartman, J., Kupfer, M., Shirriff, K., Ousterhout, J. 1991, 1993
  • Arachne: Core-Aware Thread Management Proceedings of the 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18) Qin, H., Li, Q., Speiser, J., Kraft, P., Ousterhout, J. 2018