This is a path for those of you who want to complete the Data Science undergraduate curriculum on your own time, for free, with courses from the best universities in the World.
In our curriculum, we give preference to MOOC (Massive Open Online Course) style courses because these courses were created with our style of learning in mind.
Here are two interesting links that can make all the difference in your journey.
The first one is a motivational video that shows a guy that went through the "MIT Challenge", which consists of learning the entire 4-year MIT curriculum for Computer Science in 1 year.
The second link is a MOOC that will teach you learning techniques used by experts in art, music, literature, math, science, sports, and many other disciplines. These are fundamental abilities to succeed in our journey.
Are you ready to get started?
The Data Science curriculum assumes the student has taken high school math and statistics.
Curriculum Guidelines for Undergraduate Programs in Data Science
Python, SQL and R are heavily used in Data Science community and our courses teach you both. Remember, the important thing for each course is to internalize the core concepts and to be able to use them with whatever tool (programming language) that you wish.
It is possible to finish within about 2 years if you plan carefully and devote roughly 20 hours/week to your studies. Learners can use this spreadsheet to estimate their end date. Make a copy and input your start date and expected hours per week in the Timeline sheet. As you work through courses you can enter your actual course completion dates in the Curriculum Data sheet and get updated completion estimates.
Some courses can be taken in parallel, while others must be taken sequentially. All of the courses within a topic should be taken in the order listed in the curriculum. The graph below demonstrates how topics should be ordered.
| Courses | Duration | Effort |
|---|---|---|
| Introduction to Data Science | 8 weeks | 10-12 hours/week |
| Data Science - CS109 from Harvard | 12 weeks | 5-6 hours/week |
| The Analytics Edge | 12 weeks | 10-15 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 wanting more, Computer Science is likely for you!
Topics covered:
computation
imperative programming
basic data structures and algorithms
and more
Students who already know basic programming in any language can skip this first course
Introduction to Computational Thinking and Data Science
| Courses | Duration | Effort | Prerequisites | Discussion |
|---|---|---|---|---|
| Introduction to Computer Science and Programming using Python (alternative) | 9 weeks | 15 hours/week | high school algebra | chat |
This course has been developed by MIT and is available from three different places. We recommend you to do it from the archived version on Edx.
6.0001 Introduction to Computer Science and Programming in Python is intended for students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems and to help students, regardless of their major, feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class uses the Python 3.5 programming language.
Most people's views of mathematics are destroyed in school by focusing on memorization and regurgitation. But mathematicians see math as an elegant way to explain the world around us. This class covers how to think like a mathematician and solve problems.
Topics covered:
Mathematical mindset
Number Theory
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Introduction to Mathematical Thinking | 10 weeks | 4 hours/week | none |
| LaTeX | 1 week | 30 minutes/week | none |
The Algorithms courses are taught in Java. If students need to learn Java, they should take this course first
Algorithms I: ArrayLists, LinkedLists, Stacks and Queues(Edx)
Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps(Edx)
Algorithms III: AVL and 2-4 Trees, Divide and Conquer Algorithms
Algorithms IV: Pattern Matching, Dijkstra’s, MST, and Dynamic Programming Algorithms
| Code | Course | Duration | Effort |
|---|---|---|---|
| COMP 3311a | Algorithmic Thinking 1 | 4 Weeks | 6 Hours/Week |
| COMP 3311b | Algorithmic Thinking 2 | 4 Weeks | 6 Hours/Week |
| COMP 2311 | CS 2 - Object Oriented Java | 6 Weeks | 4-6 Hours/Week |
| MATH 3312 | Bayesian Statistics (with R) | 5 Weeks | 6 Hours/Week |
Database Management Essentials
Data Warehouse Concepts, Design, and Data Integration
Relational Database Support for Data Warehouses
Business Intelligence Concepts, Tools, and Applications
Design and Build a Data Warehouse for Business Intelligence Implementation
MongoDB for Developers Learning Path
| Courses | Duration | Effort |
|---|---|---|
| Stanford's Database course | - weeks | 8-12 hours/week |
| Code | Course | Duration | Effort |
|---|---|---|---|
| COMP 2312 | Databases | 10 Weeks | 8-12 Hours/Week |
| MATH 2314 | Inferential Statistics (with R) | 5 Weeks | 6 Hours/Week |
| COMP 4311 | Data Science | 13 Week | 10 Hours/Week |
Topics covered:
divide and conquer
sorting and searching
randomized algorithms
graph search
shortest paths
data structures
greedy algorithms
minimum spanning trees
dynamic programming
NP-completeness
and more
| Courses | Duration | Effort | Prerequisites | Discussion |
|---|---|---|---|---|
| Graph Search, Shortest Paths, and Data Structures | 4 weeks | 4-8 hours/week | Divide and Conquer, Sorting and Searching, and Randomized Algorithms | chat |
Topics covered:
Agile methodology
REST
software specifications
refactoring
relational databases
transaction processing
data modeling
neural networks
supervised learning
unsupervised learning
OpenGL
ray tracing
and more
| Courses | Duration | Effort | Prerequisites | Discussion |
|---|---|---|---|---|
| Databases: Modeling and Theory | 2 weeks | 10 hours/week | core programming | chat |
| Databases: Relational Databases and SQL | 2 weeks | 10 hours/week | core programming | chat |
| Databases: Semistructured Data | 2 weeks | 10 hours/week | core programming | chat |
| Machine Learning | 11 weeks | 9 hours/week | Basic coding | chat |
| Code | Course | Duration | Effort |
|---|---|---|---|
| COMP 5311 | Introduction to Machine Learning | 10 Weeks | 6 Hours/Week |
Calculus 1C: Coordinate Systems & Infinite Series
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Multivariable Calculus | 12 weeks | 6 hours/week | Calculus 1C |
Discrete mathematics is the mathematics of objects and ideas. It includes topics such as combinatorics, graph theory, and logic. The topics discussed here also form the basis of the field of computer science. For mathematics majors, a discrete math course is usually also a first introduction to formal proofs.
Topics covered:
Counting
Grouping
Classifying
Logic and Reasoning
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Mathematics for Computer Science | 14 weeks | 6-8 hours/week | Calculus 1C |
Differential equations describe the science of change: the route by which natural and man-made systems move from one state to another. Epidemics, population growth, and weather patterns are all modeled using differential equations. It provides us a mathematical language to describe physical, chemical, and biological systems and their evolution.
Topics covered:
First-order ODEs
Second-order ODEs
Higher-order ODEs
Laplace Transforms
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Differential Equations | 14 weeks | 12 hours/week | Calculus 1C |
Topics covered:
Vector and matrix calculations
Linear transformations
Vector spaces
Eigenvalues and Eigenvectors
| Courses | Duration | Effort |
|---|---|---|
| Linear Algebra - Foundations to Frontiers | 15 weeks | 8 hours/week |
| Applications of Linear Algebra Part 1 | 5 weeks | 4 hours/week |
| Applications of Linear Algebra Part 2 | 4 weeks | 5 hours/week |
| Code | Course | Duration | Effort |
|---|---|---|---|
| MATH 1311 | College Algebra and Problem Solving | 4 Weeks | 6 Hours/Week |
| Code | Course | Duration | Effort |
|---|---|---|---|
| 18.06 | Linear Algebra and Essence of Linear Algebra | 14 weeks | 12 hours/week |
| Courses | Duration | Effort |
|---|---|---|
| Introduction to Computer Science and Programming Using Python | 9 weeks | 15 hours/week |
| Introduction to Computational Thinking and Data Science | 10 weeks | 15 hours/week |
| Introduction to Python for Data Science | 6 weeks | 2-4 hours/week |
| Programming with Python for Data Science | 6 weeks | 3-4 hours/week |
Py4e Py4e Textbook / EPUB / HTML / Buy hardcopy
Probability is the mathematics of uncertainty. Statistics is the mathematical framework for quantifying uncertainty in real-world data. These two related but distinct fields of study help us describe variation and uncertainty in the world around us. These courses make heavy use of discrete mathematics, linear algebra, and calculus, and serve as a first opportunity to apply what you've learned in the other core courses.
Topics covered:
Random variables
Expectation and Variance
Probability Distributions
Intro to Descriptive Statistics
Intro to Inferential Statistics
Introduction to Statistics: Probability
Introduction to Statistics: Inference
Statistical Learning with Python by Stanford University on EdX or Statistical Learning With R by Stanford University on EdX
Statistical Learning with Python by Stanford University on EdX (Textbook, Textbook resources) or Statistical Learning With R by Stanford University on EdX (Textbook, Textbook resources)
| Code | Course | Duration | Effort |
|---|---|---|---|
| MATH 1315 | Introduction to Probability and Data (with R) | 5 Weeks | 6 Hours/Week |
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Probability | 14 weeks | 12-16 hours/week | Multivariable Calculus, Math for Computer Science, Linear Algebra |
| Statistics for Applications | 14 weeks | 12-16 hours/week | Probability |
Topics covered:
Random variables
Expectation and Variance
Probability Distributions
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Probability | 14 weeks | 12-16 hours/week | Multivariable Calculus, Math for Computer Science, Linear Algebra |
| Statistics for Applications | 14 weeks | 12-16 hours/week | Probability |
Analysis is the mathematics of sequences and limits. Intro to Analysis is a course that builds on the concepts of Calculus and provides a rigorous and formalized study of the foundations of Calculus. This course will use formal proofs to establish mathematical results, starting by proving the existence of real numbers and building the foundation of single-variable Calculus from scratch.
Topics covered:
Proofs
Real analysis
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Introduction to Analysis | 14 weeks | 8-10 hours/week | Multivariable Calculus |
| Supplemental Lecture Videos | 16 weeks | 8-10 hours/week | Multivariable Calculus |
| Code | Course | Duration | Effort |
|---|---|---|---|
| MATH 2314 | Inferaential Statistics (with R) | 5 Weeks | 6 Hours/Week |
| MATH 3311 | Linear Regression and Modeling (with R) | 4 Weeks | 6 Hours/Week |
| MATH 3312 | Bayesian Statistics (with R) | 5 Weeks | 6 Hours/Week |
| Code | Course | Duration | Effort |
|---|---|---|---|
| COMP 2312 | Databases | 10 Weeks | 8-12 Hours/Week |
| COMP 4311 | Data Science | 13 Week | 10 Hours/Week |
| COMP 5312 | Deep Learning | 8 Weeks | 6 Hours/Week |
| Extension | Genomic Data Science Specialization | 32 Week | 6 Hours/Week |
Supervised Machine Learning: Regression and Classification
Unsupervised Learning, Recommenders, Reinforcement Learning
| Courses | Duration | Effort |
|---|---|---|
| Learning From Data (Introductory Machine Learning) [caltech] | 10 weeks | 10-20 hours/week |
| Statistical Learning | - weeks | 3 hours/week |
| Stanford's Machine Learning Course | - weeks | 8-12 hours/week |
OSS University is project-focused. The assignments and exams for each course are to prepare you to use your knowledge to solve real-world problems.
After you've gotten through all of Core CS and the parts of Advanced CS relevant to you, you should think about a problem that you can solve using the knowledge you've acquired. Not only does real project work look great on a resume, but the project will also validate and consolidate your knowledge. You can create something entirely new, or you can find an existing project that needs help via websites like CodeTriage or First Timers Only.
Students who would like more guidance in creating a project may choose to use a series of project oriented courses. Here is a sample of options (many more are available, at this point you should be capable of identifying a series that is interesting and relevant to you):
Complete Kaggle's Getting Started and Playground Competitions
| Courses | Duration | Effort |
|---|---|---|
| Convex Optimization | 9 weeks | 10 hours/week |
| Courses | Duration | Effort |
|---|---|---|
| Data Wrangling with MongoDB | 8 weeks | 10 hours/week |
| Courses | Duration | Effort |
|---|---|---|
| Intro to Hadoop and MapReduce | 4 weeks | 6 hours/week |
| Deploying a Hadoop Cluster | 3 weeks | 6 hours/week |
| Courses | Duration | Effort |
|---|---|---|
| Stanford's Database course | - weeks | 8-12 hours/week |
| Courses | Duration | Effort |
|---|---|---|
| Deep Learning for Natural Language Processing | - weeks | - hours/week |
| Courses | Duration | Effort |
|---|---|---|
| Deep Learning | 12 weeks | 8-12 hours/week |
- Participate in Kaggle competition
- List down other ideas
After finishing the courses above, start your specializations on the topics that you have more interest. You can view a list of available specializations here.
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Data Mining (Specialization) | 30 weeks | 2-5 hours/week | machine learning |
| Big Data (Specialization) | 30 weeks | 3-5 hours/week | none |
| Internet of Things (Specialization) | 30 weeks | 1-5 hours/week | strong programming |
| Cloud Computing (Specialization) | 30 weeks | 2-6 hours/week | C++ programming |
| Data Science (Specialization) | 43 weeks | 1-6 hours/week | none |
| Functional Programming in Scala (Specialization) | 29 weeks | 4-5 hours/week | One year programming experience |
| Courses | School | Duration | Effort | Frequency | Prerequisites |
|---|---|---|---|---|---|
| Machine Learning | Stanford | 11 weeks | 5-7 hours/week | twice a month | Linear Algebra - Foundations to Frontiers |
| Database Management Essentials | CU | 7 weeks | 4-6 hours/week | twice a month | basic programming & CS knowledge |
| Cryptography I | Stanford | 7 weeks | 5 hours/week | once a month | Linear Algebra - Foundations to Frontiers & Introduction to Probability and Data |
- Udacity
- edX
- Coursera
- Data Mining Specialization
- Machine Learning Specialization
- Data Science Specialization
- FutureLearn
| Course | Duration | Effort |
|---|---|---|
| Machine Learning Engineer Nanodegree | - weeks | 10 hours/week |
| Course | Duration | Effort |
|---|---|---|
| Data Analyst Nanodegree | - weeks | 10 hours/week |
| Course | Duration | Effort |
|---|---|---|
| Data Science and Engineering with Apache Spark XSeries | - weeks | 10 hours/week |
| Course | Duration | Effort |
|---|---|---|
| Data Mining | - weeks | 8-12 hours/week |
| Course | Duration | Effort |
|---|---|---|
| Machine Learning | - weeks | 8-12 hours/week |
| Course | Duration | Effort |
|---|---|---|
| Statistics with R | - weeks | - hours/week |
| Data Science at Scale | 17 weeks | 6-8 hours/week |
| Data Science | - weeks | 4-9 hours/week |
| Course | Duration | Effort |
|---|---|---|
| Big Data Analytics | 8 weeks | - hours/week |
Topics covered:
functional programming
design for testing
program requirements
common design patterns
unit testing
object-oriented design
static typing
dynamic typing
ML-family languages (via Standard ML)
Lisp-family languages (via Racket)
Ruby
and more
| Courses | Duration | Effort | Prerequisites | Discussion |
|---|---|---|---|---|
| Systematic Program Design | 13 weeks | 8-10 hours/week | none | chat: part 1 / part 2 |
| Class-based Program Design | 13 weeks | 5-10 hours/week | Systematic Program Design, High School Math | chat |
| Programming Languages, Part A | 5 weeks | 4-8 hours/week | Systematic Program Design (Hear instructor) | chat |
| Programming Languages, Part B | 3 weeks | 4-8 hours/week | Programming Languages, Part A | chat |
| Programming Languages, Part C | 3 weeks | 4-8 hours/week | Programming Languages, Part B | chat |
| Object-Oriented Design | 13 weeks | 5-10 hours/week | Class Based Program Design | chat |
| Software Architecture | 4 weeks | 2-5 hours/week | Object Oriented Design | chat |
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
and more
| Courses | Duration | Effort | Notes | Prerequisites | Discussion |
|---|---|---|---|---|---|
| Calculus 1A: Differentiation (alternative) | 13 weeks | 6-10 hours/week | The alternate covers this and the following 2 courses | high school math | chat |
| Calculus 1B: Integration | 13 weeks | 5-10 hours/week | - | Calculus 1A | chat |
| Calculus 1C: Coordinate Systems & Infinite Series | 6 weeks | 5-10 hours/week | - | Calculus 1B | chat |
| Mathematics for Computer Science (alternative) | 13 weeks | 5 hours/week | 2015/2019 solutions 2010 solutions 2005 solutions. | Calculus 1C | chat |
Topics covered:
Agile methodology
REST
software specifications
refactoring
relational databases
transaction processing
data modeling
neural networks
supervised learning
unsupervised learning
OpenGL
ray tracing
and more
| Courses | Duration | Effort | Prerequisites | Discussion |
|---|---|---|---|---|
| Databases: Modeling and Theory | 2 weeks | 10 hours/week | core programming | chat |
| Databases: Relational Databases and SQL | 2 weeks | 10 hours/week | core programming | chat |
| Databases: Semistructured Data | 2 weeks | 10 hours/week | core programming | chat |
| Machine Learning | 11 weeks | 9 hours/week | Basic coding | chat |
| Computer Graphics (alternative) | 6 weeks | 12 hours/week | C++ or Java, linear algebra | chat |
| Software Engineering: Introduction | 6 weeks | 8-10 hours/week | Core Programming, and a sizable project | chat |
Upon finishing all the core mathematics courses, students can choose to take elective courses in advanced topics of their choice. It is not necessary to take every course within a subcategory, but it is recommended to take courses relevant to the intended field of study.
To complete your study of Advanced Topics, meet both the Breadth and Depth requirements.
- Breadth Requirement: For each of the 6 Advanced Topics below, select one course to take as an elective.
- Depth Requirement: Select one Advanced Topic below and take 3 additional courses from that topic.
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Introduction to Formal Logic | 15 weeks | 9 hours/week | - |
Topics covered:
debugging theory and practice
goal-oriented programming
parallel computing
object-oriented analysis and design
UML
large-scale software architecture and design
and more
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Parallel Programming | 4 weeks | 6-8 hours/week | Scala programming |
| Compilers | 9 weeks | 6-8 hours/week | none |
| Introduction to Haskell | 14 weeks | - | - |
| Learn Prolog Now! (alternative)* | 12 weeks | - | - |
| Software Debugging | 8 weeks | 6 hours/week | Python, object-oriented programming |
| Software Testing | 4 weeks | 6 hours/week | Python, programming experience |
(*) book by Blackburn, Bos, Striegnitz (compiled from source, redistributed under CC license)
| Courses | Duration | Effort | Prerequisites |
|---|---|---|---|
| Web Security Fundamentals | 5 weeks | 4-6 hours/week | understanding basic web technologies |
| Security Governance & Compliance | 3 weeks | 3 hours/week | - |
| Digital Forensics Concepts | 3 weeks | 2-3 hours/week | Core Security |
| Secure Software Development: Requirements, Design, and Reuse | 7 weeks | 1-2 hours/week | Core Programming and Core Security |
| Secure Software Development: Implementation | 7 weeks | 1-2 hours/week | Secure Software Development: Requirements, Design, and Reuse |
| Secure Software Development: Verification and More Specialized Topics | 7 weeks | 1-2 hours/week | Secure Software Development: Implementation |
