Skip to content

AlfieDarko/Web-Development-CS-Foundations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Web Development & Computer Science Foundations


Synopsis

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

Motivation

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.

Learning Path

The list - work down it in order

Tier 1 - get started

Tier 2 - strengthen your foundation

Tier 3 - build on the foundation

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

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


Bookmarks you should have

  • 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

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
  • 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)

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
  • 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

Additional Resources

OpenStax - Open Source textbooks on a variety of University level topics, check here if you want a reference math or physics textbook



Attribution

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.

About

My learning path to being a proficient web developer. Curated by @P1xt.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published