Git Product home page Git Product logo

p1xt-guides's Introduction

Computer Science and Programming - Version 4.0

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.

p1xt-guides's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

p1xt-guides's Issues

Advice

Thanks for taking the time to read this, I really appreciate it. First off thanks you so much for all the work you have put into this. It is beyond helpful.

I was just wanting to ask for what you would recommend. I work the night shift in Surveillance at a casino right now, but I don't like it. I want to work in computer programming. As I have looked at the guides I am pretty sure that my final goal I am aiming at would be becoming a data scientist. The study for that course is going to take a while, but I know it is what I want to do. This being said I want to be out of my current job and into something I love as soon as possible.

Would you recommend I do the Job Ready Guide - Javascript 2.0 first and use that to get a developer/programmer job, even though it it only involves a few of the courses that I will be taking for the data science guide? Or rather, go ahead and start the data science guide?

Again, thanks for your time

Job Ready and Computer Science and Web Development

I want to be a software developer/engineer, but I also want a job as a junior web developer for the time being, while I educate myself to become a software engineer.

Should I begin with Computer Science and Web Development (CSWB) and apply for jobs as a junior web developer once I'm finished with Tier 1, or, start and finish Job Ready, apply for jobs and then CSWB while working/looking? If it is the latter, should resources/projects/courses be followed in a different order?

My reason for asking is CSWB involves HTML and CSS too, but there is a difference in some resources/projects/courses and some are in Tier 2 instead.

Functional Programming

Is there a place for functional programming course in your CS guide? I've found the following which uses Haskell. https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0

The reason I'm asking is that Oxford University have Functional Programming early on in the first year.

https://www.cs.ox.ac.uk/admissions/undergraduate/courses/computer_science_core_1.html

https://www.cs.ox.ac.uk/admissions/undergraduate/courses/computer_science.html

http://www.cs.ox.ac.uk/files/8606/CourseStructure2018.pdf

Thanks

Advice

Hello P1xt,
I am sending this message in order to receive some information about your guides (despite I had already read all the informations about them) and some advice about my career (if possibly).
To begin with, I don’t have a Computer Science background. In fact, I was Lawyer and I decided to change my career, indeed. I have been studying a lot of “stuffs” (HTML, CSS, JavaScript) for 5 months. Additionally, I have been focusing on the “front-end” area. In September, I will begin my college related with UX Design (I needed to apply for a college program in order to enhance the possibility to immigrate). Despite of this, I want to link the knowledge I will absorb in my college program with “devolpement” skills. This statement can illustrate that I really want to work as a “developer” and using the UX Design skills as supporter or differential. Moreover, despite of the aforementioned knowledge in “development”, I can’t see myself working just as a “Front-End” developer. I would like construct different and valuable “things”, using innovation and technology, and not just to focus in web development. On the other hand, I think Machine Learning and AI could be suitable for all my desire (as I mentioned above) and perspective future (I am not completely sure about that). I am not sure whether I was clear or not but I am trying to look to the future and thriving to begin my studies (and career) associated with what I want to do in the future.
I hope you can help and advice me about which should I do at this moment and which type of guide could I follow and study it deeply.
Sorry about any mistakes on my writing. I am learning English.
Best wishes,

CS-Java gap?

Isn't there a big gap between the following two steps?
Course: Introduction to Computer Science - CS50
Project: Google Code Jam 2008 - Qualification Round (language of your choice)

Or is this path meant to be followed after Javascript 3.0? Thanks

edX paywall blocking access to resources

Just started on How to Code: Simple Data and noticed edX implemented a new paywall system that blocks all graded assignments and limits access to course to around 21 days. Is there any plannings on creating alternatives to the courses on edX?

"A Self-Learning, Modern Computer Science Curriculum"

Found this guide that is suppose to give people the knowledge of a senior CMU computer science student. Check out this guide and see if there is anything you can implement, in your own guides.

https://functionalcs.github.io/curriculum/

"The goal of this guide is to build up to a senior undergrad level in computer science with the necessary rigorous background in fundamentals to understand academic papers in journals to continue self-learning"

Blockchain and/or Ethereum guide?

First off, I love this repo. These guides are so helpful and I am shameless in recommending them to friends or family who want to start any kind of programming.

However, the other day a friend of mine asked about blockchain and Ethereum development and I was completely clueless on the topic. Considering the popularity of cryptocurrencies, would such a guide be possible?

Thanks. Much love.

For any requests for new guides please post here.

Current ideas I'm thinking about for new guides include:

  • Native Android Development (Complete 5/2017)
  • Android development with Angular 4 / Ionic
  • Python Programming (Complete 9/2017)
  • Data Science (Complete 9/2017)
  • Revamp original Job Ready guide (Complete 9/2017)
  • Mastering Linux
  • Testing Web Applications
  • Revamp and organize productive break section of FAQ

If you have any other ideas you'd like me to consider (or want to vote vigorously for one of the ones I'm already considering) please discuss it here.

Approaching GCJ & substituting with HackerRank medium problems

Hi, this might not be a problem inherent to the guide of CS-Java itself but might be one plaguing new programmers like me, so I hope to get some input.

TL;DR: Stuck on problems in GCJ 2008 & 2009, can't progress much without copy pasting (with understanding) or reading content analysis due to possibly arcane terms. Is this the guide's intention for us to google answers up? Also thinking of substituing GCJ problems with HackerRank mediums as a softer approach to learning problem-solving.

Basically when I was solving Project: Google Code Jam 2008 - Qualification Round (language of
your choice)
,

  1. I can't solve Saving the Universe and had to look up the analysis for hints, discovering the greedy algorithm (although it was mentioned briefly in CS50)
  2. I managed to solve Timetable because it has the same pattern as Saving the Universe and it just jumps out at me.
  3. I completely gave up on Fly Swatter, after around 20 hours of effort. My mind is lost at "Circular sectors". I tried drawing it out, trying to understand how to use them for different parts of the circle. I had to look up and copy other's solution to understand it.

This is pretty much my case on GCJ 2009 too. Basically, is it the guide's intention for us to google up some questions and/or look at the content analysis, or are we really supposed to hunker down and use dozens of hours (probably just me) to solve problems?

This is because some of the contests introduce new, pretty arcane terms for me like "dynamic programming" which I really never knew unless I look at the analysis. I think I could really spend hundreds of hours to solve it without looking it up.

The alternative to table it and come back later doesn't work...as well? Because as you keep progressing you notice all your previous GCJ checkboxes are all unchecked. It's not demotivating just feels like lack of progress.

I'm also thinking of supplementing with HackerRank medium problems because they're easier one way or another. Sometimes, they introduce algorithms like DFS before sending us to the problems. I'd like to know is that a good substitute?

CS-WD remove the back end certification?

I know that you recently updated the job ready guide and removed the FCC back end certification (since it no longer exists by that name). I was wondering if you were going to be doing anything similar with the CS-WD guide soon.

React Projects diversity

Hi P1xt, I'm wondering why most of the projects in the React guide are the website template projects? I was browsing through the guide and was hoping to have a different variety of projects.

Python Guide

Is CS50 missing from the Python guide for any specific reason?

Project alternatives to Netflix and Spotify

I felt very encouraged to carry out the projects, however, where I live there is no option to try to perform clones of Netflix or Spotify, since the records are not enabled for my country. Any other options available? And I already reviewed the FAQ and no one else has raised this doubt.

job-ready.md backend cert

Hey P1xt. Thanks for all the work you put into these guides. I have noticed that there is no longer a backend certification under the freecodecamp curriculum. Could you please advise what projects to do instead. Have they just been renamed and shuffled around in the FCC curriculum? Or are those projects no longer available? I want to get a job as a junior web developer and work on games in my free time. Is the javascript 2.0 where I want to start? Thanks again for everything you do!

Repeated course

In JavaScript Job Ready 2.0, the course Programming for the Web with JavaScript appears in both Tier 1 and Tier 2.

MOOC Java instead of CS106A?

Hi p1xt, I am doing your Native Android guide and I am supposed to do Stanford's CS106A next, but I stumbled upon some reviews online saying that it might be better to do this instead of CS106A, because it is newer and teaches more. What do you think about this? Should I go for MOOC or stick with Stanford's course?

Thank you for making these awesome guides.

Add advice about helping others to the FAQ.

from eliotn in the Chingu Cohorts

p1xt Maybe you should include helping someone in person on the things you should do list (but it might not be practical for everyone). Just helped someone today who wanted to web scrape by introducing them to selenium.

sass to css

Getting Sassy with CSS

not

Course: Getting Sassy with Sass

Choice between Think Java and Think Python?

There's a Think Python: How to Think Like a Computer Scientist book which, as far as I've seen, covers the same ground as Think Java. Perhaps it's an idea to offer a choice between Think Java and Think Python. Multiple listed courses like Software Construction and Algorithms use Java. Some more exposure to Python might be nice.

What do you think @P1xt ?

M101P: MongoDB for Developers - Retired

On MongoDB University it has been written that this course has been retired and replaced by M220P: MongoDB for Python Developers. Should I take the new course or will you replace M101P: MongoDB for Developers with some other course?

Any free alternative to Java programming basics course on Udacity?

Hi P1xt! I'm learning to code all by myself by reading through your guides. Thanks a lot for making this guides available.

Currently, I'm going through your guide on native android development. However, the Java basics course on Udacity is not free. Can you please provide any free resource on Java that can replace this Udacity course?

Which guide should i choose?

Firstly thanks a lot for making these guides, I am currently doing udacity front end nanodegree, Even after completing the 1st module I am not feeling comfortable or confident for tackling the memory game project, I have almost completed this project's module. I think your guides can help me but I am confused, can you tell which guide should I follow so that I can make most of my time while studying from your guides?

Tier 1 projects

Is it intended that first and second projects are switched at tier 1. It differs from Web Development with Computer Science Foundations - comprehensive.

paid books?

Would you recommend any paid books in additional to the paths set?

I can see that Eric Elliot's Programming Javascript Applications is no longer free but is this books still worth reading?
His name pops up alot when looking at Javascript 'experts'

If you do recommend paid books as optional, which other books would you recommend?

Thanks you for great paths also.

unity for video game programming

what can i do if i want to learn unity and c# (because unity uses it) for game programming should i do all the parts that have math and game development theory and replace the parts c++ courses with c# courses?

Wishing for a guide that is .NET centric

Thanks for those great resourses, I've been eyeing your guides since the beginning, but was focusing on school. currently, I'm a QA, so i can now focus on honing my developer's skills.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.