Learn Computer Science with a free curated curriculum. There is no easy way to learn this stuff, there are quick ways, yes. Not easy ways though. The quickest way, is to pick up a free book and teach yourself. That's 1 big book, or 3 specialized smaller ones. To prove my point, before you consider going on Coursera, search for a popular programming language here and reviews for the courses you're interested in. Reviews imply Coursera > edX, but online curriculum is limited, as even the best universities in the world have educational issues. MIT content is also outdated. Videos are okay, but attention drifts, while practice lingers. Don't outsource your education or base it on old content. Get a proper book written in (preferably) your style and no fluff. Or pay for a good degree program.
The curriculum is designed as follows:
- Intro CS: for students to try out CS and see if it's right for them
- Core CS: classes that all majors would be required to take
- Advanced CS: optional according to the student's interests
- Final Project: validate knowledge, and be evaluated worldwide
- Prerequisites
- Intro CS
- Core CS
- Core programming
- Core math
- Core systems important
- Advanced CS
- Final project
- Core CS assumes the student has already taken high school math, including algebra, geometry, and pre-calculus.
- Advanced CS assumes the student has already taken the entirety of Core CS and is knowledgeable enough now to decide which electives to take.
- Note that Advanced systems assumes the student has taken a basic physics course (e.g. AP Physics in high school).
If you've never written a for-loop, or a string in programming, start here.
Courses | Duration | Effort |
---|---|---|
Python for Everybody | 10 weeks | 10 hours/week |
This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through study elsewhere, should take this course for a flavor of the material to come. If you finish the course curious, Computer Science is likely for you!
Topics covered:
computation
imperative programming
basic data structures and algorithms
etc
Courses | Duration | Effort |
---|---|---|
Python Programming Primer or The Coder's Apprentice | 10 weeks | 10 hours/week |
All coursework under Core CS is required, unless otherwise indicated.
Topics covered:
functional programming
unit testing
object-oriented design
static & dynamic types
etc
Books |
---|
Learn a bit of Python, focus on learning C as it's concepts can be applied to other languages and most OS are based on it, including Windows and Linux. When you look into the inter-workings of a program, you will see either C or assembly. Newer languages are basically fancy C with new implementations. However it's good to know a bunch so you aren't stuck to one language's features or limited codebase. |
'C/C++' aren't the same |
Computer Science I |
Algorithms and Course *Optional |
Data Structures and Course |
Intro to Compilers and Language Design or LittleOSBook |
Discrete math (Math for CS) is a prerequisite and closely related to the study of algorithms and data structures. Calculus both prepares students for discrete math and helps students develop mathematical maturity.
Topics covered:
discrete mathematics
mathematical proofs
basic statistics
O-notation
discrete probability
more math
Courses | Duration | Effort | Notes |
---|---|---|---|
Calculus I-II | 13 weeks | 6-10 hours/week | high school math |
Calculus III | 6 weeks | 5-10 hours/week | |
Discrete Math | 10 weeks | 5 hours/week | Part 2 |
Practice over theory.
Topics covered:
terminals and shell scripting
cli environments
version control
Courses | Duration | Effort |
---|---|---|
Optional: The Missing Semester of Your CS Education | 2 weeks | 12 hours/week |
Topics covered:
memory
assembly
virtual machines
compilers
operating systems
network protocols
Courses | Duration | Effort | Additional Text |
---|---|---|---|
Computer Networking: a Top-Down Approach | 8 weeks | 4–12 hours/week | Computer Networks |
Topics covered:
sorting and searching
shortest paths
data structures
dynamic programming
Topics covered
Secure Design
Defensive Programming
Threats and Attacks
Network Security
Cryptography
and more
Courses | Duration | Effort | Prerequisites |
---|---|---|---|
Cybersecurity Fundamentals or this | 8 weeks | 10-12 hours/week | |
The Art of Memory Forensics | 6 weeks | 7-10 hours/week |
Topics covered:
refactoring
data modeling
neural networks
un/supervised learning
OpenGL
ray tracing
Courses | Duration | Effort | Prerequisites |
---|---|---|---|
Databases: Introduction | 2 weeks | 10 hours/week | SQL-101 & Foundations |
Machine Learning | 11 weeks | 9 hours/week | |
Computer Graphics | 6 weeks | 12 hours/week | OpenGL #Optional OGLdev |
After completing every required course in Core CS, students should choose a subset of courses from Advanced CS based on interest. Not every course from a subcategory needs to be taken. Students should take every course that is relevant to the field they intend to go into.
Topics covered:
debugging theory and practice
goal-oriented programming
parallel computing
Courses | Duration | Effort |
---|---|---|
Parallel Programming | 4 weeks | 6-8 hours/week |
OS Dev | 8 weeks | 6-8 hours/week |
Topics covered:
digital signaling
combinational logic
sequential logic
finite state machines
virtualization
parallel processing
virtual memory
and more
Courses | Duration | Effort |
---|---|---|
Computer Architecture | 10 weeks | 6 hours/week |
Courses | Duration | Effort | Prerequisites |
---|---|---|---|
Digital Forensics Concepts | 3 weeks | 2-3 hours/week | Core Security |
Courses | Duration | Effort | Prerequisites |
---|---|---|---|
Essence of Linear Algebra | - | - | high school math |
Introduction to Applied Linear Algebra | 14 weeks | 12 hours/week | corequisite: Essence of Linear Algebra |
Introduction to Number Theory | 14 weeks | 12 hours/week | |
Introduction to Formal Logic | 10 weeks | 4-8 hours/week | Set Theory |
Probability | 15 weeks | 5-10 hours/week |
This curriculum is project-focused.
After you've gotten through all of Core CS and Advanced CS relevant to you, work on a real project and showcase your skills to employers. You can create any project, or find an existing one via websites like CodeTriage or First Timers Only.
Here are example project-oriented programs.
Courses | Duration | Effort | Prerequisites |
---|---|---|---|
Fullstack Open | 12 weeks | 15 hours/week | programming |
Modern Robotics (Specialization) | 26 weeks | 3 hours/week | physics, linear algebra, calculus, linear ordinary differential equations |
Cloud Computing (Specialization) | 30 weeks | 2-6 hours/week | C++ programming |
Data Science (Specialization) | 43 weeks | 1-6 hours/week | none |
Game Design and Development with Unity 2020 (Specialization) | 6 months | 5 hours/week | programming, interactive design |