John Ousterhout
Leonard Bosack and Sandy K. Lerner Professor of Engineering, Professor of Computer Science and, by courtesy, of Electrical Engineering
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.
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
-
Independent Studies (13)
- Advanced Reading and Research
CS 499 (Aut, Win, Spr) - Advanced Reading and Research
CS 499P (Aut, Win, Spr) - Curricular Practical Training
CS 390A (Aut, Win, Spr) - Curricular Practical Training
CS 390B (Aut, Win, Spr) - Curricular Practical Training
CS 390C (Aut, Win, Spr) - Independent Project
CS 399 (Aut, Win, Spr) - Independent Project
CS 399P (Aut, Win, Spr) - Independent Work
CS 199 (Aut, Win, Spr) - Independent Work
CS 199P (Aut, Win, Spr) - Part-time Curricular Practical Training
CS 390D (Aut, Win, Spr) - Programming Service Project
CS 192 (Aut, Win, Spr) - Senior Project
CS 191 (Aut, Win, Spr) - Writing Intensive Senior Research Project
CS 191W (Aut, Win, Spr)
- Advanced Reading and Research
-
Prior Year Courses
2023-24 Courses
- Operating Systems Principles
CS 111 (Spr) - Software Design Studio
CS 190 (Win)
2022-23 Courses
- Operating Systems Principles
CS 111 (Spr) - Software Design Studio
CS 190 (Win)
2021-22 Courses
- Operating Systems Principles
CS 111 (Spr) - Problem Solving Lab for CS111
CS 111A (Spr) - Software Design Studio
CS 190 (Win)
- Operating Systems Principles
Stanford Advisees
-
Doctoral Dissertation Reader (AC)
Tony Wang -
Master's Program Advisor
Rehaan Ahmad, Rohan Cherivirala, Gabriela Cortes, José Davila, Niveditha Iyer, Alex Lee, June Lee, Yale Wang, Cary Xiao
All Publications
-
Always Measure One Level Deeper
COMMUNICATIONS OF THE ACM
2018; 61 (7): 74–83
View details for DOI 10.1145/3213770
View details for Web of Science ID 000436574400025
- A Philosophy of Software Design Yaknyam Press. 2018
-
Homa: A Receiver-Driven Low-Latency Transport Protocol Using Network Priorities
ASSOC COMPUTING MACHINERY. 2018: 221–35
View details for DOI 10.1145/3230543.3230564
View details for Web of Science ID 000482127900016
- In Search of an Understandable Consensus Algorithm Proceedings of the 2014 USENIX Annual Technical Conference 2014
- Homa: A Receiver-Driven Low-Latency Transport Protocol Using Network Priorities Proceedings of the ACM SIGCOMM 2018 Conference 2018
-
A Linux Kernel Implementation of the Homa Transport Protocol
USENIX ASSOC. 2021: 773-787
View details for Web of Science ID 000696708600051
-
EPaxos Revisited
USENIX ASSOC. 2021: 613-632
View details for Web of Science ID 000662976700036
-
MilliSort and MilliQuery: Large-Scale Data-Intensive Computing in Milliseconds
USENIX ASSOC. 2021: 593-612
View details for Web of Science ID 000662976700035
-
Granular Computing
ASSOC COMPUTING MACHINERY. 2019: 149–54
View details for DOI 10.1145/3317550.3321447
View details for Web of Science ID 000474421800021
-
Exploiting Commutativity For Practical Fast Replication
USENIX ASSOC. 2019: 47–64
View details for Web of Science ID 000474428400004
-
NanoLog: A Nanosecond Scale Logging System
USENIX ASSOC. 2018: 335-349
View details for Web of Science ID 000508006700026
-
SLIK: Scalable Low-Latency Indexes for a Key-Value Store
USENIX ASSOC. 2016: 57-70
View details for Web of Science ID 000385263700005
-
The RAMCloud Storage System
ACM TRANSACTIONS ON COMPUTER SYSTEMS
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
ASSOC COMPUTING MACHINERY. 2015: 71-86
View details for DOI 10.1145/2815400.2815416
View details for Web of Science ID 000494968800005
- Copysets: Reducing the Frequency of Data Loss in Cloud Storage 2013
- Toward Common Patterns for Distributed, Concurrent, Fault-Tolerant Code 14th Workshop on Hot Topics in Operating Systems 2013
-
Technical Perspective Is Scale Your Enemy, Or Is Scale Your Friend?
COMMUNICATIONS OF THE ACM
2011; 54 (7): 110-110
View details for DOI 10.1145/1965724.1965748
View details for Web of Science ID 000293277800030
-
The Case for RAMCloud
COMMUNICATIONS OF THE ACM
2011; 54 (7): 121-130
View details for DOI 10.1145/1965724.1965751
View details for Web of Science ID 000293277800033
-
Fast Crash Recovery in RAMCloud
23rd ACM Symposium on Operating Systems Principles (SOSP 2011)
ASSOC COMPUTING MACHINERY. 2011: 29–41
View details for Web of Science ID 000304076300003
- Integrating Long Polling with an MVC Web Framework USENIX Conference on Web Application Development 2011: 113-124
- Is Scale Your Enemy, Or Is Scale Your Friend? Technical Perspective, Communications of the ACM 2011; 54 (7): 110
- It's Time for Low Latency 13th Workshop on Hot Topics in Operating Systems 2011
- Managing State for Ajax-Driven Web Components USENIX Conference on Web Application Development 2010: 73-85
- Fiz: A Component Framework for Web Applications Stanford Computer Science Department Technical Report 2009
- The Case for RAMClouds: Scalable High-Performance Storage Entirely in DRAM SIGOPS Operating Systems Review 2009; 43 (4): 92-105
- Scriptics Connect: An XML Integration Server Based on Tcl 2000
- Integration Platforms: The Missing Link in Enterprise Computing Web Techniques 1999; 4 (5): 73-76
- The State of Tcl Performance Computing 1999: 43-47
- Free Software Needs Profit Communications of the ACM 1999; 42 (4): 44-45
- Extensibility in Tcl Dr. Dobbs Journal 1999: 64-72
- The Safe-Tcl Security Model 1998
- Scripting: Higher-Level Programming for the 21st Century IEEE Computer 1998; 31 (3): 23-30
- What's New With Tcl? Unix Review 1997; 15 (11): 43-45
- Why Threads Are A Bad Idea (for most purposes) 1996
- The Zebra Striped Network File System ACM Transactions on Computer Systems, An earlier version appears in Proc. 14th Symposium on Operating Systems Principles 1995; 13 (3): 274-310
- Tcl and the Tk Toolkit Addison-Wesley. 1994
- Sawmill: A High Bandwidth Logging File System 1994
- Hypertools: A GUI Revlolution The X Journal 1993; 2 (4): 74-81
- Letter to the Editor ACM SIGOPS Operating Systems Review 1993; 27 (1): 7-10
- The Zebra Striped Network File System 1993
- Hypergraphics and Hypertext in Tk 1993
-
THE DESIGN AND IMPLEMENTATION OF A LOG-STRUCTURED FILE SYSTEM
ACM TRANSACTIONS ON COMPUTER SYSTEMS
1992; 10 (1): 26-52
View details for Web of Science ID A1992HE68500003
- Non-Volatile Memory for Fast, Reliable File Systems 1992
- A Trace-Driven Analysis of Name and Attribute Caching in a Distributed System 1992
- Transparent Process Migration: Design Alternatives and the Sprite Implementation Software Practice and Experience 1991; 21 (8): 757-785
- The Role of Distributed State CMU Computer Science: A 25th Anniversary Perspective edited by Rashid, R. ACM Press. 1991: 199–217
- A Comparison of Two Distributed Systems: Amoeba and Sprite Computing Systems 1991; 4 (4): 353-384
- An X11 Toolkit Based on the Tcl Language 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 1991
- Tcl: An Embeddable Command Language 1990
- Why Aren't Operating Systems Getting Faster as Fast as Hardware? 1990
- Performance Measurements of a Multiprocessor Sprite Kernel 1990
- Disk Scheduling Revisited 1990
- The LFS Storage Manager 1990
- Availability in the Sprite Distributed File System 1990
- Sprite Engineering Manual, technical report UCB/CSD 89/512 Computer Science Division (EECS) University of California at Berkeley 1989
- Process Migration in Sprite: A Status Report Operating Systems Technical Committee Newsletter, IEEE Computer Society 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 1989
- Beating the I/O Bottleneck: A Case for Log-Structured File Systems Operating Systems Review 1989; 23 (1): 11-28
- Caching in the Sprite Network File System ACM Transactions on Computer Systems 1988; 6 (1): 134-154
- The Design of XPRS edited by Bancilhon, F., DeWitt, D., J. 1988
- The Sprite Network Operating System IEEE Computer 1988; 21 (2): 23-36
- Pseudo-Devices: User-Level Extensions to the Sprite File System 1988
- Copy-on-Write for Sprite 1988
- Process Migration in the Sprite Operating System 1987
- An Overview of the Sprite Project login: The USENIX Association Newsletter 1987; 12 (1): 13-17
- Caching in the Sprite Network File System 1987
- Prefix Tables: A Simple Mechanism for Locating Files in a Distributed System 1986
- Magic's Circuit Extractor IEEE Design and Test of Computer 1986; 3 (1): 24-34
- Design Decisions in SPUR IEEE Computer 1986; 19 (11): 8-22
- The Magic VLSI Layout System IEEE Design and Test of Computers 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 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 1985
- A Trace-Driven Analysis of the UNIX 4.2 BSD File System 1985
- A Switch-Level Timing Verifier for Digital MOS VLSI IEEE Transactions on Computer-Aided Design 1985; CAD-4 (3): 336-349
- Corner Stitching: A Data Structuring Technique for VLSI Layout Tools IEEE Transactions on Computer-Aided Design 1984; CAD-3 (3): 87-100
- Plowing: Interactive Stretching and Compaction in Magic 1984
- The User Interface and Implementation of an IC Layout Editor IEEE Transactions on Computer-Aided Design 1984; CAD-3 (3): 242-249
- Magic's Incremental Design-Rule Checker 1984
- Magic: A VLSI Layout System 1984
- Switch-Level Delay Models for Digital MOS VLSI 1984
- A Switchbox Router with Obstacle Avoidance 1984
- VLSI Tools and Architectures: Putting the New Technology to Work 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 1983
- Crystal: A Timing Analyzer for nMOS VLSI Circuits 1983
- Scheduling Techniques for Concurrent Systems 1982
- Measurements of a VLSI Design 1982
- Lyra: A New Approach to Geometric Layout Rule Checking 1982
- Caesar: An Interactive Editor for VLSI Layouts VLSI Design 1981; 2 (4)
- Medusa: A Distributed Operating System UMI Research Press. 1981
- Medusa: An Experiment in Distributed Operating System Structure Communications of the ACM 1980; 23 (2): 92-105
- Cm* Kmap Microprogramming Manual and Debugger Manual 1978
- Multi-microprocessors: An Overview and Working Example 1978
- The Implementation of the Cm* Multi-microprocessor 1977
- Kmap Microprograms edited by Fuller, S., Jones, A., Durham, I. 1977
- Measurements of a Distributed File System 1991, 1993
- Arachne: Core-Aware Thread Management Proceedings of the 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18) 2018