/2017-CS-Programming-Plan

My 2017 plan for programming and CS study.

Creative Commons Attribution Share Alike 4.0 InternationalCC-BY-SA-4.0

2017 CS/Programming Study Plan

This is my modified version of John Washam's Google Interview University, adding in additional resources and removing the Google interview focus to make it solely about CS and programming in general.

This will all be done in line with my regular web development work and practice, which always takes precedent since it's what the job is in!

Web Development Goals

- (at work) Have a functional ticketing system written in .NET [CURRENTLY WORKING ON]
- (at work) Have a functional network monitor written in .NET [CURRENTLY WORKING ON]
- Design and build 4 fake websites for real companies as mockups
- Write a cool interactive web app/game
- Additional/option API's to mess with:
	- Twitter (https://dev.twitter.com/docs)
	- Pinterest (https://developers.pinterest.com/)
	- Google Geocoding (https://developers.google.com/maps/documentation/geocoding/start)
	- Pokemon (http://pokeapi.co/)
	- Nutritionix (https://www.nutritionix.com/business/api)
	- The Counted (https://thecountedapi.com/)
	- Battle.net (https://dev.battle.net/)
	- Watson (https://watson-api-explorer.mybluemix.net/)
	- Wolfram Alpha (http://products.wolframalpha.com/api/)
	- BreweryDB (http://www.brewerydb.com/browse)
	- Common Crawl (http://commoncrawl.org/)
	- FitBit (https://dev.fitbit.com/eu)
	- Steam (https://steamcommunity.com/dev)
	- Instagram (https://www.instagram.com/developer/)
	- YouTube Data (https://developers.google.com/youtube/)
	- Flickr (https://www.flickr.com/services/api/)
	- Spotify (https://developer.spotify.com/web-api/)
	- Reddit (https://www.reddit.com/dev/api)
	- Marvel Comics (http://developer.marvel.com/)
	- Riot Games (https://developer.riotgames.com/)
	- Star Wars API (https://swapi.co/)
	- Government Census Info (http://www.census.gov/data/developers/data-sets/acs-1year.html)

All the books! Minus Programming Pearls

1. [COMPLETED 12/19/16] Learn Git/Github to upload code for practice. [COMPLETED]

- Deep Dive: Find a Git book to learn the full command line

2. Learn C programming basics and how machines interpret code [COMPLETED 1/25/16]

- The C Programming Language Book [COMPLETED - MOVED TO REFERENCE]
- Write Great Code (Computer Architectgure) [COMPLETED - MOVED TO REFERENCE]
- C Programming Language Fundamentals [COMPLETED]
- The C Programming Language in Action [COMPLETED]
- Udemy - Complete Python Master Class [COMPLETED]
- C# Fundamentals with Visual Studio 2015 [COMPLETED]

3a Using the references for each subject on the Daily Plan, I will move onto studying the following books:

[NOTE: My study of Algorithms will probably wait until TreeHouse is finished, and my math is refreshed.]

- Cracking the Coding Interview
- Programming Interviews Exposed
- Algorithm Design Manual
- Algorithms by Sedgewick
- Programming Pearls
- Refactoring: Imporoving the Design of Existing Code [COMPLETED]
- Elements of Programming Interviews in Java (I will convert this to C# code in practice)
- Unix Programming Environment and/or The Linux Programming Interface
- Problem Solving with Algorithms and Data Structures Using Python

Job Specific
- Database Design for Mere Mortals [COMPLETED]
- SQL Queries for Mere Mortals [CURRENTLY READING]
- Teach Yourself ASP 3.0 in 21 Days [COMPLETED]
- Beginning ASP 3.0 [COVERS SAME AS ABOVE, MOVED TO REFERENCE]
- Beginning ASP.NET with C# and VB 

Open Source Society
- See Seperate Branch [CURRENTLY WORKING]


TreeHouse Paths
- Web Design [COMPLETED]
- Front-End Web Development [COMPLETED]
- Full Stack Javascript [COMPLETED]

GIU - I will program an implementation of each subject in C, C#, and Python. - I may not have time to do each of these, but I'll try to do all. I will have a seperate GitHub repo for each language, organized in folders for each subject. - Before writing any code on PC, I will draw it out on a whiteboard or on sketchbook paper. - For subjects with no implementation, I'll take copious notes.

3b.Coding Question Practice (ties in with CS books above)

- Work on problem recognition, learning when to use the right data structures and algorithms.
- Implement Algorithm Design Canvas?
- Use large sketchbook as a sofa whiteboard
- Purchase a whiteboard?
- Challenge Sites:
	- LeetCode, TopCoder, Project Euler, Codewars, HackerRank, Codility, InterviewCake, InterviewBit

4. Additional Learning (Optional, if I have time)

- C++ Primer Plus
- Unix and Linux System Administration Handbook
- The Linux Command Line
- Design Patterns: Elements of Reusable Object-Oriented Software
- Site Reliability Engineering
- Learn vi(m) [IN PROGRESS]
- Take list of additional learning from GIU