Ask HN: What is the ideal self-study computer science 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 ] threadThis 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.
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?
http://eranmedan.com/post/22359967135/codeschools
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.