Note: Scroll to the bottom and read the "Things to Keep in Mind" section. It contains information about how to approach the list that is just as important as the list itself.
Note: This Guide is heavier on web development than the other, if you want less practical web development but more rigorous coverage of computer science you might want to check out Guide: Computer Science and Web Development - comprehensive path as well and pick the one that most meets your goals.
Note: @MARKJ78 has ported the entire list into a Trello board you can clone to keep track of your progress you can find the Trello board here.
The only things that you need to know are how to use Git and GitHub. Here are some resources to learn about them:
Note: Just pick one of the courses below to learn the basics. You will learn a lot more once you get started!
There WILL be math. And, it's important. If the thought frightens you, or bores you, or has you thinking "this isn't for me", head to Khan Academy right now, sign up, and start devoting 30 minutes a day. This is an investment that will pay off. I'm not making this up.
The list - work down it in order
Tier 1 - get started
Tier 2 - strengthen your foundation
Tier 3 - build on the foundation
Tier 4 - polish the rough edges
- Project: Read up on Travis CI - try to incorporate it into any project in active development or which you intend to keep running on the web
- Course: Linear Algebra - Foundations to Frontiers
- Project: Clone Twitter - yes, all the functionality
- Course: Computer Graphics
- Course: Artificial Intelligence
- Course: Machine Learning
- Project: Design, implement, test, and deploy a game that is playable on the web, using the technologies of your choice. The only criteria are that it be playable online, and that it inculde a substantial AI component.
- Project: Create a node module that will convert markdown to properly formatted html
- Project: Create an npm module that bootstraps a fullstack application, with Node.js on the backend, and the SPA library/framework of your choice on the frontend. Include a full test suite and comprehensive build processes. Publish it to NPM.
- Project: Complete all problems from all rounds of the Google Code Jam 2016 - scroll down to the appropriate section
- Project: Clone Learn Harmony
- Project: Clone Slack - the functionality should be complete to the point that one user can create a room, invite other users, and all users of that room can real-time chat. The room should be secure and inaccessible to anyone but those invited.
Bookmarks you should have
surge.sh - deploy your frontend projects here (or use github pages)
Heroku - deploy your fullstack projects here (or hyperdev)
Firebase or mLab - database hosting
GitHub - store your code here
Material Design - lean on this when you need a structure for creating a minimalistic but awesome looking site
Material Palette - for selecting color schemes
Wirify - for quickly turning a web page into a wireframe so you can see the big picture instead of all the graphics
Things to keep in mind
- have git commits every week, most of the days of the week
- try to get in one of @tropicalchancer's cohorts - be active once you're in
- code in your own editor, if you don't know where to start start with Brackets
For each item you should:
- take notes, on a blog, in markdown, wherever, somewhere - not about what you read, or about what the instructor said - about what you learned
- build something - even if it's just a 20 line function that computes something you find interesting
- code in your own editor - if you don't know which to pick, start with Brackets
- if you build something, document it and test it as appropriate
- do the exercises, build the projects - fully, not some scaled down halfassery
For four (or more) projects of your choosing
- Seek 1-3 other developers to collaborate on the project
- Coordinate with the team to complete the project
- Build the project out to a full production quality application
- Invite others who are not associated with the team to rigorously test the final product.
- Resolve any legitimate issues found
Once per month - do two or more of the following:
If you need a breather from an item, do one of these, then get back to it
- complete a project from FCC that isn't included in this list
- pick a pet web development project you can code in a week and complete it
- write a guide for the FCC wiki or create a video tutorial and post it to YouTube
- pick an open source project from Code Triage and contribute to fixing an open issue
- visit the FCC forum and pick a couple of the toughest questions, that people are having trouble getting help with, and help them
- code a flash cards application, for jotting quick notes you can use to quiz yourself later
OpenStax - Open Source textbooks on a variety of University level topics, check here if you want a reference math or physics textbook
Note: Don't ask me how long this will take you. I do not know your aptitude, determination, or propensity for flitting off to check Facebook every 5 minutes, nor do I know how much time you have available to devote daily. Begin working through it and gauge for yourself the speed with which you progress. I promise you, if you just start from the top and work your way down, you won't accidentally learn something useless while you figure out your learning pace.
Note: I took some care to ensure that this list contains only resources which are legitimately free. You may need to give Heroku a credit card if you host all your projects there. If you don't want to /can't do that, just deploy locally, deploy to heroku, and then delete the app from heroku once you've moved on to a different project (that won't work for FCC certification because it needs to be accessible to meet the guidelines, but for the purposes of this list, once you're done with a project, I don't see a lot of value in persisting it on the web while you're working on something else --- UNTIL, you need to polish your portfolio for a job application, then you would want to have your best projects running online).
Although I took heavy inspiration from many resources when creating this guide, none of it is a cut and paste path from somewhere else. Often, I substituted courses (especially in the case of Coursera) to ensure that the entire course was available for free and required no purchases of any kind. Where possible, I tried to align projects to reinforce prior learning.