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.
Two books (get used copies for cheap);<p>* Foundations of Computer Science - <a href="http://infolab.stanford.edu/~ullman/focs.html" rel="nofollow">http://infolab.stanford.edu/~ullman/focs.html</a><p>* Specifying Software: A Hands-On Introduction - <a href="https://www.amazon.com/Specifying-Software-Hands-Introduction-Tennent/dp/0521808146/ref=sr_1_2?keywords=specifying+software&qid=1573621751&s=books&sr=1-2" rel="nofollow">https://www.amazon.com/Specifying-Software-Hands-Introductio...</a> The name is a misnomer. See the ToC. This is actually a practical introduction to CS theory.
My current favorites:<p><a href="https://runestone.academy/runestone/books/published/pythonds/index.html" rel="nofollow">https://runestone.academy/runestone/books/published/pythonds...</a><p>Grokking Algorithms<p>Classic Computer Science Problems in Python
This was recommended to me:<p><a href="https://www.edx.org/course/introduction-to-computer-science-and-programming-using-python-0" rel="nofollow">https://www.edx.org/course/introduction-to-computer-science-...</a><p>You can do it for free (or pay to get academic credit). I haven't yet managed to start the course.
maths:<p>- Linear algebra (fischer's book)<p>- analysis (koenigsberger's book)<p>- discrete maths (zorich's books)<p>- probability theory (all of stats - wassermann)<p>foundations:<p>- parallel programming (A minicourse on multithreaded
programming Charles E. Leiserson, Harald Prokop.)<p>- algorithms and datastructures (Widmayer's book)<p>core:<p>- systems (Computer Systems: A Programmer's Perspective" (3rd Edition) by R. Bryant and D. O'Hallaro)<p>- network (Computer Networking: A Top-Down Approach, James F. Kurose and Keith W. Ross)<p>- numerical methods<p>- data modeling and dbs<p>- formal methods and functional programming (Miran Lipovača. Learn you a Haskell for great good!)<p>(eth zurich's bachelors)<p>All the books are one google search away.
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!<p><a href="https://www.cis.upenn.edu/~bcpierce/tapl/" rel="nofollow">https://www.cis.upenn.edu/~bcpierce/tapl/</a>
TLA+. This will make you a better programmer.<p><a href="http://lamport.azurewebsites.net/video/videos.html" rel="nofollow">http://lamport.azurewebsites.net/video/videos.html</a>