├── README.md ├── algorithms-and-data-structures.md ├── computer-architecture.md ├── cryptography.md ├── databases.md ├── distributed-systems.md ├── languages-and-compilers.md ├── mathematics.md ├── operating-systems.md └── programming.md /README.md: -------------------------------------------------------------------------------- 1 | # Computer Science Readings 2 | 3 | Interesting readings and talks on computer science. 4 | 5 | * [**Databases**](databases.md) 6 | * [**Distributed Systems**](distributed-systems.md) 7 | * [Algorithms and Data Structures](algorithms-and-data-structures.md) 8 | * [Computer Architecture](computer-architecture.md) 9 | * [Cryptography](cryptography.md) 10 | * [Languages and Compilers](languages-and-compilers.md) 11 | * [Mathematics](mathematics.md) 12 | * [Operating Systems](operating-systems.md) 13 | * [Programming](programming.md) 14 | -------------------------------------------------------------------------------- /algorithms-and-data-structures.md: -------------------------------------------------------------------------------- 1 | # Algorithms and Data Structures 2 | 3 | - [x] 👨‍🏫 [**Algorithms Part I**](https://www.coursera.org/learn/algorithms-part1) (R Sedgewick, K Wayne) 4 | - [x] 👨‍🏫 [**Algorithms Part II**](https://www.coursera.org/learn/algorithms-part2) (R Sedgewick, K Wayne) 5 | - [ ] 📖 [**Introduction to Algorithms**](https://mitpress.mit.edu/books/introduction-algorithms-fourth-edition) (TH Cormen, CE Leiserson, RL Rivest, C Stein 2009) _"CLRS"_ 6 | - [ ] 📖 [**The Art of Computer Programming**](https://www-cs-faculty.stanford.edu/~knuth/taocp.html) (DE Knuth 1968) 7 | - [ ] 📖 [The Algorithm Design Manual](https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/?pldnSite=1) (SS Skiena 2011) 8 | -------------------------------------------------------------------------------- /computer-architecture.md: -------------------------------------------------------------------------------- 1 | # Computer Architecture 2 | 3 | - [ ] 👨‍🏫 [**Build a Modern Computer from First Principles**](https://www.coursera.org/learn/build-a-computer) (N Nisan, S Schocken) _"Nand2Tetris"_ 4 | - [x] 📖 [**Computer Organization and Design**](https://www.amazon.com/Computer-Organization-Design-MIPS-Architecture/dp/0124077269/ref=dp_ob_title_bk) (DA Patterson, JL Hennessy 2013) 5 | - [ ] 📖 [**The Elements of Computing Systems**](https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686) (N Nisan, S Schocken 2005) _"Nand2Tetris"_ 6 | - [ ] 📃 [I/O Is Faster Than the CPU](https://penberg.org/parakernel-hotos19.pdf) (P Enberg, A Rao, S Tarkoma 2019) 7 | - [ ] 🔗 [ARM Application Binary Interface Specifications](https://developer.arm.com/architectures/system-architectures/software-standards/abi) 8 | - [ ] 📄 [Procedure Call Standard for the ARM 64-bit Architecture](https://c9x.me/compile/bib/abi-arm64.pdf) 9 | - [ ] 📄 [System V Application Binary Interface (AMD64 Architecture Processor Supplement)](https://c9x.me/compile/bib/abi-x64.pdf) (M Matz, J Hubicka, A Jaeger, M Mitchell 2013) -------------------------------------------------------------------------------- /cryptography.md: -------------------------------------------------------------------------------- 1 | # Cryptography 2 | 3 | - [ ] 📄 [A Digital Signature based on a Conventional Encryption Function](https://people.eecs.berkeley.edu/~raluca/cs261-f15/readings/merkle.pdf) (R Merkle 1988) _"The Merkle tree paper"_ 4 | -------------------------------------------------------------------------------- /databases.md: -------------------------------------------------------------------------------- 1 | # Databases 2 | 3 | ## General 4 | 5 | - [x] 🎥 [**CMU 15-445 Intro to Database Systems**](https://www.youtube.com/playlist?list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi) (A Pavlo 2019) 6 | - [x] 🎥 [**CMU 15-721 Advanced Database Systems**](https://www.youtube.com/playlist?list=PLSE8ODhjZXjasmrEd2_Yi1deeE360zv5O) (A Pavlo 2020) 7 | - [x] 📖 [**Database Internals**](https://www.databass.dev) (A Petrov 2019) 8 | - [x] 📖 [**Designing Data-Intensive Applications**](https://dataintensive.net/) (M Kleppmann 2017) 9 | - [ ] 📄 [**Readings in Database Systems**](http://www.redbook.io) (P Bailis, JM Hellerstein, M Stonebraker) _"The Red Book"_ 10 | - [x] 📄 [Architecture of a Database System](http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf) (JM Hellerstein, M Stonebraker, J Hamilton 2007) 11 | - [ ] 📖 [Data and Reality](https://www.amazon.com/Data-Reality-Perspective-Perceiving-Information/dp/1935504215) (W Kent, S Hoberman 2012) 12 | - [ ] 📖 [Database System Concepts](https://www.db-book.com) (A Silberschatz, HF Korth, S Sudarshan 2019) 13 | - [x] 📖 [Fundamentals of Database Systems](https://www.amazon.com/Fundamentals-Database-Systems-Ramez-Elmasri/dp/0133970779) (R Elmasri, SB Navathe 2015) 14 | - [ ] 📖 [Making Databases Work: the Pragmatic Wisdom of Michael Stonebraker](https://dl.acm.org/doi/book/10.1145/3226595) (ML Brodie 2018) 15 | - [ ] 🎥 [UC Berkeley CS186 Introduction to Database Systems](https://archive.org/details/UCBerkeley_Course_Computer_Science_186#) (J Hellerstein 2012) 16 | - [x] 📄 [What's Really New with NewSQL?](https://db.cs.cmu.edu/papers/2016/pavlo-newsql-sigmodrec2016.pdf) (A Pavlo, M Aslett 2016) 17 | 18 | ## Transactions 19 | 20 | - [x] 📄 [**A Critique of ANSI SQL Isolation Levels**](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-95-51.pdf) (H Berenson et al 1995) 21 | - [x] 🔗 [**Consistency Models**](https://jepsen.io/consistency) (Jepsen 2016) 22 | - [x] 📄 [**Generalized Isolation Level Definitions**](http://pmg.csail.mit.edu/papers/icde00.pdf) (A Adya, B Liskov, P ONeil 2000) 23 | - [ ] 📖 [**Transaction Processing: Concepts and Techniques**](https://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902#customerReviews) (J Gray, A Reuter 1992) 24 | - [ ] 📄 [A Critique of Snapshot Isolation](https://dl.acm.org/doi/pdf/10.1145/2168836.2168853) (DG Ferro, M Yabandeh 2012) 25 | - [ ] 📄 [ACIDRain: Concurrency-Related Attacks on Database-Backed Web Applications](http://www.bailis.org/papers/acidrain-sigmod2017.pdf) (P Bailis, T Warszawski 2017) 26 | - [ ] 📄 [An Empirical Evaluation of In-Memory Multi-Version Concurrency Control](https://yingjunwu.github.io/papers/vldb2017.pdf) (Y Wu et al 2017) 27 | - [ ] 📄 [Building Consistent Transactions with Inconsistent Replication](http://delivery.acm.org/10.1145/2820000/2815404/p263-zhang.pdf) (I Zhang et al 2015) 28 | - [ ] 📄 [Calvin: Fast Distributed Transactions for Partitioned Database Systems](http://cs.yale.edu/homes/thomson/publications/calvin-sigmod12.pdf) (DJ Abadi et al 2012) _"The Calvin paper"_ 29 | - [ ] 📄 [Consistency in Non-Transactional Distributed Storage Systems](https://arxiv.org/pdf/1512.00168.pdf) (P Viotti, M Vukolić 2016) 30 | - [ ] 📄 [Highly Available Transactions: Virtues and Limitations](http://www.vldb.org/pvldb/vol7/p181-bailis.pdf) (P Bailis, JM Hellerstein et al 2013) 31 | - [ ] 📄 [Lazy State Determination: More concurrency for contending linearizable transactions](https://arxiv.org/pdf/2007.09733.pdf) (TM Vale et al 2020) 32 | - [ ] 📄 [Naming and Synchronization in a Decentralized Computer System](https://dspace.mit.edu/bitstream/handle/1721.1/16279/05331643-MIT.pdf) (DP Reed 1978) _"The MVCC paper"_ 33 | - [ ] 📄 [Rethinking Serializable Multiversion Concurrency Control](http://www.jmfaleiro.com/pubs/multiversion-vldb2015.pdf) (JM Faleiro, DJ Abadi 2015) 34 | - [ ] 📄 [Scalable Atomic Visibility with RAMP Transactions](http://www.bailis.org/papers/ramp-sigmod2014.pdf) (P Bailis et al 2014) 35 | - [ ] 📄 [Serializable Isolation for Snapshot Databases](https://courses.cs.washington.edu/courses/cse444/08au/544M/READING-LIST/fekete-sigmod2008.pdf) (MJ Cahill, U Röhm, AD Fekete 2008) 36 | - [x] 💬 [What Does Write Skew Look Like](http://justinjaffray.com/what-does-write-skew-look-like/) (J Jaffray 2018) 37 | 38 | ## Queries 39 | 40 | - [ ] 📄 [Access Path Selection in a Relational Database Management System](https://www2.cs.duke.edu/courses/compsci516/cps216/spring03/papers/selinger-etal-1979.pdf) (PG Selinger et al 1979) 41 | - [ ] 📄 [Access Path Selection in Main-Memory Optimized Data Systems: Should I Scan or Should I Probe?](https://www.eecs.harvard.edu/~kester/files/accesspathselection.pdf) (MS Kester, M Athanassoulis, S Idreos 2017) 42 | - [ ] 📄 [Adaptive Execution of Compiled Queries](https://db.in.tum.de/~leis/papers/adaptiveexecution.pdf) (A Kohn, V Leis, T Neumann 2018) 43 | - [ ] 📄 [An Overview of Query Optimization in Relational Systems](https://web.stanford.edu/class/cs345d-01/rl/chaudhuri98.pdf) (S Chaudhuri 1998) 44 | - [ ] 📖 [Building Query Compilers](http://pi3.informatik.uni-mannheim.de/~moer/querycompiler.pdf) (G Moerkotte 2014) 45 | - [ ] 📄 [Compilation in the Microsoft SQL Server Hekaton Engine](https://15721.courses.cs.cmu.edu/spring2016/papers/freedman-ieee2014.pdf) (C Freedman, E Ismert, PA Larson 2014) 46 | - [ ] 📄 [Don’t Hold My Data Hostage – A Case For Client Protocol Redesign](http://www.vldb.org/pvldb/vol10/p1022-muehleisen.pdf) (M Raasweldt, H Mühleisen 2017) 47 | - [ ] 📄 [Efficiently Compiling Efficient Query Plans for Modern Hardware](https://www.vldb.org/pvldb/vol4/p539-neumann.pdf) (T Neumann 2011) 48 | - [ ] 📄 [Efficient Implementation of Sorting on Multi-Core SIMD CPU Architecture](https://pdfs.semanticscholar.org/ecdb/cdfc09f2e9905286e0f1ca2c3517012de57f.pdf) (J Chhugani, W Macy, A Baransi 2008) 49 | - [ ] 📄 [Generating Code for Holistic Query Evaluation](https://w6113.github.io/files/papers/krikellas-icde2010.pdf) (K Krikellas, SD Viglas, M Cintra 2010) 50 | - [ ] 📄 [How to Architect a Query Compiler, Revisited](https://www.cs.purdue.edu/homes/rompf/papers/tahboub-sigmod18.pdf) (RY Tahboub, GM Essertel, T Rompf 2018) 51 | - [ ] 📄 [Micro Adaptivity in Vectorwise](https://15721.courses.cs.cmu.edu/spring2020/papers/14-compilation/p1231-raducanu.pdf) (B Raducanu, P Boncz, M Zukowski 2013) 52 | - [ ] 📄 [Modelling Costs for a MM-DBMS](http://gram.eng.uci.edu/faculty/klin/rtdb/LM.ps) (S Listgarten, MA Neimat 1996) 53 | - [ ] 📄 [Optimization of Queries with User-Defined Predicates](http://www.vldb.org/conf/1996/P087.PDF) (S Chaudhur, K Shim 1999) 54 | - [ ] 📄 [Sort vs. Hash Revisited: Fast Join Implementation on Modern Multi-Core CPUs](https://15721.courses.cs.cmu.edu/spring2018/papers/20-sortmergejoins/kim-vldb2009.pdf) (C Kim, E Sedlar, J Chhugani 2009) 55 | - [x] 📄 [The Cascades Framework for Query Optimization](https://www.cse.iitb.ac.in/infolab/Data/Courses/CS632/Papers/Cascades-graefe.pdf) (G Graefe 1995) 56 | - [ ] 🎥 [The Cascades Framework for Query Optimization at Microsoft](https://www.youtube.com/watch?v=pQe1LQJiXN0) (N Bruno, C Galindo-Legaria 2020) 57 | 58 | ## Storage 59 | 60 | - [ ] 📄 [The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases](https://db.in.tum.de/~leis/papers/ART.pdf) (V Leis, A Kemper, T Neumann 2013) 61 | - [ ] 📄 [Aries: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging](https://cs.stanford.edu/people/chrismre/cs345/rl/aries.pdf) (C Mohan et al 1992) 62 | - [ ] 📄 [bLSM: A General Purpose Log Structured Merge Tree](http://www.eecs.harvard.edu/~margo/cs165/papers/gp-lsm.pdf) (R Sears, R Ramakrishnan 2012) 63 | - [ ] 📄 [Building a Bw-Tree Takes More Than Just Buzz Words](http://www.cs.cmu.edu/~huanche1/publications/open_bwtree.pdf) (Z Wang et al 2018) 64 | - [ ] 📄 [Constant Time Recovery in Azure SQL Database](https://www.microsoft.com/en-us/research/uploads/prod/2019/06/p700-antonopoulos.pdf) (P Antonopoulos et al 2019) 65 | - [ ] 📄 [Enabling Efficient OS Paging for Main-Memory OLTP Databases](https://15721.courses.cs.cmu.edu/spring2016/papers/a7-stoica.pdf) (R Stoica, A Ailamaki 2013) 66 | - [ ] 📄 [An Introduction to Bε-trees and Write-Optimization](https://www.usenix.org/system/files/login/articles/login_oct15_05_bender.pdf) (MA Bender et al 2015) 67 | - [ ] 📄 [Jungle: Towards Dynamically Adjustable Key-Value Store by Combining LSM-Tree and Copy-On-Write B+-Tree](https://greensky00.github.io/pdf/jungle_hotstorage19.pdf) (JS Ahn et al 2019) 68 | - [ ] 📄 [Larger-than-Memory Data Management on Modern Storage Hardware for In-Memory OLTP Database Systems](https://www.cc.gatech.edu/~jarulraj/papers/2016.caching.damon.pdf) (L Ma et al 2016) 69 | - [ ] 📄 [The Bw-Tree: A B-tree for New Hardware Platforms](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/bw-tree-icde2013-final.pdf) (JJ Levandoski, DB Lomet, S Sengupta 2013) 70 | - [ ] 📄 [The Log-Structured Merge Tree](https://www.cs.umb.edu/~poneil/lsmtree.pdf) (P O'Neil, E Cheng, D Gawklik, E O'Neil 1996) 71 | - [x] 📄 [The Ubiquitous B-Tree](http://cgi.di.uoa.gr/~ad/M149/ubiquitous_btree.pdf) (D Comer 1979) 72 | - [ ] 📄 [WiscKey: Separating Keys from Values in SSD-Conscious Storage](https://www.usenix.org/system/files/conference/fast16/fast16-papers-lu.pdf) (L Lu, TS Pillai, AC Arpaci-Dusseau, RH Arpaci-Dusseau 2016) 73 | 74 | ## Verification 75 | 76 | - [x] 🎥 [Black-box Isolation Checking with Elle](https://www.youtube.com/watch?v=OPJ_IcdSqig) (K Kingsbury 2020) 77 | - [x] 🎥 [SQLancer: Finding Logic Bugs in Database Management Systems](https://www.youtube.com/watch?v=Np46NQ6lqP8) (M Rigger 2020) 78 | - [ ] 📄 [Torturing Databases for Fun and Profit](https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-zheng_mai.pdf) (M Zheng et al 2014) 79 | 80 | ## Vendors 81 | 82 | ### CockroachDB 83 | 84 | - [x] 🔗 [**Architecture Overview**](https://www.cockroachlabs.com/docs/stable/architecture/overview.html) 85 | - [x] 🎥 [**CockroachDB: Architecture of a Geo-Distributed SQL Database**](https://www.infoq.com/presentations/cockroachdb-distributed-sql/) (P Mattis 2019) 86 | - [x] 📄 [**CockroachDB: The Resilient Geo-Distributed SQL Database**](https://dl.acm.org/doi/pdf/10.1145/3318464.3386134) (R Taft et al 2020) 87 | - [x] 🎥 [**CockroachDB's Query Optimizer**](https://www.youtube.com/watch?v=wHo-VtzTHx0) (R Taft 2020) 88 | - [x] 🔗 [**Design Document**](https://github.com/cockroachdb/cockroach/blob/master/docs/design.md) 89 | - [x] 💬 [CockroachDB's Consistency Model](https://www.cockroachlabs.com/blog/consistency-model/) (A Matei 2019) 90 | - [x] 💬 [Consensus, Made Thrive](https://www.cockroachlabs.com/blog/consensus-made-thrive/) (T Grieger 2016) 91 | - [x] 💬 [How CockroachDB Does Distributed, Atomic Transactions](https://www.cockroachlabs.com/blog/how-cockroachdb-distributes-atomic-transactions/) (M Tracy 2015) 92 | - [x] 💬 [How We Built a Cost-Based SQL Optimizer](https://www.cockroachlabs.com/blog/building-cost-based-sql-optimizer/) (A Kimball 2018) 93 | - [x] 💬 [Living Without Atomic Clocks](https://www.cockroachlabs.com/blog/living-without-atomic-clocks/) (S Kimball 2016) 94 | - [x] 💬 [Parallel Commits: An Atomic Commit Protocol For Globally Distributed Transactions](https://www.cockroachlabs.com/blog/parallel-commits/) (N VanBenschoten 2019) 95 | - [x] 💬 [Pipelining Consensus Writes to Speed Up Distributed SQL Transactions](https://www.cockroachlabs.com/blog/transaction-pipelining/) (N VanBenschoten 2019) 96 | - [x] 💬 [Serializable, Lockless, Distributed: Isolation in CockroachDB](https://www.cockroachlabs.com/blog/serializable-lockless-distributed-isolation-cockroachdb/) (M Tracy 2016) 97 | 98 | ### FaunaDB 99 | 100 | - [x] 📄 [**FaunaDB: An Architectural Overview**](https://fauna-assets.s3.amazonaws.com/public/FaunaDB-Technical-Whitepaper.pdf) (M Freels 2018) 101 | - [x] 💬 [NewSQL database systems are failing to guarantee consistency, and I blame Spanner](http://dbmsmusings.blogspot.com/2018/09/newsql-database-systems-are-failing-to.html) (DJ Abadi 2018) 102 | - [x] 💬 [Spanner vs. Calvin: Distributed Consistency at Scale](https://fauna.com/blog/distributed-consistency-at-scale-spanner-vs-calvin) (DJ Abadi 2017) 103 | - [x] 💬 [Time-Traveling Databases: Exploring Temporality in FaunaDB](https://fauna.com/blog/time-traveling-databases) (M Freels 2016) 104 | - [x] 💬 [Unifying Relational, Document, Graph, and Temporal Data Models](https://fauna.com/blog/unifying-relational-document-graph-and-temporal-data-models) (C Anderson 2018) 105 | 106 | ### Google Bigtable 107 | 108 | - [x] 📄 [**Bigtable: A Distributed Storage System for Structured Data**](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf) (F Chang et al 2006) _"The Bigtable paper"_ 109 | 110 | ### Google F1 111 | 112 | - [ ] 📄 [**F1: A Distributed SQL Database That Scales**](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41344.pdf) _"The F1 paper"_ 113 | - [x] 📄 [**Online, Asynchronous Schema Change in F1**](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41376.pdf) (I Rae et al 2013) 114 | 115 | ### Google Spanner 116 | 117 | - [ ] 📄 [**Spanner: Google's Globally-Distributed Database**](http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/39966.pdf) (J Corbett et al 2012) _"The Spanner paper"_ 118 | - [ ] 📄 [Spanner: Becoming a SQL System](https://dl.acm.org/doi/pdf/10.1145/3035918.3056103) (DF Bacon et al 2017) 119 | - [x] 📄 [Spanner, TrueTime & The CAP Theorem](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45855.pdf) (E Brewer 2017) 120 | 121 | ### PostgreSQL 122 | 123 | - [ ] 📄 [**Looking Back at Postgres**](https://arxiv.org/pdf/1901.01973.pdf) (JM Hellerstein 2019) 124 | - [x] 💬 [How Postgres Makes Transactions Atomic](https://brandur.org/postgres-atomicity) (B Leach 2017) 125 | - [ ] 📄 [Serializable Snapshot Isolation in PostgreSQL](https://drkp.net/papers/ssi-vldb12.pdf) (DRK Ports, K Grittner 2012) 126 | - [ ] 📖 [The Internals of PostgreSQL](http://www.interdb.jp/pg/) (H Suzuki 2015) 127 | 128 | ### YugabyteDB 129 | 130 | - [x] 🎥 [YugabyteDB: Bringing Together the Best of Amazon Aurora and Google Spanner](https://www.youtube.com/watch?v=DAFQcYXK2-o) (K Ranganathan 2020) 131 | -------------------------------------------------------------------------------- /distributed-systems.md: -------------------------------------------------------------------------------- 1 | # Distributed Systems 2 | 3 | ## Consensus 4 | 5 | - [x] 📄 [**The Byzantine Generals Problem**](https://www.microsoft.com/en-us/research/uploads/prod/2016/12/The-Byzantine-Generals-Problem.pdf) (L Lamport et al 1982) 6 | - [ ] 📄 [AllConcur: Leaderless Concurrent Atomic Broadcast (Extended Version)](https://arxiv.org/pdf/1608.05866.pdf) (M Poke, T Hoefler, CW Glass 2017) 7 | - [ ] 📄 [The Chubby lock service for loosely-coupled distributed systems](https://static.googleusercontent.com/media/research.google.com/en//archive/chubby-osdi06.pdf) (M Burrows 2006) 8 | - [ ] 📄 [Consensus in the Presence of Partial Synchrony](https://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf) (C Dwork, N Lynch, L Stockmeyer 1988) _"The DLS paper"_ 9 | - [ ] 📄 [Fast General Purpose Transactions](https://cwiki.apache.org/confluence/download/attachments/188744725/Accord.pdf) (BE Smith, T Zhang, B Eggleston) _"The Accord paper"_ 10 | - [x] 📄 [Impossibility of Distributed Consensus with One Faulty Process](http://macs.citadel.edu/rudolphg/csci604/ImpossibilityofConsensus.pdf) (MJ Fischer, NA Lynch, MS Paterson 1985) _"The FLP paper"_ 11 | - [x] 📄 [Practical Byzantine Fault Tolerance](http://pmg.csail.mit.edu/papers/osdi99.pdf) (M Castro, B Liskov 1999) _"The PBFT paper"_ 12 | - [ ] 📄 [ZooKeeper: Wait-free coordination for Internet-scale systems](http://static.usenix.org/event/usenix10/tech/full_papers/Hunt.pdf) (P Hunt, M Konar, FP Junquiera, B Reed 2010) _"The ZooKeeper paper"_ 13 | 14 | ### Paxos 15 | 16 | - [ ] 📄 [**The Part-Time Parliament**](https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf) (L Lamport 1998) _"The Paxos paper"_ 17 | - [ ] 📄 [Byzantining Paxos by Refinement](https://lamport.azurewebsites.net/tla/byzsimple.pdf) (L Lamport 2010) 18 | - [ ] 📄 [EPaxos Revisited](https://www.usenix.org/system/files/nsdi21-tollman.pdf) (S Tollman) 2021 19 | - [ ] 📄 [Flexible Paxos: Quorum intersection revisited](https://arxiv.org/pdf/1608.06696.pdf) (H Howard, D Maklhi, A Spiegelman 2016) 20 | - [x] 📄 [Paxos Made Live - An Engineering Perspective](https://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/papers/paper2-1.pdf) (T Chandra, R Griesemer, J Redstone 2007) 21 | - [x] 📄 [Paxos Made Simple](https://www.microsoft.com/en-us/research/uploads/prod/2016/12/paxos-simple-Copy.pdf) (L Lamport 2001) 22 | - [ ] 📄 [There Is More Consensus in Egalitarian Parliaments](https://www.cs.cmu.edu/~dga/papers/epaxos-sosp2013.pdf) (I Moraru, DG Andersen, M Kaminsky 2013) _"The EPaxos paper"_ 23 | 24 | ### Raft 25 | 26 | - [x] 📄 [**In Search of an Understandable Consensus Algorithm**](https://raft.github.io/raft.pdf) (D Ongaro, J Ousterhout 2014) _"The Raft Paper"_ 27 | - [x] 🎥 [Designing for Understandability: The Raft Consensus Algorithm](https://www.youtube.com/watch?v=vYp4LYbnnW8) (D Ongaro 2016) 28 | - [x] 💬 [Students' Guide to Raft](https://thesquareplanet.com/blog/students-guide-to-raft/) (J Gjengset 2016) 29 | 30 | ### Viewstamped Replication 31 | 32 | - [ ] 📄 [**Viewstamped Replication Revisited**](http://pmg.csail.mit.edu/papers/vr-revisited.pdf) (B Liskov, J Cowling 2012) 33 | - [ ] 💬 [Viewstamped Replication Explained](http://blog.brunobonacci.com/2018/07/15/viewstamped-replication-explained/) (B Bonacci 2018) 34 | 35 | ## Clocks 36 | 37 | - [x] 📄 [**Time, Clocks, and the Ordering of Events in a Distributed System**](https://www.microsoft.com/en-us/research/uploads/prod/2016/12/Time-Clocks-and-the-Ordering-of-Events-in-a-Distributed-System.pdf) (L Lamport 1978) 38 | - [x] 📄 [Logical Physical Clocks and Consistent Snapshots in Globally Distributed Databases](https://cse.buffalo.edu/tech-reports/2014-04.pdf) (S Kulkarni et al 2014) _"The HLC paper"_ 39 | - [x] 📄 [Timestamps in Message-Passing Systems That Preserve the Partial Ordering](http://fileadmin.cs.lth.se/cs/Personal/Amr_Ergawy/dist-algos-papers/4.pdf) (CJ Fidge 1988) _"The vector clock paper"_ 40 | 41 | ## Verification 42 | 43 | - [x] 🔗 [**Jepsen Analyses**](https://jepsen.io/analyses) 44 | - [x] 🎥 [**Jepsen Talks**](https://jepsen.io/talks) 45 | - [x] 🎥 [Everything About Distributed Systems is Terrible](https://www.youtube.com/watch?v=tfnldxWlOhM) (H Wayne 2018) 46 | - [ ] 📄 [Specifying Concurrent Systems With TLA+](https://www.microsoft.com/en-us/research/uploads/prod/2016/12/Specifying-Concurrent-Systems-with-TLA.pdf) (L Lamport 1999) 47 | -------------------------------------------------------------------------------- /languages-and-compilers.md: -------------------------------------------------------------------------------- 1 | # Languages and Compilers 2 | 3 | ## Compilers 4 | 5 | - [ ] 🎥 [**Compilers**](http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=Compilers) (A Aiken 2014) 6 | - [ ] 📖 [**Compiler Construction**](https://c9x.me/compile/bib/wirthcc.pdf) (N Wirth 2005) 7 | - [ ] 📖 [**Compilers: Principles, Techniques, and Tools**](https://suif.stanford.edu/dragonbook/) (AV Aho, MS Lam, R Sethi, JD Ullman 2006) 8 | - [ ] 📖 [**Engineering a Compiler**](https://www.elsevier.com/books/engineering-a-compiler/cooper/978-0-12-088478-0) (K Cooper, L Torczon 2011) 9 | - [ ] 📖 [**Structure and Interpretation of Computer Programs**](https://mitpress.mit.edu/sites/default/files/sicp/index.html) (H Abelson, GJ Sussman 1984) _The Wizard Book_ 10 | - [ ] 📄 [A New C Compiler](https://c9x.me/compile/bib/new-c.pdf) (K Thompson 1990) 11 | - [ ] 📄 [Linear Scan Register Allocation](https://c9x.me/compile/bib/linearscan.pdf) (M Poletto, V Sarkar 1999) 12 | - [ ] 📄 [Crafting interpreters](https://craftinginterpreters.com/) (Robert Nystrom) 13 | 14 | ## Parsers 15 | 16 | - [x] 📖 [**Writing A Compiler In Go**](https://compilerbook.com) (T Ball 2018) 17 | - [x] 📖 [**Writing An Interpreter In Go**](https://interpreterbook.com) (T Ball 2016) 18 | - [ ] 📖 [Language Implementation Patterns](https://pragprog.com/book/tpdsl/language-implementation-patterns) (T Parr 2014) 19 | - [x] 💬 [Parsing Expressions by Precedence Climbing](https://eli.thegreenplace.net/2012/08/02/parsing-expressions-by-precedence-climbing) (E Bendersky 2012) 20 | 21 | ### Regular Expressions 22 | 23 | - [x] 🛠 [Let's Build a Regex Engine](https://kean.blog/post/lets-build-regex) (A Grebenyuk 2019) 24 | - [ ] 📄 [Regular Expression Matching Can Be Simple And Fast](https://swtch.com/~rsc/regexp/regexp1.html) (R Cox 2007) 25 | -------------------------------------------------------------------------------- /mathematics.md: -------------------------------------------------------------------------------- 1 | # Mathematics 2 | 3 | ## General 4 | 5 | - [ ] 📖 [How to Solve It](https://www.amazon.com/How-Solve-Mathematical-Princeton-Science/dp/069116407X/?pldnSite=1) (G Polya 2014) 6 | 7 | ## Discrete Mathematics 8 | 9 | - [ ] 📖 [**Concrete Mathematics**](https://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025) (RL Graham, DE Knuth, O Patashnik 1994) 10 | - [x] 👨‍🏫 [Introduction to Discrete Mathematics for Computer Science](https://www.coursera.org/specializations/discrete-mathematics) (AS Kulikov, M Levin, V Podolskii) 11 | 12 | ## Linear Algebra 13 | - [x] 🎥 [**Introduction to Linear Algebra**](https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/video-lectures/) (G Strang 2010) 14 | - [ ] 📖 [**Introduction to Linear Algebra**](https://www.amazon.com/Introduction-Linear-Algebra-Gilbert-Strang/dp/0980232775/) (G Strang 2016) 15 | - [ ] 📖 [Linear Algebra Done Right](http://linear.axler.net) (S Axler 2015) 16 | 17 | ## Calculus 18 | - [x] 📖 [**Calculus**](https://www.stewartcalculus.com) (J Stewart 2015) 19 | -------------------------------------------------------------------------------- /operating-systems.md: -------------------------------------------------------------------------------- 1 | # Operating Systems 2 | 3 | - [x] 📖 [**Modern Operating Systems**](https://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/013359162X) (AS Tanenbaum, H Bos 2014) 4 | - [x] 📖 [Linux Kernel Development](https://www.amazon.in/Linux-Kernel-Development-Developers-Library/dp/0672329468) (R Love 2010) 5 | - [ ] 🛠 [Writing an OS in Rust](https://os.phil-opp.com) (P Oppermann 2019) -------------------------------------------------------------------------------- /programming.md: -------------------------------------------------------------------------------- 1 | # Programming 2 | 3 | ## General 4 | 5 | - [ ] 📖 [**Structure and Interpretation of Computer Programs**](https://web.mit.edu/alexmv/6.037/sicp.pdf) (H Abelson, GJ Sussman 1996) 6 | - [x] 📖 [**The Art of UNIX Programming**](http://www.catb.org/~esr/writings/taoup/html/) (ES Raymond 2003) 7 | 8 | ## Languages 9 | 10 | ### Go 11 | 12 | - [x] 📖 [**The Go Programming Language**](https://www.gopl.io) (AA Donovan, BW Kernighan 2015) 13 | 14 | ### Rust 15 | 16 | - [x] 📖 [**Programming Rust**](http://shop.oreilly.com/product/0636920040385.do) (J Blandy, J Orendorff 2017) 17 | - [ ] 📖 [**The Rust Programming Language**](https://nostarch.com/rust) (S Klabnik, C Nichols 2018) --------------------------------------------------------------------------------