Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/P1xt/p1xt-guides

Programming curricula
https://github.com/P1xt/p1xt-guides

computer-science game-development programming software-engineering web-development

Last synced: about 2 months ago
JSON representation

Programming curricula

Awesome Lists containing this project

README

        

# 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](./faq.md) and note that there are [Tier Project Ideas](./project_ideas.md) to help you select projects.

**Note:** Prior guides have been deprecated but are still available [here](./deprecated/README.md)

## 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.

- [tier X - Math Prep](#tier-x---math-prep)
- [tier X - Programming Prep Prep](#tier-x---programming-prep-prep)
- [tier 0 - Programming Prep](#tier-0---web-development---fullstack-bootcamp---app-academy-open)
- [tier 1 - Getting Started](#tier-1---getting-started)

### 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.

- [tier 2 - Develop More Expertise](#tier-2---develop-more-expertise)
- [tier 3 - Add More Rigor](#tier-3---add-more-rigor)

### 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.

- [tier 4 - Polish the Rough Edges](#tier-4---polish-the-rough-edges)
- [tier 5 - Specialize](#tier-5---specialize)

### 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](./specializations/app_academy_open.md) 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.

- [Web Development - Fullstack Bootcamp - App Academy Open](./specializations/app_academy_open.md) (recommended, but not required, first specialization)
- [Web Development - Deep Dive Into Modern Web Development - Full Stack Open 2020](./specializations/full_stack_open_2020.md)
- [Web Development - Fullstack Bootcamp - The Odin Project - Full Stack Ruby on Rails](./specializations/the_odin_project_ruby.md)
- [Web Development - Fullstack Bootcamp - The Odin Project - Full Stack JavaScript](./specializations/the_odin_project_javascript.md)
- [Web Development - Frontend](./specializations/frontend.md)
- [Web Development - Backend](./specializations/backend.md)
- [Mobile App Development](./specializations/mobile.md)
- [Game Development](./specializations/games.md)
- [Open Source Contributions](./specializations/open_source.md)

### 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.

- [Computer Science - Algorithms](./specializations/algorithms.md) -Suggested for Tier 2 or later
- [Computer Science - Advanced Algorithms](./specializations/advanced-algorithms.md) - Computer Science - Algorithms is a pre-requisite
- [Computer Science - Intensive](./specializations/computer_science.md) - Suggested for Tier 4 or later
- [Data Science I](./specializations/data-science-i.md) - Suggested for Tier 2 or later
- [Data Science II](./specializations/data-science-ii.md) - Data Science I is a pre-requisite

### 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](./project_ideas.md) 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](https://www.khanacademy.org/math/algebra) | | |
| [Algebra II](https://www.khanacademy.org/math/algebra2) | | |
| [Trigonometry](https://www.khanacademy.org/math/trigonometry) | | |
| [Precalculus](https://www.khanacademy.org/math/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](https://www.khanacademy.org/computing/computer-programming/programming) | | |
| [Intro to HTML/CSS: Making webpages](https://www.khanacademy.org/computing/computer-programming/html-css) | | |
| [Intro to SQL: Querying and managing data](https://www.khanacademy.org/computing/computer-programming/sql) | | |
| [Advanced JS: Games & Visualizations](https://www.khanacademy.org/computing/computer-programming/programming-games-visualizations) | | |
| [HTML/JS: Making webpages interactive](https://www.khanacademy.org/computing/computer-programming/html-css-js) | | |
| **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](https://open.appacademy.io/) free online Fullstack Bootcamp. See [FAQ](./faq.md) 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](https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x) | | |
| [How to Learn Math: For Students](https://www.edx.org/course/how-to-learn-math-for-students-2) | | |
| [CS50's Web Programming with Python and JavaScript](https://www.edx.org/course/cs50s-web-programming-with-python-and-javascript) | | |
| Do this: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/) (more rigorous) | | |
| Or, this: [Khan Academy Calculus I](https://www.khanacademy.org/math/calculus-1) and [Khan Academy Calculus II](https://www.khanacademy.org/math/calculus-2) (a more gentle introduction) | | |
| [Algorithms](https://www.khanacademy.org/computing/computer-science/algorithms) | | |
| [Software Debugging](https://www.udacity.com/course/software-debugging--cs259) | | |
| [Software Testing](https://www.udacity.com/course/software-testing--cs258) | | |
| [CS50's Mobile App Development with React Native](https://www.edx.org/course/cs50s-mobile-app-development-with-react-native) | | |
| **Reading** | **Status** | **Evidence** |
| [MDN HTML - Advanced topics](https://developer.mozilla.org/en-US/docs/Web/HTML#Advanced_topics) | | |
| [MDN CSS - Reference - Key Concepts](https://developer.mozilla.org/en-US/docs/Web/CSS#Reference) | | |
| [MDN JavaScript - Tutorials - JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript#JavaScript_guide) | | |
| [You Don't Know JS: Get Started](https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed/get-started) | | |
| [You Don't Know JS: Scope & Closures](https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed/scope-closures) | | |
| [You Don't Know JS: this & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/this%20&%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes) | | |
| **Practice** | **Status** | **Evidence** |
| Complete all Classic Puzzles - Easy on [CodinGame](https://www.codingame.com/) | | |
| Complete [Google Kick Start 2018](https://codingcompetitions.withgoogle.com/kickstart/archive/2018) | | |
| Tier Programming Project | | |
| Tier Programming Project | | |
| **Specialization** | **Status** | **Evidence** |
| Complete a [Specialization](#specializations) - 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](https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-fall-2010/) | | |
| [Introduction to Computer Science and Programming in Python](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) | | |
| [Introduction to Computational Thinking and Data Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0002-introduction-to-computational-thinking-and-data-science-fall-2016/) | | |
| [CS50's Introduction to Artificial Intelligence with Python](https://www.edx.org/course/cs50s-introduction-to-artificial-intelligence-with-python) | | |
| [Software Construction](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-software-construction-spring-2016/) | | |
| [Intro to Algorithms](https://www.udacity.com/course/intro-to-algorithms--cs215) | | |
| [Introduction to Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/) | | |
| **Reading** | **Status** | **Evidence** |
| [MDN JavaScript - Tutorials - Advanced](https://developer.mozilla.org/en-US/docs/Web/JavaScript#Advanced) | | |
| [MDN HTTP - Tutorials](https://developer.mozilla.org/en-US/docs/Web/HTTP#Tutorials) | | |
| [MDN Web Components](https://developer.mozilla.org/en-US/docs/Web/Web_components) | | |
| [You Don't Know JS: Types & Grammar](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/types%20&%20grammar/README.md#you-dont-know-js-types--grammar) | | |
| [You Don't Know JS: Async & Performance](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/async%20&%20performance/README.md#you-dont-know-js-async--performance) | | |
| [You Don't Know JS: ES6 & Beyond](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/es6%20&%20beyond/README.md#you-dont-know-js-es6--beyond) | | |
| [JavaScript AllongΓ©, the "Six" Edition](https://leanpub.com/javascriptallongesix) | | |
| [D3 Tips and Tricks v3.x](https://leanpub.com/D3-Tips-and-Tricks/read#leanpub-auto-acknowledgements) | | |
| **Practice** | **Status** | **Evidence** |
| Complete all Classic Puzzles - Medium on [CodinGame](https://www.codingame.com/) | | |
| Complete all ES6 Katas [here](http://es6katas.org/) | | |
| Complete [Google Kick Start 2017](https://codingcompetitions.withgoogle.com/kickstart/archive/2017) | | |
| Complete [Google Code Jam 2018](https://codingcompetitions.withgoogle.com/codejam/archive/2018) | | |
| Complete [Meta Hacker Cup 2017](https://www.facebook.com/codingcompetitions/hacker-cup/2017) | | |
| Tier Programming Project | | |
| Tier Programming Project | | |
| **Specialization** | **Status** | **Evidence** |
| Complete a [Specialization](#specializations) - 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](https://www.udacity.com/course/software-architecture-design--ud821) | | |
| [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/) (more rigorous) or [Khan Academy Multivariable Calculus](https://www.khanacademy.org/math/multivariable-calculus) (a more gentle introduction) | | |
| [Structure and Interpretation of Computer Programs](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/) | | |
| [Design and Analysis of Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015/) | | |
| [Linear Algebra](https://ocw.mit.edu/courses/mathematics/18-06sc-linear-algebra-fall-2011/) | | |
| [Computability, Complexity & Algorithms](https://www.udacity.com/course/computability-complexity-algorithms--ud061) | | |
| [Artificial Intelligence](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-034-artificial-intelligence-fall-2010/index.htm) | | |
| **Reading** | **Status** | **Evidence** |
| Official docs for [Angular](https://angular.io/docs), [React](https://reactjs.org/docs/getting-started.html), or [Vue](https://vuejs.org/v2/guide/) | | |
| [Jest Official Docs](https://jestjs.io/) | | |
| [JavaScript Design Patterns](https://addyosmani.com/resources/essentialjsdesignpatterns/book/) | | |
| [Understanding ECMAScript 6](https://leanpub.com/understandinges6/read) | | |
| [Professor Frisby's Mostly Adequate Guide to Functional Programming](https://mostly-adequate.gitbooks.io/mostly-adequate-guide/) | | |
| [Functional Light JS](https://github.com/getify/Functional-Light-JS) | | |
| [Essential TypeScript](https://leanpub.com/essentialtypescript/read) | | |
| **Practice** | **Status** | **Evidence** |
| Complete all Classic Puzzles - Hard on [CodinGame](https://www.codingame.com/) | | |
| Write the CSS Necessary to create your own 12 column based grid layout - see [here](http://960.gs/) for an example | | |
| Study [The official Sass docs](https://sass-lang.com/) 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](https://www.hackerearth.com/practice/) | | |
| Complete [Google Kick Start 2016](https://codingcompetitions.withgoogle.com/kickstart/archive/2016) | | |
| Complete [Google Code Jam 2017](https://codingcompetitions.withgoogle.com/codejam/archive/2017) | | |
| Complete [Meta Hacker Cup 2016](https://www.facebook.com/codingcompetitions/hacker-cup/2016) | | |
| Tier Programming Project | | |
| Tier Programming Project | | |
| **Specialization** | **Status** | **Evidence** |
| Complete a [Specialization](#specializations) - 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](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-004-computation-structures-spring-2009/index.htm) | | |
| [Intro to Relational Databases](https://www.udacity.com/course/intro-to-relational-databases--ud197) | | |
| [Differential Equations](https://ocw.mit.edu/courses/mathematics/18-03sc-differential-equations-fall-2011/) | | |
| [Database Systems Concepts & Design](https://www.udacity.com/course/database-systems-concepts-design--ud150) | | |
| [Computer System Engineering](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-033-computer-system-engineering-spring-2018/) | | |
| [Performance Engineering of Software Systems](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-172-performance-engineering-of-software-systems-fall-2018/) | | |
| [Mining Massive Datasets](https://online.stanford.edu/courses/soe-ycs0007-mining-massive-data-sets) | | |
| [Compilers](https://online.stanford.edu/courses/soe-ycscs1-compilers) | | |
| **Reading** | **Status** | **Evidence** |
| [How to Design Programs](https://htdp.org/) | | |
| [97 Things Every Programmer Should Know - Extended](https://leanpub.com/97-Things-Every-Programmer-Should-Know-Extended) | | |
| [Think Java - How to Think Like a Computer Scientist](http://greenteapress.com/wp/think-java/) | | |
| [Open Data Structures](http://www.aupress.ca/books/120226/ebook/99Z_Morin_2013-Open_Data_Structures.pdf) | | |
| [Node.js Docs](https://nodejs.org/en/docs/) | | |
| **Practice** | **Status** | **Evidence** |
| Complete all Classic Puzzles - Very Hard on [CodinGame](https://www.codingame.com/) | | |
| Study [The Google Android Developer Guide](https://developer.android.com/guide) and build the Android App of your choice | | |
| Complete [Google Kick Start 2015](https://codingcompetitions.withgoogle.com/kickstart/archive/2015) | | |
| Complete [Google Code Jam 2016](https://codingcompetitions.withgoogle.com/codejam/archive/2016) | | |
| Complete [Meta Hacker Cup 2015](https://www.facebook.com/codingcompetitions/hacker-cup/2015) | | |
| Tier Programming Project | | |
| Tier Programming Project | | |
| **Specialization** | **Status** | **Evidence** |
| Complete a [Specialization](#specializations) - 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](#advanced-specializations), 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](#specializations) | | |
| Complete a [Specialization](#specializations) | | |
| Complete a [Specialization](#specializations) | | |
| Complete a [Specialization](#specializations) | | |
| Complete a [Specialization](#specializations) | | |
| **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. | | |