Computer Science
Disclaimer - This is incomplete and not properly arranged! When I will be graduating, I will write about which sections of these materials I loved, and why the material is mentioned is present in my bookshelf at the first place.
I am no CS god, I can't recall all of these in an blink of an eye in an intense interview! This will help me (and others) in revision of fundamental concepts. Just a collection I enjoyed persoanlly. I am a normal human being, don't paint an exaggerated picture of me.
Well, I used to hop around and read many CS books for passing my time in boring undergrad classes. It was fun, and I am not the best sort of a student. Here I am listing my favorite reads till now and, what and why would I pick them up for if I wanted to read again. They have helped me enjoy in the midst of boring lectures in IITK and I want to sincerely thank the authors for putting in the work. Also, I have shared the CS lectures I watched to grasp the concepts better so that people can have reference material and broader understanding of the interesting topics. The best way to learn these concepts is to implement some intriguing idea that you have while slowly and sensually reading these beauties!
The resources are in no particular order, I just enjoyed them, and you might also love them! Also, don't stress on the research papers much, even I don't understand half of it! I just explored them out of curiosity
Intro to Programming
Reads:
- Teach yourself programming in 10 years
- Becoming a Better Programmer by Tightening Feedback Loops
- A Programmer's Introduction to Mathematics
- Coding is Boring, Engineering isn't
- Why Machines Learn
- Building Modern Computers from first principles
Lectures:
Data Structures and Algorithms
Reads:
Lectures:
Just go Neetcode for those stupid Leetcode Medium/Hards that you are going to get in your interviews. Leetcode preparation is unnecessary if you don't want to work in Big Tech giants, but deep knowledge of Data Structures and Algorithms is crucial for crafting clever software!
If you are really into puzzles, Competitive Programming is a cool sport to be in! CP Handbook is excellent to get started along with this lecture series. Try ICPC :) Not required for simple DSA rounds at tech companies though! Its fun, really fun once you get the hang of it.
Computer Systems
Reads:
- Operating System Concepts
- Linux Kernel Development
- The Linux Programming Interface
- Advanced Programming in UNIX Environment
- What every programmer should know about Memeory!
- An incremental approach to Compiler construction
- What is Systems Programming
- Intro to Concurrency and Tree Structured Concurrency
- Seven Concurrency Models in Seven Weeks
- Computer Systems Security
Lectures:
- Programming Paradigmns
- NWU CS615
- NWU CS361
- UCL Compilers
- UMass CS377
- Computer System Engineering
- Concurrent Programming KAISTT CS341
- Performance Engineering for Software Systems
Networking
Reads:
Lectures:
Database Engineering
Reads:
Lectures:
For real deep Database Enthusiasts CMU DB Group is the GOLD STANDARD:
Scalable Architecture and Distributed Systems
Reads:
- Distributed Systems and some cool texts from the TA Students guide to RAFT and Instructors guide to RAFT and A step by step guide to Raft Consensus Algorithm
- Designing Distributed Architectures
- Designing Data Intensive Applications
- Building Microservices: Designing Fine-Grained Systems
- Internal Consistency in Streaming Systems
- Dapper
- Zanzibar
- Scalability! But at what COST?
- Flexiraft
- Scalable Statistical Root Cause Analysis on App Telemetry
- Google SSO
- Alea-BFT, All you need is DAG and BullShark
- Patterns of Distributed Systems
- A comprihensive review of BFT Algorithms
- A Survey and Comparison of Consistent Hashing Algorithms
- Systems Correctness and Practices at AWS
- A Scalable CAN
- Some short notes
Lectures:
- MIT 6.824 and go through assignments and labs as well here
- Practical Distributed Systems
- NWU CS310
- Jordan's System Design videos
- A large scale analysis of hundreds of in-memory cache clusters at Twitter
- Distributed Systems Reading Group
- RAFT
- Foundations of Blockchain Protocols
- Introduction to Distributed Consensus Algorithms
- Choose API
Fly.io has a very cool distributes systems challenge!
Applied Cryptography
Reads:
- Diffie Hellman Protocol
- Serious Cryptography
- Elliptic Curves: Number Theory and Cryptography (vitalik has a cool blogpost on it Exploring Elliptic Curve Pairings)
- Sigma Protocols
- Understanding ZKP systems
- ZK from SMPC
- Garbled Circuits
- Oblix
- Path ORAM and How Signal Uses ORAM practically!
- Snoopy
- Circom and Halo2
- Plonk
- Replication is not Needed
- Constant-Size Commitments to Polynomials and Their Applications
- ZK-Book
- Succient Proofs and Linear Algebra
- ZKSnarks under the hood
- Concise Notes when working with Bitcoin protocols
- BBS+
- Groth16 and Pinochio
- Practical Threshold Signatures and a Survey on ECDSA Threshold signing
- Threshold ECDSA
- Hotstuff 2
- Narhwal and Tusk and BullShark paired with Shoal combined with Mysticeti
- Latency Reduction in P2P networks
- Obscuro
- Advanced Cryptography notes
- Proofs, Arguments and ZK
- ZKDocs
- Various crypto protocols
- Spartan
- Pairings for Begineers
- Blink
Lectures:
- Introduction to General Cryptography and Applied Cryptography
- Advanced Topics in Cryptography
- Winter School to Cryptography
- ZKIAP
- Programming ZKPs
- Multiparty Threshold ECDSA
- ZKBoo
- ORAM
- Pure Rust ECC
- Fully Homomorphic Encryptions
AI/ML
Lectures:
- Linear Algebra
- Probabilistic Systems Analysis and Applied Probability
- Introduction to Computational Thinking and Data Science
- Intro to Machine Learning
- Deep Learning
- Introduction to Optimization
- Convex Optimizations
- Differential Privacy in Machine Learning
- MLSys Seminar
- AI for Sciences and Engineering
- Physics Informed Machine Learning
Reads:
Blockchain
Lecture:
- Introduction to Bitcoin
- Intro to Web3
- Cryptocurrency Engineering and Design
- Blockchain and Money
- Foundations of Blockchain Protocols
Reads:
- Foundations of Blockchain Protocols
- Survey on Cryptocurrency Networking
- Evolution of Proof of Stake
- GHOST
Programming Languages
Books:
Random
No you don't have to know all this to be called a great engineer (I am not even a software engineer when writing this!). These are simply a compilation of things I got particularly interested in and simply loved consuming.
All the best!