Skip to content

Latest commit

 

History

History
89 lines (60 loc) · 10.4 KB

PATHS.md

File metadata and controls

89 lines (60 loc) · 10.4 KB

Fadicse: Free Associate Degree in Computer Science equivalent

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.

Math

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)

Computer Science

Which track to take?

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.

WPI

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

Berkeley

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

Princeton

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)

Brown

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

General Education

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:

What Next

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.