Fundamentals

https://cs50.harvard.edu/x/2023/

  • The quintessential 0 to 1 CS course with amazing teacher and tools to get you started. Also has marked tests to help you learn.

https://online.stanford.edu/courses/soe-ycscs101-computer-science-101

Specializations

Compilers

https://github.com/aalhour/awesome-compilers

Cryptography

http://crypto.stanford.edu/~dabo/cs255/ https://crypto.stanford.edu/~dabo/cryptobook/BonehShoup_0_4

  • Stanford cryptography class and associated book

https://crypto.stanford.edu/cs355/23sp/

  • advanced cryptography

Self-paced courses

… outside the ivory towers

Teach Yourself CS

https://teachyourselfcs.com

  • comprehensive list
  • 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

From Nand to Tetris: Build a Modern Computer from First Principles

https://www.coursera.org/learn/build-a-computer

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

FunctionalCS

https://functionalcs.github.io/curriculum/

  • discrete math
  • …
  • compilers
  • databases
  • …

Diderot

https://www.diderot.one/courses/121/books

Broad coverage of:

  • Specification, Problem and Implementation
  • Parallelism
  • Sets and Relations
  • Graph Theory
  • Functional Algorithms
  • Lambda Calculus
  • Concurrency
  • Algorithm Analysis
  • Probability Theory
  • Sequences
  • Algorithm Design
  • Randomization
  • Binary Search Trees
  • Sets and Tables
  • Priority Queues
  • Hashing
  • Dynamic Programming
  • Graphs and Graph Search
  • Shortest Paths
  • Graph Contraction
  • Minimum Spanning Tree

Papers

https://github.com/fogus/papers-i-love

  • good resource for important papers.

Misc resources

Still organizing these…

Books

I’ll throw out a recommendation for The Little series of books (e.g., The Little Schemer, The Seasoned Schemer, The Reasoned Schemer, The Little Typer, etc.)

The first book is all you need to grok recursion. You can just toss a copy at any student who struggles with it.

The second book ends with some really non-trivial CS stuff.

They’re fantastic examples of the power of good pedagogy to explain interesting and difficult concepts normally relegated to drier texts.

reply

idrios 3 hours ago | prev | next [–]

Here’s a pretty good website that gives direction on the path to competence/mastery for various domains of software development. https://roadmap.sh/

reply

acadavid79 8 hours ago | prev | next [–]

The MIT’s missing semester class (https://missing.csail.mit.edu). For me, it has filled many gaps in my self-teaching journey. I don’t have a CS degree. reply

gdprrrr 8 hours ago | prev | next [–]

https://craftinginterpreters.com/ reply

dondraper36 8 hours ago | prev | next [–]

teachyourselfcs is a perfect recommendation as it doesn’t include a ton of links thus resulting in analysis paralysis. https://www.notion.so/wdesert/Curated-Resources-e37b0646f3f1…

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

reply

nyrikki 7 hours ago | prev | next [–]

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” https://www.cs.utexas.edu/~ear/cs341/automatabook/index.html

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.

reply

subtract-smiles 7 hours ago | prev | next [–]

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. https://beej.us/guide/

reply

TheAceOfHearts 7 hours ago | prev | next [–]

Neural Networks: Zero to Hero, by Andrej Karpathy [0]. [0] https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThs…

reply

runjake 8 hours ago | prev | next [–]

CS50 hasn’t been mentioned yet: https://pll.harvard.edu/course/cs50-introduction-computer-sc… Great intro to CS.

reply

ibobev 6 hours ago | prev | next [–]

I’m maintaining the following list of freely available books and articles about computer science, programming, math, and physics: https://github.com/bobeff/programming-math-science reply

jdfellow 8 hours ago | prev | next [–]

Cornell CS 3110 - OCaml, lectures on YouTube https://www.youtube.com/playlist?app=desktop&list=PLre5AT9Jn… reply

sixhobbits 8 hours ago | prev | next [–]

https://www.csunplugged.org/en/ is pretty nice for computational thinking reply

wwarner 6 hours ago | prev | next [–]

this isn’t nearly as comprehensive, but Michael Collins’ notes on machine learning for NLP are really succinct and IMO intuitive http://www.cs.columbia.edu/~mcollins/

(search for notes, where he’s listed links to pdfs he uses in classes)

reply

Al0neStar 4 hours ago | prev | next [–]

Programming

”A Data-Centric Introduction to Computing”

https://dcic-world.org/

Programming Language Theory

”Programming Languages: Application and Interpretation”

https://www.plai.org/

“Crafting Interpreters”

https://craftinginterpreters.com/

Algorithms/Data Structures

  • Pure C *

“Algorithmic Thinking: A Problem-Based Introduction”

https://nostarch.com/algorithmic-thinking-2nd-edition

Competitive Programming/Interviews

”Competitive Programming book, 4th edition (CP4)“

https://cpbook.net/

“Elements of Programming Interviews in Python”

http://elementsofprogramminginterviews.com/

Compilation

”Essentials of Compilation: An Incremental Approach in Python”

https://github.com/IUCompilerCourse/Essentials-of-Compilatio…

Database Systems

”CMU: Intro to Database Systems”

https://15445.courses.cs.cmu.edu/

“CMU: Advanced Database Systems”

https://15721.courses.cs.cmu.edu/

Calculus I/II & Real Analysis

”A Course in Calculus and Real Analysis”

https://link.springer.com/book/10.1007/978-3-030-01400-1

”A Course in Multivariable Calculus and Analysis”

https://link.springer.com/book/10.1007/978-1-4419-1621-1

Physics

”Matter and Interactions”

https://matterandinteractions.org/

Linear Algebra & ML

  • A Series of books by prof. Joe Suzuki without using any external library for the implementations *

“Statistical Learning with Math and Python”

https://link.springer.com/book/10.1007/978-981-15-7877-9

”Sparse Estimation with Math and Python”

https://link.springer.com/book/10.1007/978-981-16-1438-5

”Kernel Methods for Machine Learning with Math and Python”

https://link.springer.com/book/10.1007/978-981-19-0401-1

Discrete Mathematics

”CMU 21-228 Discrete Mathematics (prof. Poh-Shen Loh”

https://www.math.cmu.edu/~ploh/2021-228.shtml

Mathematical Logic

”Mathematical Logic Through Python”

https://www.logicthrupython.org/

CS Complexity and Theory:

Courses by Ryan O’Donnell at CMU

http://www.cs.cmu.edu/~odonnell/

Cryptography

”Serious Cryptography: A Practical Introduction to Modern Encryption”

https://nostarch.com/seriouscrypto

Problem Solving

”Math 235: Mathematical Problem Solving”

https://www.cip.ifi.lmu.de/~grinberg/t/20f

Computer Graphics

  • Also look up the course by @pikuma for a pure c impl without OpenGL *

“Computer Graphics from Scratch: A Programmer’s Introduction to 3D Rendering”

https://gabrielgambetta.com/computer-graphics-from-scratch/

“The Ray Tracer Challenge A Test-Driven Guide to Your First 3D Renderer”

https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng…

Reverse Engineering

”Reverse Engineering for Beginners”

https://beginners.re/

SAT/SMT

”SAT/SMT by Example”

https://sat-smt.codes/

Also Hakan Kjellerstrand’s z3 page:

http://www.hakank.org/z3/

Game Engine Development

  • 2/4 volumes out (no digital format for the 2 pending volumes due to the authors “piracy” concerns *

“Foundations of Game Engine Development”

https://foundationsofgameenginedev.com/

Creative Coding

”Generative Design: Visualize, Program, and Create with JavaScript in p5.js”

http://www.generative-gestaltung.de/2/

Articles by Tyler Hobbs specially the one on “Flow Fields” :

https://tylerxhobbs.com/essays/2020/flow-fields

Articles by Sighack specially the one on “Watercolor Techniques”:

https://sighack.com/post/generative-watercolor-in-processing

reply

pasttense01 8 hours ago | prev | next [–]

Lots of universities offer free online courses: https://www.classcentral.com/universities

reply

reducesuffering 3 hours ago | prev [–]

https://fullstackopen.com/en/ Full Stack Open, a free course by University of Helsinki, is very good on quickly teaching the core concepts for modern frontend and backend in the JS ecosystem. Such a good primer on React and the rest of the things, CI/CD, DB, backend API, auth, etc. involved in fullstack development