I've created this git repository to document the development of my skills and knowledge in web development and build a strong foundational base in the relevant computer science subjects
The greatest thing about the internet is the democratisation of information. Like no other time in history, more people from more backgrounds and circumstances have access to the resources and information that they wouldn't have previously. Through hardwork, dedication and coffee, I hope to be a shining example of what can be accomplished with a laptop and some free-time.
This project exists mainly to demonstrate to others my self-learning process. I've included the notes and projects for anybody to look at and get an idea of how I have progressed and developed myself as a developer.
Feel free to follow the Trello board I am using to document my progress and get an idea of how long each task took in relation to the pomodoro measurement!
Also here you can find the path I have been following commencing on the 23rd December 2016.
Web Development with Computer Science Foundations - comprehensive path by @P1xt.
- Book: You Don't Know JS: Up & Going
- Book: You Don't Know JS: Scope & Closures
- Book: You Don't Know JS: this & Object Prototype
- Course: Learn to Code HTML & CSS
- Project: Portfolio from the frontend section of FCC
- Course: Introduction to Computer Science - CS50
- Book: You Don't Know JS: Types & Grammar
- Book: You Don't Know JS: Async & Performance
- Book: You Don't Know JS: ES6 & Beyond
- Course: Learn to Code Advanced HTML & CSS
- Project: Clone this online resume template
- Article: Read Project Specification Documents and get in the habit of including every bit of information it details that makes sense for a project in the README.md or other supporting documentation for your projects
- Course: Effective Thinking Through Mathematics
- Book: Setting Up ES6
- Book: JavaScript Allongé, the "Six" Edition
- Course: Getting Sassy with CSS
- Project: Build an online Towers of Hanoi solver that accepts a tower height between 5 and 10, and then displays a graphical (animated) solution, iteratively moving each piece until the puzzle is solved
- Project: Pick a template from here and create a new template with it as your inspiration (do not use it's assets)
- Course: How to Code: Systematic Program Design - Part 1
- Course: How to Code: Systematic Program Design - Part 2
- Course: How to Code: Systematic Program Design - Part 3
- Book: DOM Enlightenment
- Project: Simon Game from the frontend section of FCC
- Project: Read up on Gulp - try to incorporate it into your workflow if you aren't using it regularly already
- Project: Read up on Mocha - try to use it to test your JavaScript, every chance you get
- Course: Introduction to MongoDB using the MEAN Stack on edX
- The FCC Backend Certification - all projects, ignore the tutorials and just read the official docs if you want.
- Course: Calculus One
- Book: JavaScript Design Patterns
- Project: Clone this landing page
- Course: Mathematics for Computer Science
- Project: Build the Pomodoro project from the FCC frontend curriculum
- Article: Read Algorithms and Flowcharts and then familiarize yourself with Pencil ... start flowcharting complex portions of your code logic as part of your documentation
- Project: Clone the front page of this website modifying it to highlight a different product or industry. Make special note of the secondary navigation bar at the top. Implementing that is the highlight of this project.
- Project: Complete all Classic Puzzles - Easy on CodinGame in JavaScript
- Book: Open Data Structures
- Project: Complete all challenges from the Code Jam Qualification Round 2015
- Project: Pick a template from here and create a new template with it as your inspiration (do not use it's assets)
- Course: Algorithms, Part I
- Course: Algorithms, Part II
- Project: Complete all Classic Puzzles - Medium on CodinGame in JavaScript
- Book: Professor Frisby's Mostly Adequate Guide to Functional Programming
- Course: Software Testing
- Course: Software Debugging
- Project: Clone this blog template - note that there are multiple pages
- Book: JavaScript Spessore
- Visit the Angular, React and Vue web pages, work through their tutorials, and get a sense of how they differ and which you prefer. From here on out, try to use one of them on each frontend where it makes sense to do it as a single page app. Lean towards your favorite on most projects, but use each of the other two in at least one project before finishing the guide.
- Project: Pick a template from here and create a new template with it as your inspiration (do not use it's assets)
- Project: Clone Reddit
- Project: Complete all ES6 Katas here
- Course: Calculus Two: Sequences and Series
- Project: Complete all Classic Puzzles - Hard on CodinGame in JavaScript
- Project: Clone this Admin template
- Project: Pick a template from here and create a new template with it as your inspiration (do not use it's assets)
- Course: Agile Software Development
- Project: Clone the Netflix interface- pulling data from the Movie DB API or an API in a backend you create yourself.
- Course: Software Architecture & Design
- Project: Write the CSS Necessary to create your own 12 column based grid layout - see here for an example
- Project: Pick a template from here and create a new template with it as your inspiration (do not use it's assets)
- Project: Clone FaceBook - yes, all the functionality. See here for a list of requirements you should fullfill.
- 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: Complete all Classic Puzzles - Very Hard on CodinGame in JavaScript
- 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: Extend your CSS grid framework to include the CSS and JavaScript required to implement 5 to 10 material design components
- 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.
- surge.sh - deploy your frontend projects here (or use github pages)
- MDN - look HTML, CSS, and JavaScript stuff up here
- 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
- 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
- try to pick at least one language besides JavaScript, and solve some of the algorithmic challenges with that language (Good choices: Java, Python, Golang, Rust)
- 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
- 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
- Write up a comprehensive blog post or markdown entry in a repository detailing the high points of what you learned that month
- Watch this video and this video - on interviewing
- Read this - on crafting a resume
- Do one lesson from CUST104: Business Communications
- Live stream what you're working on for an hour. Or, lend a hand to someone who needs help by screensharing and walking them through it.
- Catch up on industry reading on sites like Joel on Software, Coding Horror, CSS Tricks, A List Apart, UX Myths, JavaScript Weekly
- 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
- redo any of the algorithmic type projects you've already completed from the list, in a language other than JavaScript
- 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
- Many of the courses listed closely mimic the list from Open Source Society University - Computer Science
- Many of the topics selected to augment were inspired by Google Interview University
- Many of the projects were inspired by (or are directly taken from) Free Code Camp and The Odin Project
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.