I highly recommend learning JS from javascript.info. It's like the missing documentation to the language. The official documentaion is good enough for getting started with Typescript.
The official tutorial is good enough. Head First Python is good too. Just write a lot of code.
Although learning C is not a prerequisite to learning C++, I recommened you learn C first anyway. The folllowing are excellent books for getting started with C.
For C++, learncpp.com provides excellent tutorials.
I learnt Rust (and still learn, when needed) from Brown University's fork of the official Rust book. I also encourage you to checkout this youtube playlist by the channel 300 seconds of Rust.
This is a excellent article on error handling in Rust.
I love Go. I learnt Go from A Tour of Go. I refer to Go by Examples whenever necessary.
Head First Java is a good introduction to the language. Perhaps you'll also need to go through Head First Design Patterns, which uses Java.
I had picked up Assembly Language for x86 Processors by Kip R. Irvine from my university library in 2022 and I think it taught me quite a bit of assembly in a weekend.
I think these two books work as excellent introduction to the subject:
Prof. Onur Mutlu's YouTube channel is a treaure trove of extremely good CompArch lectures, including the cutting-edge stuff.
Read the paper What Every Programmer Should Know About Memory by U. Drepper.
I've found this Youtube Lecture Series by Prof. Black-Schaffer to be extremely helpful for learning how virtual memory works.
These videos by David Tarnoff are great for learning about cache memory and data alignment.
My personal favourite is the book Operating System Concepts by Silberschatz, Gagne & Galvin.
I've heard good things about the Operating System: Three Easy Pieces book too.
I also finished the Fundamentals of Operating Systems course by Huussein Nasser and would definitely recommend it.
Although the dragon book is the standard when it comes to compiler design, I'd recommend against jumping on it first.
Instead, pick up Crafting Interpreters by Robert Nystrom to get a first-hand experience of how interpreters are built in the real world. You can look into Writing an Interpreter in Go or Writing a Compiler in Go too. Both are written by Throsten Ball.
I got my introduction to databases from the standard text Fundamentals of Database Systems by Elmasri & Navathe. It provides a good mathematical grounding for further, more practical explorations into the field.
Brian Holt has nice courses on databases & SQL.
Hussein Nasser's course Fundamentals of Database Engineering is more than excellent for getting your feet wet into the nitty-gritties of the field.
Discrete Mathematics & Its Application by Kenneth Rosen probably has everything you'll ever need. I actually read Essentials of Discrete Mathematics by David Hunter and found it more accessible than the Rosen book.
A working understanding of Calculus is essential for machine learning. I'd highly recommend going through Calculus: Concepts & Contexts by Stewart & Kokoska. It covers vector calculus along with all the necessary prerequisites.
Grant Sanderson's Essence of Calculus playlist is a must-watch.
His Khan Academy course on multivariable calculus is extremely good as well.I got started with Introduction to Linear Algebra by Gilbert Strang.
Grant Sanderson's Linear Algebra playlist is a must-watch. You can also watch Gilbert Strang's MIT lectures (and can download them using my tool ocwd).
StatLect has amazing articles on most Linear Algebra concepts you'll encounter. Advanced LAFF is a great YouTube channel for a lot of your advanced needs. I learnt a ton from Martjin Anthonissen's lectures too.
I was inspired by QuantitativeByte's Linear Algebra in C++ playlist to create tinypy - a tiny linear algebra library in Python. Numerical Linear Algebra by Allaire & Kaber was of great help in the process.
Introduction to Probability for Data Science by Stanley Chan is the single best book I've ever read on the subject.
I read Head First Statistics and I think it provides a good overview of the subject.
I also read Statistics for People Who Think They Hate Statistics in R while taking a Data Science course from IIT Madras.
ThePrimeagen's Everything You'll Need to Know About Git is a pretty good Git tutorial. If you're looking for more advanced stuff, you should probably head to learngitbranching.
Brian Holt's Complete Intro to Containers v2 is a great place to start learning about containers & Docker.
I got my AWS Certified Cloud Practitioner Certification (yeah, that's a mouthful) by bingeing Neal Davis's Udemy course in 6 days. He's really good at explaining stuff.
I also made my notes public.
I'm still in the process of teaching myself DL. These were the steps I took and I think are good enough to get a good understanding of the fundamentals of the subject. I assume you know the basics of Probability & Stats and Calculus.
© Aniruddha Mukherjee 2024