Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

343 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

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.

CyberPolyglot IT Hub - Bassamejlaoui Awesome

image

Contents

Motivation & Preparation

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?

Prerequisites

The Data Science curriculum assumes the student has taken high school math and statistics.

Curricular Guideline

Curriculum Guidelines for Undergraduate Programs in Data Science

Which programming languages should I use?

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.

How to use this guide

Duration

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.

Order of the classes

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.

Topic Progression Graph

Curriculum

Introduction to Data Science

What is Data Science

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

Introduction to Computer Science

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 programming

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.

MITx 6.00.1x + 2T2018

Introduction to Mathematical Thinking

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

Data Structures and Algorithms

The Algorithms courses are taught in Java. If students need to learn Java, they should take this course first

Java Programming

Algorithms, Part I(Coursera)

Algorithms I: ArrayLists, LinkedLists, Stacks and Queues(Edx)

Algorithms, Part II(Coursera)

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

Databases

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

Core theory

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

Core applications

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

Single Variable Calculus

Calculus 1A: Differentiation

Calculus 1B: Integration

Calculus 1C: Coordinate Systems & Infinite Series

Courses Duration Effort Prerequisites
Multivariable Calculus 12 weeks 6 hours/week Calculus 1C

Discrete Mathematics

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

Introduction to Differential Equations

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

Linear Algebra

Topics covered:

Vector and matrix calculations Linear transformations Vector spaces Eigenvalues and Eigenvectors

Essence of Linear Algebra

Linear Algebra

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

Multivariable Calculus

Multivariable Calculus

Python

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

Statistics & Probability

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

Introduction to Probability

Statistical Reasoning

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

Introduction to Analysis

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

Data Science Tools & Methods

Tools for Data Science

Data Science Methodology

Data Science: Wrangling

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

Machine Learning/Data Mining

Machine Learning

Intro to Machine Learning

Mining Massive Datasets

Process Mining

Supervised Machine Learning: Regression and Classification

Advanced Learning Algorithms

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

Final project

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):

Project

Complete Kaggle's Getting Started and Playground Competitions

Convex Optimization

Courses Duration Effort
Convex Optimization 9 weeks 10 hours/week

Data Wrangling

Courses Duration Effort
Data Wrangling with MongoDB 8 weeks 10 hours/week

Big Data

Courses Duration Effort
Intro to Hadoop and MapReduce 4 weeks 6 hours/week
Deploying a Hadoop Cluster 3 weeks 6 hours/week

Database

Courses Duration Effort
Stanford's Database course - weeks 8-12 hours/week

Natural Language Processing

Courses Duration Effort
Deep Learning for Natural Language Processing - weeks - hours/week

Deep Learning

Courses Duration Effort
Deep Learning 12 weeks 8-12 hours/week

Capstone Project

  • Participate in Kaggle competition
  • List down other ideas

Specializations

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

Machine Learning Nanodegree by Google

Course Duration Effort
Machine Learning Engineer Nanodegree - weeks 10 hours/week

Data Scientist Nanodegree

Course Duration Effort
Data Analyst Nanodegree - weeks 10 hours/week

edX

Data Science and Engineering with Apache Spark

Course Duration Effort
Data Science and Engineering with Apache Spark XSeries - weeks 10 hours/week

Coursera

Data Mining Specialization

Course Duration Effort
Data Mining - weeks 8-12 hours/week

Machine Learning Specialization

Course Duration Effort
Machine Learning - weeks 8-12 hours/week

Data Science Specialization

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

FutureLearn

Big Data

Course Duration Effort
Big Data Analytics 8 weeks - hours/week

Applications

Name Author(s)
Architecture of a Database System Joseph M. Hellerstein, Michael Stonebraker, James Hamilton
Readings in Database Systems (5th Edition) Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker, editors
Database Management Systems (3rd Edition) Raghu Ramakrishnan, Johannes Gehrke
Transaction Processing: Concepts and Techniques Jim Gray, Andreas Reuter
Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World (3rd Edition) William Kent
The Architecture of Open Source Applications Michael DiBernardo (editor)
An Introduction to Statistical Learning Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani
Deep Learning Ian Goodfellow, Yoshua Bengio and Aaron Courville
Bayesian Reasoning and Machine Learning David Barber
Language Implementation Patterns Terence Parr
Compilers: Principles, Techniques, and Tools (2nd Edition) Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
Compiler Construction Niklaus Wirth
The Mythical Man-Month Fred Brooks, Jr.
Physically Based Rendering: From Theory To Implementation Matt Pharr, Wenzel Jakob, and Greg Humphreys

Core programming

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

Core math

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

Core applications

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

Advanced Topics

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.

Mathematical Logic

Courses Duration Effort Prerequisites
Introduction to Formal Logic 15 weeks 9 hours/week -

Advanced programming

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)

Advanced Information Security

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages