Settings

Theme

Ask HN: Self taught programmer, now wanting to learn more about CS theory

77 points by _lessthan0 6 years ago · 19 comments · 1 min read


Please show me the best free / online courses to allow me to gain a further understanding of CS theory and other closely related theory (Maths, cryptography, etc). If this has been asked before or something similar please link. Thanks.

rramadass 6 years ago

Two books (get used copies for cheap);

* Foundations of Computer Science - http://infolab.stanford.edu/~ullman/focs.html

* Specifying Software: A Hands-On Introduction - https://www.amazon.com/Specifying-Software-Hands-Introductio... The name is a misnomer. See the ToC. This is actually a practical introduction to CS theory.

  • davismwfl 6 years ago

    Pretty cool that the authors on the Foundations of Computer Science make the chapter PDF's available free since it is no longer in production. Just skimming through parts of it, definitely seems like a good learning resource.

taway555 6 years ago

https://teachyourselfcs.com/

f00_ 6 years ago

My current favorites:

https://runestone.academy/runestone/books/published/pythonds...

Grokking Algorithms

Classic Computer Science Problems in Python

DoreenMichele 6 years ago

This was recommended to me:

https://www.edx.org/course/introduction-to-computer-science-...

You can do it for free (or pay to get academic credit). I haven't yet managed to start the course.

xkef 6 years ago

maths:

- Linear algebra (fischer's book)

- analysis (koenigsberger's book)

- discrete maths (zorich's books)

- probability theory (all of stats - wassermann)

foundations:

- parallel programming (A minicourse on multithreaded programming Charles E. Leiserson, Harald Prokop.)

- algorithms and datastructures (Widmayer's book)

core:

- systems (Computer Systems: A Programmer's Perspective" (3rd Edition) by R. Bryant and D. O'Hallaro)

- network (Computer Networking: A Top-Down Approach, James F. Kurose and Keith W. Ross)

- numerical methods

- data modeling and dbs

- formal methods and functional programming (Miran Lipovača. Learn you a Haskell for great good!)

(eth zurich's bachelors)

All the books are one google search away.

closed 6 years ago

I'm really enjoying Types and Programming Languages right now. Imagine that rather than explaining typing using metaphors (a useful activity), people started at a much lower level and built up from there. That's this book!

https://www.cis.upenn.edu/~bcpierce/tapl/

streetcat1 6 years ago

TLA+. This will make you a better programmer.

http://lamport.azurewebsites.net/video/videos.html

  • elcaminocomplex 6 years ago

    TLA+ and similar tools are certainly interesting but hardly something I could recommend as an early step to take for someone wanting to learn more about CS.

    If you want to prove protocols correct, sure, but for someone wanting to move from knowing something about programming to something more, this is not one of the first (20) steps I would recommend.

    • noblethrasher 6 years ago

      I get what you mean, but it’s worth remembering that TLA+ is a language that is designed foremost for thinking about CS stuff, and at the end of the day, it’s “just” an improved notation for mathematics (particularly the kind of math that’s relevant for describing systems). In fact, Lamport didn’t even believe it was possible for TLA+ to practically run on a computer when he invented it (someone else did TLC).

      So, here are a few reasons that recommend learning TLA+:

      * If you already know how to program, you can learn it pretty quickly; almost certainly in less than a month. Just use TLC as a highly responsive yet infinitely patient teaching assistant.

      * Once you learn TLA+, you’ll not only find it easier to think about systems and algorithms, but you’ll also have more opportunities to practice since you just need pencil and paper. I find myself doodling in TLA+. I'll even go so far as to say that TLA+ has a Tetris Effect[1].

      * This is probably true of most esoteric technologies, but since TLA+ is pretty obscure, the community is still in that sweet spot that is the intersection of smart and friendly. Lamport answers questions in the mailing list.

      * Just my opinion, but TLA+ (or something very much like it) is part of the future of CS pedagogy.

      [1] https://en.wikipedia.org/wiki/Tetris_effect

new_guy 6 years ago

https://bigmachine.io/products/the-imposters-handbook/

lurker321 6 years ago

https://github.com/ossu/computer-science

psv1 6 years ago

How to Design Programs

https://www.htdp.org/

  • zerr 6 years ago

    It's more like an opposite - learn programming for CS people :)

shomshin 6 years ago

go to edx.org and take cs50 from Harvard University

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection