News for hackers. Stuff that matters.

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 )
Re:Can we create a thread for some of the best materials on ... by pasttense01 on Friday May 26, 2023 @03:42PM (#36088677)
Lots of universities offer free online courses:

https://www.classcentral.com/universities

Re:Can we create a thread for some of the best materials on ... by ipnon on Friday May 26, 2023 @03:43PM (#36088682)
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.

https://teachyourselfcs.com/

Re:Can we create a thread for some of the best materials on ... by blintz on Friday May 26, 2023 @03:48PM (#36088731)
The Stanford cryptography class (http://crypto.stanford.edu/~dabo/cs255/) and associated book (https://crypto.stanford.edu/~dabo/cryptobook/BonehShoup_0_4....) 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 https://crypto.stanford.edu/cs355/23sp/; alternatively, there's a security class (https://cs155.stanford.edu/) 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.

Re:Can we create a thread for some of the best materials on ... by geekodour on Friday May 26, 2023 @04:12PM (#36088980)
another one application specific: https://www.youtube.com/playlist?list=PL1y1iaEtjSYiiSGVlL1cH...

taught by the creator of webtorrent afaik

Re:Can we create a thread for some of the best materials on ... by pushpankar on Friday May 26, 2023 @03:50PM (#36088763)
https://teachyourselfcs.com . 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.
Re:Can we create a thread for some of the best materials on ... by hirvi74 on Friday May 26, 2023 @08:18PM (#36090930)
> It can easily take 1-2 years of serious effort to get through the material.

Still faster than my CS degree.

Re:Can we create a thread for some of the best materials on ... by xwowsersx on Saturday May 27, 2023 @06:31PM (#36099062)
Is the recommendation to do the book AND the related video course for each subject or it's either or..? Or use the video course as needed if/when the book isn't enough?
Re:Can we create a thread for some of the best materials on ... by xwowsersx on Saturday May 27, 2023 @06:42PM (#36099142)
Doh, it says right there: "using either the suggested textbook or video lecture series, but ideally both" :)
Re:Can we create a thread for some of the best materials on ... by gdprrrr on Friday May 26, 2023 @03:50PM (#36088765)
Re:Can we create a thread for some of the best materials on ... by acadavid79 on Friday May 26, 2023 @03:51PM (#36088770)
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.
Re:Can we create a thread for some of the best materials on ... by runjake on Friday May 26, 2023 @03:53PM (#36088786)
CS50 hasn't been mentioned yet: https://pll.harvard.edu/course/cs50-introduction-computer-sc...

Great intro to CS.

Re:Can we create a thread for some of the best materials on ... by ayushm2003 on Friday May 26, 2023 @03:54PM (#36088799)
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://cs50.harvard.edu/x/2023/

Re:Can we create a thread for some of the best materials on ... by jdfellow on Friday May 26, 2023 @04:00PM (#36088862)
Cornell CS 3110 - OCaml, lectures on YouTube https://www.youtube.com/playlist?app=desktop&list=PLre5AT9Jn...
Re:Can we create a thread for some of the best materials on ... by dondraper36 on Friday May 26, 2023 @04:11PM (#36088971)
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

Re:Can we create a thread for some of the best materials on ... by jamestimmins on Friday May 26, 2023 @04:19PM (#36089053)
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.

Re:Can we create a thread for some of the best materials on ... by hirvi74 on Friday May 26, 2023 @08:20PM (#36090940)
I have been considering going through this book/program myself. I do have a CS degree, but I really need to brush up on somethings, and I will imagine I will learn a lot of new things too.

However, I noticed there are two versions of the book. Do you think the version matters?

Re:Can we create a thread for some of the best materials on ... by jamestimmins on Friday May 26, 2023 @11:02PM (#36091700)
The book (and course, IIRC) is split across two books. The first one focuses on the lower level systems, and I believe the seconds one deals with the bootloader, language implementation, screen animation, and building the game.

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.

Re:Can we create a thread for some of the best materials on ... by vmilner on Saturday May 27, 2023 @03:09AM (#36092678)
There are two editions of the book.
Re:Can we create a thread for some of the best materials on ... by sixhobbits on Friday May 26, 2023 @04:24PM (#36089106)
https://www.csunplugged.org/en/ is pretty nice for computational thinking
Re:Can we create a thread for some of the best materials on ... by TheAceOfHearts on Friday May 26, 2023 @04:44PM (#36089290)
Neural Networks: Zero to Hero, by Andrej Karpathy [0].

[0] https://www.youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThs...

Re:Can we create a thread for some of the best materials on ... by nyrikki on Friday May 26, 2023 @04:58PM (#36089432)
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.

Re:Can we create a thread for some of the best materials on ... by subtract-smiles on Friday May 26, 2023 @05:13PM (#36089582)
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/

Re:Can we create a thread for some of the best materials on ... by modriano on Friday May 26, 2023 @05:27PM (#36089712)
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.

[0] https://jvns.ca/blog/2023/04/17/a-list-of-programming-playgr...

Re:Can we create a thread for some of the best materials on ... by jmkr on Friday May 26, 2023 @05:50PM (#36089920)
I was looking at some stuff by Fogus and discovered:

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

Re:Can we create a thread for some of the best materials on ... by wwarner on Friday May 26, 2023 @06:14PM (#36090130)
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)

Re:Can we create a thread for some of the best materials on ... by ibobev on Friday May 26, 2023 @06:18PM (#36090171)
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
Re:Can we create a thread for some of the best materials on ... by sn9 on Friday May 26, 2023 @07:34PM (#36090674)
Lots of great suggestions here.

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.

Re:Can we create a thread for some of the best materials on ... by Al0neStar on Friday May 26, 2023 @07:49PM (#36090768)
# 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

Re:Can we create a thread for some of the best materials on ... by reducesuffering on Friday May 26, 2023 @08:51PM (#36091073)
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.

Re:Can we create a thread for some of the best materials on ... by idrios on Friday May 26, 2023 @09:13PM (#36091176)
Here's a pretty good website that gives direction on the path to competence/mastery for various domains of software development.

https://roadmap.sh/

Re:Can we create a thread for some of the best materials on ... by kirillbobyrev on Saturday May 27, 2023 @02:19AM (#36092488)
I collected a large number of awesome resources for myself:

https://github.com/kirillbobyrev/computer-science-resources

Re:Can we create a thread for some of the best materials on ... by mattnewport on Saturday May 27, 2023 @02:44AM (#36092585)
Some Coursera courses I have found to be good:

- 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.

Re:Can we create a thread for some of the best materials on ... by Al0neStar on Saturday May 27, 2023 @07:29AM (#36093833)
"The Algorithm Specialization" that Tim Roughgarden teaches on Coursera/EdX is based on his book series "Algorithms Illuminated" and the lectures, slides and projects are up on the website so you dont need to take it on coursera/edx(UX hell, constant promo emails, time constraint).

https://www.algorithmsilluminated.org/

Re:Can we create a thread for some of the best materials on ... by newsoul on Saturday May 27, 2023 @03:18AM (#36092724)
Surprised to see these introductory courses haven't been mentioned yet.

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/

Re:Can we create a thread for some of the best materials on ... by Al0neStar on Saturday May 27, 2023 @07:19AM (#36093779)
DCIC is my favourite and it's more than a beginner book but the author himself teaches all of it in an accelerated course.

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

Re:Can we create a thread for some of the best materials on ... by ggr2342 on Saturday May 27, 2023 @10:50AM (#36095271)
You completed DCIC with all the exercises? Did you do the course assignments associated with it?
Re:Can we create a thread for some of the best materials on ... by Al0neStar on Saturday May 27, 2023 @11:15AM (#36095454)
I did most of the exercices but not the CS19 assignments.
Re:Can we create a thread for some of the best materials on ... by bvoq on Saturday May 27, 2023 @04:04AM (#36092918)
The digital design and computer architecture course from Onur Mutlu is amazing: https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-EImKxYYY1...
Re:Can we create a thread for some of the best materials on ... by aviCC on Saturday May 27, 2023 @05:07AM (#36093174)
https://platform.intervee.io/

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.

Re:Can we create a thread for some of the best materials on ... by marginalia_nu on Saturday May 27, 2023 @05:54AM (#36093406)
If you ever decide to build a search engine, these are good resources.

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

Re:Can we create a thread for some of the best materials on ... by peanutcrisis on Saturday May 27, 2023 @06:12AM (#36093483)
A catalogue/search engine for university courses in computer science, math, and several other subjects that is available publicly:

https://collegecompendium.org/

Re:Can we create a thread for some of the best materials on ... by doz14112 on Saturday May 27, 2023 @02:26PM (#36096992)
Here are some online resources for various computer science and mathematics subjects:

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:

   - Website - https://mathweb.ucsd.edu/~sbuss/CourseWeb/Math155A_2022Fall/

   - PDF - https://mathweb.ucsd.edu/~sbuss/MathCG2/SecondEdDraft.pdf
2. Professor Yusuf Sahillioğlu:

   - Website - https://user.ceng.metu.edu.tr/~ys/ceng477-gfx/

   - YouTube Playlist - https://www.youtube.com/watch?v=wec2g9VDr3c&list=PLamOUbhy_opK4q-TLKHKbH_gotjXQCxcZ
3. Pikuma (Gustavo Pezzi): YouTube channel - https://www.youtube.com/@pikuma/videos

4. 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:

   - Calculus Revisited - Single Variable Calculus: MIT OpenCourseWare - https://ocw.mit.edu/courses/res-18-006-calculus-revisited-single-variable-calculus-fall-2010/

   - Calculus Revisited - Multivariable Calculus: MIT OpenCourseWare - https://ocw.mit.edu/courses/res-18-007-calculus-revisited-multivariable-calculus-fall-2011/

   - Calculus Revisited - Complex Variables, Differential Equations, and Linear Algebra: MIT OpenCourseWare - https://ocw.mit.edu/courses/res-18-008-calculus-revisited-complex-variables-differential-equations-and-linear-algebra-fall-2011/
3. Immersive Math: Website - http://immersivemath.com/ila/index.html

4. 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

Re:Can we create a thread for some of the best materials on ... by optician_owl on Saturday May 27, 2023 @10:53PM (#36100706)
Re:Can we create a thread for some of the best materials on ... by beeburrt on Sunday May 28, 2023 @10:16AM (#36104171)
Dive Into Systems free book:

https://diveintosystems.org/

Re:Can we create a thread for some of the best materials on ... by sarupbanskota on Monday May 29, 2023 @03:50AM (#36111727)
This repository contains hundreds of resources for implementing complex systems from scratch https://github.com/codecrafters-io/build-your-own-x
Re:Can we create a thread for some of the best materials on ... by sarupbanskota on Monday May 29, 2023 @03:52AM (#36111736)
On CodeCrafters.io (YC S22), you can learn to build your own Git, Docker, Redis etc — in any programming language.

It’s a great way to grok a variety of system design principles while getting to master a language of your choice