General Computer Science
There’s some great resources on fundamentals below. Aside from that, be sure to check out our algorithms and data structures pages, which are also essential computer science concepts.
Watch convention talks on ConFreaks without paying for the cons themselves.
Some of these resources below, like this great look at the AI revolution, are heavy on concepts and light on code. Others are great introductions.
Read this great set of tips on learning to code that the author claims (and I agree!) can save you years of misplaced effort.
But things are not always serious… languages can be kind of ridiculous, you can find yourself reading all the wrong books, or possibly even abandoning it all for the arts. But if you stay, we have cats.
Free Computer science courses
- Check out this spectacular, nearly heroic list of resources for free, high-quality courses. (Might even include all of the rest of this list!)
- iTunes University, free and great recorded video/audio lectures
- Stanford University’s courses, free and available
- Coursera’s computer science courses
- MIT Open Courseware
- State University of NY at Albany open computer science courses to learn online for free
- Harvard’s CS50 course, completely free and great intro to general computer science. This is a classic that everyone links to.
Books covering fundamentals
- The Pragmatic Programmer: From Journeyman to Master, by Andrew Hunt
- Code Complete: a Practical Handbook of Software Construction, by Steve McConnell
- How to Design Programs: An Introduction to Programming and Computing, by Matthias Felleisen
- Programming Pearls, by Jon Bentley
- You want even more programming books?!? Then check out this list here.
Object Oriented Programming basics
- Law of Demeter
- Understanding Object Oriented Programming
- 5 Object Oriented basics learned from Sandi Metz
Functional Programming basics
- Professor Frisby’s Mostly Adequate Guide to Functional Programming
- Purely Functional Data Structures, by Chris Okasaki
More great general resources
- Classic papers in programming languages and logic
- Awesome programming books
- UNIX philosophy
- Writing good documentation
- Intro to machine learning
- Seven Concurrency Models in Seven Weeks: When Threads Unravel, by Paul Butcher
- Structure and Interpretation of Computer Programs, by Harold Abelson
- The Annotated Turing: A Guided Tour Through Alan Turing’s Historic Paper on Computability and the Turing Machine, by Charles Petzold
- Compilers: Principles, Techniques, and Tools, by Alfred V. Aho