/p1xt-guides

Programming curricula

MIT LicenseMIT

Computer Science and Programming - Version 4.0

NOTE: I will be doing a major overhaul to Version 5.0 this summer. Over the past year, a number of resources I once relied on have sundowned and I am in the process of revamping from scratch to include new material (and perhaps change the format a bit to make progression a big clearer.)

Please read the FAQ and note that there are Tier Project Ideas to help you select projects.

Note: Prior guides have been deprecated but are still available here

Table of Contents

Junior developer

If you want to develop the skills necessary to be 'job ready' for a junior developer position - complete tier X, 0, and 1.

Intermediate developer

If you want to develop the skills necessary to move beyond junior to intermediate developer - once you've finished tiers X, 0 and 1, proceed to complete tiers 2 and 3.

Advanced developer

If you want to develop the skills necessary to move beyond intermediate to advanced developer - once you've finished tiers X, 0, 1, 2, and 3, proceed to complete tiers 4 and 5.

Specializations

Each tier has a 'specialization' based capstone which involves further study and extensive practice in an area of your choosing. Web Development - Fullstack Bootcamp - App Academy Open is highly recommended (but not required) as the first specialization. Beyond that, feel free to complete a different specialization each tier, or dive deeply into a specialization by selecting it during multiple tiers to explore it in greater detail and further develop your specialized profile.

Advanced Specializations

The following specializations rely on knowledge gained in earlier tiers. Additionally, they are typically 'more difficult' or will require more work than those listed above.

Tier Programming Projects

Both tiers and specializations will require 'Tier Programming Projects', you are free to select any programming project you want. To help combat the 'but I don't know what I want' roadblock, Tier Programming Project Ideas lists a variety of ideas.

Note: In specializations, the Tier Programming Projects might have extra criteria (such as 'if you're doing a mobile app development specialization your projects must be mobile apps')

Junior developer

Tier X - Math Prep

Math will be relevant throughout the guide. Begin it as you start the guide, and incrementally work through it alongside the guide. (You need not finish this before moving to tier 0, or tier 1, but be actively working on it alongside them.)

Courses Status Evidence
Algebra I
Algebra II
Trigonometry
Precalculus

Tier X - Programming Prep Prep

A very gentle introduction, complete if feel you would benefit from it, skip if you'd rather dive right into tier 0

Courses Status Evidence
Intro to JS: Drawing & Animation
Intro to HTML/CSS: Making webpages
Intro to SQL: Querying and managing data
Advanced JS: Games & Visualizations
HTML/JS: Making webpages interactive
Capstone Status Evidence
Create a website highlighting what you learned and built during this tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Tier 0 - Web Development - Fullstack Bootcamp - App Academy Open

Complete the App Academy Open free online Fullstack Bootcamp. See FAQ for alternatives.

Courses Status Evidence
Welcome To Coding
Full Stack Online - Intro to Programming
Full Stack Online - Software Engineering Foundations
Full Stack Online - Ruby
Full Stack Online - SQL
Full Stack Online - Rails
Full Stack Online - JavaScript
Full Stack Online - React
Full Stack Online - Full Stack Project
Full Stack Online - MERN Stack Curriculum
Full Stack Online - Job Search
Full Stack Online - Docker
Full Stack Online - GraphQL
Full Stack Online - Data Structures and Algorithms
Capstone Status Evidence
Create a website highlighting what you learned and built during this tier. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.

Tier 1 - Getting Started

Deepen understanding of Web Development and begin learning Computer Science topics.

If you didn't do App Academy Open in Tier 0, please consider doing it as your Specialization in this Tier.

Courses Status Evidence
CS50's Introduction to Computer Science
How to Learn Math: For Students
CS50's Web Programming with Python and JavaScript
Do this: Single Variable Calculus (more rigorous)
Or, this: Khan Academy Calculus I and Khan Academy Calculus II (a more gentle introduction)
Algorithms
Software Debugging
Software Testing
CS50's Mobile App Development with React Native
Reading Status Evidence
MDN HTML - Advanced topics
MDN CSS - Reference - Key Concepts
MDN JavaScript - Tutorials - JavaScript Guide
You Don't Know JS: Get Started
You Don't Know JS: Scope & Closures
You Don't Know JS: this & Object Prototypes
Practice Status Evidence
Complete all Classic Puzzles - Easy on CodinGame
Complete Google Kick Start 2018
Tier Programming Project
Tier Programming Project
Specialization Status Evidence
Complete a Specialization - note: you may elect to complete another round of a specialization you selected in a prior tier, or branch out and complete a different specialization.



Intermediate Developer

Tier 2 - Develop More Expertise

Dive deeper into the Computer Science topics which will prove useful throughout all programming

Courses Status Evidence
Mathematics for Computer Science
Introduction to Computer Science and Programming in Python
Introduction to Computational Thinking and Data Science
CS50's Introduction to Artificial Intelligence with Python
Software Construction
Intro to Algorithms
Introduction to Algorithms
Reading Status Evidence
MDN JavaScript - Tutorials - Advanced
MDN HTTP - Tutorials
MDN Web Components
You Don't Know JS: Types & Grammar
You Don't Know JS: Async & Performance
You Don't Know JS: ES6 & Beyond
JavaScript Allongé, the "Six" Edition
D3 Tips and Tricks v3.x
Practice Status Evidence
Complete all Classic Puzzles - Medium on CodinGame
Complete all ES6 Katas here
Complete Google Kick Start 2017
Complete Google Code Jam 2018
Complete Meta Hacker Cup 2017
Tier Programming Project
Tier Programming Project
Specialization Status Evidence
Complete a Specialization - note: you may elect to complete another round of a specialization you selected in a prior tier, or branch out and complete a different specialization

Tier 3 - Add More Rigor

Dive deeper yet, exploring algorithms and different programming paradigms

Courses Status Evidence
Software Architecture & Design
Multivariable Calculus (more rigorous) or Khan Academy Multivariable Calculus (a more gentle introduction)
Structure and Interpretation of Computer Programs
Design and Analysis of Algorithms
Linear Algebra
Computability, Complexity & Algorithms
Artificial Intelligence
Reading Status Evidence
Official docs for Angular, React, or Vue
Jest Official Docs
JavaScript Design Patterns
Understanding ECMAScript 6
Professor Frisby's Mostly Adequate Guide to Functional Programming
Functional Light JS
Essential TypeScript
Practice Status Evidence
Complete all Classic Puzzles - Hard on CodinGame
Write the CSS Necessary to create your own 12 column based grid layout - see here for an example
Study The official Sass docs and convert your 12 column based grid layout to Sass
Complete All Tracks (Basic Programming, Data Structures, Algorithms, Math, Machine Learning, and Python) on HackerEarth
Complete Google Kick Start 2016
Complete Google Code Jam 2017
Complete Meta Hacker Cup 2016
Tier Programming Project
Tier Programming Project
Specialization Status Evidence
Complete a Specialization - note: you may elect to complete another round of a specialization you selected in a prior tier, or branch out and complete a different specialization



Advanced Developer

Tier 4 - Polish the Rough Edges

Wrap up by taking a look at some specific areas of computing to complete a breadth of knowledge that can be leveraged regardless of specialty

Courses Status Evidence
Computation Structures
Intro to Relational Databases
Differential Equations
Database Systems Concepts & Design
Computer System Engineering
Performance Engineering of Software Systems
Mining Massive Datasets
Compilers
Reading Status Evidence
How to Design Programs
97 Things Every Programmer Should Know - Extended
Think Java - How to Think Like a Computer Scientist
Open Data Structures
Node.js Docs
Practice Status Evidence
Complete all Classic Puzzles - Very Hard on CodinGame
Study The Google Android Developer Guide and build the Android App of your choice
Complete Google Kick Start 2015
Complete Google Code Jam 2016
Complete Meta Hacker Cup 2015
Tier Programming Project
Tier Programming Project
Specialization Status Evidence
Complete a Specialization - note: you may elect to complete another round of a specialization you selected in a prior tier, or branch out and complete a different specialization

Tier 5 - Specialize

Wrap up by diving more deeply into your specialization(s). If you haven't already done an Advanced Specialization, strongly consider including it in this tier. Beyond that, feel free to laser focus on one specialization, practicing more in that area, or branch out and develop expertise across multiple specializations.

Practice Status Evidence
Complete a Specialization
Complete a Specialization
Complete a Specialization
Complete a Specialization
Complete a Specialization
Capstone Status Evidence
Create a website highlighting what you learned and built during this specialization. Use this as an opportunity to create a portfolio of your projects, notes, blog posts, etc.