Can we create a thread for some of the best materials on CS available online?

This thread may prove helpful for someone wanting to study some topic in Computer Science on their own if it becomes well populated.

What are some of the best materials (courses, books, notes, video talks, etc) on any CS/programming topic that you have gone through or know of?

Also mention a bit about why it is useful.



@pushpankar 4d . I have read few books from the list and found it to be comprehensive as well as manageable. The courses and books have been selected so that one can study it outside of regular university course. Books are self contained and full with exercises. It can easily take 1-2 years of serious effort to get through the material.
@blintz 4d
The Stanford cryptography class ( and associated book ( is almost everything you'd ever want to know about cryptography. If you really like that and want to see the frontiers of cryptography research, the next (and last!) class is; alternatively, there's a security class ( more focused on industry and application.

Pro tip: nearly every instance of both these classes is available online (all the way back to 1998!), so if something's not making sense, you can always go back and see if it was explained differently in a prior iteration of the class.

@jamestimmins 4d
From Nand to Tetris: Build a Modern Computer from First Principles

Phenomenal look at different systems involved in a computer, and has you build simple versions of logic gates, ALU, assembler, compiler, bootloader, and graphics engine. Highly recommend for folks who didn't study CS in school.

@sixhobbits 4d is pretty nice for computational thinking
@dondraper36 4d
teachyourselfcs is a perfect recommendation as it doesn't include a ton of links thus resulting in analysis paralysis.

This is a list I maintain for myself. It's more about general software development and is not as structured and focused as teachyourselfcs, but you mind find something useful in it

@ipnon 4d
Base your studies on Teach Yourself CS. If you finish one item from each of their courses you will be more knowledgeable than even many CS graduates. If you could finish every book and video series they recommend for each course you would be reasonably well prepared for amateur research.

@jdfellow 4d
Cornell CS 3110 - OCaml, lectures on YouTube
@ayushm2003 4d
The quintessential 0 to 1 CS course with amazing teacher and tools to get you started. Also has marked tests to help you learn.

@runjake 4d
CS50 hasn't been mentioned yet:

Great intro to CS.

@modriano 3d
I have learned a tremendous amount about Linux and DNS and general computing from Julia Evans' zines and her blog. She's also a big fan of "programming playgrounds" [0] or interactive teaching tools.


@nyrikki 3d
While it may not be the _best_ this book is available from the author online.

Elaine Rich's textbook "Automata, Computability and Complexity: Theory & Applications"

Useful because it covers non-deterministic Turing Machines complexity classes like BPP,ZPP,RP,etc.. that you would run into Monte Carlo methods etc. As the only Non-deterministic Turing machine most people have been introduced to is the maximally lucky guesser from NP's definition it can help with practical solutions.

Unfortunately it doesn't have bounded-error quantum polynomial time (BQP) which would help set expectations for quantum supremacy.

@subtract-smiles 3d
All of Beej's writing is very informational. I especially enjoyed his guide to C, although his guide to network programming is more well known.

@TheAceOfHearts 3d
Neural Networks: Zero to Hero, by Andrej Karpathy [0].