You will be going through two paths simultaneously: Math and Computer Science. You have one option for math, and four for computer science. You'll want to get started on the math right away and do it alongside the computer science. You might want to also do some general education.
Which computer science track you go with will depend in part on where you're starting in math so we'll start with Math. Figure out which math course you're starting with (instructions below) before choosing a computer science track.
College Algebra is equivalent to Algebra 2, Introduction to Calculus is roughly equivalent to AP Calculus AB, and Calculus: Single Variable is roughly equivalent to AP Calculus BC. If you had a regular high school education through PreCalulus, start with Introduction to Calculus, which includes a small refresher. If you haven't learned Algebra 2 or PreCalculus yet, start at the appropriate course and it'll begin with a diagnostic that will tell you if you're at the right level or not. If you've already learned Calculus, start with Calculus: Single Variable, you'll learn it on a much deeper level (if you learned series already, this is optional). With all these courses (here and in the rest of the curriculum), you may need to look elsewhere for additional help learning the material. Khan Academy is pretty great for everything through Introduction to Calculus, possibly more.
Course | Notes | Alternative |
---|---|---|
ASU MAT 117 - College Algebra | ||
ASU MAT 170 - PreCalculus | ||
Sydney MATH 1111 - Introduction to Calculus | Has overlap with prior course. If you've taken that, feel free to skip to the quizzes for the first one or two parts going back only for what you missed. | |
UPenn Math 104E - Calculus: Single Variable (Part 1 - Functions, Part 2 - Differentiation, Part 3 - Integration, Part 4 - Applications, and Part 5 - Discretization | ||
MIT 6.042J - Math for Computer Science - Fall 2010 | Note that there's also a 2015 version that's worth looking at as a supplement. | Berkeley CS 70 - Discrete Mathematics and Probability Theory - Fall 2014 (Lectures) |
By now you've already figured out which math course you're starting with. If not, go back and do that.
If you're starting with College Algebra, do the WPI track.
If you want a course that takes pride in not needing any Computer Science knowledge in advance (not that you do for others, but especially not these), do the WPI track or the Berkeley track starting with CS 10. Berkeley if you're ready to start with at least PreCalculus and are fine with the difficulty ramping up a lot with the second course, WPI otherwise.
If you want to start off with a sort of overview of Computer Science to see if it's a field you're interested in, start with Princeton. Or if you already want to do a course like MIT's 6.0001/6.00.1x or Harvard's CS50, do that followed by the Berkeley track starting with CS 61A.
If you've already done a bunch of programming (more than just an intro course or two), you can do the Brown track if you want to get to the more advanced courses quicker. If you're beyond just a bunch of programming and have been working in industry for a while already, drop this guide (aside from the Math section) and do TeachYourselfCS instead.
If this hasn't been enough to decide, take a gander at the first courses of the ones you're deliberating between and choose the one that jives with you more. Whatever you do, don't bounce between tracks because you're just going to end up wasting time.
Course Homepage | Notes |
---|---|
CS 1101 - Introduction to Program Design - C Term 2018 | The course uses selections from the first and second editions of How to Design Programs. The links to second edition are broken so you'll have to manually navigate to the appropriate section of How to Design Programs. |
CS 2102 - Object-Oriented Design Concepts - D Term 2018 | Lectures |
Princeton COS 226 - Algorithms Part I and Part II | |
Berkeley CS 61C - Machine Structures - Fall 2014 | Internet Archive |
Course Homepage | Lectures | Notes |
---|---|---|
CS 10 - The Beauty and Joy of Computing - Fall 2012 | Internet Achive | If you've never touched code before. Any other course will do fine as well. If you've played around with code in the past (even Scratch), you can just go right to 61A. |
CS 61A - Structure and Interpretation of Computer Programs - Fall 2013 | corequisite: Introduction to Calculus If you're using Windows, you'll want to install Git for Windows since it comes with Git Bash, an equivalent to Terminal on Linux. |
|
CS 61B - Data Structures and Advanced Programming - Spring 2014 | Internet Archive | Labs and Homework |
CS 61C - Machine Structures - Fall 2014 | Internet Archive |
Course Number | Part I | Part II |
---|---|---|
COS 126 | Computer Science: Programming with a Purpose | Computer Science: Algorithms, Theory, and Machines |
COS 226 | Algorithms, Part I | Algorithms, Part II |
Berkeley CS 61C - Machine Structures - Fall 2014 (Lectures) |
Course Homepage | Lectures | Calendar | Notes |
---|---|---|---|
Significant prior programming experience, preferably in Java | |||
Material from How to Design Programs | |||
CS 0190 | Panopto | Assignments | https://learnaifromscratch.github.io/software.html |
Carnegie Mellon 15-213 - Intro to Computer Systems - Fall 2015 |
If you were in college, you would have to do one or two semesters of English, two or three semesters of science (probably Physics and/or Chemistry) and a smattering of other topics of mostly your own choosing. I have not been able to find a high quality online Physics course (although Fundamentals of Physics is a good textbook if that's your thing. Make sure to actually do exercises though) and I have not looked for online Chemistry courses, so I am not going to make any recommendations for those subjects.
I can't vouch for the quality of these courses either, but here are the only English courses I've been able to find:
- UC Irvine - Academic English: Writing
- Duke English Composition
- ASU English Composition (note that these courses are only available on an academic schedule, meaning start of fall and spring semesters)
- ENG 101 - English Composition
- ENG 102 - English Composition - Research and Writing
If you were in college, this is around the time that you would get an internship. I'm given to understand that those are signficantly harder to get when you're not in college, but if it makes sense for you, apply to a bunch of internships, take an algorithms course like Stanford's Algorithms or Berkeley's CS 170 - Efficient Algorithms and Intractable Problems - Fall 2018, read Cracking the Coding Interview, practice interviewing with a friend, and try and get something going.
I don't know if the above paragraph made any sense as advice to give, but regardless, if you're looking to continue your CS education, OSSU and TeachYourselfCS are both good options. Here's what you've already completed the equivalent of and can thus skip:
In OSSU, you have completed Intro CS, Core Programming aside from Programming Languages (although if you did the Brown route, make Programming Languages an Advanced Programming course and switch it out for Brown's CSCI 1730 - Fall 2012), Core Math, and Core Systems up until Networking.
In TeachYourselfCS, you have completed Programming, Computer Architecture, and part of Math for CS.