[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71106":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},71106,"software-papers","facundoolano\u002Fsoftware-papers","facundoolano","📚 A curated list of papers for Software Engineers","",null,"Python",6501,332,76,3,0,5,11,39,15,82.97,"MIT License",false,"main",true,[27,28,29,30,31],"awesome-list","computer-science","papers","research","software-engineering","2026-06-12 04:00:59","# Papers for Software Engineers [![workflow](https:\u002F\u002Fgithub.com\u002Ffacundoolano\u002Fsoftware-papers\u002Factions\u002Fworkflows\u002Ftests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Ffacundoolano\u002Fsoftware-papers\u002Factions\u002Fworkflows\u002Ftests.yml)\n\nA curated list of papers that may be of interest to Software Engineering students or professionals.\nSee the [sources](#sources) and [selection criteria](#selection-criteria) below.\n\n\u003Cbr\u002F>\n\n\u003Cdetails open>\n\u003Csummary>List of papers by topic\u003C\u002Fsummary>\n\u003Cbr\u002F>\n\n1. **Von Neumann's First Computer Program. [Knuth (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F356580.356581).**\n    \\\n    \u003Csub>Computer History; Early Programming\u003C\u002Fsub>\n    * The Education of a Computer. [Hopper (1952)](https:\u002F\u002Fpeople.cs.umass.edu\u002F~emery\u002Fclasses\u002Fcmpsci691st\u002Freadings\u002FPL\u002Fp243-hopper.pdf).\n    * Recursive Programming. [Dijkstra (1960)](https:\u002F\u002Fwww.ics.uci.edu\u002F~jajones\u002FINF102-S18\u002Freadings\u002F07_dijkstra.pdf).\n    * Programming Considered as a Human Activity. [Dijkstra (1965)](https:\u002F\u002Fwww.cs.utexas.edu\u002F~EWD\u002Ftranscriptions\u002FEWD01xx\u002FEWD117.html).\n    * Goto Statement Considered Harmful. [Dijkstra (1968)](https:\u002F\u002Fhomepages.cwi.nl\u002F~storm\u002Fteaching\u002Freader\u002FDijkstra68.pdf).\n    * Program development by stepwise refinement. [Wirth (1971)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F362575.362577).\n    * The Humble Programmer. [Dijkstra (1972)](http:\u002F\u002Frkka21.ru\u002Fdocs\u002Fturing-award\u002Fed1972e.pdf).\n    * Computer Programming as an Art. [Knuth (1974)](http:\u002F\u002Fwww.cs.bilkent.edu.tr\u002F~canf\u002Fknuth1974.pdf).\n    * The paradigms of programming. [Floyd (1979)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1283920.1283934).\n    * Literate Programming. [Knuth (1984)](http:\u002F\u002Fwww.literateprogramming.com\u002Fknuthweb.pdf).\n\n1. **Computing Machinery and Intelligence. [Turing (1950)](https:\u002F\u002Fwww.csee.umbc.edu\u002Fcourses\u002F471\u002Fpapers\u002Fturing.pdf).**\n    \\\n    \u003Csub>Early Artificial Intelligence\u003C\u002Fsub>\n    * Some Moral and Technical Consequences of Automation. [Wiener (1960)](https:\u002F\u002Fnissenbaum.tech.cornell.edu\u002Fpapers\u002FWiener.pdf).\n    * Steps towards Artificial Intelligence. [Minsky (1960)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FMinsky%20-%20Steps%20Toward%20Artificial%20Intelligence.pdf).\n    * ELIZA—a computer program for the study of natural language communication between man and machine. [Weizenbaum (1966)](http:\u002F\u002Fweb.stanford.edu\u002Fclass\u002Fcs124\u002Fp36-weizenabaum.pdf).\n    * A Theory of the Learnable. [Valiant (1984)](https:\u002F\u002Fpeople.mpi-inf.mpg.de\u002F~mehlhorn\u002FSeminarEvolvability\u002FValiantLearnable.pdf).\n\n1. **A Method for the Construction of Minimum-Redundancy Codes. [Huffman (1952)](http:\u002F\u002Fcompression.ru\u002Fdownload\u002Farticles\u002Fhuff\u002Fhuffman_1952_minimum-redundancy-codes.pdf).**\n    \\\n    \u003Csub>Information Theory\u003C\u002Fsub>\n    * Prediction and Entropy of Printed English. [Shannon (1950)](https:\u002F\u002Fwww.princeton.edu\u002F~wbialek\u002Frome\u002Frefs\u002Fshannon_51.pdf).\n    * A Universal Algorithm for Sequential Data Compression. [Ziv, Lempel (1977)](https:\u002F\u002Fcourses.cs.duke.edu\u002Fspring03\u002Fcps296.5\u002Fpapers\u002Fziv_lempel_1977_universal_algorithm.pdf).\n    * Fifty Years of Shannon Theory. [Verdú (1998)](https:\u002F\u002Fmonoskop.org\u002Fimages\u002F7\u002F78\u002FVerdu_Sergio_1998_Fifty_Years_of_Shannon_Theory.pdf).\n\n1. **Engineering a Sort Function. [Bentley, McIlroy (1993)](https:\u002F\u002Fcs.fit.edu\u002F~pkc\u002Fclasses\u002Fwriting\u002Fsamples\u002Fbentley93engineering.pdf).**\n    \\\n    \u003Csub>Data Structures; Algorithms\u003C\u002Fsub>\n    * On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem. [Kruskal (1956)](https:\u002F\u002Fwww.cs.yale.edu\u002Fhomes\u002Flans\u002Freadings\u002Frouting\u002Fkruskal-1956.pdf).\n    * A Note on Two Problems in Connexion with Graphs. [Dijkstra (1959)](https:\u002F\u002Fjmvidal.cse.sc.edu\u002Flibrary\u002Fdijkstra59a.pdf).\n    * Quicksort. [Hoare (1962)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.5555\u002F63445.C1104357).\n    * Space\u002FTime Trade-offs in Hash Coding with Allowable Errors. [Bloom (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F362686.362692).\n    * The Ubiquitous B-Tree. [Comer (1979)](http:\u002F\u002Fcarlosproal.com\u002Fir\u002Fpapers\u002Fp121-comer.pdf).\n    * Programming pearls: Algorithm design techniques. [Bentley (1984)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F358234.381162).\n    * Programming pearls: The back of the envelope. [Bentley (1984)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F357994.381168).\n    * Making data structures persistent. [Driscoll et al (1986)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F12130.12142).\n\n1. **A Design Methodology for Reliable Software Systems. [Liskov (1972)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1479992.1480018).**\n    \\\n    \u003Csub>Software Design\u003C\u002Fsub>\n    * On the Criteria To Be Used in Decomposing Systems into Modules. [Parnas (1972)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F361598.361623).\n    * Information Distribution Aspects of Design Methodology. [Parnas (1972)](https:\u002F\u002Fcseweb.ucsd.edu\u002F~wgg\u002FCSE218\u002FParnas-IFIP71-information-distribution.PDF).\n    * Programming with Abstract Data Types. [Liskov, Zilles (1974)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F942572.807045).\n    * Designing Software for Ease of Extension and Contraction. [Parnas (1979)](https:\u002F\u002Fcourses.cs.washington.edu\u002Fcourses\u002Fcse503\u002F08wi\u002Fparnas-1979.pdf).\n    * Programming as Theory Building. [Naur (1985)](https:\u002F\u002Fpages.cs.wisc.edu\u002F~remzi\u002FNaur.pdf).\n    * Towards a Theory of Conceptual Design for Software. [Jackson (2015)](https:\u002F\u002Fgroups.csail.mit.edu\u002Fsdg\u002Fpubs\u002F2015\u002Fconcept-essay.pdf).\n\n1. **Programming Paradigms for Dummies: What Every Programmer Should Know. [Van Roy (2012)](https:\u002F\u002Fwebperso.info.ucl.ac.be\u002F~pvr\u002FVanRoyChapter.pdf).**\n    \\\n    \u003Csub>Programming Paradigms\u003C\u002Fsub>\n    * Recursive Functions of Symbolic Expressions and Their Computation by Machine. [McCarthy (1960)](http:\u002F\u002Fjmc.stanford.edu\u002Farticles\u002Frecursive\u002Frecursive.pdf).\n    * The Semantics of Predicate Logic as a Programming Language. [Van Emden, Kowalski (1976)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F321978.321991).\n    * The Smalltalk-76 Programming System Design and Implementation. [Ingalls (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F512760.512762).\n    * A Theory of Type Polymorphism in Programming. [Milner (1978)](https:\u002F\u002Fhomepages.inf.ed.ac.uk\u002Fwadler\u002Fpapers\u002Fpapers-we-love\u002Fmilner-type-polymorphism.pdf).\n    * Can Programming Be Liberated from the von Neumann Style? [Backus (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359576.359579).\n    * The Semantic Elegance of Applicative Languages. [Turner (1981)](http:\u002F\u002Fnsl.com\u002Fmisc\u002Fsasl\u002Fparaffins-turner.pdf).\n    * On understanding types, data abstraction, and polymorphism. [Cardelli, Wegner (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F6041.6042).\n    * Why Functional Programming Matters. [Hughes (1990)](https:\u002F\u002Fwww.cs.kent.ac.uk\u002Fpeople\u002Fstaff\u002Fdat\u002Fmiranda\u002Fwhyfp90.pdf).\n    * SELF: The Power of Simplicity. [Ungar, Smith (1991)](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~fateman\u002F264\u002Fpapers\u002Fselfpower.ps).\n    * The essence of functional programming. [Wadler (1992)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F143165.143169).\n    * QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs. [Claessen, Hughes (2000)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F351240.351266).\n    * Church's Thesis and Functional Programming. [Turner (2006)](https:\u002F\u002Fkar.kent.ac.uk\u002F88944\u002F1\u002Fctfp.pdf_nocoversheet).\n\n1. **An Incremental Approach to Compiler Construction. [Ghuloum (2006)](http:\u002F\u002Fscheme2006.cs.uchicago.edu\u002F11-ghuloum.pdf).**\n    \\\n    \u003Csub>Language Design; Compilers\u003C\u002Fsub>\n    * The Next 700 Programming Languages. [Landin (1966)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~crary\u002F819-f09\u002FLandin66.pdf).\n    * Programming pearls: little languages. [Bentley (1986)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F6424.315691).\n    * The Essence of Compiling with Continuations. [Flanagan et al (1993)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F173262.155113).\n    * A Brief History of Just-In-Time. [Aycock (2003)](https:\u002F\u002Fwww.cs.tufts.edu\u002Fcomp\u002F150CMP\u002Fpapers\u002Faycock03jit.pdf).\n    * LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. [Lattner, Adve (2004)](https:\u002F\u002Fllvm.org\u002Fpubs\u002F2004-01-30-CGO-LLVM.pdf).\n    * A Unified Theory of Garbage Collection. [Bacon, Cheng, Rajan (2004)](https:\u002F\u002Fcourses.cs.washington.edu\u002Fcourses\u002Fcse590p\u002F05au\u002Fp50-bacon.pdf).\n    * A Nanopass Framework for Compiler Education. [Sarkar, Waddell, Dybvig (2005)](https:\u002F\u002Fwww.cambridge.org\u002Fcore\u002Fservices\u002Faop-cambridge-core\u002Fcontent\u002Fview\u002F1E378B9B451270AF6A155FA0C21C04A3\u002FS0956796805005605a.pdf\u002Feducational_pearl_a_nanopass_framework_for_compiler_education.pdf).\n    * Bringing the Web up to Speed with WebAssembly. [Haas (2017)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F3062341.3062363).\n\n1. **No Silver Bullet: Essence and Accidents of Software Engineering. [Brooks (1987)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FBrooks-NoSilverBullet.pdf).**\n    \\\n    \u003Csub>Software Engineering; Project Management\u003C\u002Fsub>\n    * How do committees invent? [Conway (1968)](https:\u002F\u002Fwww.melconway.com\u002FHome\u002Fpdf\u002Fcommittees.pdf).\n    * Managing the Development of Large Software Systems. [Royce (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.5555\u002F41765.41801).\n    * The Mythical Man Month. [Brooks (1975)](https:\u002F\u002Fwww.cs.virginia.edu\u002F~evans\u002Fgreatworks\u002Fmythical.pdf).\n    * On Building Systems That Will Fail. [Corbató (1991)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F114669.114686).\n    * Software Aging. [Parnas (1994)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.5555\u002F257734.257788).\n    * Laws of Software Evolution Revisited. [Lehman (1997)](https:\u002F\u002Fwww.rose-hulman.edu\u002FClass\u002Fcsse\u002Fcsse490\u002Fcs490-const-and-evol\u002FLawsOfSoftwareEvolutionRevisited.pdf).\n    * The Cathedral and the Bazaar. [Raymond (1998)](http:\u002F\u002Fusers.ece.utexas.edu\u002F~perry\u002Feducation\u002F382v-s08\u002Fpapers\u002Fraymond.pdf).\n    * Out of the Tar Pit. [Moseley, Marks (2006)](http:\u002F\u002Fcurtclifton.net\u002Fpapers\u002FMoseleyMarks06a.pdf).\n\n1. **Communicating sequential processes. [Hoare (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359576.359585).**\n    \\\n    \u003Csub>Concurrency\u003C\u002Fsub>\n    * Solution Of a Problem in Concurrent Program Control. [Dijkstra (1965)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F365559.365617).\n    * Monitors: An operating system structuring concept. [Hoare (1974)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F355620.361161).\n    * On the Duality of Operating System Structures. [Lauer, Needham (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F850657.850658).\n    * Software Transactional Memory. [Shavit, Touitou (1997)](https:\u002F\u002Fgroups.csail.mit.edu\u002Ftds\u002Fpapers\u002FShavit\u002FShavitTouitou.pdf).\n\n1. **The UNIX Time- Sharing System. [Ritchie, Thompson (1974)](https:\u002F\u002Fdsf.berkeley.edu\u002Fcs262\u002Funix.pdf).**\n    \\\n    \u003Csub>Operating Systems\u003C\u002Fsub>\n    * An Experimental Time-Sharing System. [Corbató, Merwin Daggett, Daley (1962)](http:\u002F\u002Flarch-www.lcs.mit.edu:8001\u002F~corbato\u002Fsjcc62\u002F).\n    * The Structure of the \\\"THE\\\"-Multiprogramming System. [Dijkstra (1968)](https:\u002F\u002Fwww.eecs.ucf.edu\u002F~eurip\u002Fpapers\u002Fdijkstra-the68.pdf).\n    * The nucleus of a multiprogramming system. [Hansen (1970)](http:\u002F\u002Fwww.brinch-hansen.net\u002Fpapers\u002F1970a.pdf).\n    * Reflections on Trusting Trust. [Thompson (1984)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~rdriley\u002F487\u002Fpapers\u002FThompson_1984_ReflectionsonTrustingTrust.pdf).\n    * The Design and Implementation of a Log-Structured File System. [Rosenblum, Ousterhout (1991)](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~brewer\u002Fcs262\u002FLFS.pdf).\n\n1. **A Relational Model of Data for Large Shared Data Banks. [Codd (1970)](https:\u002F\u002Fwww.seas.upenn.edu\u002F~zives\u002F03f\u002Fcis550\u002Fcodd.pdf).**\n    \\\n    \u003Csub>Databases\u003C\u002Fsub>\n    * Granularity of Locks and Degrees of Consistency in a Shared Data Base. [Gray et al (1975)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~natassa\u002Fcourses\u002F15-721\u002Fpapers\u002FGrayLocks.pdf).\n    * Access Path Selection in a Relational Database Management System. [Selinger et al (1979)](https:\u002F\u002Fcourses.cs.duke.edu\u002Fcompsci516\u002Fcps216\u002Fspring03\u002Fpapers\u002Fselinger-etal-1979.pdf).\n    * The Transaction Concept: Virtues and Limitations. [Gray (1981)](https:\u002F\u002Fjimgray.azurewebsites.net\u002Fpapers\u002FtheTransactionConcept.pdf).\n    * The design of POSTGRES. [Stonebraker, Rowe (1986)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F16856.16888).\n    * Rules of Thumb in Data Engineering. [Gray, Shenay (1999)](http:\u002F\u002Fresearch.microsoft.com\u002Fen-us\u002Fum\u002Fpeople\u002Fgray\u002Fpapers\u002Fms_tr_99_100_rules_of_thumb_in_data_engineering.pdf).\n\n1. **A Protocol for Packet Network Intercommunication. [Cerf, Kahn (1974)](https:\u002F\u002Fwww.cs.princeton.edu\u002Fcourses\u002Farchive\u002Ffall06\u002Fcos561\u002Fpapers\u002Fcerf74.pdf).**\n    \\\n    \u003Csub>Networking\u003C\u002Fsub>\n    * Ethernet: Distributed packet switching for local computer networks. [Metcalfe, Boggs (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F360248.360253).\n    * End-To-End Arguments in System Design. [Saltzer, Reed, Clark (1984)](https:\u002F\u002Fgroups.csail.mit.edu\u002Fana\u002FPublications\u002FPubPDFs\u002FEnd-to-End%20Arguments%20in%20System%20Design.pdf).\n    * An algorithm for distributed computation of a Spanning Tree in an Extended LAN. [Perlman (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F319056.319004).\n    * The Design Philosophy of the DARPA Internet Protocols. [Clark (1988)](http:\u002F\u002Fccr.sigcomm.org\u002Farchive\u002F1995\u002Fjan95\u002Fccr-9501-clark.pdf).\n    * TOR: The second generation onion router. [Dingledine et al (2004)](https:\u002F\u002Fsvn-archive.torproject.org\u002Fsvn\u002Fprojects\u002Fdesign-paper\u002Ftor-design.pdf).\n    * Why the Internet only just works. [Handley (2006)](https:\u002F\u002Fwww2.cs.uh.edu\u002F~gnawali\u002Fcourses\u002Fcosc6377-f17\u002Fpapers\u002FHandley06.pdf).\n    * The Network is Reliable. [Bailis,  Kingsbury (2014)](https:\u002F\u002Fqueue.acm.org\u002Fdetail.cfm?id=2655736).\n\n1. **New Directions in Cryptography. [Diffie, Hellman (1976)](https:\u002F\u002Fee.stanford.edu\u002F~hellman\u002Fpublications\u002F24.pdf).**\n    \\\n    \u003Csub>Cryptography\u003C\u002Fsub>\n    * A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. [Rivest, Shamir, Adleman (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359340.359342).\n    * How To Share A Secret. [Shamir (1979)](https:\u002F\u002Fweb.mit.edu\u002F6.857\u002FOldStuff\u002FFall03\u002Fref\u002FShamir-HowToShareASecret.pdf).\n    * A Digital Signature Based on a Conventional Encryption Function. [Merkle (1987)](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~raluca\u002Fcs261-f15\u002Freadings\u002Fmerkle.pdf).\n    * The Salsa20 family of stream ciphers. [Bernstein (2007)](https:\u002F\u002Fcr.yp.to\u002Fsnuffle\u002Fsalsafamily-20071225.pdf).\n\n1. **Time, Clocks, and the Ordering of Events in a Distributed System. [Lamport (1978)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Ftime-clocks.pdf).**\n    \\\n    \u003Csub>Distributed Systems\u003C\u002Fsub>\n    * Self-stabilizing systems in spite of distributed control. [Dijkstra (1974)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F361179.361202).\n    * The Byzantine Generals Problem. [Lamport, Shostak, Pease (1982)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Fbyz.pdf).\n    * Impossibility of Distributed Consensus With One Faulty Process. [Fisher, Lynch, Patterson (1985)](https:\u002F\u002Fgroups.csail.mit.edu\u002Ftds\u002Fpapers\u002FLynch\u002Fjacm85.pdf).\n    * Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial. [Schneider (1990)](https:\u002F\u002Fwww.cs.cornell.edu\u002Ffbs\u002Fpublications\u002FSMSurvey.pdf).\n    * Practical Byzantine Fault Tolerance. [Castro, Liskov (1999)](https:\u002F\u002Fcss.csail.mit.edu\u002F6.824\u002F2014\u002Fpapers\u002Fcastro-practicalbft.pdf).\n    * Paxos made simple. [Lamport (2001)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Fpaxos-simple.pdf).\n    * Paxos made live - An Engineering Perspective. [Chandra, Griesemer, Redstone (2007)](https:\u002F\u002Fwww.cs.utexas.edu\u002Fusers\u002Florenzo\u002Fcorsi\u002Fcs380d\u002Fpapers\u002Fpaper2-1.pdf).\n    * In Search of an Understandable Consensus Algorithm. [Ongaro, Ousterhout (2014)](https:\u002F\u002Fraft.github.io\u002Fraft.pdf).\n\n1. **Designing for Usability: Key Principles and What Designers Think. [Gould, Lewis (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F3166.3170).**\n    \\\n    \u003Csub>Human-Computer Interaction; User Interfaces\u003C\u002Fsub>\n    * As We May Think. [Bush (1945)](https:\u002F\u002Fweb.mit.edu\u002FSTS.035\u002Fwww\u002FPDFs\u002Fthink.pdf).\n    * Man-Computer symbiosis. [Licklider (1958)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FLicklider%20-%20Man-Computer%20Symbiosis.pdf).\n    * Some Thoughts About the Social Implications of Accessible Computing. [David, Fano (1965)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1463891.1463917).\n    * Tutorials for the First-Time Computer User. [Al-Awar, Chapanis, Ford (1981)](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1zA4LkSHoanjjhOVCwYzrkdkdzgPbKWJ9\u002Fview?usp=sharing).\n    * The star user interface: an overview. [Smith, Irby, Kimball (1982)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1500774.1500840).\n    * Design Principles for Human-Computer Interfaces. [Norman (1983)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F800045.801571).\n    * Human-Computer Interaction: Psychology as a Science of Design. [Carroll (1997)](https:\u002F\u002Fhome.cs.colorado.edu\u002F~martin\u002FCsci6402\u002FPapers\u002Fcarroll97.pdf).\n\n1. **The anatomy of a large-scale hypertextual Web search engine. [Brin, Page (1998)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F334.pdf).**\n    \\\n    \u003Csub>Information Retrieval; World-Wide Web\u003C\u002Fsub>\n    * A Statistical Interpretation of Term Specificity in Retrieval. [Spärck Jones (1972)](http:\u002F\u002Fopenlib.org\u002Fhome\u002Fkrichel\u002Fcourses\u002Flis618\u002Freadings\u002Fspaerk-jones72.pdf).\n    * Information Management: A Proposal. [Berners-Lee (1990)](https:\u002F\u002Fcds.cern.ch\u002Frecord\u002F369245\u002Ffiles\u002Fdd-89-001.pdf).\n    * The PageRank Citation Ranking: Bringing Order to the Web. [Page, Brin, Motwani (1998)](https:\u002F\u002Fwww.cis.upenn.edu\u002F~mkearns\u002Fteaching\u002FNetworkedLife\u002Fpagerank.pdf).\n\n1. **Dynamo, Amazon’s Highly Available Key-value store. [DeCandia et al (2007)](https:\u002F\u002Fwww.allthingsdistributed.com\u002Ffiles\u002Famazon-dynamo-sosp2007.pdf).**\n    \\\n    \u003Csub>Internet Scale Data Systems\u003C\u002Fsub>\n    * The Google File System. [Ghemawat, Gobioff, Leung (2003)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F035fc972c796d33122033a0614bc94cff1527999.pdf).\n    * MapReduce: Simplified Data Processing on Large Clusters. [Dean, Ghemawat (2004)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F16cb30b4b92fd4989b8619a61752a2387c6dd474.pdf).\n    * Bigtable: A Distributed Storage System for Structured Data. [Chang et al (2006)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F68a74a85e1662fe02ff3967497f31fda7f32225c.pdf).\n    * ZooKeeper: wait-free coordination for internet scale systems. [Hunt et al (2010)](https:\u002F\u002Fwww.usenix.org\u002Flegacy\u002Fevent\u002Fatc10\u002Ftech\u002Ffull_papers\u002FHunt.pdf).\n    * The Hadoop Distributed File System. [Shvachko et al (2010)](https:\u002F\u002Fcse.buffalo.edu\u002F~okennedy\u002Fcourses\u002Fpapers\u002Fhdfs.pdf).\n    * Kafka: a Distributed Messaging System for Log Processing. [Kreps, Narkhede, Rao (2011)](http:\u002F\u002Fnotes.stephenholiday.com\u002FKafka.pdf).\n    * CAP Twelve Years Later: How the \"Rules\" Have Changed. [Brewer (2012)](https:\u002F\u002Fsites.cs.ucsb.edu\u002F~rich\u002Fclass\u002Fcs293b-cloud\u002Fpapers\u002Fbrewer-cap.pdf).\n    * Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases. [Verbitski et al (2017)](https:\u002F\u002Fpages.cs.wisc.edu\u002F~yxy\u002Fcs764-f20\u002Fpapers\u002Faurora-sigmod-17.pdf).\n\n1. **On Designing and Deploying Internet Scale Services. [Hamilton (2007)](https:\u002F\u002Fs3.amazonaws.com\u002Fsystemsandpapers\u002Fpapers\u002Fhamilton.pdf).**\n    \\\n    \u003Csub>Operations; Reliability; Fault-tolerance\u003C\u002Fsub>\n    * Ironies of Automation. [Bainbridge (1983)](https:\u002F\u002Fckrybus.com\u002Fstatic\u002Fpapers\u002FBainbridge_1983_Automatica.pdf).\n    * Why do computers stop and what can be done about it? [Gray (1985)](https:\u002F\u002Fjimgray.azurewebsites.net\u002Fpapers\u002FTandemTR85.7_WhyDoComputersStop.pdf).\n    * Recovery Oriented Computing (ROC): Motivation, Definition, Techniques, and Case Studies. [Patterson et al (2002)](http:\u002F\u002Fwww2.eecs.berkeley.edu\u002FPubs\u002FTechRpts\u002F2002\u002FCSD-02-1175.pdf).\n    * Crash-Only Software. [Candea, Fox (2003)](https:\u002F\u002Fresearch.cs.wisc.edu\u002Fareas\u002Fos\u002FReadingGroup\u002Fos-old\u002FPapers\u002FHotOSIX\u002FCandea-CrashOnlySoftware.pdf).\n    * Building on Quicksand. [Helland, Campbell (2009)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F0909.1788).\n\n1. **Bitcoin, A peer-to-peer electronic cash system. [Nakamoto (2008)](https:\u002F\u002Fbitcoin.org\u002Fbitcoin.pdf).**\n    \\\n    \u003Csub>Decentralized Distributed Systems; Peer-to-peer systems\u003C\u002Fsub>\n    * Operational transformation in real-time group editors: issues, algorithms, and achievements. [Sun, Ellis (1998)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F289444.289469).\n    * Kademlia: A Peer-to-Peer Information System Based on the XOR Metric. [Maymounkov, Mazières (2002)](https:\u002F\u002Fpdos.csail.mit.edu\u002F~petar\u002Fpapers\u002Fmaymounkov-kademlia-lncs.pdf).\n    * Incentives Build Robustness in BitTorrent. [Cohen (2003)](https:\u002F\u002Fwww.bittorrent.org\u002Fbittorrentecon.pdf).\n    * Conflict-free Replicated Data Types. [Shapiro et al (2011)](https:\u002F\u002Finria.hal.science\u002Fhal-00932836\u002Ffile\u002FCRDTs_SSS-2011.pdf).\n    * IPFS - Content Addressed, Versioned, P2P File System. [Benet (2014)](https:\u002F\u002Fraw.githubusercontent.com\u002Fipfs\u002Fpapers\u002Fmaster\u002Fipfs-cap2pfs\u002Fipfs-p2p-file-system.pdf).\n    * Ethereum: A Next-Generation Smart Contract and Decentralized Application Platform. [Buterin (2014)](https:\u002F\u002Fethereum.org\u002Fcontent\u002Fwhitepaper\u002Fwhitepaper-pdf\u002FEthereum_Whitepaper_-_Buterin_2014.pdf).\n    * Local-First Software: You Own Your Data, in spite of the Cloud. [Kleppmann et al (2019)](https:\u002F\u002Fwww.inkandswitch.com\u002Flocal-first\u002Fstatic\u002Flocal-first.pdf).\n\n1. **A Few Useful Things to Know About Machine Learning. [Domingos (2012)](https:\u002F\u002Fhomes.cs.washington.edu\u002F~pedrod\u002Fpapers\u002Fcacm12.pdf).**\n    \\\n    \u003Csub>Machine Learning\u003C\u002Fsub>\n    * Statistical Modeling: The Two Cultures. [Breiman (2001)](https:\u002F\u002Fprojecteuclid.org\u002FjournalArticle\u002FDownload?urlId=10.1214%2Fss%2F1009213726).\n    * The Unreasonable Effectiveness of Data. [Halevy, Norvig, Pereira (2009)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F35179.pdf).\n    * ImageNet Classification with Deep Convolutional Neural Networks. [Krizhevsky, Sutskever, Hinton (2012)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~epxing\u002FClass\u002F10715-14f\u002Freading\u002Fimagenet.pdf).\n    * Playing Atari with Deep Reinforcement Learning. [Mnih et al (2013)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1312.5602.pdf).\n    * Generative Adversarial Nets. [Goodfellow et al (2014)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1406.2661).\n    * Deep Learning. [LeCun, Bengio, Hinton (2015)](https:\u002F\u002Fwww.cs.toronto.edu\u002F~hinton\u002Fabsps\u002FNatureDeepReview.pdf).\n    * Attention Is All You Need. [Vaswani et al (2017)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1706.03762.pdf).\n\n\n\n\u003C\u002Fdetails>\n\n\u003Cbr\u002F>\n\n\u003Cdetails>\n\u003Csummary>Top-level papers only\u003C\u002Fsummary>\n\u003Cbr\u002F>\n\n1. **Von Neumann's First Computer Program. [Knuth (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F356580.356581).**\n1. **Computing Machinery and Intelligence. [Turing (1950)](https:\u002F\u002Fwww.csee.umbc.edu\u002Fcourses\u002F471\u002Fpapers\u002Fturing.pdf).**\n1. **A Method for the Construction of Minimum-Redundancy Codes. [Huffman (1952)](http:\u002F\u002Fcompression.ru\u002Fdownload\u002Farticles\u002Fhuff\u002Fhuffman_1952_minimum-redundancy-codes.pdf).**\n1. **Engineering a Sort Function. [Bentley, McIlroy (1993)](https:\u002F\u002Fcs.fit.edu\u002F~pkc\u002Fclasses\u002Fwriting\u002Fsamples\u002Fbentley93engineering.pdf).**\n1. **A Design Methodology for Reliable Software Systems. [Liskov (1972)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1479992.1480018).**\n1. **Programming Paradigms for Dummies: What Every Programmer Should Know. [Van Roy (2012)](https:\u002F\u002Fwebperso.info.ucl.ac.be\u002F~pvr\u002FVanRoyChapter.pdf).**\n1. **An Incremental Approach to Compiler Construction. [Ghuloum (2006)](http:\u002F\u002Fscheme2006.cs.uchicago.edu\u002F11-ghuloum.pdf).**\n1. **No Silver Bullet: Essence and Accidents of Software Engineering. [Brooks (1987)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FBrooks-NoSilverBullet.pdf).**\n1. **Communicating sequential processes. [Hoare (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359576.359585).**\n1. **The UNIX Time- Sharing System. [Ritchie, Thompson (1974)](https:\u002F\u002Fdsf.berkeley.edu\u002Fcs262\u002Funix.pdf).**\n1. **A Relational Model of Data for Large Shared Data Banks. [Codd (1970)](https:\u002F\u002Fwww.seas.upenn.edu\u002F~zives\u002F03f\u002Fcis550\u002Fcodd.pdf).**\n1. **A Protocol for Packet Network Intercommunication. [Cerf, Kahn (1974)](https:\u002F\u002Fwww.cs.princeton.edu\u002Fcourses\u002Farchive\u002Ffall06\u002Fcos561\u002Fpapers\u002Fcerf74.pdf).**\n1. **New Directions in Cryptography. [Diffie, Hellman (1976)](https:\u002F\u002Fee.stanford.edu\u002F~hellman\u002Fpublications\u002F24.pdf).**\n1. **Time, Clocks, and the Ordering of Events in a Distributed System. [Lamport (1978)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Ftime-clocks.pdf).**\n1. **Designing for Usability: Key Principles and What Designers Think. [Gould, Lewis (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F3166.3170).**\n1. **The anatomy of a large-scale hypertextual Web search engine. [Brin, Page (1998)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F334.pdf).**\n1. **Dynamo, Amazon’s Highly Available Key-value store. [DeCandia et al (2007)](https:\u002F\u002Fwww.allthingsdistributed.com\u002Ffiles\u002Famazon-dynamo-sosp2007.pdf).**\n1. **On Designing and Deploying Internet Scale Services. [Hamilton (2007)](https:\u002F\u002Fs3.amazonaws.com\u002Fsystemsandpapers\u002Fpapers\u002Fhamilton.pdf).**\n1. **Bitcoin, A peer-to-peer electronic cash system. [Nakamoto (2008)](https:\u002F\u002Fbitcoin.org\u002Fbitcoin.pdf).**\n1. **A Few Useful Things to Know About Machine Learning. [Domingos (2012)](https:\u002F\u002Fhomes.cs.washington.edu\u002F~pedrod\u002Fpapers\u002Fcacm12.pdf).**\n\n\n\u003C\u002Fdetails>\n\n\u003Cbr\u002F>\n\n\u003Cdetails>\n\u003Csummary>All papers in chronological order \u003C\u002Fsummary>\n\u003Cbr\u002F>\n\n1. As We May Think. [Bush (1945)](https:\u002F\u002Fweb.mit.edu\u002FSTS.035\u002Fwww\u002FPDFs\u002Fthink.pdf).\n1. **Computing Machinery and Intelligence. [Turing (1950)](https:\u002F\u002Fwww.csee.umbc.edu\u002Fcourses\u002F471\u002Fpapers\u002Fturing.pdf).**\n1. Prediction and Entropy of Printed English. [Shannon (1950)](https:\u002F\u002Fwww.princeton.edu\u002F~wbialek\u002Frome\u002Frefs\u002Fshannon_51.pdf).\n1. The Education of a Computer. [Hopper (1952)](https:\u002F\u002Fpeople.cs.umass.edu\u002F~emery\u002Fclasses\u002Fcmpsci691st\u002Freadings\u002FPL\u002Fp243-hopper.pdf).\n1. **A Method for the Construction of Minimum-Redundancy Codes. [Huffman (1952)](http:\u002F\u002Fcompression.ru\u002Fdownload\u002Farticles\u002Fhuff\u002Fhuffman_1952_minimum-redundancy-codes.pdf).**\n1. On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem. [Kruskal (1956)](https:\u002F\u002Fwww.cs.yale.edu\u002Fhomes\u002Flans\u002Freadings\u002Frouting\u002Fkruskal-1956.pdf).\n1. Man-Computer symbiosis. [Licklider (1958)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FLicklider%20-%20Man-Computer%20Symbiosis.pdf).\n1. A Note on Two Problems in Connexion with Graphs. [Dijkstra (1959)](https:\u002F\u002Fjmvidal.cse.sc.edu\u002Flibrary\u002Fdijkstra59a.pdf).\n1. Recursive Programming. [Dijkstra (1960)](https:\u002F\u002Fwww.ics.uci.edu\u002F~jajones\u002FINF102-S18\u002Freadings\u002F07_dijkstra.pdf).\n1. Some Moral and Technical Consequences of Automation. [Wiener (1960)](https:\u002F\u002Fnissenbaum.tech.cornell.edu\u002Fpapers\u002FWiener.pdf).\n1. Steps towards Artificial Intelligence. [Minsky (1960)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FMinsky%20-%20Steps%20Toward%20Artificial%20Intelligence.pdf).\n1. Recursive Functions of Symbolic Expressions and Their Computation by Machine. [McCarthy (1960)](http:\u002F\u002Fjmc.stanford.edu\u002Farticles\u002Frecursive\u002Frecursive.pdf).\n1. Quicksort. [Hoare (1962)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.5555\u002F63445.C1104357).\n1. An Experimental Time-Sharing System. [Corbató, Merwin Daggett, Daley (1962)](http:\u002F\u002Flarch-www.lcs.mit.edu:8001\u002F~corbato\u002Fsjcc62\u002F).\n1. Programming Considered as a Human Activity. [Dijkstra (1965)](https:\u002F\u002Fwww.cs.utexas.edu\u002F~EWD\u002Ftranscriptions\u002FEWD01xx\u002FEWD117.html).\n1. Solution Of a Problem in Concurrent Program Control. [Dijkstra (1965)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F365559.365617).\n1. Some Thoughts About the Social Implications of Accessible Computing. [David, Fano (1965)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1463891.1463917).\n1. ELIZA—a computer program for the study of natural language communication between man and machine. [Weizenbaum (1966)](http:\u002F\u002Fweb.stanford.edu\u002Fclass\u002Fcs124\u002Fp36-weizenabaum.pdf).\n1. The Next 700 Programming Languages. [Landin (1966)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~crary\u002F819-f09\u002FLandin66.pdf).\n1. Goto Statement Considered Harmful. [Dijkstra (1968)](https:\u002F\u002Fhomepages.cwi.nl\u002F~storm\u002Fteaching\u002Freader\u002FDijkstra68.pdf).\n1. How do committees invent? [Conway (1968)](https:\u002F\u002Fwww.melconway.com\u002FHome\u002Fpdf\u002Fcommittees.pdf).\n1. The Structure of the \\\"THE\\\"-Multiprogramming System. [Dijkstra (1968)](https:\u002F\u002Fwww.eecs.ucf.edu\u002F~eurip\u002Fpapers\u002Fdijkstra-the68.pdf).\n1. **Von Neumann's First Computer Program. [Knuth (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F356580.356581).**\n1. Space\u002FTime Trade-offs in Hash Coding with Allowable Errors. [Bloom (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F362686.362692).\n1. Managing the Development of Large Software Systems. [Royce (1970)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.5555\u002F41765.41801).\n1. The nucleus of a multiprogramming system. [Hansen (1970)](http:\u002F\u002Fwww.brinch-hansen.net\u002Fpapers\u002F1970a.pdf).\n1. **A Relational Model of Data for Large Shared Data Banks. [Codd (1970)](https:\u002F\u002Fwww.seas.upenn.edu\u002F~zives\u002F03f\u002Fcis550\u002Fcodd.pdf).**\n1. Program development by stepwise refinement. [Wirth (1971)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F362575.362577).\n1. The Humble Programmer. [Dijkstra (1972)](http:\u002F\u002Frkka21.ru\u002Fdocs\u002Fturing-award\u002Fed1972e.pdf).\n1. **A Design Methodology for Reliable Software Systems. [Liskov (1972)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1479992.1480018).**\n1. On the Criteria To Be Used in Decomposing Systems into Modules. [Parnas (1972)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F361598.361623).\n1. Information Distribution Aspects of Design Methodology. [Parnas (1972)](https:\u002F\u002Fcseweb.ucsd.edu\u002F~wgg\u002FCSE218\u002FParnas-IFIP71-information-distribution.PDF).\n1. A Statistical Interpretation of Term Specificity in Retrieval. [Spärck Jones (1972)](http:\u002F\u002Fopenlib.org\u002Fhome\u002Fkrichel\u002Fcourses\u002Flis618\u002Freadings\u002Fspaerk-jones72.pdf).\n1. Computer Programming as an Art. [Knuth (1974)](http:\u002F\u002Fwww.cs.bilkent.edu.tr\u002F~canf\u002Fknuth1974.pdf).\n1. Programming with Abstract Data Types. [Liskov, Zilles (1974)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F942572.807045).\n1. Monitors: An operating system structuring concept. [Hoare (1974)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F355620.361161).\n1. **The UNIX Time- Sharing System. [Ritchie, Thompson (1974)](https:\u002F\u002Fdsf.berkeley.edu\u002Fcs262\u002Funix.pdf).**\n1. **A Protocol for Packet Network Intercommunication. [Cerf, Kahn (1974)](https:\u002F\u002Fwww.cs.princeton.edu\u002Fcourses\u002Farchive\u002Ffall06\u002Fcos561\u002Fpapers\u002Fcerf74.pdf).**\n1. Self-stabilizing systems in spite of distributed control. [Dijkstra (1974)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F361179.361202).\n1. The Mythical Man Month. [Brooks (1975)](https:\u002F\u002Fwww.cs.virginia.edu\u002F~evans\u002Fgreatworks\u002Fmythical.pdf).\n1. Granularity of Locks and Degrees of Consistency in a Shared Data Base. [Gray et al (1975)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~natassa\u002Fcourses\u002F15-721\u002Fpapers\u002FGrayLocks.pdf).\n1. The Semantics of Predicate Logic as a Programming Language. [Van Emden, Kowalski (1976)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F321978.321991).\n1. **New Directions in Cryptography. [Diffie, Hellman (1976)](https:\u002F\u002Fee.stanford.edu\u002F~hellman\u002Fpublications\u002F24.pdf).**\n1. A Universal Algorithm for Sequential Data Compression. [Ziv, Lempel (1977)](https:\u002F\u002Fcourses.cs.duke.edu\u002Fspring03\u002Fcps296.5\u002Fpapers\u002Fziv_lempel_1977_universal_algorithm.pdf).\n1. The Smalltalk-76 Programming System Design and Implementation. [Ingalls (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F512760.512762).\n1. A Theory of Type Polymorphism in Programming. [Milner (1978)](https:\u002F\u002Fhomepages.inf.ed.ac.uk\u002Fwadler\u002Fpapers\u002Fpapers-we-love\u002Fmilner-type-polymorphism.pdf).\n1. Can Programming Be Liberated from the von Neumann Style? [Backus (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359576.359579).\n1. **Communicating sequential processes. [Hoare (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359576.359585).**\n1. On the Duality of Operating System Structures. [Lauer, Needham (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F850657.850658).\n1. Ethernet: Distributed packet switching for local computer networks. [Metcalfe, Boggs (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F360248.360253).\n1. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. [Rivest, Shamir, Adleman (1978)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F359340.359342).\n1. **Time, Clocks, and the Ordering of Events in a Distributed System. [Lamport (1978)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Ftime-clocks.pdf).**\n1. The paradigms of programming. [Floyd (1979)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1283920.1283934).\n1. The Ubiquitous B-Tree. [Comer (1979)](http:\u002F\u002Fcarlosproal.com\u002Fir\u002Fpapers\u002Fp121-comer.pdf).\n1. Designing Software for Ease of Extension and Contraction. [Parnas (1979)](https:\u002F\u002Fcourses.cs.washington.edu\u002Fcourses\u002Fcse503\u002F08wi\u002Fparnas-1979.pdf).\n1. Access Path Selection in a Relational Database Management System. [Selinger et al (1979)](https:\u002F\u002Fcourses.cs.duke.edu\u002Fcompsci516\u002Fcps216\u002Fspring03\u002Fpapers\u002Fselinger-etal-1979.pdf).\n1. How To Share A Secret. [Shamir (1979)](https:\u002F\u002Fweb.mit.edu\u002F6.857\u002FOldStuff\u002FFall03\u002Fref\u002FShamir-HowToShareASecret.pdf).\n1. The Semantic Elegance of Applicative Languages. [Turner (1981)](http:\u002F\u002Fnsl.com\u002Fmisc\u002Fsasl\u002Fparaffins-turner.pdf).\n1. The Transaction Concept: Virtues and Limitations. [Gray (1981)](https:\u002F\u002Fjimgray.azurewebsites.net\u002Fpapers\u002FtheTransactionConcept.pdf).\n1. Tutorials for the First-Time Computer User. [Al-Awar, Chapanis, Ford (1981)](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1zA4LkSHoanjjhOVCwYzrkdkdzgPbKWJ9\u002Fview?usp=sharing).\n1. The Byzantine Generals Problem. [Lamport, Shostak, Pease (1982)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Fbyz.pdf).\n1. The star user interface: an overview. [Smith, Irby, Kimball (1982)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F1500774.1500840).\n1. Design Principles for Human-Computer Interfaces. [Norman (1983)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F800045.801571).\n1. Ironies of Automation. [Bainbridge (1983)](https:\u002F\u002Fckrybus.com\u002Fstatic\u002Fpapers\u002FBainbridge_1983_Automatica.pdf).\n1. Literate Programming. [Knuth (1984)](http:\u002F\u002Fwww.literateprogramming.com\u002Fknuthweb.pdf).\n1. A Theory of the Learnable. [Valiant (1984)](https:\u002F\u002Fpeople.mpi-inf.mpg.de\u002F~mehlhorn\u002FSeminarEvolvability\u002FValiantLearnable.pdf).\n1. Programming pearls: Algorithm design techniques. [Bentley (1984)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F358234.381162).\n1. Programming pearls: The back of the envelope. [Bentley (1984)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F357994.381168).\n1. Reflections on Trusting Trust. [Thompson (1984)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~rdriley\u002F487\u002Fpapers\u002FThompson_1984_ReflectionsonTrustingTrust.pdf).\n1. End-To-End Arguments in System Design. [Saltzer, Reed, Clark (1984)](https:\u002F\u002Fgroups.csail.mit.edu\u002Fana\u002FPublications\u002FPubPDFs\u002FEnd-to-End%20Arguments%20in%20System%20Design.pdf).\n1. Programming as Theory Building. [Naur (1985)](https:\u002F\u002Fpages.cs.wisc.edu\u002F~remzi\u002FNaur.pdf).\n1. On understanding types, data abstraction, and polymorphism. [Cardelli, Wegner (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F6041.6042).\n1. An algorithm for distributed computation of a Spanning Tree in an Extended LAN. [Perlman (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F319056.319004).\n1. Impossibility of Distributed Consensus With One Faulty Process. [Fisher, Lynch, Patterson (1985)](https:\u002F\u002Fgroups.csail.mit.edu\u002Ftds\u002Fpapers\u002FLynch\u002Fjacm85.pdf).\n1. **Designing for Usability: Key Principles and What Designers Think. [Gould, Lewis (1985)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F3166.3170).**\n1. Why do computers stop and what can be done about it? [Gray (1985)](https:\u002F\u002Fjimgray.azurewebsites.net\u002Fpapers\u002FTandemTR85.7_WhyDoComputersStop.pdf).\n1. Making data structures persistent. [Driscoll et al (1986)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F12130.12142).\n1. Programming pearls: little languages. [Bentley (1986)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F6424.315691).\n1. The design of POSTGRES. [Stonebraker, Rowe (1986)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F16856.16888).\n1. **No Silver Bullet: Essence and Accidents of Software Engineering. [Brooks (1987)](http:\u002F\u002Fworrydream.com\u002Frefs\u002FBrooks-NoSilverBullet.pdf).**\n1. A Digital Signature Based on a Conventional Encryption Function. [Merkle (1987)](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~raluca\u002Fcs261-f15\u002Freadings\u002Fmerkle.pdf).\n1. The Design Philosophy of the DARPA Internet Protocols. [Clark (1988)](http:\u002F\u002Fccr.sigcomm.org\u002Farchive\u002F1995\u002Fjan95\u002Fccr-9501-clark.pdf).\n1. Why Functional Programming Matters. [Hughes (1990)](https:\u002F\u002Fwww.cs.kent.ac.uk\u002Fpeople\u002Fstaff\u002Fdat\u002Fmiranda\u002Fwhyfp90.pdf).\n1. Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial. [Schneider (1990)](https:\u002F\u002Fwww.cs.cornell.edu\u002Ffbs\u002Fpublications\u002FSMSurvey.pdf).\n1. Information Management: A Proposal. [Berners-Lee (1990)](https:\u002F\u002Fcds.cern.ch\u002Frecord\u002F369245\u002Ffiles\u002Fdd-89-001.pdf).\n1. SELF: The Power of Simplicity. [Ungar, Smith (1991)](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~fateman\u002F264\u002Fpapers\u002Fselfpower.ps).\n1. On Building Systems That Will Fail. [Corbató (1991)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F114669.114686).\n1. The Design and Implementation of a Log-Structured File System. [Rosenblum, Ousterhout (1991)](https:\u002F\u002Fpeople.eecs.berkeley.edu\u002F~brewer\u002Fcs262\u002FLFS.pdf).\n1. The essence of functional programming. [Wadler (1992)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F143165.143169).\n1. **Engineering a Sort Function. [Bentley, McIlroy (1993)](https:\u002F\u002Fcs.fit.edu\u002F~pkc\u002Fclasses\u002Fwriting\u002Fsamples\u002Fbentley93engineering.pdf).**\n1. The Essence of Compiling with Continuations. [Flanagan et al (1993)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F173262.155113).\n1. Software Aging. [Parnas (1994)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.5555\u002F257734.257788).\n1. Laws of Software Evolution Revisited. [Lehman (1997)](https:\u002F\u002Fwww.rose-hulman.edu\u002FClass\u002Fcsse\u002Fcsse490\u002Fcs490-const-and-evol\u002FLawsOfSoftwareEvolutionRevisited.pdf).\n1. Software Transactional Memory. [Shavit, Touitou (1997)](https:\u002F\u002Fgroups.csail.mit.edu\u002Ftds\u002Fpapers\u002FShavit\u002FShavitTouitou.pdf).\n1. Human-Computer Interaction: Psychology as a Science of Design. [Carroll (1997)](https:\u002F\u002Fhome.cs.colorado.edu\u002F~martin\u002FCsci6402\u002FPapers\u002Fcarroll97.pdf).\n1. Fifty Years of Shannon Theory. [Verdú (1998)](https:\u002F\u002Fmonoskop.org\u002Fimages\u002F7\u002F78\u002FVerdu_Sergio_1998_Fifty_Years_of_Shannon_Theory.pdf).\n1. The Cathedral and the Bazaar. [Raymond (1998)](http:\u002F\u002Fusers.ece.utexas.edu\u002F~perry\u002Feducation\u002F382v-s08\u002Fpapers\u002Fraymond.pdf).\n1. **The anatomy of a large-scale hypertextual Web search engine. [Brin, Page (1998)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F334.pdf).**\n1. The PageRank Citation Ranking: Bringing Order to the Web. [Page, Brin, Motwani (1998)](https:\u002F\u002Fwww.cis.upenn.edu\u002F~mkearns\u002Fteaching\u002FNetworkedLife\u002Fpagerank.pdf).\n1. Operational transformation in real-time group editors: issues, algorithms, and achievements. [Sun, Ellis (1998)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F289444.289469).\n1. Rules of Thumb in Data Engineering. [Gray, Shenay (1999)](http:\u002F\u002Fresearch.microsoft.com\u002Fen-us\u002Fum\u002Fpeople\u002Fgray\u002Fpapers\u002Fms_tr_99_100_rules_of_thumb_in_data_engineering.pdf).\n1. Practical Byzantine Fault Tolerance. [Castro, Liskov (1999)](https:\u002F\u002Fcss.csail.mit.edu\u002F6.824\u002F2014\u002Fpapers\u002Fcastro-practicalbft.pdf).\n1. QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs. [Claessen, Hughes (2000)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F351240.351266).\n1. Paxos made simple. [Lamport (2001)](https:\u002F\u002Flamport.azurewebsites.net\u002Fpubs\u002Fpaxos-simple.pdf).\n1. Statistical Modeling: The Two Cultures. [Breiman (2001)](https:\u002F\u002Fprojecteuclid.org\u002FjournalArticle\u002FDownload?urlId=10.1214%2Fss%2F1009213726).\n1. Recovery Oriented Computing (ROC): Motivation, Definition, Techniques, and Case Studies. [Patterson et al (2002)](http:\u002F\u002Fwww2.eecs.berkeley.edu\u002FPubs\u002FTechRpts\u002F2002\u002FCSD-02-1175.pdf).\n1. Kademlia: A Peer-to-Peer Information System Based on the XOR Metric. [Maymounkov, Mazières (2002)](https:\u002F\u002Fpdos.csail.mit.edu\u002F~petar\u002Fpapers\u002Fmaymounkov-kademlia-lncs.pdf).\n1. A Brief History of Just-In-Time. [Aycock (2003)](https:\u002F\u002Fwww.cs.tufts.edu\u002Fcomp\u002F150CMP\u002Fpapers\u002Faycock03jit.pdf).\n1. The Google File System. [Ghemawat, Gobioff, Leung (2003)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F035fc972c796d33122033a0614bc94cff1527999.pdf).\n1. Crash-Only Software. [Candea, Fox (2003)](https:\u002F\u002Fresearch.cs.wisc.edu\u002Fareas\u002Fos\u002FReadingGroup\u002Fos-old\u002FPapers\u002FHotOSIX\u002FCandea-CrashOnlySoftware.pdf).\n1. Incentives Build Robustness in BitTorrent. [Cohen (2003)](https:\u002F\u002Fwww.bittorrent.org\u002Fbittorrentecon.pdf).\n1. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. [Lattner, Adve (2004)](https:\u002F\u002Fllvm.org\u002Fpubs\u002F2004-01-30-CGO-LLVM.pdf).\n1. A Unified Theory of Garbage Collection. [Bacon, Cheng, Rajan (2004)](https:\u002F\u002Fcourses.cs.washington.edu\u002Fcourses\u002Fcse590p\u002F05au\u002Fp50-bacon.pdf).\n1. TOR: The second generation onion router. [Dingledine et al (2004)](https:\u002F\u002Fsvn-archive.torproject.org\u002Fsvn\u002Fprojects\u002Fdesign-paper\u002Ftor-design.pdf).\n1. MapReduce: Simplified Data Processing on Large Clusters. [Dean, Ghemawat (2004)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F16cb30b4b92fd4989b8619a61752a2387c6dd474.pdf).\n1. A Nanopass Framework for Compiler Education. [Sarkar, Waddell, Dybvig (2005)](https:\u002F\u002Fwww.cambridge.org\u002Fcore\u002Fservices\u002Faop-cambridge-core\u002Fcontent\u002Fview\u002F1E378B9B451270AF6A155FA0C21C04A3\u002FS0956796805005605a.pdf\u002Feducational_pearl_a_nanopass_framework_for_compiler_education.pdf).\n1. Church's Thesis and Functional Programming. [Turner (2006)](https:\u002F\u002Fkar.kent.ac.uk\u002F88944\u002F1\u002Fctfp.pdf_nocoversheet).\n1. **An Incremental Approach to Compiler Construction. [Ghuloum (2006)](http:\u002F\u002Fscheme2006.cs.uchicago.edu\u002F11-ghuloum.pdf).**\n1. Out of the Tar Pit. [Moseley, Marks (2006)](http:\u002F\u002Fcurtclifton.net\u002Fpapers\u002FMoseleyMarks06a.pdf).\n1. Why the Internet only just works. [Handley (2006)](https:\u002F\u002Fwww2.cs.uh.edu\u002F~gnawali\u002Fcourses\u002Fcosc6377-f17\u002Fpapers\u002FHandley06.pdf).\n1. Bigtable: A Distributed Storage System for Structured Data. [Chang et al (2006)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F68a74a85e1662fe02ff3967497f31fda7f32225c.pdf).\n1. The Salsa20 family of stream ciphers. [Bernstein (2007)](https:\u002F\u002Fcr.yp.to\u002Fsnuffle\u002Fsalsafamily-20071225.pdf).\n1. Paxos made live - An Engineering Perspective. [Chandra, Griesemer, Redstone (2007)](https:\u002F\u002Fwww.cs.utexas.edu\u002Fusers\u002Florenzo\u002Fcorsi\u002Fcs380d\u002Fpapers\u002Fpaper2-1.pdf).\n1. **Dynamo, Amazon’s Highly Available Key-value store. [DeCandia et al (2007)](https:\u002F\u002Fwww.allthingsdistributed.com\u002Ffiles\u002Famazon-dynamo-sosp2007.pdf).**\n1. **On Designing and Deploying Internet Scale Services. [Hamilton (2007)](https:\u002F\u002Fs3.amazonaws.com\u002Fsystemsandpapers\u002Fpapers\u002Fhamilton.pdf).**\n1. **Bitcoin, A peer-to-peer electronic cash system. [Nakamoto (2008)](https:\u002F\u002Fbitcoin.org\u002Fbitcoin.pdf).**\n1. Building on Quicksand. [Helland, Campbell (2009)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F0909.1788).\n1. The Unreasonable Effectiveness of Data. [Halevy, Norvig, Pereira (2009)](https:\u002F\u002Fstorage.googleapis.com\u002Fgweb-research2023-media\u002Fpubtools\u002Fpdf\u002F35179.pdf).\n1. ZooKeeper: wait-free coordination for internet scale systems. [Hunt et al (2010)](https:\u002F\u002Fwww.usenix.org\u002Flegacy\u002Fevent\u002Fatc10\u002Ftech\u002Ffull_papers\u002FHunt.pdf).\n1. The Hadoop Distributed File System. [Shvachko et al (2010)](https:\u002F\u002Fcse.buffalo.edu\u002F~okennedy\u002Fcourses\u002Fpapers\u002Fhdfs.pdf).\n1. Kafka: a Distributed Messaging System for Log Processing. [Kreps, Narkhede, Rao (2011)](http:\u002F\u002Fnotes.stephenholiday.com\u002FKafka.pdf).\n1. Conflict-free Replicated Data Types. [Shapiro et al (2011)](https:\u002F\u002Finria.hal.science\u002Fhal-00932836\u002Ffile\u002FCRDTs_SSS-2011.pdf).\n1. **Programming Paradigms for Dummies: What Every Programmer Should Know. [Van Roy (2012)](https:\u002F\u002Fwebperso.info.ucl.ac.be\u002F~pvr\u002FVanRoyChapter.pdf).**\n1. CAP Twelve Years Later: How the \"Rules\" Have Changed. [Brewer (2012)](https:\u002F\u002Fsites.cs.ucsb.edu\u002F~rich\u002Fclass\u002Fcs293b-cloud\u002Fpapers\u002Fbrewer-cap.pdf).\n1. **A Few Useful Things to Know About Machine Learning. [Domingos (2012)](https:\u002F\u002Fhomes.cs.washington.edu\u002F~pedrod\u002Fpapers\u002Fcacm12.pdf).**\n1. ImageNet Classification with Deep Convolutional Neural Networks. [Krizhevsky, Sutskever, Hinton (2012)](https:\u002F\u002Fwww.cs.cmu.edu\u002F~epxing\u002FClass\u002F10715-14f\u002Freading\u002Fimagenet.pdf).\n1. Playing Atari with Deep Reinforcement Learning. [Mnih et al (2013)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1312.5602.pdf).\n1. The Network is Reliable. [Bailis,  Kingsbury (2014)](https:\u002F\u002Fqueue.acm.org\u002Fdetail.cfm?id=2655736).\n1. In Search of an Understandable Consensus Algorithm. [Ongaro, Ousterhout (2014)](https:\u002F\u002Fraft.github.io\u002Fraft.pdf).\n1. IPFS - Content Addressed, Versioned, P2P File System. [Benet (2014)](https:\u002F\u002Fraw.githubusercontent.com\u002Fipfs\u002Fpapers\u002Fmaster\u002Fipfs-cap2pfs\u002Fipfs-p2p-file-system.pdf).\n1. Ethereum: A Next-Generation Smart Contract and Decentralized Application Platform. [Buterin (2014)](https:\u002F\u002Fethereum.org\u002Fcontent\u002Fwhitepaper\u002Fwhitepaper-pdf\u002FEthereum_Whitepaper_-_Buterin_2014.pdf).\n1. Generative Adversarial Nets. [Goodfellow et al (2014)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1406.2661).\n1. Towards a Theory of Conceptual Design for Software. [Jackson (2015)](https:\u002F\u002Fgroups.csail.mit.edu\u002Fsdg\u002Fpubs\u002F2015\u002Fconcept-essay.pdf).\n1. Deep Learning. [LeCun, Bengio, Hinton (2015)](https:\u002F\u002Fwww.cs.toronto.edu\u002F~hinton\u002Fabsps\u002FNatureDeepReview.pdf).\n1. Bringing the Web up to Speed with WebAssembly. [Haas (2017)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F3062341.3062363).\n1. Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases. [Verbitski et al (2017)](https:\u002F\u002Fpages.cs.wisc.edu\u002F~yxy\u002Fcs764-f20\u002Fpapers\u002Faurora-sigmod-17.pdf).\n1. Attention Is All You Need. [Vaswani et al (2017)](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1706.03762.pdf).\n1. Local-First Software: You Own Your Data, in spite of the Cloud. [Kleppmann et al (2019)](https:\u002F\u002Fwww.inkandswitch.com\u002Flocal-first\u002Fstatic\u002Flocal-first.pdf).\n\n\n\u003C\u002Fdetails>\n\n## Sources\nThis list was inspired by (and draws from) several books and paper collections:\n\n* [Papers We Love](https:\u002F\u002Fpaperswelove.org\u002F)\n* [Ideas That Created the Future](https:\u002F\u002Fmitpress.mit.edu\u002Fbooks\u002Fideas-created-future)\n* [The Innovators](https:\u002F\u002Fwww.simonandschuster.com\u002Fbooks\u002FThe-Innovators\u002FWalter-Isaacson\u002F9781476708706)\n* [The morning paper](https:\u002F\u002Fblog.acolyer.org\u002F)\n* [Distributed systems for fun and profit](http:\u002F\u002Fbook.mixu.net\u002Fdistsys\u002Findex.html)\n* [Readings in Database Systems (the Red Book)](http:\u002F\u002Fwww.redbook.io\u002F)\n* [Fermat's Library](https:\u002F\u002Ffermatslibrary.com\u002Fjournal_club)\n* [Classics in Human-Computer Interaction](https:\u002F\u002Fmedium.com\u002F@aschugart\u002Fclassics-in-hci-research-papers-critical-to-the-field-of-human-computer-interaction-1344039334a5)\n* [Awesome Compilers](https:\u002F\u002Fgithub.com\u002Faalhour\u002Fawesome-compilers#papers)\n* [Distributed Consensus Reading List](https:\u002F\u002Fheidihoward.github.io\u002Fdistributed-consensus-reading-list\u002F)\n* [The Decade of Deep Learning](https:\u002F\u002Fbmk.sh\u002F2019\u002F12\u002F31\u002FThe-Decade-of-Deep-Learning\u002F)\n\n## Meta reads\n\nA few interesting resources about reading papers from Papers We Love and elsewhere:\n\n- [Should I read papers?](https:\u002F\u002Fmichaelrbernste.in\u002F2014\u002F10\u002F21\u002Fshould-i-read-papers.html)\n- [How to Read an Academic Article](https:\u002F\u002Forganizationsandmarkets.com\u002F2010\u002F08\u002F31\u002Fhow-to-read-an-academic-article\u002F)\n- How to Read a Paper. [Keshav (2007)](http:\u002F\u002Fccr.sigcomm.org\u002Fonline\u002Ffiles\u002Fp83-keshavA.pdf).\n- Efficient Reading of Papers in Science and Technology. [Hanson (1999)](https:\u002F\u002Fwww.cs.columbia.edu\u002F~hgs\u002Fnetbib\u002FefficientReading.pdf).\n- On ICSE’s “Most Influential Papers”. [Parnas (1995)](https:\u002F\u002Fdl.acm.org\u002Fdoi\u002Fpdf\u002F10.1145\u002F219308.219312).\n\n## Selection criteria\n\n1. The list should stay short. Let's say no more than 30 papers.\n   - The idea is not to include every interesting paper that I come across but rather to keep a representative list that's possible to read from start to finish with a similar level of effort as reading a technical book from cover to cover.\n   - I tried to include one paper per each major topic and author. Since in the process I found a lot of noteworthy alternatives, related or follow-up papers and I wanted to keep track of those as well, I included them as sublist items.\n2. The papers shouldn't be too long. For the same reasons as the previous item, I try to avoid papers longer than 20 or 30 pages.\n3. They should be self-contained and readable enough to be approachable by the casual technical reader.\n4. They should be freely available online.\n5. Although historical relevance was taken into account, I omitted seminal papers in the cases where I found them hard to approach, when the main subject of the paper wasn't the thing that made them influential, etc.\n   - Examples of this are classic works by Von Neumann, Turing and Shannon.\n   - That being said, where possible I preferred the original paper on each subject over modern updates or survey papers.\n6. I tended to prefer topics that I can relate to my professional practice, typically papers originated in the industry\nor about innovations that later saw wide adoption.\n   - Similarly, I tended to skip more theoretical papers, those focusing on mathematical foundations for Computer Science, electronic aspects of hardware, etc.\n7. I sorted the list by a mix of relatedness of topics and a vague chronological relevance, such that it makes sense to read it in the suggested order. For example, historical and seminal topics go first, contemporary internet-era developments last, networking precedes distributed systems, etc.\n   \n\n","该项目是一个为软件工程师精选的论文列表，涵盖了计算机科学和软件工程领域的经典与重要文献。核心功能在于提供了一个按主题分类的高质量学术资源库，包括但不限于早期编程、人工智能初步以及信息论等方面的文章，支持Python语言处理相关数据或自动化测试工作流。适合于软件工程专业的学生、研究人员及从业者在学习新知识、深化理解特定概念或寻找研究灵感时使用。",2,"2026-06-11 03:35:54","high_star"]