Personal Learning resources
Learning concepts
- Argyris, C. (1991). Teaching smart people how to learn. Harvard business review, 69(3).
Programming Language
Erlang/Elixir
- Armstrong, J. Making Reliable Distributed Systems in the Presence of Errors, 2003.
- Erlang Rationale, Virding, R: https://drive.google.com/file/d/1zKsOgwZJ_YZ1bY3b3gNRjAxpn6VneR8b/view
- Practical type inference based on success typings. DOI=http://dx.doi.org/10.1145/1140335.1140356
Programming language concepts
- Johnsson T. (1985) Lambda lifting: Transforming programs to recursive equations
- B.H. Liskov and J.M. Wing, Behavioral Subtyping Using Invariants and Constraints, CMU-CS-99-156, July 1999.
Programming language implementation
- Adams, M. D., & Dybvig, R. K. (2008, September). Efficient nondestructive equality checking for trees and graphs. In Proceedings of the 13th ACM SIGPLAN international conference on Functional programming (pp. 179-188). (related: https://twitter.com/anohana/status/1429694845057060871)
Functional programming
- HUET, G. É. R. A. R. D. (1997). The Zipper. Journal of Functional Programming, 7(5), 549–554. http://doi.org/10.1017/S0956796897002864
- Hutton, G. (1999). A tutorial on the universality and expressiveness of fold. Journal of Functional Programming, 9(4), 355-372.
- Peyton Jones, S. L. (1987). The implementation of functional programming languages (prentice-hall international series in computer science). Prentice-Hall, Inc..
Design
General
- On the Criteria To Be Used in Decomposing Systems into Modules by D.L.Parnas, December 1972.
- Petricek, T. (2017). Miscomputation in software: Learning to live with errors. The Art, Science, and Engineering of Programming, 1(2).
- Schlichting, R. D., & Schneider, F. B. (1983). Fail-stop processors: An approach to designing fault-tolerant computing systems. ACM Transactions on Computer Systems (TOCS), 1(3), 222-238.
- Erickson, J., Musuvathi, M., Burckhardt, S., & Olynyk, K. (2010, October). Effective Data-Race Detection for the Kernel. In OSDI (Vol. 10, No. 10, pp. 1-16).
Design patterns
- Arguments and Results by James Noble - In PLOP Proceedings , 1997 http://citeseerx.ist.psu.edu/showciting?cid=3357705
Distributed Systems
- Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications. 2003
- Real-Time Event Time Series Aggregation at Twitter. 2018 DOI: https://doi.org/10.1145/3183713.3190663
- Twitter Heron: Stream Processing at Scale. 2015 DOI: https://doi.org/10.1145/2723372.2742788
- Spark, 2010. http://static.usenix.org/events/hotcloud10/tech/full_papers/Zaharia.pdf
- ZooKeeper: wait-free coordination for internet-scale systems. 2010, USENIX conf
- Cap Twelve Years Later: How the "Rules" Have Changed. 2012
Cloud Systems
- Serverless in the Wild: Characterizing and Optimizing the Serverless Workload at a Large Cloud Provider: https://www.usenix.org/conference/atc20/presentation/shahrad
- New Directions in Cloud Programming: https://arxiv.org/abs/2101.01159 (video)
- Cloud Programming Simplified: A Berkeley View onServerless Computing :https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf
- What bugs caused cloud production indidents? (from morning paper) :https://blog.acolyer.org/2019/06/21/what-bugs-cause-cloud-production-incidents/
- Burns, B., Grant, B., Oppenheimer, D., Brewer, E., & Wilkes, J. (2016). Borg, omega, and kubernetes. Communications of the ACM, 59(5), 50-57.
- Verma, A., Pedrosa, L., Korupolu, M., Oppenheimer, D., Tune, E., & Wilkes, J. (2015, April). Large-scale cluster management at Google with Borg. In Proceedings of the Tenth European Conference on Computer Systems (pp. 1-17).
Database
- Yang, F., Tschetter, E., Léauté, X., Ray, N., Merlino, G., & Ganguli, D. (2014, June). Druid: A real-time analytical data store. In Proceedings of the 2014 ACM SIGMOD international conference on Management of data (pp. 157-168).
- Nishtala, R., Fugal, H., Grimm, S., Kwiatkowski, M., Lee, H., Li, H. C., ... & Venkataramani, V. (2013). Scaling memcache at facebook. In 10th {USENIX} Symposium on Networked Systems Design and Implementation ({NSDI} 13) (pp. 385-398).
- Bronson, N., Amsden, Z., Cabrera, G., Chakka, P., Dimov, P., Ding, H., ... & Venkataramani, V. (2013). {TAO}: Facebook’s distributed data store for the social graph. In 2013 {USENIX} Annual Technical Conference ({USENIX}{ATC} 13) (pp. 49-60).
Blogs
- Paul Graham Essays :http://www.paulgraham.com/articles.html
- Joel on Software :https://www.joelonsoftware.com/
- Erlang/OTP team :http://blog.erlang.org/
- Erlang Solutions :https://www.erlang-solutions.com/blog.html
- Michael Nygard :https://www.michaelnygard.com/
Books (Online)
- The BEAM Book :https://github.com/happi/theBeamBook
- Linux Insides :https://0xax.gitbooks.io/linux-insides/content/index.html
- Mostly Adequate Guide to Functional Programming :https://mostly-adequate.gitbooks.io/mostly-adequate-guide/
- Forecasting: Principles and Practice: https://otexts.com/fpp2/
- Algorithms illuminated: http://www.algorithmsilluminated.org/
- Crafting interpreters: https://craftinginterpreters.com/
Classes
CS
- Mining of Massive Data Sets :http://www.mmds.org/
- Stevens, AUPE :https://stevens.netmeister.org/631/
- Advanced data structures :https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-851-advanced-data-structures-spring-2012/
- Programming Models for Distributed Computation :https://github.com/heathermiller/dist-prog-book
- Data Structure:https://web.stanford.edu/class/cs166/
- Modern Algorithmic Toolbox (with Greg Valiant) (CS168, spring 2017) on Tim Roughgarden Web Site :http://timroughgarden.org/notes.html
Math
- Learn Differential Equations: Up Close with Gilbert Strang and Cleve Moler :https://ocw.mit.edu/resources/res-18-009-learn-differential-equations-up-close-with-gilbert-strang-and-cleve-moler-fall-2015/
- Differential Equations: https://www.khanacademy.org/math/differential-equations
Resources for Papers
- Misreading Chat :https://misreading.chat/
- the morning paper :https://blog.acolyer.org/
- Papers We love :https://github.com/papers-we-love/papers-we-love
- Turing Lectures :https://amturing.acm.org/lectures.cfm
Universities
- MIT, Parallel & Distributed Operating Systems Group :https://pdos.csail.mit.edu/publications/#/
Companies
- Microsoft research :https://www.microsoft.com/en-us/research/
- Google publications :https://ai.google/research/pubs/
- Facebook publications :https://research.fb.com/publications/
- Netflix research :https://research.netflix.com/
- Uber Engineering :https://eng.uber.com/
CS fundamentals
Floating point number
- Floating point visually explained :http://fabiensanglard.net/floating_point_visually_explained/
- Floating point numbers made simple :https://agilecxx.blogspot.com/2017/09/floating-point-numbers-made-simple.html
- Floating point guide :https://floating-point-gui.de/
- One does not simply calculate the absolute value :https://habr.com/en/post/574082/
- Steele Jr, G. L., & White, J. L. (1990, June). How to print floating-point numbers accurately. In Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation (pp. 112-126).
- Burger, R. G., & Dybvig, R. K. (1996). Printing floating-point numbers quickly and accurately. ACM SIGPLAN Notices, 31(5), 108-116.
- Goldberg, D. (1991). What every computer scientist should know about floating-point arithmetic. ACM computing surveys (CSUR), 23(1), 5-48.
Data Structures
HyperLogLog
- Flajolet, P., Fusy, É., Gandouet, O., & Meunier, F. (2007, June). Hyperloglog: the analysis of a near-optimal cardinality estimation algorithm. In Discrete Mathematics and Theoretical Computer Science (pp. 137-156). Discrete Mathematics and Theoretical Computer Science.