References

Table of contents

  1. Networking
    1. Books
    2. RFCs
  2. Operating systems
    1. Books
  3. Data structures and algorithms
    1. Books
  4. Distributed systems
    1. Books
  5. Computer architecture
    1. Books
    2. Specifications
  6. Papers
  7. Databases
    1. Books
    2. Notes
    3. Lectures
  8. Compilers
    1. Books

Networking

Books

B., H. (1997). Internet Routing Architectures. New Riders Publishing.

P., D. (2019). An Introduction to Computer Networks (1.9.18 ed.).

Tanenbaum, A., & Wetherall, D. (2011). Computer Networks (5th ed.).

Kurose, J., & Ross, K. (2013). Computer Networking: A Top-Down Approach (6th ed.). Pearson.

Grigorik, I. (2013). High-Performance Browser Networking (1st ed.). O’Reilly Media.

Spurgeon, C., & Zimmerman, J. (2014). Ethernet: The Definitive Guide (2nd ed.).

Caesar, M., & Rexford, J. (2005). BGP Routing Policies in ISP Networks. Netwrk. Mag. of Global Internetwkg., 19(6), 5–11. https://doi.org/10.1109/MNET.2005.1541715

RFCs

Sriram, K., & Kumari, W. “A. (2011). Recommendation for Not Using AS_SET and AS_CONFED_SET in BGP. RFC Editor. https://doi.org/10.17487/RFC6472

Rekhter, Y., Hares, S., & Li, T. (2006). A Border Gateway Protocol 4 (BGP-4). RFC Editor. https://doi.org/10.17487/RFC4271

Internet Control Message Protocol. (1981). RFC Editor. https://doi.org/10.17487/RFC0792

An Ethernet Address Resolution Protocol: Or Converting Network Protocol Addresses to 48.bit Ethernet Address for Transmission on Ethernet Hardware. (1982). RFC Editor. https://doi.org/10.17487/RFC0826

Droms, R. (1997). Dynamic Host Configuration Protocol. IETF. Retrieved from http://www.ietf.org/rfc/rfc2131.txt

Reynolds, J. K. (1993). BOOTP Vendor Information Extensions. RFC Editor. https://doi.org/10.17487/RFC1497

Bootstrap Protocol. (1985). RFC Editor. https://doi.org/10.17487/RFC0951

Belshe, R., M. Peon, & Thomson, M. (2015). Hypertext Transfer Protocol Version 2 (HTTP/2). RFC Editor. https://doi.org/10.17487/RFC7540

Hinden, B., & Deering, D. S. E. (1998). Internet Protocol, Version 6 (IPv6) Specification. RFC Editor. https://doi.org/10.17487/RFC2460

Nielsen, H. F., Mogul, J., Masinter, L. M., Fielding, R. T., Gettys, J., Leach, P. J., & Berners-Lee, T. (1999). Hypertext Transfer Protocol – HTTP/1.1. RFC Editor. https://doi.org/10.17487/RFC2616

Transmission Control Protocol. (1981). RFC Editor. https://doi.org/10.17487/RFC0793

User Datagram Protocol. (1980). RFC Editor. https://doi.org/10.17487/RFC0768

Fielding, R. T., Nottingham, M., & Reschke, J. (2014). Hypertext Transfer Protocol (HTTP/1.1): Caching. RFC Editor. https://doi.org/10.17487/RFC7234

Fielding, R. T., & Reschke, J. (2014). Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests. RFC Editor. https://doi.org/10.17487/RFC7232

Nottingham, M. (2010). HTTP Cache-Control Extensions for Stale Content. RFC Editor. https://doi.org/10.17487/RFC5861

Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols. (2010). RFC Editor. https://doi.org/10.17487/RFC5245

Matthews, P., Rosenberg, J., Wing, D., & Mahy, R. (2008). Session Traversal Utilities for NAT (STUN). RFC Editor. https://doi.org/10.17487/RFC5389

Schulzrinne, H., Casner, S. L., Frederick, R., & Jacobson, V. (2003). RTP: A Transport Protocol for Real-Time Applications. RFC Editor. https://doi.org/10.17487/RFC3550

Operating systems

Books

Anderson, T., & Dahlin, M. (2012). Operating Systems: Principles and Practice (Version 0.22).

R., L. (2010). Linux Kernel Development (Developer’s Library) (3rd ed.). Addison-Wesley Professional.

Data structures and algorithms

Books

Skiena, S. (2008). The Algorithm Design Manual (2nd ed.). Springer.

Morin, P. (2013). Open Data Structures (1st ed.). AU Press.

Knuth, D. E. (1998). The Art of Computer Programming (Vol. 1). Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc.

Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). The MIT Press.

Distributed systems

Books

Tanenbaum, A., & van Steen, M. (2017). Distributed Systems (3.01 ed.). Pearson Education, Inc.

Vogels, W. All Things Distributed. A Word on Scalability - All Things Distributed. Retrieved from https://web.archive.org/web/20200414125407/https://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html

Lamport, L. (1978). Time, Clocks, and the Ordering of Events in a Distributed System. Commun. ACM, 21(7), 558–565. https://doi.org/10.1145/359545.359563

Fidge, C. J. (1988). Timestamps in message-passing systems that preserve the partial ordering. Proceedings of the 11th Australian Computer Science Conference, 10(1), 56–66.

Brewer, E. (2017). Spanner, TrueTime and the CAP Theorem.

Gifford, D. K. (1979). Weighted voting for replicated data, 150–162.

Brewer, E. (2012). CAP Twelve Years Later: How the ”Rules” Have Changed. Computer, 45(2), 23–29. https://doi.org/10.1109/MC.2012.37

Lamport, L. (2001). Paxos Made Simple.

Dean, J., & Ghemawat, S. (2004). MapReduce: Simplified Data Processing on Large Clusters. In OSDI’04: Sixth Symposium on Operating System Design and Implementation (pp. 137–150). San Francisco, CA.

Zaharia, M., Chowdhury, M., Das, T., Dave, A., Ma, J., McCauly, M., … Stoica, I. (2012). Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing. In Presented as part of the 9th USENIX Symposium on Networked Systems Design and Implementation (NSDI 12) (pp. 15–28). San Jose, CA: USENIX. Retrieved from https://www.usenix.org/conference/nsdi12/technical-sessions/presentation/zaharia

Terrace, J., & Freedman, M. J. (2009). Object Storage on CRAQ: High-Throughput Chain Replication for Read-Mostly Workloads. In Proceedings of the 2009 Conference on USENIX Annual Technical Conference (p. 11). USA: USENIX Association.

Van Renesse, R., & Schneider, F. (2004). Chain Replication for Supporting High Throughput and Availability. (pp. 91–104).

Lamport, L., Shostak, R. E., & Pease, M. C. (1982). The Byzantine Generals Problem. ACM Trans. Program. Lang. Syst., 4(3), 382–401. Retrieved from http://dblp.uni-trier.de/db/journals/toplas/toplas4.html#LamportSP82

AWS. (2017). Database Caching Strategies Using Redis. Retrieved from https://d0.awsstatic.com/whitepapers/Database/database-caching-strategies-using-redis.pdf

Haber, I. (2016). 15 Reasons to use Redis as an Application Cache. Retrieved from https://redislabs.com/wp-content/uploads/2016/03/15-Reasons-Caching-is-best-with-Redis-RedisLabs-1.pdf

Haber, I. (2018). Whitepaper: Deploying a Highly Available Distributed Caching Layer on Oracle Cloud Infrastructure using Memcached & Redis. Retrieved from https://docs.cloud.oracle.com/en-us/iaas/Content/Resources/Assets/whitepapers/deploying-memcached-and-redis-on-oci.pdf

Hunt, P., Konar, M., Junqueira, F. P., & Reed, B. (2010). ZooKeeper: Wait-Free Coordination for Internet-Scale Systems. Proceedings of the 2010 USENIX Conference on USENIX Annual Technical Conference, 11.

Ongaro, D., & Ousterhout, J. (2014). In Search of an Understandable Consensus Algorithm. In Proceedings of the 2014 USENIX Conference on USENIX Annual Technical Conference (pp. 305–320). USA: USENIX Association.

Netflix. (2019). Open Connect Overview. Retrieved from https://openconnect.netflix.com/Open-Connect-Overview.pdf

Nygren, E., Sitaraman, R. K., & Sun, J. (2010). The Akamai Network: A Platform for High-Performance Internet Applications. SIGOPS Oper. Syst. Rev., 44(3), 2–19. https://doi.org/10.1145/1842733.1842736

Pathan, A., & Buyya, R. (2007). A taxonomy and survey of content delivery networks, Technical Report, GRIDS-TR-2007-4, Grid Computing and Distributed Systems Laboratory, The University of Melbourne, Australia. Retrieved from http://www.gridbus.org/reports/CDN-Taxonomy.pdf

Salchow, K. (2007). Load balancing 101: Nuts and bolts. White Paper, F5 Networks, Inc.

Papadimitriou, C. H. (1979). The serializability of concurrent database updates. Journal of the ACM (JACM), 26(4), 631–653.

Patterson, D. A., Gibson, G., & Katz, R. H. (1988). A Case for Redundant Arrays of Inexpensive Disks (RAID). In Proceedings of the 1988 ACM SIGMOD International Conference on Management of Data (pp. 109–116). New York, NY, USA: Association for Computing Machinery. https://doi.org/10.1145/50202.50214

Patterson, D. A., Gibson, G., & Katz, R. H. (1988). A Case for Redundant Arrays of Inexpensive Disks (RAID). SIGMOD Rec., 17(3), 109–116. https://doi.org/10.1145/971701.50214

Computer architecture

Books

Malvino, A., & Brown, J. (1993). Digital Computer Electronics (3rd ed.).

Hennessy, L., J, & Patterson, A., D. (2017). Computer Organization and Design: The Hardware / Software Interface: ARM Edition.

Hennessy, L., J, & Patterson, A., D. (2018). Computer Organization and Design: The Hardware / Software Interface: RISC-V Edition.

Bryant, E., R, & O’Hallaron, R., D. (2011). Computer Systems: A Programmer’s Perspective (2nd ed.).

Specifications

IEEE. (2008). IEEE-754, Standard for Floating-Point Arithmetic. IEEE Std 754-2008, 1–58.

The Unicode Standard: Version 13.0 – Core Specification. (2020).

Waterman, A., & Asanovic, K. et al. (2017). The RISC-V Instruction Set Manual Volume II: Privileged Architecture Version 2.2. EECS Department, University of California, Berkeley.

Papers

Neumann, J. von. (1945). First Draft of a Report on the EDVAC.

Riasanovsky, N. Understanding RISC-V Calling Convention. Retrieved from https://web.archive.org/web/20201111184631/https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf

Wawrzynek, J. (2007). CS61c: Introduction to Synchronous Digital Systems. Retrieved from https://web.archive.org/web/20200327171443/http://inst.eecs.berkeley.edu/ cs61c/resources/sds.pdf

Wawrzynek, J. (2007). CS61c: Representations of Combinational Logic Circuits. Retrieved from https://web.archive.org/web/20200327170708/https://inst.eecs.berkeley.edu/ cs61c/resources/boolean.pdf

Databases

Books

Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts, Seventh Edition. McGraw-Hill Book Company. Retrieved from https://www.db-book.com/db7/index.html

Silberschatz, A., Korth, H. F., & Sudarshan, S. (2011). Database System Concepts, Sixth Edition. McGraw-Hill Book Company.

Notes

Pavlo, A. (2018). Lecture #10: Query Processing. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/10-queryprocessing.pdf

Pavlo, A. (2018). Lecture #13: Query Optimization. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/13-optimization.pdf

Pavlo, A. (2018). Lecture #14: Parallel Execution. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/14-parallel.pdf

Pavlo, A. (2018). Lecture #16: Concurrency Control Theory. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/16-concurrencycontrol.pdf

Pavlo, A. (2018). Lecture #17: Two-Phase Locking. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/17-twophaselocking.pdf

Pavlo, A. (2018). Lecture #19: Timestamp Ordering. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/18-timestampordering.pdf

Pavlo, A. (2018). Lecture #20: Logging Schemes. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/20-logging.pdf

Pavlo, A. (2018). Lecture #21: Database Recovery. Retrieved from https://15445.courses.cs.cmu.edu/fall2018/notes/21-recovery.pdf

Lectures

A, P. (2018). CMU Database Systems - 18 Timestamp Ordering Concurrency Control. Youtube. Retrieved from https://www.youtube.com/watch?v=TB_hfpQleAc

Compilers

Books

Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools (2nd Edition). USA: Addison-Wesley Longman Publishing Co., Inc.