A Computer Science Canon
“The classics are those books about which you usually hear people saying:
‘I’m rereading…’, never ‘I’m reading…’” – Italo Calvino, Why read the
classics? Italian publishing 1991, translated 1999.
These writings comprise my list of the classics in computer science. In
recognition of the inevitable for all efforts of this nature, the list below is
biased and subjective. While I have included several historical works, many of
the contemporary works have been selected on the basis of personal interest. For
a more comprehensive look at the historical works, I strongly recommend
Creating a computer science canon: A course of classic readings in computer
science by Michael
Eisenberg at the University of Colorado. My purpose of creating such a list is
twofold; to enumerate those works that have profoundly shaped the computer
science community, and to list those works that have influenced my own research
and education. The list below strikes a balance of these two interests.
Suggestions, criticisms, or comments are always appreciated.
? - 1969
- “An unsolvable problem of elementary number theory.” Alonzo Church, American Journal of Mathematics, volume 58, 1936.
- “On computable numbers, with an application to the Entscheidungsproblem.” Alan Turing, Proceedings of the London Mathematical Society, series 2, volume 42, 1937.
- Theory of games and economic behavior. John Von Neumann and Oskar Morgenstern, Princeton University Press, 1944. 60th anniversary edition published in 2004.
- “A mathematical theory of communication.” Claude Shannon, Bell System Technical Journal, volume 27, July and October, 1948.
- “Computing machinery and intelligence.” Alan Turing, Mind, volume 49, 1950.
- “A difficulty in the concept of social welfare.” Kenneth J. Arrow, The Journal of Political Economy, August 1950.
- “A proof of the queuing formula L =λW.” John Little, Operations Research, volume 9, May-June 1961.
- “College admissions and the stability of marriage.” David Gale and Lloyd Shapley, The American Mathematical Monthly, volume 69, number 1, January 1962.
- “Design of a separable transition-diagram compiler.” Melvin E. Conway, Communications of the ACM, volume 6, number 7, July 1963.
- “Cramming more components onto integrated circuits.” Gordon E. Moore, Electronics, volume 38, number 8, April 1965.
- “Go to statement considered harmful.” Edsger Dijkstra, Communications of the ACM, volume 11, number 3, March 1968.
- “Semantics of context-free languages.” Donald E. Knuth, Theory of Computing Systems, volume 2, number 2, June 1968.
- “A formal basis for the heuristic determination of minimum cost paths.” Peter E. Hart, Nils J. Nilsson, and Bertram Raphael, IEEE Transactions on Systems Science and Cybernetics, volume 4, issue 2, July 1968.
- The sciences of the artificial. Herbert Simon, MIT Press, 1969. Third edition published in 1996.
1970 - 1979
- “The Uncanny Valley.” Masahiro Mori, Energy, volume 7, number 4, 1970 (in Japanese). Republished as “The Uncanny Valley [From the Field]” Masahiro Mori, Karl F. MacDorman, and Norri Kageki, IEEE Robotics Automation Magazine, volume 19, number 2, June 2012.
- “A relational model of data for large shared data banks.” Edgar F. Codd, Communications of the ACM, volume 13, number 6, June 1970.
- “Information distribution aspects of design methodology.” David L. Parnas, Technical Report, Carnegie-Mellon University, February 1971.
- “Program development by stepwise refinement.” Niklaus Wirth, Communications of the ACM, volume 14, number 4, April 1971.
- “Organization and maintenance of large ordered indexes.” Rudolf Bayer and Edward M. McCreight, Acta Informatica, volume 1, issue 3, September 1972.
- “Programming with abstract data types.” Barbara Liskov and Stephen Zilles, Proceedings of the ACM SIGPLAN symposium on Very high level languages, April 1974.
- “The UNIX timesharing system.” Dennis Ritchie and Ken Thompson, Communications of the ACM, volume 17, number 7, July 1974.
- “Monitors: An operating system structuring concept.” Tony Hoare (C.A.R. Hoare), Communications of the ACM, volume 17, number 10, October 1974.
- “Computer programming as an art.” Donald E. Knuth, Communications of the ACM, volume 17, number 12, December 1974. ACM Turing award lecture 1974.
- “Efficient string matching: An aid to bibliographic search.” Alfred V. Aho and Margaret J. Corasick, Communications of the ACM, volume 18, issue 6, June 1975.
- “Multidimensional binary search trees used for associative searching.” Jon Louis Bentley, Communications of the ACM, volume 18, issue 9, September 1975.
- “Debunking the ‘Expensive Procedure Call’ myth, or, procedure call implementations Considered Harmful, or, Lambda: The Ultimate GOTO.” Guy Lewis Steele, Jr. MIT AI Lab Memo, AIM-443, October 1977.
- “Time, clocks, and the ordering of events in a distributed system.” Leslie Lamport, Communications of the ACM, volume 21, number 7, July 1978.
- “Can programming be liberated from the Von Neumann style? A functional style and its algebra of programs.” John Backus, Communications of the ACM, volume 21, number 8, August 1978. ACM Turing award lecture 1977.
- “Communicating sequential processes.” Tony Hoare (C.A.R. Hoare), Communications of the ACM, volume 21, number 8, August 1978.
- “Social processes and proofs of theorems and programs.” Richard De Millo, Richard Lipton, and Alan Perlis, Communications of the ACM, volume 22, number 5, May 1979.
- “The ubiquitous B-Tree.” Douglas Comer, ACM Computing Surveys, volume 11, issue 2, June 1979.
- “The paradigms of programming.” Robert W. Floyd, Communications of the ACM, volume 22, number 8, August 1979.
- Computers and intractability: A guide to the theory of NP-completeness. Michael Garey and David Johnson, W. H. Freeman Publishers, 1979.
- Gödel, Escher, Bach: An eternal golden braid. Douglas Hofstadter, Basic Books Publishers, 1979. 20th anniversary edition published 1999.
1980 - 1989
- “Specifying software requirements for complex systems: New techniques and their application.” Kathryn Heninger, IEEE Transactions on Software Engineering, volume SE-6, number 1, January 1980.
- “An improved illumination model for shaded display.” Turner Whitted, Communications of the ACM, volume 23, number 6, June 1980.
- “Program slicing.” Mark Weiser, Proceedings of the 5th international conference on software engineering, March 1981.
- “The Byzantine generals problem.” Leslie Lamport, Robert Shostak, and Marshall Pease, ACM Transactions on Programming Languages and Systems, volume 4, issue 3, July 1982.
- “Epigrams on programming.” Alan J. Perlis, ACM SIGPLAN Notices, volume 17, issue 9, September 1982.
- “A real-time garbage collector based on the lifetimes of objects.” Henry Lieberman and Carl Hewitt, Communications of the ACM volume 26, issue 6, June 1983.
- “Maintaining knowledge about temporal intervals.” James F. Allen, Communications of the ACM, volume 26, number 11, November 1983.
- “Literate programming.” Donald E. Knuth, The Computer Journal, volume 27, number 2, January 1984.
- “Reflections on trusting trust.” Ken Thompson, Communications of the ACM, volume 27, number 8, August 1984. ACM Turing award lecture 1983.
- “Programming pearls: Bumper-sticker computer science.” Jon Bentley, Communications of the ACM, volume 28, number 9, September 1985.
- “Depth-first iterative-deepening: An optimal admissible tree search.” Richard E. Korf, Artificial Intelligence, volume 27, issue 1, September 1985.
- “An experimental evaluation of the assumption of independence in multiversion programming.” John C. Knight and Nancy G. Leveson, IEEE Transactions on Software Engineering, volume SE-12, number 1, January 1986.
- “Typestate: A programming language concept for enhancing software reliability.” Robert E. Strom and Shaula Yemini, IEEE Transactions on Software Engineering, volume SE-12, number 1, January 1986.
- “Fractional cascading: I. A data structuring technique.” Bernard Chazelle and Leonidas J. Guibas, Algorithmica, volume 1, number 1-4, November 1986.
- “A hierarchical O(N log N) force-calculation algorithm.” Josh Barnes and Piet Hut, Nature, volume 324, December 4 1986.
- “Flocks, herds and schools: A distributed behavioral model.” Craig W. Reynolds, Proceedings of the 14th Annual Conference on Computer Graphics and Interactive Techniques, volume 21, number 4, July 1987.
- “A case for redundant arrays of inexpensive disks (RAID).” David A Patterson, Garth Gibson, and Randy H. Katz, Proceedings of the 1988 ACM SIGMOD International Conference on Management of Data, June 1988.
- “Program verification: The very idea.” James H. Fetzer, Communications of the ACM, volume 31, number 9, September 1988.
- “Fast, cheap and out of control: A robot invasion of the solar system.” Rodney Brooks and Anita Flynn, Journal of the British Interplanetary Society, volume 42, 1989.
- “Randomized search trees.” Cecilia R. Aragon and Raimund G. Seidel, Proceedings of the 30th Annual Symposium on Foundations of Computer Science, October 1989.
1990 - 1999
- “Evaluation of safety-critical software.” David Parnas, A. John van Schouwen, and Shu Po Kwan, Communications of the ACM, volume 33, number 6, June 1990.
- “Linearizability: A correctness condition for concurrent objects.” Maurice P. Herlihy and Jeannette M. Wing, ACM Transactions on Programming Languages and Systems, July 1990.
- “A bridging model for parallel computation.” Leslie G. Valiant, Communications of the ACM, volume 33, number 8, August 1990.
- “Wait-free synchronization.” Maurice Herlihy. ACM Transactions on Programming Languages and Systems, volume 13, issue 1, January 1991.
- “A data locality optimizing algorithm.” Michael E. Wolf and Monica S. Lam, Proceedings of the ACM Conference on Programming Language Design and Implementation, June 1991.
- “An approach to the synthesis of life.” Thomas Ray, appearing in Artificial Life II, Santa Fe Institute studies in the sciences of complexity, volume 11, 1991.
- “Symbolic boolean manipulation with ordered binary-decision diagrams.” Randal E. Bryant, ACM Computing Surveys, volume 24, issue 3, September 1992.
- “Transactional memory: Architectural support for lock-free data structures.” Maurice Herlihy and J. Eliot B. Moss, Proceedings of the 20th Annual International Symposium on Computer Architecture, May 1993.
- Design patterns: Elements of reusable object-oriented software. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison-Wesley Professional Computing Series, 1994.
- “A behavioral notion of subtyping.” Barbara H. Liskov and Jeannette M. Wing, ACM Transactions on Programming Languages and Systems, volume 16, issue 6, November 1994.
- “Molecular computation of solutions to combinatorial problems.” Leonard M. Adleman, Science, volume 266, number 5187, November 1994.
- “Hitting the memory wall: Implications of the obvious.” William A. Wulf and Sally A. McKee, ACM SIGARCH Computer Architecture News, volume 23, issue 1, March 1995.
- “Software transactional memory.” Nir Shavit and Dan Touitou, Proceedings of the 14th ACM Symposium on Principles of Distributed Computing, August 1995.
- “Cilk: An efficient multithreaded runtime system.” Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou, ACM SIGPLAN Notices, volume 30, issue 8, August 1995.
- “NESL: A nested data-parallel language.” Guy E. Blelloch, Technical Report CMU-CS-95-170, September 1995.
- “Exokernel: an operating system architecture for application-level resource management.” Dawson R. Engler, M. Frans Kaashoek, and James O’Toole, Proceedings of the Fifteenth ACM Symposium on Operating System Principles, December 1995.
- Growing artificial societies: Social science from the bottom up. Joshua M. Epstein and Robert Axtell, Brookings Institution Press, 1996.
- “The cathedral and the bazaar.” Eric S. Raymond, first presented by the author at the Linux Kongress, May 1997. Published as a part of a book with the same title in 1999.
- “The PageRank Citation Ranking: Bringing Order to the Web”. Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd. Technical Report. Stanford InfoLab. 1999.
2000 - 2009
- Problem frames: analyzing and structuring software development problems. Michael Jackson, Addison-Wesley Longman Publishing, 2001.
- “Principled design of the modern Web architecture.” Roy T. Fielding and Richard N. Taylor, ACM Transactions on Internet Technology, volume 2, issue 2, May 2002.
- “Brewer’s conjecture and the feasibility of consistent, available, partition-tolerant web services.” Seth Gilbert and Nancy Lynch, ACM SIGACT News, volume 33, issue 2, June 2002.
- “QuickCheck: A lightweight tool for random testing of Haskell programs.” Koen Claessen and John Hughes, ACM SIGPLAN Notices, volume 37, issue 12, December 2002.
- “The evolutionary origin of complex features.” Richard E. Lenski, Charles Ofria, Robert T. Pennock, and Christoph Adami, Nature, volume 423, May 8 2003.
- “Traits: Composable units of behaviour.” Schärli, Nathanael, Stéphane Ducasse, Oscar Nierstrasz, and Andrew P. Black, European Conference on Object-Oriented Programming, July 21-25 2003.
- “The Google file system.” Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung, 19th ACM Symposium on Operating Systems Principles, October 2003.
- “Making reliable distributed systems in the presence of software errors.” Joe Armstrong, Doctoral dissertation. The Royal Institute of Technology Stockholm, Sweden. November 2003.
- “Hazard pointers: Safe memory reclamation for lock-free objects.” Maged M. Michael, IEEE Transactions on Parallel and Distributed Systems, volume 15, issue 6, June 2004.
- “Is computer science science?” by Peter J. Denning, Communications of the ACM, volume 48, number 4, April 2005.
- Software abstractions: Logic, language, and analysis. Daniel Jackson, MIT Press, 2006. Revised edition published 2016.
- “The purely functional software deployment model.” Eelco Dolstra, Doctoral dissertation. Faculty of Science, Utrecht, The Netherlands. January 2006.
- “The rise and fall of High Performance Fortran: An historical object lesson.” Ken Kennedy, Charles Koelbel, and Hans Zima. Proceedings of the third ACM SIGPLAN conference on History of programming languages. 2007.
- “Singularity: rethinking the software stack.” Galen C. Hunt and James R. Larus. ACM SIGOPS Operating Systems Review, volume 41, issue 2, April 2007.
- “Dynamo: Amazon’s highly available key-value store.” Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels, 21st ACM Symposium on Operating Systems Principles. October 2007.
- “MapReduce: Simplified data processing on large clusters.” Jeffrey Dean and Sanjay Ghemawat, Communications of the ACM, volume 51, number 1. January 2008.
- “Bigtable: A distributed storage system for structured data.” Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber, ACM Transactions on Computer Systems, volume 26, issue 2, June 2008.
- “KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs.” Cristian Cadar, Daniel Dunbar, and Dawson R. Engler, Proceedings of the 8th USENIX Symposium on Operating Systems Design and Implementation, volume 8, December 2008.
- “Parallel programming must be deterministic by default.” Robert L. Bocchino, Jr., Vikram S. Adve, Sarita V. Adve, and Marc Snir, Proceedings of the First USENIX conference on Hot topics in parallelism. March 2009.
- “The multikernel: A new OS architecture for scalable multicore systems.” Andrew Baumann, Paul Barham, Pierre-Evariste Dagand, Tim Harris, Rebecca Isaacs, Simon Peter, Timothy Roscoe, Adrian Schüpbach, and Akhilesh Singhania, Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles. October 2009.
2010 - 2019
- “A few billion lines of code later: Using static analysis to find bugs in the real world.” Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler, Communications of the ACM, volume 53, number 2, February 2010.
- “Cycles, cells and platters: An empirical analysis of hardware failures on a million consumer PCs.” Edmund B. Nightingale, John R. Douceur, and Vince Orgovan, Proceedings of the Sixth Conference on Computer systems, April 2011.
- “Dark silicon and the end of multicore scaling.” Hadi Esmaeilzadeh, Emily Blem, Renée St. Amant, Karthikeyan Sankaralingam, and Doug Burger, Proceedings of the 38th International Symposium on Computer Architecture (ISCA ’11), June 2011.
- “The tail at scale.” Jeffrey Dean and Luiz Andre Barroso, Communications of the ACM, volume 56, number 2, February 2013.
- “Unikernels: Library operating systems for the cloud.” Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, David Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand and Jon Crowcroft, Proceedings of the 18th International Conference on Architectural Support for Programming Languages and Operating Systems, March 2013.
- “Spanner: Google’s globally distributed database.” James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, Jeffrey John Furman, Sanjay Ghemawat et al. ACM Transactions on Computer Systems, volume 31, number 3, August 2013.
- “In search of an understandable consensus algorithm.” Diego Ongaro and John Ousterhout, Proceedings of the 2014 USENIX Annual Technical Conference, June 2014.
- “Large-scale cluster management at Google with Borg.” Abhishek Verma, Luis Pedrosa, Madhukar R. Korupolu, David Oppenheimer, Eric Tune, and John Wilkes, Proceedings of the Tenth European Conference on Computer Systems, April 2015.
- “The Dataflow Model: A practical approach to balancing correctness, latency, and cost in massive-scale, unbounded, out-of-order data processing.” Tyler Akidau, Robert Bradshaw, Craig Chambers, Slava Chernyak, Rafael J. Fernández-Moctezuma, Reuven Lax, Sam McVeety, Daniel Mills, Frances Perry, Eric Schmidt, and Sam Whittle, Proceedings of the VLDB Endowment, volume 8, August 2015.
- “Engineering record and replay for deployability: Extended technical report.” Robert O’Callahan, Chris Jones, Nathan Froyd, Kyle Huey, Albert Noll, and Nimrod Partush. Mozilla Research. May 2017.
- “Bringing the web up to speed with WebAssembly.” Andreas Haas, Andreas Rossberg, Derek L. Schuff, Ben L. Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, and JF Bastien, Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, June 2017.
- “Looking back at Postgres.” Joseph M. Hellerstein. In Making Databases Work: the Pragmatic Wisdom of Michael Stonebraker, Association for Computing Machinery and Morgan & Claypool, 205–224, December 2018.
2020 - present
- “Firecracker: Lightweight virtualization for serverless applications.” Alexandru Agache, Marc Brooker, Andreea Florescu, Alexandra Iordache, Anthony Liguori, Rolf Neugebauer, Phil Piwonka, and Diana-Maria Popa, Proceedings of the 17th USENIX Symposium on Networked Systems Design and Implementation (NSDI ’20), February 2020.
See also Creating a computer science canon: A course of classic readings in
computer science,
Michael Eisenberg. University of Colorado.
On Teaching
- “Software engineering programs are not computer science programs.” David Parnas, IEEE Software, volume 16, issue 6, 1999.
- “The undergraduate language course: What to do?” Joe Bergin, SIGPLAN Notices, volume 36, number 6, 2001.
- “A 2007 model curriculum for a liberal arts degree in computer science.” Liberal Arts Computer Science Consortium (LACS). ACM Journal on Educational Resources in Computing, volume 17, number 2, 2007.
- “Computer science and the liberal arts: A philosophical examination.” Henry M. Walker and Charles Kelemen, ACM Transactions on Computing Education, volume 10, number 1, 2010.
Candidate Papers
“Algorithms + Data Structures = Programs” - Niklaus Wirth
- “File searching using variable length keys.” Rene de la Briandais, Proceedings of the Western Joint Computer Conference, 1959.
- “An algorithm for the organization of information.” Georgy Adelson-Velsky and G. Evgenii Landis, Proceedings of the USSR Academy of Sciences, 1962.
- “PATRICIA—practical algorithm to retrieve information coded in alphanumeric.” Donald R. Morrison, Journal of the ACM, volume 15, issue 4, October 1968.
- “Organization and maintenance of large ordered indexes.” Rudolf Bayer and Edward M. McCreight, Acta Informatica, volume 1, issue 3, September 1972.
- “Binary search trees of bounded balance.” Jürg Nievergelt and Edward M. Reingold, SIAM journal on Computing volume 2, number 1, March 1973.
- “Linear pattern matching algorithms.” Peter Weiner. Proceedings of the 14th Annual Symposium on Switching and Automata Theory, October 1973.
- “Multidimensional binary search trees used for associative searching.” Jon Louis Bentley, Communications of the ACM, volume 18, issue 9, September 1975.
- “A space-economical suffix tree construction algorithm.” Edward M. McCreight. Journal of the ACM, volume 22, issue 2, April 1976.
- “A dichromatic framework for balanced trees.” Leonidas J. Guibas and Robert Sedgewick, Proceedings of the 19th Annual Symposium on Foundations of Computer Science, October 1978.
- “The ubiquitous B-Tree.” Douglas Comer, ACM Computing Surveys, volume 11, issue 2, June 1979.
- “Efficient locking for concurrent operations on B-trees.” Philip L. Lehman, ACM Transactions on Database Systems, volume 6, issue 4, December 1981.
- “Geometric modeling using octree encoding.” Donald Meagher, Computer Graphics and Image Processing, volume 19, number 2, June 1982.
- “Self-adjusting binary search trees.” Daniel Dominic Sleator and Robert Endre Tarjan, Journal of the ACM, volume 32, issue 3, July 1985.
- “Robin hood hashing.” Pedro Celis, Doctoral dissertation, University of Waterloo, 1986. Technical report CS-86-14.
- “A study of index structures for main memory database management systems.” Tobin J. Lehman and Michael J. Carey, Proceedings of the 12th International Conference on Very Large Data Bases, August 1986.
- “Fractional cascading: I. A data structuring technique.” Bernard Chazelle and Leonidas J. Guibas, Algorithmica, volume 1, number 1-4, November 1986.
- “Randomized search trees.” Cecilia R. Aragon and Raimund G. Seidel, Proceedings of the 30th Annual Symposium on Foundations of Computer Science, October 1989.
- “Skip lists: A probabilistic alternative to balanced trees.” William Pugh. Communications of the ACM, volume 33, issue 6, June 1990.
- “Ropes: An alternative to strings.” Hans J. Boehm, Russ Atkinson, and Michael Plass. Software: Practice and Experience volume 25, number 12, December 1995.
- “The log-structured merge-tree (LSM-tree).” Patrick O’Neil, Edward Cheng, Dieter Gawlick, and Elizabeth O’Neil. Acta Informatica, volume 33, issue 4, June 1996.
- “Consistent hashing and random trees: Distributed caching protocols for relieving hot spots on the World Wide Web.” David Karger, Eric Lehman, Tom Leighton, Rina Panigrahy, Matthew Levine, and Daniel Lewin, Proceedings of the 29th Annual ACM Symposium on Theory of Computing May 1997.
- “Cache-oblivious algorithms.” Matteo Frigo, Charles E. Leiserson, Harald Prokop, and Sridhar Ramachandran, Proceedings of the 40th Annual Symposium on Foundations of Computer Science, October 1999.
- “Cuckoo hashing.” Rasmus Pagh and Flemming Friche Rodler, Proceedings of the 9th Annual European Symposium on Algorithms August 2001.
- “The cost of cache-oblivious searching.” Michael A. Bender, Gerth Stølting Brodal, Rolf Fagerberg, Dongdong Ge, Simai He, Haodung Hu, John Iacono, and Alejandro López-Ortiz, Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, October 2003.
- “Cache-oblivious B-Tree.” Michael A. Bender, Erik D. Demaine, and Martin Farach-Colton, SIAM Journal on Computing, volume 35, issue 2, March 2005.
- “Hopscotch hashing.” Maurice Herlihy, Nir Shavit, and Moran Tzafrir, Proceedings of the 22nd International Symposium on Distributed Computing, September 2008.
- “Z-rays: Divide arrays and conquer speed and flexibility.” Jennifer B. Sartor, Stephen M. Blackburn, Daniel Frampton, Martin Hirzel, and Kathryn S. McKinley, Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation June 2010.
- “The adaptive radix tree: ARTful indexing for main-memory databases.” Viktor Leis, Alfons Kemper, and Thomas Neumann, Proceedings of the IEEE 29th International Conference on Data Engineering, April 2013.
- “Logical physical clocks and consistent snapshots in globally distributed databases.” Sandeep Kulkarni, Murat Demirbas, Deepak Madeppa, Bharadwaj Avva, and Marcelo Leone, Technical Report 2014-04, SUNY University at Buffalo, 2014.
- “All file systems are not created equal: On the complexity of crafting crash-consistent applications.” Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau, Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation, October 2014.
- “Rank-balanced trees.” Bernhard Haeupler, Siddhartha Sen, and Robert E. Tarjan. ACM Transactions on Algorithms volume 11, number 4, June 2015.
- “WiscKey: Separating keys from values in SSD-conscious storage.” Lanyue Lu, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau, Proceedings of the 14th USENIX Conference on File and Storage Technologies (FAST), February 2016.
- “An introduction to B ε-trees and write-optimization.” Michael A. Bender, Martin Farach-Colton, William Jannen, Rob Johnson, Bradley C. Kuszmaul, Donald E. Porter, Jun Yuan, and Yang Zhan, “;login: the USENIX magazine”, volume 40, number 5, October 2015.
- “The many faces of consistency.” Marcos K. Aguilera and Douglas B. Terry. Data Engineering Bulletin, March 2016.
- “40 years of suffix trees.” Alberto Apostolico, Maxime Crochemore, Martin Farach-Colton, Zvi Galil, and S. Muthukrishnan, Communications of the ACM, volume 59, number 4, April 2016.
- “Deletion without rebalancing in binary search trees.” Siddhartha Sen, Robert E. Tarjan, and David Hong Kyun Kim, ACM Transactions on Algorithms (TALG), volume 12, number 4, September 2016.
- “Consistent hashing with bounded loads.” Vahab Mirrokni, Mikkel Thorup, and Morteza Zadimoghaddam, arXiv:1608.01350, August 2016.
- “Array layouts for comparison-based searching.” Paul-Virak Khuong and Pat Morin, Journal of Experimental Algorithmics (JEA), volume 22, 2017.
- “Cicada: Dependably fast multi-core in-memory transactions.” Hyeontaek Lim, Michael Kaminsky, and David G. Andersen, Proceedings of the 2017 ACM International Conference on Management of Data (SIGMOD), May 2017.
- “Mison: a fast JSON parser for data analytics.” Yinan Li, Nikos R. Katsipoulakis, Badrish Chandramouli, Jonathan Goldstein, and Donald Kossmann, Proceedings of the VLDB Endowment, volume 10, number 10, June 2017.
- “Anna: a KVS for any scale.” Chengang Wu, Jose M. Faliero, Yihan Lin, and Joseph M. Hellerstein, 34th IEEE International Conference on Data Engineering (ICDE), April 2018.
- “Filter before you parse: Faster analytics on raw data with sparser.” Shoumik Palkar, Firas Abuzaid, Peter Bailis, and Matei Zaharia, Proceedings of the VLDB Endowment, volume 11, number 11, June 2018.
- “A fork() in the road.” Andrew Baumann, Jonathan Appavoo, Orran Krieger, and Timothy Roscoe, Workshop on Hot Topics in Operating Systems (HotOS), May 2019.
- “Snap: A microkernel approach to host networking.” Michael Marty, Marc de Kruijf, Jacob Adriaens, Christopher Alfeld, Sean Bauer, Carlo ContavalliMichael Dalton, Nandita Dukkipati, William C. Evans, Steve Gribble, Nicholas Kidd, RomanKononov, Gautam Kumar, Carl Mauer, Emily Musick, Lena Olson, Erik Rubow, Michael Ryan,Kevin Springborn, Paul Turner, Valas Valancius, Xi Wang, and Amin Vahdat, Proceedings of the ACM SIGOPS 27th Symposium on Operating Systems Principles, October 2019.
- “A Linux in unikernel clothing.” Hsuan-Chi Kuo, Dan Williams, Ricardo Koller, and Sibin Mohan, Proceedings of the European Conference on Computer Systems, April 2020.
- “Validating UTF-8 in less than one instruction per byte.” John Keiser and Daniel Lemire, Software: Practice and Experience, volume 51, number 5, May 2021.
- “DBOS: A DBMS-oriented operating system.” Athinagoras Skiadopoulos, Qian Li, Peter Kraft, Kostis Kaffes, Daniel Hong, Shana
Mathew, David Bestor, Michael Cafarella, Vijay Gadepally, Goetz Graefe, Jeremy Kepner, Christos Kozyrakis, Tim Kraska, Michael Stonebraker, Lalith Suresh, and Matei Zaharia, Proceedings of the VLDB Endowment, volume 15, number 1, September 2022.