You are on page 1of 46

https://github.

com/practical-tutorials/project-based-learning

Project Based Learning

A list of programming tutorials in which aspiring software developers learn how to build an
application from scratch. These tutorials are divided into different primary programming
languages. Tutorials may involve multiple technologies and languages.

To get started, simply fork this repo. Please refer to CONTRIBUTING.md for contribution
guidelines.

Table of Contents:
 C#
 C/C++
 Clojure
 Dart
 Elixir
 Erlang
 F#
 Go
 Haskell
 HTML/CSS
 Java
 JavaScript
 Kotlin
 Lua
 OCaml
 PHP
 Python
 R
 Ruby
 Rust
 Scala
 Swift
 Additional resources

C/C++:
 Build an Interpreter (Chapter 14 on is written in C)
 Memory Allocators 101 - Write a simple memory allocator
 Write a Shell in C
 Write a FUSE Filesystem
 Build Your Own Text Editor
 Build Your Own Lisp
 How to Program an NES Game in C
 Write an OS from scratch
 How to create an OS from scratch
 Building a CHIP-8 Emulator
 Beginning Game Programming with C++ and SDL
 Implementing a Key-Value Store
 Tiny 3D graphics projects
o Tiny Renderer or how OpenGL works: software rendering in 500 lines of code
o Understandable RayTracing in 256 lines of bare C++
o KABOOM! in 180 lines of bare C++
o 486 lines of C++: old-school FPS in a weekend
 Writing a minimal x86-64 JIT compiler in C++
o Part 1
o Part 2
 Build a Live Code-reloader Library for C++
 Write a hash table in C
 Let's Build a Simple Database
 Let's Write a Kernel
 Write a Bootloader in C
 Linux Container in 500 Lines of Code
 Write Your Own Virtual Machine
 Learning KVM - Implement Your Own Linux Kernel
 Build Your Own Redis with C/C++
 Write a C compiler
o Part 1: Integers, Lexing and Code Generation
o Part 2: Unary Operators
o Part 3: Binary Operators
o Part 4: Even More Binary Operators
o Part 5: Local Variables
o Part 6: Conditionals
o Part 7: Compound Statements
o Part 8: Loops
o Part 9: Functions
o Part 10: Global Variables
 Implementing a Language with LLVM
 Meta Crush Saga: a C++17 compile-time game
 High-Performance Matrix Multiplication
 Space Invaders from Scratch
o Part 1
o Part 2
o Part 3
o Part 4
o Part 5
 Tetris Tutorial in C++ Platform Independent
 Writing a Linux Debugger
o Part 1: Setup
o Part 2: Breakpoints
o Part 3: Registers and memory
o Part 4: Elves and dwarves
o Part 5: Source and signals
o Part 6: Source-level stepping
o Part 7: Source-level breakpoints
o Part 8: Stack unwinding
o Part 9: Handling variables
o Part 10: Advanced topics
 Let's write a compiler
o Part 1: Introduction, selecting a language, and doing some planning
o Part 2: A lexer
o Part 3: A parser
o Part 4: Testing
o Part 5: A code generator
o Part 6: Input and output
o Part 7: Arrays
o Part 8: Strings, forward references, and conclusion

Network programming

 Let's Code a TCP/IP Stack

o Part 1: Ethernet & ARP


o Part 2: IPv4 & ICMPv4
o Part 3: TCP Basics & Handshake
o Part 4: TCP Data Flow & Socket API
o Part 5: TCP Retransmission

 Programming concurrent servers

o Part 1 - Introduction
o Part 2 - Threads
o Part 3 - Event-driven
o Part 4 - libuv
o Part 5 - Redis case study
o Part 6 - Callbacks, Promises and async/await

 MQTT Broker from scratch

o Part 1 - The protocol


o Part 2 - Networking
o Part 3 - Server
o Part 4 - Data structures
o Part 5 - Topic abstraction
o Part 6 - Handlers
o Bonus - Multithreading

OpenGL:

 Creating 2D Breakout game clone in C++ with OpenGL


o Breakout
o Setting up
o Rendering Sprites
o Levels
o Collisions
 Ball
 Collision detection
 Collision resolution
o Particles
o Postprocessing
o Powerups
o Audio
o Render text
o Final thoughts
 Handmade Hero
 How to Make Minecraft in C++/OpenGL (video)

C#:
 Learn C# By Building a Simple RPG Game
 Create a Rogue-like game in C#
 Create a Blank App with C# and Xamarin (work in progress)
 Build iOS Photo Library App with Xamarin and Visual Studio
 Building the CoreWiki This is a Wiki-style content management system that has been
completely written in C# with ASP.NET Core and Razor Pages. You can find the source
code here.
Clojure:
 Build a Twitter Bot with Clojure
 Building a Spell-Checker
 Building a JIRA integration with Clojure & Atlassian Connect
 Prototyping with Clojure
 Tetris in ClojureScript

Dart:

Flutter:

 Amazon Clone with Admin Panel


 Food Delivery App
 Google Docs Clone
 Instagram Clone
 Multiplayer TicTacToe Game
 TikTok Clone
 Ticket Booking App
 Travel App
 Twitch Clone
 WhatsApp Clone
 Wordle Clone
 Zoom Clone
 Netflix Clone

Elixir
 Building a Simple Chat App With Elixir and Phoenix
 How to write a super fast link shortener with Elixir, Phoenix, and Mnesia

Erlang
 ChatBus : build your first multi-user chat room app with Erlang/OTP
 Making a Chat App with Erlang, Rebar, Cowboy and Bullet

F#:
 Write your own Excel in 100 lines of F#

Java:
 Build an Interpreter (Chapter 4-13 is written in Java)
 Build a Simple HTTP Server with Java
 Build an Android Flashlight App (video)
 Build a Spring Boot App with User Authentication

JavaScript:
 Build 30 things in 30 days with 30 tutorials
 Build an App in Pure JS
 Build a Jupyter Notebook Extension
 Build a TicTacToe Game with JavaScript
 Build a Simple Weather App With Vanilla JavaScript
 Build a Todo List App in JavaScript

HTML and CSS:


 Build A Loading Screen
 Build an HTML Calculator with JS
 Build Snake using only JavaScript, HTML & CSS

Mobile Application:

 Build a React Native Todo Application


 Build a React Native Application with Redux Thunk

Web Applications:

React:

 Create Serverless React.js Apps


 Create a Trello Clone
 Create a Character Voting App with React, Node, MongoDB and SocketIO
 React Tutorial: Cloning Yelp
 Build a Full Stack Movie Voting App with Test-First Development using Mocha, React,
Redux and Immutable
 Build a Twitter Stream with React and Node
 Build A Simple Medium Clone using React.js and Node.js
 Integrate MailChimp in JS
 Build A Chrome Extension with React + Parcel
 Build A ToDo App With React Native
 Make a Chat Application
 Create a News App with React Native
 Learn Webpack For React
 Testing React App With Puppeteer and Jest
 Build Your Own React Boilerplate
 Code The Game Of Life With React
 A Basic React+Redux Introductory Tutorial
 Build an Appointment Scheduler
 Build A Chat App with Sentiment Analysis
 Build A Full Stack Web Application Setup
 Create Todoist clone with React and Firebase
 Build A Random Quote Machine
o Part 1
o Part 2
o Part 3
o Part 4
o Part 5
o Part 6
o Part 7
 React Phone E-Commerce Project(video)

Angular:

 Build an Instagram Clone with Angular 1.x

 Build an offline-capable Hacker News client with Angular 2+

o Part 1
o Part 2

 Build a Google+ clone with Django and AngularJS (Angular 1.x)

 Build A Beautiful Real World App with Angular 8 :

o Part I
o Part II

 Build Responsive layout with BootStrap 4 and Angular 6

 ToDo App with Angular 5

o Introduction to Angular
o Part 1

Node:

 Build a real-time Markdown Editor with NodeJS


 Test-Driven Development with Node, Postgres and Knex
 Write a Twitter Bot in Node.js
o Part 1
o Part 2
 Build A Simple Search Bot in 30 minutes
 Build A Job Scraping Web App
 Building a GitHub App
 How to build your own Uber-for-X App using JavaScript, Node.JS, MongoDB and Web
Sockets
o Part 1
o Part 2

Vue

 Vue 2 + Firebase: How to build a Vue app with Firebase authentication system in 15
minutes
 Vue.js Application Tutorial – Creating a Simple Budgeting App with Vue
 Build a Blog with Vue, GraphQL and Apollo
 Build a full stack web application using MEVN (MongoDB, Express, Vue, Node) stack
o Part 1
o Part 2
 Vue.js To-Do List Tutorial (video)
 Vue 2 + Pub/Sub: Build a peer to peer multi-user platform for games

Others (Hapi, Express...):

 Build a Progressive Web Application (PWA)


o Part 1
o Part 2
o Part 3
 Build A Native Desktop App with JS
 Build a Powerful API with NodeJs,GraphQL and Hapi
o Part I

D3.js

 Learn D3 using examples


 Learn To Make A Line Chart

Game Development:

 Make 2D Breakout Game using Phaser


 Make Flappy Bird in HTML5 and JavaScript with Phaser
o Part 1
o Part 2

Desktop Application:
 Build A Desktop Chat App with React and Electron

Miscellaneous:

 How to Build a Web Framework in Less Than 20 Lines of Code


 Build Yourself a Redux
 How to write your own Virtual DOM
 Build A Realtime Serverless GraphQL API with WebSockets on AWS

Kotlin:
 Keddit - Learn Kotlin While Developing an Android Application

Lua:

LÖVE:

 BYTEPATH: Creation of a Complete Game with Lua and LÖVE


o Part 0: Introduction
o Part 1: Game Loop
o Part 2: Libraries
o Part 3: Rooms and Areas
o Part 4: Exercises
o Part 5: Game Basics
o Part 6: Player Basics
o Part 7: Player Stats and Attacks
o Part 8: Enemies
o Part 9: Director and Gameplay Loop
o Part 10: Coding Practices
o Part 11: Passives
o Part 12: More Passives
o Part 13: Skill Tree
o Part 14: Console
o Part 15: Final

Python:

Web Scraping:

 Mining Twitter Data with Python


 Scrape a Website with Scrapy and MongoDB
 How To Scrape With Python and Selenium WebDriver
 Which Movie Should I Watch using BeautifulSoup

Web Applications:

 Build a Microblog with Flask


 Create a Blog Web App In Django
 Choose Your Own Adventure Presentations
 Build a Todo List with Flask and RethinkDB
 Build a Todo List with Django and Test-Driven Development
 Build a RESTful Microservice in Python
 Microservices with Docker, Flask, and React
 Build A Simple Web App With Flask
 Create A Django API in under 20 minutes
 Build a Community-driven delivery application with Django, Postgres and JavaScript
o Part 1
o Part 2
 Realtime Chat application with Vue, django-notifs, RabbitMQ and uWSGI
o Part 1
o Part 2
o Part 3
o Part 4
o Part 5
o Part 6

Bots:

 Build a Reddit Bot


 How to Make a Reddit Bot - YouTube (video)
 Build a Facebook Messenger Bot
 Making a Reddit + Facebook Messenger Bot
 How To Create a Telegram Bot Using Python
o Part 1
o Part 2
 Create a Twitter Bot In Python

Data Science:

 Learn Python For Data Science by Doing Several Projects (video):


o Part 1: Introduction
o Part 2: Twitter Sentiment Analysis
o Part 3: Recommendation Systems
o Part 4: Predicting Stock Prices
o Part 5: Deep Dream in TensorFlow
o Part 6: Genetic Algorithms

Machine Learning:

 Write Linear Regression From Scratch in Python (video)


 Step-By-Step Machine Learning In Python
 Predict Quality Of Wine
 Solving A Fruits Classification Problem
 Learn Unsupervised Learning with Python
 Build Your Own Neural Net from Scratch in Python
 Linear Regression in Python without sklearn
 Multivariate Linear Regression without sklearn
 Music Recommender using KNN
 Find Similar Quora Questions-
o Using BOW, TFIDF and Xgboost
o Using Word2Vec and Xgboost
 Detecting Fake News with Python and Machine Learning

OpenCV:

 Build A Document Scanner


 Build A Face Detector using OpenCV and Deep Learning
 Build fastest custom object Detection system yusing YOLOv3(video playlist)
 Build a Face Recognition System using OpenCV, Python and Deep Learning
 Detect The Salient Features in an Image
 Build A Barcode Scanner
 Learn Face Clustering with Python
 Object Tracking with Camshift
 Semantic Segmentation with OpenCV and Deep Learning
 Text Detection in Images and Videos
 People Counter using OpenCV
 Tracking Multiple Objects with OpenCV
 Neural Style Transfer with OpenCV
 OpenCV OCR and Text Recognition
 Text Skew Correction Tutorial
 Facial Landmark Detection Tutorial
 Object Detection using Mask-R-CNN
 Automatic Target Detection Tutorial
 EigenFaces using OpenCV
 Faster(5-point) Facial Landmark Detection Tutorial
 Hand Keypoint Detection
 Dlib Correlation Object Tracking -
o Single Object Tracker
o Mutiple Object Tracker
 Image Stitching with OpenCV and Python
 Instance Segmentation with OpenCV
 Face mask detector

Deep Learning:

 Using Convolutional Neural Nets to Detect Facial Keypoints


 Generate an Average Face using Python and OpenCV
 Break A Captcha System using CNNs
 Use pre-trained Inception model to provide image predictions
 Create your first CNN
 Build A Facial Recognition Pipeline
 Build An Image Caption Generator
 Make your Own Face Recognition System
 Train a Language Detection AI in 20 minutes
 Object Detection With Neural Networks
 Learn Twitter Sentiment Analysis -
o Part I - Data Cleaning
o Part II - EDA, Data Visualisation
o Part III - Zipf's Law, Data Visualisation
o Part IV - Feature Extraction(count vectoriser)
o Part V - Feature Extraction(Tfidf vectoriser)
o Part VI - Doc2Vec
o Part VII - Phrase Modeling + Doc2Vec
o Part VIII - Dimensionality Reduction
o Part IX - Neural Nets with Tfdif vectors
o Part X - Neural Nets with word2vec/doc2vec
o Part XI - CNN with Word2Vec
 Use Transfer Learning for custom image classification
 Learn to Code a simple Neural Network in 11 lines of Python
 Build a Neural Network using Gradient Descent Approach
 Train a Keras Model To Generate Colors
 Get Started with Keras on a Custom Dataset
 Use EigenFaces and FisherFaces on Faces94 dataset
 Kaggle MNIST Digit Recognizer Tutorial
 Fashion MNIST tutorial with tf.keras
 CNN using Keras to automatically classify root health
 Keras vs Tensorflow
 Deep Learning and Medical Image Analysis for Malaria Detection
 Transfer Learning for Image Classification using Keras
 Code a Smile Classifier using CNNS in Python
 Natural Language Processing using scikit-learn
 Code a Taylor Swift Lyrics Generator
 Mask detection using PyTorch Lightning

Miscellaneous:

 Build a Simple Interpreter


 Build a Simple Blockchain in Python
 Write a NoSQL Database in Python
 Building a Gas Pump Scanner with OpenCV/Python/iOS
 Build a Distributed Streaming System with Python and Kafka
 Writing a basic x86-64 JIT compiler from scratch in stock Python
 Making a low level (Linux) debugger
o Part 1
o Part 2: C
 Implementing a Search Engine
o Part 1
o Part 2
o Part 3
 Build the Game of Life
 Create terminal ASCII art
 Write a Tic-Tac-Toe AI
 Create photomosaic art
 Build the game "Snake" in the terminal
 Write yourself a Git
 A Python implementation of a Python bytecode runner
 Create a Voice assistant using Python

Go:
 Create a Real Time Chat App with Golang, Angular 2, and WebSocket
 Building Go Web Applications and Microservices Using Gin
 How to Use Godog for Behavior-driven Development in Go
 Building Blockchain in Go
o Part 1: Basic Prototype
o Part 2: Proof of Work
o Part 3: Persistence and CLI
o Part 4: Transactions 1
o Part 5: Address
o Part 6: Transactions 2
o Part 7: Network
 Building a container from scratch in Go - Liz Rice (Microscaling Systems)(video)
 Build Web Application with GoLang
 Building a Chat Application in Go with ReactJS
o Part 1: Initial Setup
o Part 2: Simple Communication
o Part 3: Designing our Frontend
o Part 4: Handling Multiple Clients
o Part 5: Improving the Frontend
o Part 6: Dockerizing your Backend
 Go WebAssembly Tutorial - Building a Calculator Tutorial
 REST Servers in Go
o Part 1 - standard library
o Part 2 - using a router package
o Part 3 - using a web framework
o Part 4 - using OpenAPI and Swagger
o Part 5 - middleware
o Part 6 - authentication
o Part 7 - GraphQL
 Let's build a URL shortener in Go - with Gin & Redis
o Part 1 - Project setup
o Part 2 - Storage Layer
o Part 3 - Short Link Generator
o Part 4 - Forwarding
 Building a TCP Chat in Go(video)
 Building a BitTorrent client from the ground up in Go
 REST API masterclass with Go, PostgreSQL and Docker(video playlist) in progress

PHP:
 How To Build A Blog With Laravel (video)
 Make Your Own Blog (in Pure PHP)
 Build A Real Estate Website Example with SilverStripe
 Building Realtime Chat App with Laravel 5.4 and VueJS (video)
 Build A Social Network: Laravel 5 - Youtube (video)
 Build a full-featured multi-tenant app with Laravel
o Part 0: Introduction
o Part 1: Setup
o Part 2: Roles and Permissinos
o Part 3: Invitation
o Part 4: Authentication
o Part 5: Testing
o Part 6: User Profile
o Part 7: Deployment
 Build a Laravel CRUD Application From Scratch

OCaml:
 Implement a Language with LLVM in OCaml
 Writing a Game Boy Emulator in OCaml

Ruby:
 Build a Network Stack with Ruby
 Build your own Redis
o Part 0: Introduction
o Part 1: Barebones TCP Server
o Part 2: PING <-> PONG
o Part 3: Concurrent Clients
o Part 4: ECHO
 Rebuilding Git in Ruby

Ruby on Rails:

 The Ruby on Rails Tutorial


 Build Instagram From Scratch with Ruby on Rails
 Build a Social Network using Rails
 How To Build a Ruby on Rails Application

Haskell:
 Write You a Haskell - Build a modern functional compiler
 Write Yourself a Scheme in 48 hours
 Write You A Scheme, Version 2
 Roll Your Own IRC Bot
 Making Movie Monad
 Making a Website with Haskell (outdated)

R:
 Build Web Apps with Shiny
 Build A Cryptocurrency Bot
 Learn Associate Rule Mining in R
Rust:
 A Simple Web App in Rust
o Part 1
o Part 2a
o Part 2b
 Write an OS in pure Rust
 Build a browser engine in Rust
 Write a Microservice in Rust
 Learning Rust with Too Many Linked Lists
 Rust in Detail: Writing Scalable Chat Service from Scratch
o Part 1: Implementing WebSocket. Introduction.
o Part 2: Sending and Receiving Messages
 Writing a Rust Roguelike for the Desktop and the Web
 Single Page Applications using Rust
 Writing NES Emulator in Rust
 Create a simulation of evolution using neural network and genetic algorithm, and compile
the application to WebAssembly
o Part 1
o Part 2
o Part 3
o Part 4

Scala:
 Simple actor-based blockchain
 No Magic: Regular Expressions

Swift:
 Hacking with Swift - Learn Swift by doing 39 projects
 Retro first-person shooter from scratch

Additional Resources
 React Redux Links
 Udemy.com
 Full Stack Python
 Node School
 ScotchIO
 Exercism
 Egghead.io
 Michael Herman's Blog
 Thinkster.io
 Enlight
 Hack Club Workshops
 CodeCrafters

https://julienbeaulieu.github.io/2019/09/25/comprehensive-project-based-data-science-
curriculum/#core-math

Comprehensive Project Based Data Science


Curriculum
25 Sep 2019
Aug 2022 update: This blogpost is now outdated. The content has moved
to and is now part of the following project: Open Curriculai. Visit the
curriculum section for the most recent version.

updated June 2022: curriculum v4.0

 Summary
 Visual Overview
 Curriculum
o Data Science Intro & Learning How to Learn
o Core Data Science
o Core Programming
o Core Math
o Deep Learning
o Data Engineering
o Optional Courses
o Extras
 Final Notes

Summary
This curriculum offers a mix of best in class resources and a suggested
path to become a data scientist. It is intended to be a complete education
in data science using online materials. All resources have been heavily
researched and used by myself in my journey to becoming a developper
and a Data Scientist.
Why I wrote this curriculum

There is a lack of curated online resource that organizes material found


online into a long term learning plan that covers all aspects of data science.
Most curriculums only suggest content from their own platform, or suggest
too many options from which to choose from. Bootcamps inaccurately
make the promise that you’ll get hired after graduating. As a matter of fact,
in most cases, a bootcamp will only help you get started if you are new to
the field.

Who is this for?

The following curriculum is intended for anyone who wants to learn data
science and programming, irrespective of what their current background is
(I used to work in digital marketing). It therefore assumes no prior
knowledge of data science or coding, and only a basic knowledge of high
school math.

This curriculum does, however, assume that you are extremely eager to
learn data science, are self driven and motivated because a lot of the
resources are self-paced. Completing the curriculum end to end can easily
take a year and a half. That said, the programme goes much deeper than a
bootcamp and will give you more hands-on experience than most master’s
degrees.

The resources are chosen to prepare you to be up and running for an


industry role. If you’re interested in academia and research, enroll in a
university degree instead.

If you already have experience with machine learning and are looking to
refine your skills, I encourage you to look at the different modules and
hand-pick what you find relevant.

This initiative is inspired by OSSU’s amazing self-taught, open source


education in Computer Science.

Why choose a self-taught education?

 There is an abundance of high-quality resources available online.


This curriculum includes many courses from top universities (MIT,
Stanford, University of San Francisco), MOOCs (Massive open
online course) and bootcamps with outstanding reviews
(Deeplearning.ai, Fastai, Le Wagon), and content from world class
creators in the form of blog posts, videos, and books.
 Focus on state-of-the-art techniques that you can apply in industry.
There aren’t many university courses or bootcamps that teach the
latest techniques such as those found in Fastai or at Standford’s
CS224n Deep Learning for Natural Language Processing.
 Have the flexibility to learn from anywhere around the world, and to
continue pursuing your path part time if you find a job during the
process.
 Become proficient in continuous learning. Following this path will
teach you how to be autonomous in how you acquire new skills and
rigorous in how you choose new learning material. They will also be
your go to resources at work as you progress throughout your career.
 It is an opportunity to put yourself out there. Since you won’t rely on
a college degree as a signal to get hired, you’ll be incentivised to
create, share and communicate your best work. These are essential
skills when working at a company.

Objectives with this coursework

 Work on real world practical projects that you are passionate about.
 Become a good developer with solid software engineering and
computer science abilities.
 Develop a strong foundation in math - this includes linear algebra,
calculus, statistics and probability.
 Be able to read and apply scientific papers or redo the experiments
on your own.
 Deploy models with elegant and reusable code.
 Get hired as a data analyst, data scientist, or machine learning
engineer.

Visual Overview
Made with Visme Infographic Maker

Curriculum
Data Science Intro & Learning How to Learn

I believe that the best way to get into data science is to first learn how to
program and to gain some familiarity with computer science foundations.
Also, since you are about to engage in a lifetime of learning new concepts
and skills, I highly recommend viewing the resources related to becoming
a better learner.

Note: s represent material I particularly enjoyed and recommend.


Topics covered: Introduction to AI , Introduction to computer
science and Python, Learning how to learn

Resources Source
CS50 introduction to programming with Python Harvard
CS50 introduction to Computer Science Harvard
Data Analyst Nanodegree Udacity

Learning How to Learn Coursera


A Mind for Numbers Barbara Oakley

Pragmatic Thinking and Learning Andy Hunt


Overview

 If you are absolutely new to programming, start with Harvard’s


CS50’s introduction to programming with Python. David Malan is
one of the pioneers of online teaching and his content is always top
notch. This class is given for the first time in 2022.
 If you’re up for a real challenge, or if you’re already somewhat
familiar with programming, look at CS50’s introduction to
Computer Science from the same professor. The exercises are more
involved and there is a focus on the C programming language
instead of Python. That said, it covers more material and computer
science concepts. If you’re not taking this course, and you probably
shouldn’t be if you’re a total beginner, at least watch lecture 0 -
Scratch for its marvelous introduction to computer science in
general.
 Since you’re about to start an epic learning journey, make sure you
know how to apply the best techniques to efficient learning. Taking
“Learning how to learn” on Coursera will yield immense benefits
long term and give you a competitive advantage over your peers.
The book on which the course is based on, “A Mind for Numbers”,
and the brilliant “Pragmatic Thinking and Learning” are good
complementary options too. For a quick summary of all three
resources, refer to this blogpost or listen to this podcast by Dr Paul
Pen for an excellent overview of the subject.
 Start your data science journey with Udacity’s Data Analyst
Nanodegree. This is a great place to start to learn about statistics,
probability, data wrangling, data visualization, etc.
Core Data Science

If you can afford a bootcamp, I recommend taking what I consider is the


best data science one out there: Le Wagon**. There is a heavy emphasis
on practical exercises, the curriculum is constantly evolving with the latest
libraries and technologies, and the final project involves deploying your
own machine learning model. This intensive bootcamp, also available part
time, will give you the big picture of what data science encompases end to
end: math theory, data wrangling, data visualization, programming inside
an IDE, Git, machine learning, deep learning, and data engineering.

If you’re not willing to spend too much money, you’re still in luck.
Andrew Ng’s machine learning course on Coursera, which was originally
created in 2012 and has been taken by millions, just got updated! This is a
unique opportunity to get quality education for cheap. Take this course as
well as Udacity’s data Analyst Nanodegree, and you’re guaranteed to start
off with solid foundations.

Next, check out Fastai’s Introduction to Machine Learning for Coders. I


recommend only watching the first 6 lectures which focus on tree-
based models. The rest of the videos are on deep learning which is better
covered in their more recent course listed below. Although this content is
almost 5 years old, don’t let that discourage you from watching it: it is
taught by one of the most respected data scientists in the world - Jeremy
Howard - and is full of gems. Case in point: I have impressed many
colleagues even today with techniques taken directly from this course.

Pair the above with Andriy Burkov’s famous and succint The Hundred-
Page Machine Learning Book, as well as Wes McKinney’s Python for
Data Analysis. One is more focused on ML theory, while the other is
hands-on with Python. They are complementary and will solidify your
understanding of all concepts covered so far. As a testament to the quality
of the people I am referencing, Wes McKinney is the creator of the
widely-used open-source pandas package.
Topics covered: Data wrangling Data collection with an
API, SQL, Statistical tests & experiments, Data
visualization, Machine Learning, Deep Learning, Random
Forests, Model interpretation techniques

Resources Source

Data Science Bootcamp Le Wagon In per


Machine Learning Course Coursera Onl

Introduction to Machine Learning for Coders - Fastai U of San Francisco Onl

The Hundred-Page Machine Learning Book Andriy Burkov


Python for Data Analysis, 2nd Edition Wes McKinney
Overview

 Gain experience in the most important data science related tasks by


taking Le Wagon’s bootcamp. For a cheaper version look at
Udacity’s Data Analyst Nanodegree combined with
Coursera’s Machine Learning Course
 Get a practical approach to machine learning with tree-based models
and model interpretation with Fastai.
 Complement your learning with the very well written and concise
Hundred Page Machine Learning Book.
 Python for data analysis book is a practical, modern introduction for
manipulating, processing, cleaning, and crunching datasets in
Python. It is ideal for beginners and is a great way to get better at
pandas, Numpy, and IPython.
Core Programming

The following resources will help you become a good programmer,


understand some core software engineering principles, and give you the
tools to pass the technical tests that most employers send you during
recruitment. I suggest reviewing this material early in your education
because being a good programmer will pay off very fast. You don’t need
to go through all of this material in a linear way. Review this on an as-
need basis but make sure you’re regularly coming back to it.
Resources Source

Python with Corey Schafer YouTube

Fluent Python Luciano Ramalho


Coding Exercises HackerRank C
Intro to Data Structures and Algorithms Udacity Self-paced vid
Missing Semester MIT Self-paced v
Overview

 If you’re struggling with any programming concept in Python, make


sure you search for videos of Corey Schafer explaining the subject.
His videos are always well-built, clear and enlightening.
 This book is a practical, modern introduction for manipulating,
processing, cleaning, and crunching datasets in Python. It is ideal for
beginners and is a great way to get better at pandas, Numpy, and
IPython.
 Familiarize yourself with common data structures and algorithms in
Python with with Udacitys course which features practice exercises.
 Complete HackerRank exercises to refine your Python skills with
interview-style questions.
 Once you’re comfortable with the basics of Python - that is to say,
after at least 1 year of coding experience - you can slowly start
reading Fluent Python for a deep dive on Python core language
features and libraries. Note 1: Some of the later chapters are very
advanced and optional. Note 2: Keep an eye out for the updated
edition of the book which is coming soon.
 If you still aren’t comfortable with the shell, version control (Git)
and debugging, watch the lectures from MIT’s Missing Semester
and do the exercises. Seriously, don’t neglect the exercises!
Core Math

Machine learning is a mix of Statistics, Linear Algebra, Probability, and


Calculus. Some say that it’s not strictly necessary to go deep into
mathematical theory and that it’s better to focus on coding. While there is
some truth to this, if your end goal is to read, write, implement papers, and
to be a true expert in data science, then do not neglect math. The following
list of resources will help you both get started if you’re a beginner, or let
you go deep down the math rabbit whole if you’re advanced. Remember to
practice solving exercises if you want what you’re learning to stick.

Topics covered: Linear algebra statistics Vector


calculus Probability and more

Resources Source

Essence of Linear Algebra YouTube

StatQuest - Machine Learning Youtube


Linear Algebra Khan Academy

Linear Algebra 18.06 with Gilbert Strang MIT


Calculus 1 & 2 Khan Academy
Mathematics for Machine Learning Marc Peter
Overview

 Get a great intuition for linear algebra with this fantastic resource:
Essence of Linear Algebra by 3Blue1Brown.
 Learn all things statistics and machine learning with Statquest. Josh
Starmer has a gift for breaking down complex ideas into some of the
simplest and best explanations on the Web. He also
recently published a book which I encourage you to check out.
 Delve deep into linear algebra with prof. Gilbert Strang’s amazing
lecture which has been viewed by millions before. Complement with
exercises in his book (which includes solutions to the exercises). For
a less in depth alternative, refer to Khan Academy.
 Learn the math required for machine learning with Marc Peter (and
co.)’s book (advanced). Choose this option if you’re a warrior, and
are interested in fundamental research.
 Don’t forget to actually do the exercises and work on assigments.
This is the only way you’ll become good at math.
Deep Learning

After completing the courses in Core Data Science, and with more solid
foundations in programming and machine learning theory, you can move
onto deep learning if that’s an area that interests you. It can be tempting to
jump straight to this section when you’re starting because there are really
cool applications to work on. My POV on this is if this is what really
motivates you, try it out and see what you can get out of it. Remember to
come back to the sections above however, or you will have gaping holes in
your fundamentals which will come back and hunt you down the line.

Topics covered: Loss functions and


optimization, Convolutional neural networks, Recurrent
neural networks, Deep learning hardware and software, Deep
learning for tabular data, NLP, Computer vision, Generative
models,

Resources Source
O
Practical Deep Learning for Coders - Part 1 U of San Francisco
Jeremy Howard, Sylvain
Fastai Book
Gugger

Deep Learning Specialization Coursera - Andrew Ng O


CS224n: Natural Language Processing with Deep
Onl
Stanford - Chris Manning
Learning
EECS 498-007 / 598-005 - Deep Learning for
U of Michigan - Justin Onl
Computer Vision Johnson
Jay Alammar’s blog Jay Alammar
Overview

 Learn how to create state of the art models using the Fastai Library
with Part 1 of their course. I suggest taking both the Fastai and Deep
Learning Specialization courses together since one is more focused
on coding while the other is more focused on the theory and math
behind it. While you’re at it, follow Fastai’s course with their book.
 Both Chirs Maning’s and Justin Johnson’s (he used to teach the very
popular CS231n at Stanford) courses are world class and will give
you deep insights into the worlds of Natural Language Processing
(NLP) and computer vision. Be sure to do the assignments since they
have you code algorithms from scratch and give you a solid
foundations to progress further. Both have updated YouTube videos
of their 2021 course.
 The transformer architecture is widely used these days. To get a
solid grap of what they are, be sure to read some of Jay Alammar’s
blogpost on the subject.
Data Engineering & MLOps

Working on machine learning for a company is usually a lot more


involved than just running models inside a Jupyter notebook. The
resources below will get you familiarized with the whole life-cyle of a
machine learning system. You’ll learn about formulating a problem,
ingesting, labeling & cleaning data, building reusable pipelines for each
step, deploying a model online and monitoring it, and much more. You’ll
gain preliminary notions about what it takes to put a model in production.
As the field is maturing, knowing about these steps isn’t optional anymore
for anyone doing machine learning unless you’re only doing R&D.

Topics covered:

Resources Source

Full Stack Deep Learning UC Berkeley


Made With ML Made With ML
Machine Learning Engineering for Production (MLOps)
Deeplearning.ai
Specialization

Machine Learning Engineering Andriy Burkov

 Learn how to create experiment management scripts, unit tests,


labelling, linting scripts, continuous integration/continuous
development with CircleCI, model versioning, Docker and web
deployment with the Full Stack Deep Learning course. The labs
walk you through how to build a fully fledged hand writting text
recognizer using Pytorch.
 Design an ML production system end-to-end with Deeplearning.ai’s
Machine Learning Engineering for Production (MLOps)
specialization.
 Read Goku Mohandas’ multi-part blog series/course on deploying
machine learning models in an automated, reproducible, and
auditable manner.
 Complement this course with Andriy’s amazing Machine Learning
Engineering book that will teach you about the whole life cycle of a
machine learning project.
 Go back to some of the models you have built for your projects and
deploy them!
Optional Courses

The following are courses should be taken depending on the outcome you
want to achieve as a data scientist.

Resources Source

Practical Deep Learning for Coders - Part 2 U of San Francisco On


CS229 - Machine Learning Standford - Andrew Ng O
SQL Mode Analytics C

 Learn to rebuild some Pytorch modules as well as part of the Fastai


library from scratch with Part 2 of the course. This is also a great
lecture in API design and software engineering.
 If you wish to specialize in machine learning more so than deep
learning, look no further than Andrew Ng’s famous machine
learning lecture at Stanford.
 If SQL is important for your projects and current/future job, become
an expert with this SQL tutorial.
Extras

In addition to all of the above, I suggest doing the following:

 Subscribe to these newsletters: Andriy Burkov, Deeplearning.ai’s


The Batch, DataScienceWeekly for a constant flow of curated
blogpost to stay up to date in the field.
 Regularly explore Meetup.com to see if there are meetups on topics
you are interested in. Since more meetups are currently happening
online, you have access to meetups across the entire world.
 Attend conferences. One I highly suggest going to is Pycon, even if
that means spending a bit of money to attend and travelling to a host
city. The value you’ll get from it will be worth it in my experience.
It’s a way for you to be inspired by all that is happening in the world
of Python, engineering, and machine learning. Otherwise, you can
get an online only ticket for cheaper.
 Participate in Hackathons. Keep an eye out for these events
happening in your city, or look on meetup.com to find them.
 Actively look for and join communities on Reddit, Discord, and
Slack. For instance, subscribe to Reddit’s /r/learnmarchinelearning
and /r/machinelearning subreddits. Join discord servers to find study
groups so that you’re not learning alone. Fastai has a great
community. Ask questions there, help out when you know the
answer to a thread to help solidify your understanding of a subject.
 Put yourself out there and start writing! Create a personal blog and
write articles about what you learned. Your target audience should
be people in the same situation you were in 6 months / 1 year ago.
 Find a meetup group and ask if you can present a subject you’ve
been working on. This will help your oral presentation skills.

Final Notes
While I update resources found in this curriculum quite regularly, some
will inevitably become outdated. As a rule of thumb, you can be sure to
trust the quality of the following content if you come across their material:

 All new and old courses from Deeplearning.ai


 All computer science / machine learning courses at Stanford Online
 All courses from Fastai and Jeremy Howard specifically
 Andrew Ng for machine learning
 Justin Johnson for computer vision
 Chris Manning for NLP
 All of Andriy Burkov’s content
 StatQuest for statistics/ML explanations
 3Blue1Brown for math

Please feel free to send me any resources, materials, courses that I have not
included that you particularly enjoyed, or to send me a message if you
want to chat about my experience learning this material.

**Disclaimer: I am a freelance teacher at Le Wagon’s data science


bootcamp. That said, they are not paying me to be included here. I decided
to add the bootcamp to the curriculum because of how valuable I think it
is.
https://medium.com/ed-tech-talks/data-science-project-based-learning-afd2bd6f8f11

Data Science Project


Based Learning

Timmy Chan
·
Follow
Published in

Ed-Tech Talks

·
10 min read
·
Mar 1, 2022
173
Data and analytics-enabled industry and business transformation (Cao, 2018)

“H ow can I teach myself data science?” is a common question

those of us transitioning to data science ask ourselves. In essence,


when self-teaching, we’re creating a learning environment, and
embody it both as instructor and learner. When journaling or
blogging about our learning process, data scientists share qualitative
data on learning environments via narratives. This post adds to the
vast torrents of posts on self-teaching data science with guidance
from learning science research — using the science of learning to
inform how one can learn the science of Big Data.

With this in mind, after writing about my positionality and briefly


pondering the ethical side of data science with respect to qualitative
sensibilities, I set out to document the planning phase of
my learning process for Data Science.

How People Learn: Data Science


Borrowing the How People Learn framework from Learning
Sciences, I generated the following guiding questions for this
project:

1. Learner-centered: What I bring to the table before


starting? Since this article is on self-teaching, a reflection
on one’s positionality is key to reflexivity.

2. Knowledge-centered: What do I need to demonstrate


to say I know Data Science? What are the technologies
that need to be used? What are core constructs and
skills in Data Science? What are the inquiry
practices/strategies of reasoning in Data Science?

3. Assessment-centered: How do I demonstrate


mastery, in each particular case? What are ways to
determine high quality, expert work; how do novices see
their own growth?

4. Community: How and where can novices engage in a


community of practice with the experts? Where are the
common forums for Data Scientists to constructively
critique each others’ work, and to collaborate?

How People Learn (Bransford et al., 2000)

Who is Learning?
For introspection on my history as a learner, I practice reflective
writing in the form of a blog. As the learner is always changing — a
habit to practice reflexivity is key to quality research and learning in
general. Though since this blog is published, perhaps one day one of
the readers here might be a trying to teach themselves data science
too.

I earned a master’s in mathematics and my thesis was written using


Python, so a significant amount of data science fundamentals
already exist in my toolkit. My background as a working class first-
generation immigrant climbing through graduate school also gives
me perspective during reflexivity exercises when approaching data.

Reflexivity refers to circular relationships between cause


and effect, especially as embedded in human belief structures.
A reflexive relationship is bidirectional with both the cause and
the effect affecting one another in a relationship in which
neither can be assigned as causes or effects. (Wikipedia)

Trainings in meta-cognition, pedagogy and instruction planning


helps to inform quality documentation of the learning process and
lesson planning. I practice qualitative sensibilities and
methodologies first through working on Learning Sciences research
— this allows for me to practice evaluating analytical techniques in
depth as well as creating context-rich stories from data. This will
certainly influence my approach, as well as what I may choose to
focus on in the learning process.

Data Science Core Competencies


A brief search yields some recent works on a survey of
undergraduate and graduate data science curricula. This list of
competencies is based on 2021 ASEE Virtual Annual Conference
Content Access Proceedings, which in turn is based on the ACM
Data Science Task Force Report.

This gives us a working definition of the core competencies. Bolded


are tools associated with the topic I reordered the list, to prioritize
ethics and qualitative sensibilities as the very first question one
should ponder before diving into Data Science.

1. Data In Context: Teamwork, Economic


Considerations, Ethics, Legality, Intellectual Property,
and Communication.
Note to Mathematicians: For those of us who have
worked on projects in math education research or
transitioned laterally from academia to teaching
positions, then one can be considered well equipped on
these topics. Data privacy rules and compliance
various interactions with the Institutional Review
Board at an university is a type of experience that
transfers.

2. Mathematics and Statistics: calculus, discrete structures


(number theory and abstract algebra), probability,
statistics, linear algebra, real and complex analysis,
topology and optimization. See my notes on these
subjects.
3. Computing Fundamentals: Operating system basics, File
systems, Networks, Compilers/Interpreters, Data
Structures, Algorithms & Complexity Analysis,
Numerical Computing (R, NumPy, SciPy, etc.),
Object-Oriented Programming (Python), Human-
Computer Interaction
Note to Mathematicians: SAGEMath is academic
numerical computing in Python, if you’ve used it, put
that on your resume but do explain it is Python.

4. Data Management, Governance,


Privacy: Acquisition (DAQ), Cleaning,
Compression/Reduction (Lossy vs Lossless),
Transformation and Integration (SQL), Integrity, and
Security

5. Data Visualization: Analysis, Presentation


(Tableau), User-centered design, Interaction Design,
Interface Design and development

6. Machine Learning and AI: Logic-Based vs.


Probability-Based knowledge representation and
reasoning, planning and search strategies, Supervised
Learning, Unsupervised Learning, Mixed Methods, Deep
Learning

7. Data Mining, Big Data: Problems of scale, big data


computing architectures, parallel computing
frameworks, distributed data storage, parallel
programming, cloud computing, proximity
measurement, data preparation, information extraction,
cluster analysis, classification and regression, pattern
mining, outlier detection, time series data, mining web
data, information retrieval.

Assessment and Community

We stand on the shoulder of giants. Joining a community is key to learning. Photo


Credit: Luke Tanis

Since self-teaching is informal, one must join communities to ensure


critical evaluation of one’s work. While mathematical rigor can guide
us to cogent analytical conclusions, one must consider if the
conclusions make sense in context, which can be done via peer
review by other data scientists. Some key communities for Data
Science are ODS (Open Data Science), Kaggle and IBM Data Science
Community. R4DS is another great community, with emphasis on R.
Some more general communities like Reddit and have thriving
programming and data science communities too. And of course,
following some good blogs like
TDS
(Towards Data Science).

Through time, as one’s portfolio grows to include code contributions


to projects, to eventually joining competitions; a novice may
transition to become an expert in those same communities. This
process is exactly Legitimate Peripheral Participation in an informal
learning context.

While knowledge acquisition and self-assessments can be done


using textbooks, and one certainly should collect a library of
textbooks on useful topics, my choice approach is to complement
surveying literature with Inquiry-Based Learning paired with
Project-Based Learning.

Centerpiece: Portfolio as Practicum


Data Science Trajectories (Martinez-Plumed et al., 2021) and Inquiry Based Learning
(Pedaste et al., 2015)

“Data science is necessarily highly


experiential; it is a practiced art and a
developed skill. Students of Data
Science must encounter frequent
project-based, real-world applications
with real data to complement the
foundational algorithms and models.”
(De Veaux et al., 2017)

Storytelling, and communicating about data efficiently with a


narrative that is clear to all stakeholders, require practice. For this
reason, creating a portfolio is key component to a successfully
learning data science. At the core of the Data Science Trajectories, is
an inquiry process. The outer set in the figure for elements of Data
Science Trajectories map neatly onto the orientation and
conceptualization stages of inquiry based learning. Project based
learning is an application of inquiry based learning framework,
where each project models a a small inquiry cycle, or a sub-
component of the cycle.

Components of a Data Science Portfolio:

Included work can be written, visual, or oral. Written work


can include summaries of findings or thorough figure captions.
Visual work can include static or interactive data
visualizations. Oral work can include a recording of a
presentation, a discussion among peers, or a think-aloud
interview (Reinhart et al., 2020).

1. Blog: This is a place for the learner to reflect and share


learning by writing. Storytelling is an underrated (and
writing, arguably, is the most difficult subject to teach).

2. Important Links to unique content: professional social


profiles like LinkedIn, Twitter and Facebook should be
clearly displayed. GitHub account to show version
control and share code, and learn to
use Jupyter notebooks.

3. About: Positionality statement helps other researchers


understand the unique lens one can bring to data science
projects

4. Projects: What motivated the project? What was the


outcome, both learning and product? This is a place to
document growth as well.

Some Data Science Portfolio Project Ideas

Most of the following ideas are from a recent paper on the merits of
portfolios as a pedagogical instrument in Data Science curriculum
design (Nolan & Stoudt, 2021). I have added a couple here myself
too.
 Write a personal statement about oneself as a data
scientist. Include a description of the researcher’s lenses,
potential influences on the research, the research-project
context and an explanation as to how, where, when and
in what way these might, may, or have, influenced the
research process (Darwin Holmes, 2020).

 Write a survey paper on the process of inquiry and


methodologies in Data Science

 Write a blog post about the process of learning and


exploring in data science.

 Collect data for a week and draw a Dear Data postcard.

 Choose a data set. Describe the ideal data needed to


answer a question of interest. Participate in Tidy
Tuesday.

 Exploratory data analysis (EDA). Write a blog post


about the exploration process. Write and revise captions
and/or alt-text for visualizations.

 Preliminary analysis. Keep a data diary and write an


accompanying blog post.

 Get and Give feedback on analysis. Create a single


visualization that reveals a finding to the audience
quickly. Participate in peer code review.

 Outline report. Link visualizations together to tell one


coherent story, that is, storyboard.
 Read (and/or Write), analyze, and critique
the structure of a formal, data-driven article.

 Use a new tool to redo an analysis, and write to contrast


with your previous tool

 Write a blog post about a method.

 Write a blog post about your findings.

 Read (and/or Write), analyze, and critique the ending of


a formal, data-driven article.

 Practice writing an abstract. Explain your work in


plain language using xkcd’s Simple Writer.

Here in this article I have described my plan for learning Data


Science, along with research-informed common core concepts and
project ideas. Springboard has a great guide on starting a data
science portfolio as well. The projects are each a component of the
data science inquiry process, and one can choose a data science
question, and generate many posts and artifacts from one project.
Organizing all the projects into a way that is aesthetically pleasing
and easy to navigate is yet another practice in User Experience.

In the next article, I’ll explore dependencies between data science


core competency with an intention towards visualizing prerequisites
(different from professional progression, which is described in
this article by
Sequoia
). I am tinkering with a web scrapping script to gather data from college bulletins, with the
goal to create a visualization in the form of flowcharts.
Timmy Chan
is a mathematician actively seeking a data scientist role.

LinkedIn — Twitter — Facebook

Works Cited
Aho, T., Sievi-Korte, O., Kilamo, T., Yaman, S., & Mikkonen, T.
(2020). Demystifying Data Science Projects: A Look on the People
and Process of Data Science Today. In M. Morisio, M. Torchiano, &
A. Jedlitschka (Eds.), Product-Focused Software Process
Improvement (Vol. 12562, pp. 153–167). Springer International
Publishing. https://doi.org/10.1007/978-3-030-64148-1_10

Al Sarkhi, A., & Talburt, J. (2019). The Journal of Computing


Sciences in Colleges Papers of the 17th Annual CCSC Mid-South
Conference. https://doi.org/10.13140/RG.2.2.29810.12481

Brunsdon, C., & Comber, A. (2021). Opening practice: Supporting


reproducibility and critical spatial data science. Journal of
Geographical Systems, 23(4), 477–
496. https://doi.org/10.1007/s10109-020-00334-2

Cao, L. (2018). Data Science: A Comprehensive Overview. ACM


Computing Surveys, 50(3), 1–42. https://doi.org/10.1145/3076253

Darwin Holmes, A. G. (2020). Researcher Positionality — A


Consideration of Its Influence and Place in Qualitative Research — A
New Researcher Guide. Shanlax International Journal of
Education, 8(4), 1–
10. https://doi.org/10.34293/education.v8i4.3232

De Veaux, R. D., Agarwal, M., Averett, M., Baumer, B. S., Bray, A.,
Bressoud, T. C., Bryant, L., Cheng, L. Z., Francis, A., Gould, R., Kim,
A. Y., Kretchmar, M., Lu, Q., Moskol, A., Nolan, D., Pelayo, R.,
Raleigh, S., Sethi, R. J., Sondjaja, M., … Ye, P. (2017). Curriculum
Guidelines for Undergraduate Programs in Data Science. Annual
Review of Statistics and Its Application, 4(1), 15–
30. https://doi.org/10.1146/annurev-statistics-060116-053930

Demchenko, Y., Belloum, A., Los, W., Wiktorski, T., Manieri, A.,
Brocks, H., Becker, J., Heutelbeck, D., Hemmje, M., & Brewer, S.
(2016). EDISON Data Science Framework: A Foundation for
Building Data Science Profession for Research and Industry. 2016
IEEE International Conference on Cloud Computing Technology
and Science (CloudCom), 620–
626. https://doi.org/10.1109/CloudCom.2016.0107

DEVELOPING A MASTER’S DEGREE PROGRAM IN DATA


SCIENCE. (2021). Issues In Information
Systems. https://doi.org/10.48009/3_iis_2021_58-68

Feelders, A., Daniels, H., & Holsheimer, M. (2000). Methodological


and practical aspects of data mining. Information &
Management, 37(5), 271–281. https://doi.org/10.1016/S0378-
7206(99)00051-8
Kross, S., & Guo, P. J. (2019). Practitioners Teaching Data Science in
Industry and Academia: Expectations, Workflows, and
Challenges. Proceedings of the 2019 CHI Conference on Human
Factors in Computing Systems, 1–
14. https://doi.org/10.1145/3290605.3300493

Kross, S., Peng, R. D., Caffo, B. S., Gooding, I., & Leek, J. T.
(2017). The democratization of data science education [Preprint].
PeerJ Preprints. https://doi.org/10.7287/peerj.preprints.3195v1

Li, D., Milonas, E., & Zhang, Q. (2021). Content Analysis of Data
Science Graduate Programs in the U.S. 2021 ASEE Virtual Annual
Conference Content Access Proceedings,
36841. https://doi.org/10.18260/1-2--36841

Martinez, I., Viles, E., & Olaizola, I. G. (2021). Data Science


Methodologies: Current Challenges and Future Approaches. Big
Data Research, 24,
100183. https://doi.org/10.1016/j.bdr.2020.100183

Martinez-Plumed, F., Contreras-Ochando, L., Ferri, C., Hernandez-


Orallo, J., Kull, M., Lachiche, N., Ramirez-Quintana, M. J., & Flach,
P. (2021). CRISP-DM Twenty Years Later: From Data Mining
Processes to Data Science Trajectories. IEEE Transactions on
Knowledge and Data Engineering, 33(8), 3048–
3061. https://doi.org/10.1109/TKDE.2019.2962680

Milonas, E., Li, D., & Zhang, Q. (2021). Content Analysis of Two-
year and Four-year Data Science Programs in the United
States. 2021 ASEE Virtual Annual Conference Content Access
Proceedings, 36842. https://doi.org/10.18260/1-2--36842

National Research Council. 2000. How People Learn: Brain, Mind,


Experience, and School: Expanded Edition. Washington, DC: The
National Academies Press.https://doi.org/10.17226/9853.

Nolan, D., & Stoudt, S. (2021). The Promise of Portfolios: Training


Modern Data Scientists. Harvard Data Science
Review. https://doi.org/10.1162/99608f92.3c097160

Pedaste, M., Mäeots, M., Siiman, L., Jong, T., Riesen, S., Kamp, E.,
Manoli, C., Zacharia, Z., & Tsourlidaki, E. (2015). Phases of inquiry-
based learning: Definitions and the inquiry cycle. Educational
Research Review, 14. https://doi.org/10.1016/j.edurev.2015.02.003

Tang, R., & Sae-Lim, W. (2016). Data science programs in U.S.


higher education: An exploratory content analysis of program
description, curriculum structure, and course focus. Education for
Information, 32(3), 269–290. https://doi.org/10.3233/EFI-160977

Data Science

Learning

Projects

Portfolio

You might also like