| So I actually went ahead and decided to build "curriculum" that I would be happy to study, instead of trying to take potshots at the idea. For reference, I'm a to-graduate-undergrad who's studied a pretty theory CS-heavy course curriculum. I work [in terms of research] in compilers, formal verification, and dabble with some NLP on the side. I personally find knowing pure math, theory CS, and algorithms/data structures (the ones that are derided often here on HN as "leetcode") to be an _insane_ force multiplier. If I had to recommend online courses, here are the ones I would recommend. Unfortunately, one does not get access to exercises and folks who are willing to verify your work. Math.stackexchange is unfortunately far more active than cstheory.stackexchange. I don't really know of an effective way to "bootstrap" this, except for implementing a lot of the things that show up in computer science. I'm collecting links of courses that have videos, lecture notes, and exercises, which I would be happy to learn from [or have learnt from in the past]. Theory courses that are must-know: - Linear algebra: https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra... - Basic Combinatorics: https://www.coursera.org/learn/combinatorics#syllabus - Introduction to Algorithms by Erik Demaine: http://courses.csail.mit.edu/6.006/fall11/ - OR, Introduction to Algorithms by Robert Sedgewick: https://www.extension.harvard.edu/open-learning-initiative/a... - Complexity theory/theory of computation: https://web.cs.ucdavis.edu/~rogaway/classes/120/spring14/ - Structure and interpretation of computer programs: https://ocw.mit.edu/courses/electrical-engineering-and-compu... Computer engineering courses that are must-know:
I do not immediate know of good online courses, so I list the topics below - Operating systems: - Networks - Computer graphics [Is a great applied course to see linear algebra in action] - Distributed systems - Compilers - """Machine learning""": Scarce quotes since there's a divide between old-school machine learning and newfangled
deep learning. Is useful to know ideas from both. Advanced good-to-haves: - Advanced Data structures: http://courses.csail.mit.edu/6.851/fall17/ - Graph theory: https://www.coursera.org/learn/graphs#syllabus - Abstract Algebra: https://www.extension.harvard.edu/open-learning-initiative/a... - Nand2Tetris, where one builds a computer "from scratch": https://www.nand2tetris.org/software - As much math, physics, and computer science as can be learnt! |
To me, combinatorics, probability and statistics are much more used day to day.