Ask HN: What is the ideal self-study computer science curriculum?

4 points by intellegacy ↗ HN
Hello HN, I'm looking for advice on two topics: 1) whether to go back to school to study Computer Science 2) If I don't go, what is the ideal self-study curriculum?

Some background: I graduated with a BA in Business 6 years ago (I know, I know) and a few months after graduation I became interested in programming because I had an idea for a startup. I self-studied enough to get a job as a java programmer, which I stayed at for 1 year.

The job was decent enough, but I felt really limited in my coding ability - like I didn't understand 95% of what was happening in the code base. I could code my own module, sure, but my ultimate goal was to develop websites (or learn enough to build a game or application) and I felt I wasn't making progress in that area.

I left after a year because I thought I just didn't have it to be a (great) programmer. Recently, I've discarded that belief. I now want to learn the fundamentals of Computer Science. My problem is that beyond the introductory courses, which I'm taking online, I'm not sure where/how to continue.

Is it possible to get a full CS education online? Or should I go back to undergrad to get another BS in Comp Sci? And would they even accept me if I applied? Could finish in two years, with transfer credits?

Also, if I self-study, what is the ideal curricula, and what are the dependencies (prerequisites) for each?

for example, I understand there is a lot of Math required, but I'm unsure when exactly to take each course. Should I study Calculus in conjunction with Intro to CS? And then when do I tackle statistics, probability? What Math do I need for Data Structure and Algorithms? etc.

Your advice is much appreciated! Thank you.

4 comments

[ 5.1 ms ] story [ 20.7 ms ] thread
You may see diminishing returns when going back to get a second degree, especially if you can display competence in CS topics in other ways; doing so during an interview, completed projects, open source projects, etc...

This is all in relation to the "self taught" route, though I don't necessarily advocate it. As for the math necessary for the degree, I'm someone who has very little Math experience and have managed to start my M.Sc. in CS. With that said -- don't be me. Its not that a lot of math is required, but it helps a lot. This is true not only in mathematical ability but also the mindset it requires. Solving math problems exercises your brian in critical thinking -- a skill very necessary for programming.

Calculus, Linear Algebra, Statistics are a few domains of mathematics that will bear some relevance.

As for actual CS topics that tend to be included in core curriculum, why not just take a peek at what some good schools are doing:

https://cs.uwaterloo.ca/current/courses/course_descriptions/

I'll let you find the rest of the links.

Thanks for the link. That's weird, I was just looking at the University of Waterloo CS program.

I've considered the M.Sc in CS but I honestly don't have the background for it. I need to retake Calc. I don't have any algorithms or data structures knowledge. I have taken literally no CS courses as well. Isn't a Masters in CS more advanced than the Undergrad Curriculum? Or am I able to take undergrad courses in the Masters program and get a M.Sc?

As a developer who majored in economics, I'd suggest just going to http://www.class-central.com and taking any and every class that you find interesting and think would be useful. That should at least get you beyond the "introductory" courses--hopefully more higher-level courses will be offered in the near future, too. Try taking difficult classes, regardless of whether you meet the prerequisites--if the math turns out to be too difficult, just work on the relevant math skills while you take the class.

I think the software world is uniquely situated to bypass a lot of the outmoded educational models that we've built up over the years, where education is 10% about learning and 90% about slapping down a degree that "proves" you're intelligent and capable. This makes a lot of the trappings of a traditional education unnecessary--if you take a class but don't have all the prerequisites, you don't need to worry that your grades will suffer, because your grades (if you even have them!) don't matter. If you're interested and motivated, you'll learn a ton, and that's what will matter in the end.