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.
(
46 comments
| 10 points
| on HN
)
https://www.classcentral.com/universities
https://teachyourselfcs.com/
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.
taught by the creator of webtorrent afaik
Still faster than my CS degree.
Great intro to CS.
https://cs50.harvard.edu/x/2023/
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
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.
However, I noticed there are two versions of the book. Do you think the version matters?
It doesn't look like there are multiple versions of the books, unless I'm missing something. I did the two versions of the course without the book, and really enjoyed both. Although the writers of https://teachyourselfcs.com/ only recommend the first one, so it depends what you want to get out of it and whether the approach resonates.
[0] https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThs...
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.
https://beej.us/guide/
[0] https://jvns.ca/blog/2023/04/17/a-list-of-programming-playgr...
https://github.com/fogus/papers-i-love
Really good resource for a bunch of important papers.
There's also some good information for compilers on github
https://github.com/aalhour/awesome-compilers
http://www.cs.columbia.edu/~mcollins/
(search for notes, where he’s listed links to pdfs he uses in classes)
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.
"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
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.
https://roadmap.sh/
https://github.com/kirillbobyrev/computer-science-resources
- Stanford algorithms specialization: https://coursera.org/specializations/algorithms
- University of Melbourne Discrete Optimization: https://coursera.org/learn/discrete-optimization
- Basic Modeling for Discrete Optimization: https://coursera.org/learn/basic-modeling
- Advanced Modeling for Discrete Optimization: https://coursera.org/learn/advanced-modeling
Crafting Interpreters book mentioned elsewhere also very good.
https://www.algorithmsilluminated.org/
These courses [0] [1] are on EdX and are taught by UBC Professor Gregor Kiczales. The explanations are so lucid it made recursion click for me. You can audit these courses without paying a single dime. They are based on the book How to Design Programs [2] which has much more stuff than the courses.This book is used in UBC, UWaterloo, NorthEastern and many other places.
Along the same lines there is another book for beginners called A Data-Centric Introduction to Computing [3]. It is used in Brown for their introductory courses.
[0] https://www.edx.org/course/how-to-code-simple-data
[1] https://www.edx.org/course/how-to-code-complex-data
[2] https://htdp.org/
[3] https://dcic-world.org/
https://cs.brown.edu/courses/cs019/
For undersranding recursion there are two noteworthy books:
* A lot of people say this book made recursion click for them. *
"The Little Schemer"
https://mitpress.mit.edu/9780262560993/the-little-schemer/
* As the title suggests this ones specifically about recursion. (i like this one better because its in python/js) *
"The Recursive Book of Recursion"
https://nostarch.com/recursive-book-recursion
Provides practical challenges with guidance for graduates in various subjects including Linux, Network, Security, and more..
Computer Science can sometimes be theoretical and learning from practical example is a must.
Search Engines Information Retrieval in Practice
Croft, Metzler & Strohman (2015)
https://ciir.cs.umass.edu/irbook/
--
Introduction to Information Retrieval
Manning, Raghavan & Schütze (2008)
https://nlp.stanford.edu/IR-book/html/htmledition/irbook.htm...
--
The Anatomy of a Large-Scale Hypertextual Web Search Engine
Page & Brin (2000)
http://infolab.stanford.edu/~backrub/google.html
--
Information Retreival
Rijsbergen (1979)
https://www.dcs.gla.ac.uk/Keith/Preface.html
https://collegecompendium.org/
Theoretical Computer Science (TCS):
1. Easy Theory (Professor): YouTube channel - https://www.youtube.com/@EasyTheory/videos
2. Abdul Bari: YouTube playlist - https://www.youtube.com/watch?v=0IAPZzGSbME&list=PLDN4rrl48X...
Computer Systems:
1. Professor Jacob Sorber: YouTube channel - https://www.youtube.com/@JacobSorber/videos
2. Martin Kleppmann: YouTube Playlist: https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_H...
3. Ben Eater's Intro to Practical Networking: https://www.youtube.com/watch?v=XaGXPObx2Gs&list=PLowKtXNTBy...
Computer Graphics (CG):
1. Professor Samuel R. Buss:
2. Professor Yusuf Sahillioğlu: 3. Pikuma (Gustavo Pezzi): YouTube channel - https://www.youtube.com/@pikuma/videos4. Scratchapixel 3.0: Website - https://www.scratchapixel.com/
5. Computer Graphics from Scratch (Gabriel Gambetta): Website - https://gabrielgambetta.com/computer-graphics-from-scratch/i...
6. Free Ray Tracing Books (Shirley et al.): Website - https://www.realtimerendering.com/raytracing/
7. PBR: Website - https://pbr-book.org/
8. Professor Justin Solomon: YouTube channel - https://www.youtube.com/@justinmsolomon/videos
9. 3D Math Primer: Website - https://gamemath.com/book/intro.html
Digital Signal Processing (DSP):
1. Digital Audio Fundamentals: YouTube playlist - https://www.youtube.com/playlist?list=PLbqhA-NKGP6B6V_AiS-jb...
Computer Vision (CV):
1. First Principles of Computer Vision (Professor Shree Nayar): YouTube channel - https://www.youtube.com/@firstprinciplesofcomputerv3258/vide...
Mathematics:
1. The Bright Side of Mathematics: YouTube channel - https://www.youtube.com/@brightsideofmaths/videos
2. Professor Herbert Gross:
3. Immersive Math: Website - http://immersivemath.com/ila/index.html4. Interactive Linear Algebra: Website - https://textbooks.math.gatech.edu/ila/
5. Professor Sergei Treil: PDF Textbook - https://www.math.brown.edu/streil/papers/LADW/LADW.html
https://diveintosystems.org/
It’s a great way to grok a variety of system design principles while getting to master a language of your choice