Hacker News new | past | comments | ask | show | jobs | submit login
A Self-Learning, Modern Computer Science Curriculum (functionalcs.github.io)
394 points by hacknrk on Jan 29, 2019 | hide | past | favorite | 30 comments



For those like me, and like many in the UK, whose maths education ended at 16, I can definitely recommend Khan Academy for learning or relearning pre-calc stuff. The videos are short, the exercises are well thought out and numerous, and importantly the UI is great.

For example: https://www.khanacademy.org/math/algebra/


It's good for calculus too - I remember watching his videos on calculus before I went to uni 10 years ago so they may have improved even more now.


I remember looking at the site a few (maybe five?) years ago and everything was a bit of a mess. They've really pulled it together since then. It's really great.


Phew, that's an overwhelming list. A less exhaustive alternative that I recommend is https://teachyourselfcs.com. It's tailored to those who never studied CS in undergrad, like myself.


I wouldn't say this list is exhaustive, more like a good start. It's missing some of the breadth that you are likely to find in a good CS program. I'm not seeing much in the way of OS, networking, undergraduate machine learning, robotics, software engineering, or mobile application development. Adding the above topics would make this list more comprehensive.


Agreed! Also missing HCI, Systems Analysis... But a good start, nonetheless.


I don't really see Abstract Algebra as a super relevant topic for modern computer science. I agree on Linear Algebra and basic abstract algebra (like group theory, cyclic groups etc, stuff needed for understanding topics like RSA), but stuff like Galois theory and other advanced topics are just not relevant. They still teach you a different way to think about problems (which is good) but rather belong into a math curriculum than a CS one.


I've gotten a lot of use out of group theory and lattice theory, and particularly semigroups and semilattices. What most programmers don't realize is that design patterns (a la Gang of Four), when they aren't working around a language's quirks, are implementing some algebra.


Could you give us some pointers on where to learn more about this connection between design patterns and abstract algebra?


You know, I don't have any. It's something that I've thought about writing about for years now, but haven't gotten around to doing, and I'm unaware of anything else written about it.


Galois (finite) fields are very much relevant in error correction codes and cryptography. Any time you want to manipulate bytes (or words) as numbers which you can add/subtract and multiply/divide you end up learning about finite fields. In fact, doing CRC or even XOR sums you are already making the first step towards the topic.

A recent problem I needed a solution for: given n blocks of data of equal length generate all possible XOR sums of the blocks in-place (no additional memory). The answer is an irreducible polynomial of degree n with a primitive root over GF(2).


Most people aren't building crypto, though (at least they really shouldn't be).

And maybe the answer found the problem you're describing, not the other way around. You were taught to look for and solve problems a certain way, so problems appear with those characteristics.


OSSU has a good curriculum based on free MOOCs: https://github.com/ossu/computer-science

Required courses in the curriculum require MOOCs, but they include a lot of the same book resources as further reading topics. The community is quite active and has been happy to answer questions in chat.


"Intro to quantum computing"

Really?

otherwise This is heavy on maths for data science and machine learning..

It doesn't have any of the "software engineering" courses though.


For a couple years, I went the self study route, using online resources coupled with text books. Eventually though, I ended up taking a few distant learning courses and found the accountability (i.e. deadlines, homework assignments, exams) helpful, keeping motivated. And now, I'm taking the online CS master's program from Georgia Tech, the OMSCS program. I'm actually only in my first semester and loving it!

Still, I appreciate and love all the online material (that's free!) but I tend to operate better when I can 1) Collaborate with other students (and professors) 2) Have deadlines


You can get pretty far online only, but the networking opportunities even in a non-top school are worth every penny.

It's interesting finding a new job only to have existing classmates be excited for you to be there. Rumors begin spreading that you get shit done even quicker.


Can you elaborate on your background a bit, please? How did you satisfy the prerequisites of the program without a formal CS degree? I thought about applying myself but other than MOOCs and professional experience, I don't have much to show on a transcript.


I've had this site bookmarked for at least a year and have really enjoyed watching the curriculum grow. Now only if I could start on it...


> if I could start on it

A suggestion for getting yourself to spend time on large projects: http://tynan.com/ornothing "Do it or nothing"


Same! I’m actually going through Spivak’s Calculus, since that used to be on there.


I'm working on a course much less bulky than this one. Basically mixing the first two semesters of CS at any university with your standard bootcamp curriculum. I have a theory that teaching each concept in multiple languages side by side will be far more effective than other methods.


I'm working on something similar.


"Use LibGen if you can't buy these books." This is literally the first guy that recommends something like that in such a literal way. +1.


Not the first one, but it's still not a frequent occurrence.

(So let's use this as a reminder that the same applies for SciHub and scientific papers, with extra suggestion to use SciHub anyway, as researchers were most likely paid already from tax money anyway.)


Outstanding resource.

jwasham/coding-interview-university also links to a number of also helpful OER resources: https://github.com/jwasham/coding-interview-university


For those who didn’t learn CS formally and taking this guide seriously: it seems too heavy on math and completely missing in many important areas IMO. Like - no sections for OS or networking?


From the headline I imagined a curriculum that updates itself based on developments in the field.


Ok, I'll admit for a moment that it might be GaN networks being used to generate CS courses :-)

This is a good list, I would add something in category theory to it and macro economics (for the systems approach to highly variant systems).


I like the fact that this is out there for people to do. As someone doing a degree I dont have the time for it now, but will definitely check in on it if I have some time off!


I need something like this for math. i moved to engineering for my bachelors but would love to do a self-learning math curriculum.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: