├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── RequestingChallengesFromAI.md
├── deprecated
├── README.md
├── android-native.md
├── cs-java-focus.md
├── cs-wd.md
├── data-science.md
├── faq.md
├── game-programming-2.0.md
├── game-programming.md
├── job-ready-javascript-edition-2.0.md
├── job-ready-javascript-edition-3.0.md
├── job-ready-python-edition.md
├── job-ready.md
├── projects
│ └── android
│ │ ├── Androidforbeginners.md
│ │ ├── BookListing.md
│ │ ├── BuildItBigger.md
│ │ ├── CapstoneStage1-Design.md
│ │ ├── CapstoneStage2-Build.md
│ │ ├── CourtCounter.md
│ │ ├── ForceGolf.md
│ │ ├── GigaWars.md
│ │ ├── GoUbiquitous.md
│ │ ├── HabitTracker.md
│ │ ├── Inventory.md
│ │ ├── MakeYourAppMaterial.md
│ │ ├── Makeyouownandroidapp.md
│ │ ├── MusicalStructure.md
│ │ ├── NewsApp.md
│ │ ├── Outbreak.md
│ │ ├── Pong.md
│ │ ├── PopularMoviesStage1.md
│ │ ├── PopularMoviesStage2.md
│ │ ├── QuizApp.md
│ │ ├── ReportCard.md
│ │ ├── SpaceKerfuffle!.md
│ │ ├── StockHawk.md
│ │ ├── TourGuide.md
│ │ └── YourFirstApp.md
├── speedrun-practice
│ ├── README.md
│ ├── algorithms.md
│ ├── android.md
│ ├── frontend-dev.md
│ ├── fullstack-dev.md
│ └── game-dev.md
├── topic-guides
│ └── vue.md
└── wd-cs.md
└── v4
├── README.md
├── faq.md
├── project_ideas.md
└── specializations
├── advanced-algorithms.md
├── algorithms.md
├── app_academy_open.md
├── backend.md
├── computer_science.md
├── data-science-i.md
├── data-science-ii.md
├── frontend.md
├── full_stack_open_2020.md
├── games.md
├── mobile.md
├── open_source.md
├── the_odin_project_javascript.md
└── the_odin_project_ruby.md
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changed to the curriculum
2 |
3 | Typically this will only list resource additions and deletions. The goal is always to minimize changes to the curriculum, so that someone following it isn't trying to 'hit a moving target'. However, from time to time, a resource becomes no longer available, and the curriculum will be modified to accommodate a replacement resource.
4 |
5 | **December 15, 2024**
6 | Updated to Version 6.1, streamlining Tier 1 to only focus on one main resource plus practice projects for greater clarity of purpose.
7 |
8 | **December 1, 2024**
9 | Updated to Version 6 - Unfortunately, in V5, I relied too heavily on CodeSignal as I believed it was a reasonable resource on the free tier but didn't realize that I wasn't hitting limits of the free tier as I had a pro subscription. I revamped to remove the CodeSignal reliance and shifted to other resources I'd identified while researching for the v5 update.
10 |
11 | **November 11, 2024**
12 | Updated to Version 5 - this was a substantial update that reflected significant changes in the open source resources available to learners. Since v4, a/A Online has stopped being updated, Google Code Jam (and other competitions) are not available, and several other resources have become far more robust. You can still find v4 in the [v4](./v4/) directory, however, it is no longer maintained and I would recommend migrating to v5 as the available resources are more current and reflect newer content.
13 |
14 | **September 1, 2020**
15 | Add CS50's AI course. Add Odin Project Full Stack JavaScript. General cleanup.
16 |
17 | **July 1, 2019**
18 | Add Deep Dive Into Modern Web Development - Full Stack Open 2019 from the University of Helsinki as a fullstack bootcamp option in the specializations as it provides an opportunity to study react further after App Academy and to branch out and use Node/Express for backend.
19 |
20 | **June 29, 2019**
21 | Refactored Tier 0 to remove the 'Learn Enough' resources as they'd been paywalled. Set Tier 0 as App Academy's online fullstack bootcamp - that way it can either be taken as Tier 0, or if you skip Tier 0, it can later be taken as a specialization. This makes sense to show up at this point in the Guide as the Khan Academy resources in Tier X are sufficient prep for App Academy to be doable but challenging.
22 |
23 | **May 25, 2019**
24 | Complete overhaul to version Version 4.0. Consolidated the 'special interest' guides into specializations, migrated from Coursera and Edx resources which now sit behind paywalls, and restructured the 'guides' into one cohesive guide that contains core material within each tier and allows further study each tier of a learner selected specialization. This fixes two issues. First, it handles the paywall issues to make the guide require less volatile maintenance (swapping out courses as they are paywalled). Second, it provides better structure and answers the 'which guide should I pick' question.
25 |
26 | All prior guides have been moved to deprecated and may be out of date and/or contain dead links. Focus will be on maintaining the 4.0 Guide version, deprecated guides will not be maintained.
27 |
28 | **December 1, 2018**
29 | Added Job Ready Guide - JavaScript Edition 3.0.
30 | Added Video Game Programming - comprehensive foundations 2.0.
31 | Marked all previous versions of the Job Ready and Video Game Programming guides as deprecated. The deprecated guides remain for those who don't want to switch to the newer versions but they are no longer maintained and may contain dead links.
32 |
33 | **April 26, 2018**
34 | Swapped the Natural Language Processing course from Michigan for the Robotics Fundamentals course from Penn. There wasn't a similarly outstanding NLP course available so I replaced it with an outstanding course from a similarly interesting field taught at a similarly advanced level of rigor.
35 |
36 | **April 2, 2018**
37 | Added Computer Science and Backend Development - Java Focus Guide.
38 |
39 | **March 31, 2018**
40 | Swapped the OSU Calculus courses from Coursera (they're being decommissioned) for MITOCW Calculus Courses.
41 |
42 | **March 6, 2018**
43 | Added [Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx) to the cs-wd and wd-cs guides. It's the next course in the series and became available today.
44 |
45 | **January 25, 2018**
46 |
47 | Added Vue topic guide.
48 | Added React topic guide.
49 |
50 | **January 24, 2018**
51 |
52 | Added Angular topic guide.
53 |
54 | **January 03, 2018**
55 |
56 | Added [Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x) to the cs-wd and wd-cs guides. It's the next course in the series and becomes available on the 9th of January.
57 |
58 | **October 23, 2017**
59 |
60 | Added Speedrun/Practice section, with topic specific lists of practice projects/problems for use in practice, building a portfolio, or speedrunning.
61 |
62 | **October 18, 2017**
63 |
64 | Replaced D3 course in the JavaScript Job Ready 2.0, Python Job Ready, and Data Science guides with a free alternative, as the one from egghead migrated to requiring a Pro membership for access to the bulk of the course.
65 |
66 | **October 11, 2017**
67 |
68 | Added Software Construction: Object-Oriented Design to the wd-cs and cs-wd guides, it is the next in the How to Code series and just became available.
69 |
70 | **September 30, 2017**
71 |
72 | Added The Data Science Guide, the Python Job Ready Guide, and updated the original Job Ready guide to a 2.0 version this week.
73 |
74 | **September 11, 2017**
75 |
76 | Swapped out the MongoDB course on edX for a choice between the MongoDB course on MongoDB University and the full stack course by Penn State on edX - reason, the original course listed became no longer available.
77 |
78 | **June 24, 2017**
79 |
80 | Swapped the course Introduction to Cloud Infrastructure Technologies for Introduction to Cloud Computing - reason, the original course was no longer available.
81 |
82 | **July 18, 2017**
83 |
84 | Swapped the link for the Operating Systems and System Programming course - reason, the original link was no longer valid.
85 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2017 - 2020 P1xt
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/deprecated/android-native.md:
--------------------------------------------------------------------------------
1 | # Native Android Programming - comprehensive
2 |
3 | This guide makes heavy use of "official docs" for Java and Android, plus projects and cources from the Udacity
4 | Android Nanodegree programs, augmented with a Tier of "Computer Science" to ensure that your ability to
5 | craft expert level Android applications won't be hampered by lackluster math or
6 | algorithm training.
7 |
8 | **Note:** For many assignments and projects in this guide, you are
9 | tasked with creating a "sample" type application, or with cloning an application which already exists.
10 | Use good judgement when you get to the point that you are actually deploying apps to the app store. Only
11 | publish apps which are your original creations, using your original content and assets. Don't get sued
12 | publishing something you copied or cloned.
13 |
14 |
15 |
16 | ## Tier 0 - CS / Java Foundations
17 | - [ ] Tutorial: [Getting Started](http://docs.oracle.com/javase/tutorial/getStarted/index.html)
18 | - [ ] Course: [Java Programming Basics](https://www.udacity.com/course/java-programming-basics--ud282)
19 | - [ ] Tutorial: [Learning the Java Language](http://docs.oracle.com/javase/tutorial/java/index.html)
20 | - [ ] Tutorial: [Essential Java Classes](http://docs.oracle.com/javase/tutorial/essential/index.html)
21 | - [ ] Tutorial: [Collections](http://docs.oracle.com/javase/tutorial/collections/index.html)
22 | - [ ] Course: [CS106A - Programming Methodology](https://see.stanford.edu/Course/CS106A)
23 | - [ ] Bookmark: [Java SE8 API Specification](http://docs.oracle.com/javase/8/docs/api/index.html) - reference this frequently throughout the rest of the guide
24 | - [ ] Bookmark: [Android API Guides](https://developer.android.com/guide/index.html) - reference this frequently throughout the rest of the guide
25 | - [ ] Book: [Precalculus](https://openstax.org/details/books/precalculus) Complete by end of Tier 1.
26 |
27 | ## Tier 1 - Android Fundamentals
28 | - [ ] Course: [Android Basics: User Interface](https://www.udacity.com/course/android-basics-user-interface--ud834)
29 | - [ ] Project: [Build a Single Screen App](./projects/android/YourFirstApp.md)
30 | - [ ] Course: [Android Basics: User Input](https://www.udacity.com/course/android-basics-user-input--ud836)
31 | - [ ] Project: [Court Counter App](./projects/android/CourtCounter.md)
32 | - [ ] Project: [Quiz App](./projects/android/QuizApp.md)
33 | - [ ] Course: [Android Basics: Multiscreen Apps](https://www.udacity.com/course/android-basics-multiscreen-apps--ud839)
34 | - [ ] Project: [Musical Structure App](./projects/android/MusicalStructure.md)
35 | - [ ] Project: [Report Card](./projects/android/ReportCard.md)
36 | - [ ] Project: [Tour Guide App](./projects/android/TourGuide.md)
37 | - [ ] Course: [Android Basics: Networking](https://www.udacity.com/course/android-basics-networking--ud843)
38 | - [ ] Project: [Book Listing App](./projects/android/BookListing.md)
39 | - [ ] Project: [News App](./projects/android/NewsApp.md)
40 | - [ ] Course: [Android Basics: Data Storage](https://www.udacity.com/course/android-basics-data-storage--ud845)
41 | - [ ] Project: [Habit Tracker App](./projects/android/HabitTracker.md)
42 | - [ ] Project: [Inventory App](./projects/android/Inventory.md)
43 |
44 | ## Tier 2 - Intermediate Android
45 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/) Complete by end of Tier 2
46 | - [ ] Course: [Developing Android Apps](https://www.udacity.com/course/new-android-fundamentals--ud851)
47 | - [ ] Project: [Popular Movies, Stage 1](./projects/android/PopularMoviesStage1.md)
48 | - [ ] Project: [Popular Movies, Stage 2](./projects/android/PopularMoviesStage2.md)
49 | - [ ] Course: [Gradle for Android and Java](https://www.udacity.com/course/gradle-for-android-and-java--ud867)
50 | - [ ] Project: [Build it Bigger](./projects/android/BuildItBigger.md)
51 | - [ ] Course: [Material Design for Android Developers](https://www.udacity.com/course/material-design-for-android-developers--ud862)
52 | - [ ] Project: [Make Your App Material](./projects/android/MakeYourAppMaterial.md)
53 | - [ ] Project: [Capstone, Stage 1 - Design](./projects/android/CapstoneStage1-Design.md)
54 | - [ ] Project: [Capstone, Stage 2 - Build](./projects/android/CapstoneStage2-Build.md)
55 |
56 |
57 | ## Tier 3 - More CS
58 | - [ ] Course: [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/) Complete by the end of Tier 3
59 | - [ ] Course: [Introduction to Programming in Java](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/)
60 | - [ ] Book: [Think Java - How to Think Like a Computer Scientist](http://greenteapress.com/wp/think-java/)
61 | - [ ] Course: [Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1)
62 | - [ ] Project: Complete all challenges from the [Code Jam Qualification Round 2015](https://code.google.com/codejam/contest/6224486/dashboard)
63 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
64 | - [ ] Project: Complete all challenges from the [Code Jam Round 1B 2015](https://code.google.com/codejam/contest/8224486/dashboard)
65 | - [ ] Book: [Open Data Structures](http://www.aupress.ca/books/120226/ebook/99Z_Morin_2013-Open_Data_Structures.pdf)
66 | - [ ] Course: [Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2)
67 | - [ ] Project: Complete all challenges from the [Code Jam Round 1C 2015](https://code.google.com/codejam/contest/4244486/dashboard)
68 | - [ ] Course: [Intro to Artificial Intelligence](https://www.udacity.com/course/intro-to-artificial-intelligence--cs271)
69 |
70 | ## Tier 4 - Advanced Android
71 |
72 | - [ ] Project: [2D Game Development with libGDX](https://www.udacity.com/course/2d-game-development-with-libgdx--ud405)
73 | - [ ] Project: [Outbreak](./projects/android/Outbreak.md)
74 | - [ ] Course: [Google Location Services on Android](https://www.udacity.com/course/google-location-services-on-android--ud876-1)
75 | - [ ] Course: [Monetize Your Android App with Ads](https://www.udacity.com/course/monetize-your-android-app-with-ads--ud876-3)
76 | - [ ] Course: [Add Google Maps to your Android App](https://www.udacity.com/course/add-google-maps-to-your-android-app--ud876-4)
77 | - [ ] Course: [Android Performance](https://www.udacity.com/course/android-performance--ud825)
78 | - [ ] Course: [How to Make a Platformer Using libGDX](https://www.udacity.com/course/how-to-make-a-platformer-using-libgdx--ud406)
79 | - [ ] Project: [Space Kerfuffle](./projects/android/SpaceKerfuffle!.md)
80 | - [ ] Course: [Advanced Android App Development](https://www.udacity.com/course/advanced-android-app-development--ud855)
81 | - [ ] Project: [Stock Hawk!](./projects/android/StockHawk.md)
82 | - [ ] Bookmark: [Android API Guides](https://developer.android.com/guide/index.html) You bookmarked this back in Tier 0.
83 | Take the time to thoroughly review all of the content now. Study it as if it were a book and you needed to know "it all".
84 | - [ ] Project: Your choice - ideas listed below
85 | - [ ] Project: Your choice - ideas listed below
86 | - [ ] Project: Your choice - ideas listed below
87 | - [ ] Project: Your choice - ideas listed below
88 | - [ ] Project: Your choice - ideas listed below
89 |
90 | ## Advanced Project ideas
91 |
92 | * clone any game from the game programming guide (or any other game you enjoy) as a native Android application
93 | * create a real time chat application (clone your favorite instant messenger) - note you'll need to build a backend in
94 | order to make this work. Use any backend you like, suggestion: check out firebase.
95 | * create an educational app, useful for learning and practicing subject matter you're highly familiar with (like android programming)
96 | * create an app for a non-profit in your area, whatever they need
97 | * contribute to open source, on any android or java project
98 | * make any android app you want from your original idea, deploy it to the app store
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/deprecated/job-ready.md:
--------------------------------------------------------------------------------
1 | # Get Job ready with 13 projects, 2 courses, and 10 books
2 |
3 | ## Deprecated - Updated 3.0 version available [here](./job-ready-javascript-edition-3.0.md)
4 |
5 | Are you working through the FreeCodeCamp curriculum and want to be job ready (for a junior role) without finishing all three certifications?
6 | Want to short-circuit the process and get this done quick without getting laughed out of interviews?
7 |
8 | Are you thinking "I'll just finish the frontend certification" and start applying?
9 |
10 | **You're looking at the wrong certification** to get prepared and I'll tell you why. The frontend certification does NOT teach you any of the real world skills that go along with programming that you'll need on the job. It doesn't teach you how to work in an editor on your own machine. It doesn't teach you how to run a build process. It doesn't teach you how to share your code in a git repository. And, it doesn't teach you how to deploy your code to a real server on the net.
11 |
12 | **Have no fear** there IS a FCC certification that will get you much, much closer to your goal. Combine it with just a few other resources and you can get there. The backend certification is the one you want to be aiming for.
13 |
14 | Finish this list - and you'll walk into interviews with a lot more confidence, and a much better chance of landing that job.
15 |
16 | If you have any questions, be sure to check the [FAQ](./faq.md). In fact, before you even start anything, go read the FAQ.
17 | It has a plethora of hints, tips and answers to help you ensure you get the most out of this guide.
18 |
19 | ## Read these books, complete these two courses, this certification, and these three projects
20 |
21 | - [ ] Book: [You Don't Know JS: Up & Going](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/up%20&%20going/README.md#you-dont-know-js-up--going)
22 | - [ ] Book: [You Don't Know JS: Scope & Closures](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/scope%20&%20closures/README.md#you-dont-know-js-scope--closures)
23 | - [ ] Book: [You Don't Know JS: this & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/this%20&%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes)
24 | - [ ] Book: [You Don't Know JS: Types & Grammar](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/types%20&%20grammar/README.md#you-dont-know-js-types--grammar)
25 | - [ ] Book: [You Don't Know JS: Async & Performance](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/async%20&%20performance/README.md#you-dont-know-js-async--performance)
26 | - [ ] Book: [You Don't Know JS: ES6 & Beyond](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/es6%20&%20beyond/README.md#you-dont-know-js-es6--beyond)
27 | - [ ] Course - [CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x) on edX
28 | - [ ] Book - [JavaScript Allongé, the "Six" Edition](https://leanpub.com/javascriptallongesix)
29 |
30 | * [ ] Course: [Programming for the Web with JavaScript](https://www.edx.org/course/programming-web-javascript-pennx-sd4x) on edX or Course: [CS50's Mobile App Development with React Native](https://www.edx.org/course/cs50s-mobile-app-development-with-react-native) on edX (or both, your choice)
31 |
32 | - [ ] The FCC Backend Certification - all projects, ignore the tutorials and just read the official docs if you want.
33 | - [ ] Book - [DOM Enlightenment](http://domenlightenment.com/)
34 | - [ ] Project - Portfolio from the frontend section of FCC
35 | - [ ] Book - [JavaScript Design Patterns](https://addyosmani.com/resources/essentialjsdesignpatterns/book/)
36 | - [ ] Project - Clone the Netflix interface using React, Angular, or Vue - pulling data from [the Movie DB API](https://www.themoviedb.org/documentation/api) or an API in a backend you create yourself.
37 | - [ ] Book - [Open Data Structures](http://www.aupress.ca/books/120226/ebook/99Z_Morin_2013-Open_Data_Structures.pdf)
38 | - [ ] Project - Clone [this Admin template](http://rubix410.sketchpixy.com/ltr/dashboard) using React, Angular, or Vue
39 |
40 | **_Special note: No, you're not done until you finish every step, in order._**
41 |
42 | **If you don't have access to Netflix, or just want an alternative to the Netflix Project**
43 |
44 | Clone Spotify - you can sign up for a free account.
45 | [Spotify](https://www.spotify.com/us/)
46 |
47 | You can use their API to search pretty much all of the data they have available:
48 | [Spotify Web API](https://developer.spotify.com/web-api/)
49 |
50 | You can't actually pull full length versions of the media to play in your app, just play the demo track ;)
51 |
52 | #### If you're thinking @P1xt, you're nuts, I just want to be a frontend developer, this is too much
53 |
54 | - No it's not.
55 | - This will actually do what the frontend cert alone wont. It will prepare you to do the job of a frontend web developer in today's market. Writing some HTML and CSS isn't all there is to the job. This will prepare you for the rest
56 | - Don't quit.
57 | - Don't panic!
58 |
--------------------------------------------------------------------------------
/deprecated/projects/android/Androidforbeginners.md:
--------------------------------------------------------------------------------
1 | Please see the details of the project description [here](https://www.udacity.com/course/viewer#!/c-ud837/l-4040108662/m-4606438835)
2 |
--------------------------------------------------------------------------------
/deprecated/projects/android/BookListing.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | This project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making a book listing app using an API query and a ListView.
3 |
4 | The goal is to design and create the structure of a Book Listing app which would allow a user to get a list of published books on a given topic. You will be using the google books api in order to fetch results and display them to the user.
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/164/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you learned about the web and about how to get data from an api. You also learned how to parse that data and display it to a user. This project gives you the ability to practice those skills, which will be key in developing any app which makes use of a backend server, real time data, or interactions over the internet.
13 |
14 | # What Will I Learn?
15 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
16 | * Fetching data from an API
17 | * Using an AsyncTask
18 | * Parsing a JSON response
19 | * Creating a list based on that data and displaying it to the user.
20 |
--------------------------------------------------------------------------------
/deprecated/projects/android/BuildItBigger.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 | In this project, you will create an app with multiple flavors that uses
3 | multiple libraries and Google Cloud Endpoints. The finished app will consist of four modules:
4 |
5 | 1. A Java library that provides jokes
6 | 2. A Google Cloud Endpoints
7 | (GCE) project that serves those jokes
8 | 3. An Android Library containing an
9 | activity for displaying jokes
10 | 4. An Android app that fetches jokes from the GCE module and passes them to the Android Library for display
11 |
12 | ## Why this Project?
13 |
14 | As Android projects grow in complexity, it becomes necessary to customize the behavior of the Gradle build tool, allowing automation of repetitive tasks. Particularly, factoring functionality into libraries and creating product flavors allow for much bigger projects with minimal added complexity.
15 |
16 | ##What Will I Learn?
17 |
18 | You will learn the role of Gradle in building Android Apps and how to use Gradle to manage apps of increasing complexity. You'll learn to:
19 |
20 | * Add free and paid flavors to an app, and set up your build to share code between them
21 | * Factor reusable functionality into a Java library
22 | * Factor reusable Android functionality into an Android library
23 | * Configure a multi-project build to compile your libraries and app
24 | * Use the Gradle App Engine plugin to deploy a backend
25 | * Configure an integration test suite that runs against the local App Engine development server
26 |
27 | # Project Overview
28 |
29 | When you're done, your multi-project build will look something like this. Proceed to the next slide for specific instructions.
30 |
31 | 
32 |
33 | ### Supporting Courses
34 | You should have the skills you need to complete this projcet after completing Gradle for Android And Java.
35 | ##How Do I Complete this Project?
36 |
37 | ### Step 0: Starting Point
38 |
39 | This is the starting point for the final project, which is provided to you in the course repository.
40 |
41 | It contains an activity with a banner ad and a button that purports to tell a
42 | joke, but actually just complains. The banner ad was set up following the
43 | instructions here.
44 |
45 | You may need to download the Google Repository from the Extras section of the Android SDK Manager.
46 |
47 | When you can build an deploy this starter code to an emulator, you're ready to move on.
48 |
49 | ### Step 1: Create a Java library
50 |
51 | Your first task is to create a Java library that provides jokes. Create a new Gradle Java project either using the Android Studio wizard, or by hand. Then
52 | introduce a project dependency between your app and the new Java Library. If you need review, check out demo 4.01 from the course code.
53 |
54 | Make the button display a toast showing a joke retrieved from your Java joke
55 | telling library.
56 |
57 | ### Step 2: Create an Android Library
58 |
59 | Create an Android Library containing an Activity that will display a joke
60 | passed to it as an intent extra. Wire up project dependencies so that the
61 | button can now pass the joke from the Java Library to the Android Library.
62 |
63 | For review on how to create an Android library, check out demo 4.03. For a
64 | refresher on intent extras, check out this documentation.
65 |
66 | ### Step 3: Create GCE Module
67 |
68 | This next task will be pretty tricky. Instead of pulling jokes directly from
69 | our Java library, we'll set up a GCE development server,
70 | and pull our jokes from there. Follow the instructions in this
71 | tutorial to add a GCE module to your project:
72 |
73 | Introduce a project dependency between your Java library and your GCE module, and modify the GCE starter code to pull jokes from your Java library. Create an Async task to retrieve jokes. Made the button kick off a task to retrieve a joke, then launch the activity from your Android Library to display it.
74 |
75 | ### Step 4: Add Functional Tests
76 |
77 | Add code to test that your Async task successfully retrieves a non-empty
78 | string. For a refresher on setting up Android tests, check out demo 4.09.
79 |
80 | ### Step 5: Add a Paid Flavor
81 |
82 | Add free and paid product flavors to your app. Remove the ad (and any
83 | dependencies you can) from the paid flavor.
84 |
85 | ## Optional Tasks
86 |
87 | For extra practice to make your project stand out, complete the following tasks.
88 |
89 | ### Add Interstitial Ad
90 |
91 | Follow these instructions to add an interstitial ad to the free version. Display the ad after the user hits the button, and before the joke is shown.
93 |
94 | ### Add Loading Indicator
95 |
96 | Add a loading indicator that is shown while the joke is being retrieved, and
97 | disappears when the joke is ready. This tutorial is a good place to start.
98 |
99 | ### Configure Test Task
100 |
101 | To tie it all together, create a Gradle task that:
102 |
103 | 1. Launches the GCE local development server
104 | 2. Runs all tests
105 | 3. Shuts the server down again
106 |
107 | # Project Rubric
108 |
109 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
110 |
111 | A summary of the rubric is provided below.
112 |
113 | ### Required Components
114 |
115 | * Project contains a Java library for supplying jokes
116 | * Project contains an Android library with an activity that displays jokes passed to it as intent extras.
117 | * Project contains a Google Cloud Endpoints module that supplies jokes from the Java library. Project loads jokes from GCE module via an async task.
118 | * Project contains connected tests to verify that the async task is indeed loading jokes.
119 | * Project contains paid/free flavors. The paid flavor has no ads, and no unnecessary dependencies.
120 |
121 | ### Required Behavior
122 |
123 | * App retrieves jokes from Google Cloud Endpoints module and displays them via an Activity from the Android Library.
124 |
125 | ### Optional Components
126 |
127 | Once you have a functioning project, consider adding more features to test your Gradle and Android skills. Here are a few suggestions:
128 |
129 | * Make the free app variant display interstitial ads between the main activity and the joke-displaying activity.
130 | * Have the app display a loading indicator while the joke is being fetched from the server.
131 | * Write a Gradle task that starts the GCE dev server, runs all the Android tests, and shuts down the dev server.
132 |
133 | ## Submission and Evaluation
134 |
135 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
136 |
137 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
138 |
139 | If you are using GitHub to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
140 |
141 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
142 |
143 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
144 |
145 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
146 |
147 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
148 |
--------------------------------------------------------------------------------
/deprecated/projects/android/CapstoneStage1-Design.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 |
3 | In the Capstone project, you will build an app of your own design in two stages. In Stage 1, you will design and plan the app, using a template that we provide in the "Instructions" node.
4 |
5 | Creating and building your own app idea can be both exciting and daunting; ultimately, we want the experience to be rewarding. You'll apply a wealth of different concepts and components that you've learned across the Nanodegree to bring you own app idea to life.
6 |
7 | To keep the process from becoming overwhelming (or simply chaotic), you will design and plan your app, and receive feedback, *before* you start building. This will help prevent and mitigate pain points you might run into along the way, and also replicates the process of professional Android Developers.
8 |
9 | ## Why this Project?
10 |
11 | To become a proficient Android Developer, you need to design apps and make plans for how to implement them. This will involve choices such as how you will store data, how you will display data to the user, and what functionality to include in the app.
12 |
13 | ## What Will I Learn?
14 |
15 | Through this project, you'll demonstrate the ability to communicate an app idea formally, using:
16 |
17 | * An app description
18 | * UI flow mocks, similar to what you've seen in other Nanodegree projects, like the Popular Movies overview
19 | * A list of required tasks that you will complete to build the app, in order
20 |
21 | The Capstone project will give you the experience you need to own the full development of an app. This first stage replicates the design and planning experience that proficient Android Developers are expected to demonstrate.
22 |
23 | ## How Will I Complete this Project?
24 |
25 | ### Supporting Courses
26 |
27 | You will learn the skills you need to complete this project in these courses:
28 |
29 | * Developing Android Apps: Android Fundamentals
30 | * Advanced Android App Development: Productionize and Publish Your App
31 | * Google Play Services: Use Google APIs to Improve Your Apps
32 | * Gradle for Android and Java: Build Better Apps Through Automation
33 |
34 | ### App Ideas
35 |
36 | If you don't have an app idea of your own, feel free to choose one of these:
37 |
38 | * Teleprompter app (we're always on the look-out for a good teleprompter app!)
39 | * Fitness app
40 | * Podcast app
41 | * Travel app
42 | * Reddit app
43 |
44 | ### Required Tasks
45 | 1. Review the requirements for the app in this **document**
46 | 2. Make a copy of **this template**
47 | 3. Rename the copy: "**Capstone_Stage1**"
48 | 4. Fill out each section:
49 | * App Description
50 | * UI Mocks
51 | * Key Considerations
52 | * Next Steps: Required Tasks
53 | 5. Download the completed document as a PDF, and save it as: "**Capstone_Stage1.pdf**"
54 |
55 | ## Project Rubric
56 |
57 | project rubric.
58 |
59 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
60 |
61 |
62 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
63 |
64 |
65 |
66 | **IMPORTANT: If you're working in a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
67 |
68 |
--------------------------------------------------------------------------------
/deprecated/projects/android/CapstoneStage2-Build.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 |
3 | In Stage 1, you designed and planned your Capstone app. Now, it's time to build it!
4 |
5 |
6 | ## Why this Project?
7 |
8 | In this project, you will demonstrate the skills you've learned in your Nanodegree journey, and apply them to creating a unique app experience of your own. By the end of this project, you will have an app that you can submit to the Google Play Store for distribution.
9 |
10 | ## What Will I Learn?
11 |
12 | The Capstone project will give you the experience you need to own the full development cycle of an app.
13 |
14 | ## How Will I Complete this Project?
15 |
16 | ### Supporting Courses
17 |
18 | You will learn the skills you need to complete this project in these courses:
19 |
20 | * Developing Android Apps: Android Fundamentals
21 | * Advanced Android App Development: Productionize and Publish Your App
22 | * Google Play Services: Use Google APIs to Improve Your Apps
23 | * Gradle for Android and Java: Build Better Apps Through Automation
24 |
25 | ## Required Tasks
26 | 1. Successfully complete Stage 1.
27 | 2. Build your app using your Stage 1 document as a guide.
28 | 3. Submit your app source code through the Nanodegree project portal.
29 |
30 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
31 |
32 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
33 |
34 | Continue to the next node for submission and evaluation instructions.
35 |
36 | ## Submission and Evaluation
37 |
38 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
39 |
40 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
41 |
42 | If you are using GitHub to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
43 |
44 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
45 |
46 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
47 |
48 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
49 |
50 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
51 |
--------------------------------------------------------------------------------
/deprecated/projects/android/CourtCounter.md:
--------------------------------------------------------------------------------
1 | # Court Counter App
2 |
3 |
4 |
5 |
6 |
7 |
8 | ## Project Overview
9 |
10 | This project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making an app that allows a user to keep track of points within a game.
11 |
12 | The goal is to create an **Score Keeper app** which gives a user the ability to keep track of the score of two different teams playing a game of your choice. To build this project, you can follow along with the practice set and customize the Court Counter app to track scores from a different sport.
13 |
14 | - - -
15 |
16 | ### Why this project?
17 | In the most recent portion of the Nanodegree program, you learned how to make use of Java in your Android apps to make them interactive. With Score Keeper, you will be practicing this skill set, with particular focus on button code, variable scope, and updating views.
18 | - - -
19 | ### What will I learn?
20 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
21 |
22 | * Adding button code to your app
23 | * Updating views
24 | * Properly scoping variables
25 | * Finding views by their ID
26 |
27 | - - -
28 | ### Subscription vs Free-Version student
29 |
30 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
31 |
32 | If you are enrolled in the free version of this course, the project rubric and all of the project details are available to you.
33 |
34 | Either way, we would love to see a description and link to your app on the discussion forum.
35 |
36 |
37 |
--------------------------------------------------------------------------------
/deprecated/projects/android/ForceGolf.md:
--------------------------------------------------------------------------------
1 | # Project 5: Force Golf
2 |
3 | ## Project Description
4 |
5 | ### Project Overview
6 |
7 | For this project, you will make a top-down [minigolf](https://en.wikipedia.org/wiki/Miniature_golf) game with a space-aged aesthetic. A typical minigolf game consists of 18 holes, you may think of them as levels, that constitute an entire course. For each level in the course, a player is tasked with hitting a ball into a hole — this is the core gameplay mechanic for Force Golf.
8 |
9 | Players will be able to control the direction and force applied to a ball as it is hit around a level. Each time the ball is hit, a stroke is recorded. The goal is to complete a level, or an entire course, in the smallest number of strokes possible.
10 |
11 | You will build a LibGDX project, create a data representation of a level, implement a simple level loader, and then use Box2D to execute the physics required for a single level of Force Golf. It should be noted that levels typically contain hazards intended to obstruct a clear path from the ball's starting position to the hole. This makes gameplay more fun and challenging, and you are encouraged to include such hazards in the level you build.
12 |
13 | ### Why This Project?
14 |
15 | Force Golf is at its core a physics game, and it lends itself very well to being implemented with Box2D. By completing this project, you will not only gain experience working physics in 2D, but you will also be well-prepared to work with other physics engines. Additionally, we wanted to give you a project that allows for experimentation and creativity. Since you have the freedom to build levels as you see fit, you have an open canvas for designing interesting gameplay that utilizes all Box2D has to offer.
16 |
17 | ### What Will I Learn?
18 |
19 | You will learn how to utilize Box2D to simulate 2D physics in a game. Through this project, you will be introduced to concepts like forces, collision detection, and joints. Even if you do not have a formal physics background, you will still be able to gain a working knowledge of how physics are defined and applied in games. This will give you the ability to build your own 2D physics games and give you a great starting point if you decide to work with 3D physics.
20 |
--------------------------------------------------------------------------------
/deprecated/projects/android/GigaWars.md:
--------------------------------------------------------------------------------
1 | # GigaWars
2 |
3 | ## Description
4 |
5 | ### Project Overview
6 |
7 | GigaWars is an epic space-combat strategy game where you unleash a fleet of ships to destroy your enemy's base. The player (human or computer) will decide what ships to send into battle when, managing their resources. The individual ships will control themselves, however. In the distant future we no longer need to send soldiers into harms way; we can program the ships to fly themselves! You will write in-depth logic for several ship types to create glorious computer-controlled space battles. You will also write logic for computer players to play the game.
8 |
9 | ### Why this project?
10 |
11 | GigaWars is a chance for you to combine the skills that allowed you to create Space Kerfuffle! with your newfound mastery of game AI. This project will demonstrate mastery of a variety of game development concepts. The unique factor that separates video games from other media is their interactivity; their ability to create a dynamic user experience respond intelligently and meaningfully to situations. AI is the cornerstone of this interactivity. Imagine the power you will feel watching two fleets of ships duke it out, knowing that every automated maneuver is the result of your careful planning!
12 |
13 | ### What will I learn?
14 |
15 | This project will provide hands-on experience writing the type of AI scripts that you see in video games everywhere. Programming the ship logic will give you a chance to practice writing logic for active game entities and apply the steering and pathfinding techniques you learned in the course. Creating the computer agent that decides what ships to deploy when will be an exercise in creating high-level, strategic AI using decision trees, state machines, or whatever other AI techniques you deem appropriate.
16 |
17 | ## Completion
18 |
19 | Follow these steps to complete the project:
20 |
21 | * Create a new libGDX project. Be sure to check the "Ai" box in the libGDX project setup tool when generating your project. This will automatically add the relevant dependencies to your build.gradle files.
22 | * Download the provided game assets (link coming soon), or find/create your own!
23 | * Create all the classes you need to render an epic space battle. The basic gameplay rules are as follows:
24 | * There are two players. They can both be computer players, or there can be a human and a computer player. Each player has a base, which can be destroyed by the enemy player.
25 | * Each player has access to a resource or resources, and they gain resources over time. How exactly this works is up to you.
26 | * Each player can use a resource or resources to deploy ships. The players do not control the ships directly! Instead, the ships should have automated behavior.
27 | * Ships have decision making and steering AI that makes them fight once deployed. Ships can attack one another or the enemy's base. There is a mechanism by which the enemy base can be destroyed.
28 | * Create game AI that controls the ships and controls a computer player.
29 | * Watch your fleets fight!
30 |
31 | If you're unsure how to go about this, here are some design tips:
32 | * Rendering and updating all the ships is not too different from the work you did for Project 2: Space Kerfuffle! You can use your code from that project as an example.
33 | * For resources, the simplest option is to have a resource simply accumulate over time for each player. From there, there are a few simple ways to spice things up.
34 | * Make each side earn interest on there current resource total, so players must make strategic decisions about when to save up and accumulate more total resources, and when to spend and deploy more units.
35 | * Make each side earn resources as they destroy enemy ships.
36 | * Make a unit that can retrieve resources from the environment, such as from asteroids.
37 | * For ship decision making, and for the computer player's decision making, we recommend using `gdx.ai` [behavior trees](https://github.com/libgdx/gdx-ai/wiki/Behavior-Trees) or [state machines](https://github.com/libgdx/gdx-ai/wiki/State-Machine).
38 | * For ship steering, we recommend using the `gdx.ai` [steering API](https://github.com/libgdx/gdx-ai/wiki/Steering-Behaviors).
39 | * Use the built-in `gdx.ai` classes! A lot of common behaviors, especially in the steer package, are created for you. Using or extending these classes will be much easier than implementing everything yourself.
40 | * The enemy ship AI is the most complex part of the project. We recommend starting with getting some basic behaviors working for one or two ships, like avoiding walls or chasing enemies, and building up gradually from there. Once you have your ship behavior working, it will be easy to get the resources/ship purchasing gameplay elements in place.
41 |
--------------------------------------------------------------------------------
/deprecated/projects/android/GoUbiquitous.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 | In this project, you will build a wearable watch face for Sunshine to run on an Android Wear device.
3 |
4 | ## Why this Project?
5 | Android Wear is an exciting way to integrate your app more directly into users’ lives. As a new developer, it will be important for you to understand how to perform this integration. This project gives you an opportunity to design a companion app for Sunshine, tying it to a watch face in order to enrich the experience.
6 |
7 | ## What Will I Learn?
8 | Through this project, you will:
9 |
10 | * Understand the fundamentals of Android Wear.
11 | * Design for multiple watch form factors.
12 | * Communicate between a mobile device and a wearable device.
13 |
14 | ## How Will I Complete this Project?
15 |
16 | ### Supporting Courses
17 |
18 | You should have the skills you need to complete this app after completing:
19 |
20 | * Developing Android Apps
21 | * Advanced Android App Development
22 | * Android Ubiquitous Computing
23 |
24 | ### Required Tasks
25 |
26 | * Clone/Download a zip file of the final branch of Sunshine from Advanced Android App Development.
27 | * Spend time exploring the samples built into Android Studio, looking for ways to incorporate that functionality into an Android Wear watchface.
28 |
29 | ### Design Mocks
30 |
31 | Feel free to use the following square and round designs as a design reference.
32 |
33 | 
34 |
35 | 
36 |
37 | But certainly feel free to customize and create per your own taste and preferences! We're looking forward to seeing what you create!
38 |
39 | ## Project Rubric
40 |
41 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
42 |
43 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
44 |
45 | Continue to the next node for submission and evaluation instructions.
46 |
47 | ## Submission and Evaluation
48 |
49 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
50 |
51 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
52 |
53 | If you are using GitHub to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
54 |
55 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
56 |
57 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
58 |
59 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
60 |
61 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
62 |
--------------------------------------------------------------------------------
/deprecated/projects/android/HabitTracker.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | This project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making a habit tracking app using an SQLite table.
3 |
4 | The goal is to design and create the structure of a Habit Tracking app which would allow a user to store and track their habits over time.
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/162/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you learned about data storage in a SQLite database on Android. This is critical if you want to make any app that persists a user’s data over time or syncs with an online database for offline use.
13 |
14 | # What Will I Learn?
15 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
16 | * Creating a SQLite table in your app
17 | * Populating that table with new entries
18 | * Modifying the entries
19 | * Displaying the contents of the table to users.
20 |
--------------------------------------------------------------------------------
/deprecated/projects/android/Inventory.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | This project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making an inventory app for a small business using an SQL table and a number of CRUD commands.
3 |
4 | The goal is to design and create the structure of an Inventory App which would allow a store to keep track of its inventory of products. The app will need to store information about price, quantity available, supplier, and a picture of the product. It will also need to allow the user to track sales and shipments and make it easy for the user to order more from the listed supplier.
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/163/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you learned about data storage in Android, using both SQLite tables and file storage on the device. These skills let you build apps which are critical to small businesses worldwide. By practicing these skills and building this app, you will have the foundation to build similar apps for any kind of business.
13 |
14 | # What Will I Learn?
15 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
16 | * Storing information in a SQLite database
17 | * Integrating Android’s file storage systems into that database
18 | * Presenting information from files and SQLite databases to users
19 | * Updating information based on user input.
20 | * Creating intents to other apps using stored information.
21 |
--------------------------------------------------------------------------------
/deprecated/projects/android/MakeYourAppMaterial.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | ## Project Overview
4 | In this project, you will redesign an app to follow the Material Design guidelines and translate a set of static design mocks to a living and breathing app.
5 |
6 | ## Why this Project?
7 | This project gives you an opportunity to improve an app’s design, a vital skill for building apps users will love. It also replicates a common developer task of updating and changing an app's design as new standards are released.
8 |
9 | ##What Will I Learn?
10 |
11 | Through this project, you will:
12 |
13 | * Understand the fundamentals of Android design.
14 | * Apply Material Design guidelines to an mobile application.
15 | * Separate an interface into surfaces.
16 | * Effectively use transitions and motion.
17 |
18 | ## How Will I Complete this Project?
19 |
20 | You will improve an app for this project:
21 |
22 | * XYZ Reader: A mock RSS feed reader featuring banner photos and shocking headlines! Download the code here.
23 |
24 | The app is currently functional, and work in most cases for most users.
25 |
26 | Your job will be to take the user feedback in the UI Review node, and implement changes that will improve the UI and make it conform to Material Design.
27 |
28 | ### Supporting Courses
29 | You should have the skills you need to complete this app after completing:
30 |
31 | * Developing Android Apps
32 | * Advanced Android App Development
33 | * Material Design for Android Developers
34 |
35 | You can also refer to the [Material Design specification](http://www.google.com/design/spec/material-design/introduction.html).
36 |
37 | ### Required Tasks
38 |
39 | * Download a zip file of the app.
40 | * Read the UI Review in the next node.
41 | * Spend time exploring the current state of the app, looking for ways it could be improved. The app will need multiple improvements. Be sure to look specifically at issues called out in the UI Review.
42 | * Execute the improvements!
43 | * Make a single GitHub repo with your code for the app and submit it through the Nanodegree portal. See the Submission and Evaluation node for detailed instructions.
44 |
45 | For detailed information on how your project will be assessed, see the Rubric node.
46 |
47 | ## User Feedback for XYZ Reader:
48 |
49 | ### Lyla says:
50 | “This app is starting to shape up but it feels a bit off in quite a few places. I can't put finger on it but it feels odd.”
51 |
52 | ### Jay says:
53 | “Is the text supposed to be so wonky and unreadable? It is not accessible to those of us without perfect vision."
54 |
55 | ### Kagure says:
56 | “The color scheme is really sad and I shouldn't feel sad.”
57 |
58 | ## Project Rubric
59 |
60 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
61 |
62 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
63 |
64 | Continue to the next node for submission and evaluation instructions.
65 |
66 | ## Submission and Evaluation
67 |
68 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
69 |
70 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
71 |
72 | If you are using GitHub to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
73 |
74 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
75 |
76 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
77 |
78 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
79 |
80 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
81 |
--------------------------------------------------------------------------------
/deprecated/projects/android/Makeyouownandroidapp.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 | For this project, students will make their own Android app. They can either come up with their own idea or select from one of the ideas listed under App Ideas on the Final Project Description page. They are also welcome to repurpose code from Sunshine to create a new app.
3 |
4 |
5 | ## Why this project?
6 | This project is a way for students to demonstrate the concepts they learned in the Developing Android Apps course by building them out.
7 |
8 | ## What will students learn?
9 | Students will learn how to:
10 | * Create an app that meets standard design Android's CoreApp Quality Guidelines
11 | * Identify the minimum permissions required to support core functionality
12 | * Implement a ContentProvider to access locally stored data
13 | * Implement a SyncAdapter, AsyncTasks or IntentService when pulling/sending data from a web service
14 | * Use a Loader to move data to an app's views
15 | * Preserve and restore user or app state upon device rotation or from the Home/Back buttons
16 | * *Optional:* Implement Notifications, ShareActionProvider, Broadcast Events, and Custom Views
17 |
18 |
19 | ## How do students complete this project?
20 | 1. Complete the Developing Android Apps course
21 | 2. Students will create an open-ended project following the Project Description and Rubric listed here
22 | 3. The project must:
23 | * Import and build on the latest version of Android Studio (Eclipse users take note)
24 | * Be entirely self-contained on an Android device (No external devices/bluetooth peripherals).
25 | * Include only safe-for-work content in your app
26 | * Meet specifications on all required components of the rubric (including submitting their Project Description, Self-Evaluation, Mockups for all user-facing screens including tablet mocks, and a signed .apk)
27 |
28 |
29 | ## Evaluation
30 | ### Overview
31 |
32 | The project will be evaluated against the rubric:
33 | Android Fundamentals
34 |
35 | The criteria included in this rubric are a subset of the Core App Quality Guidelines that the app would be evaluated against if it were submitted to the Google Play Store. Find the full list of guidelines here: http://developer.android.com/distribute/essentials/quality/core.html
36 |
37 | ### How Grading Works
38 |
39 | We have created a document that gives rubric specific instructions to help you guys grade Developing Android Apps projects.You can access the document here:
40 | Android Apps Grading- Best Practices
41 |
42 | It is VERY IMPORTANT that you read this document before you begin evaluating projects.
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/deprecated/projects/android/MusicalStructure.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | This project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making the structure of a music app using intents and empty activities.
3 |
4 | The goal is to design and create the structure of a Music app which would allow a user to play audio files. There are many music player apps, and they make a wide variety of design choices. It will be your job to decide what kind of music app your structure would turn into and build out that structure using intents. Will you build an app to play music from the user’s library of music? Will you build an app to stream random songs from a database? Will you build a musical suggestion engine? Those choices are up to you!
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/159/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you learned how to think about the structure of an app and how to use OnClickListeners and explicit Intents to link between different activities within your own app. Practicing these skills will drastically improve the quality of the apps you build down the road.
13 |
14 |
15 | # What Will I Learn?
16 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
17 | * Designing an app experience to achieve a certain goal
18 | * Creating new activities
19 | * Using explicit Intents to link between activities in your app.
20 | * Using OnClickListeners to add behavior to buttons using Java code.
21 |
--------------------------------------------------------------------------------
/deprecated/projects/android/NewsApp.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | The final project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making your own app that connects to the Internet to provide news articles on a topic of your choice.
3 |
4 | The goal is to create an News feed app which gives a user regularly-updated news from the internet related to a particular topic, person, or location. The presentation of the information as well as the topic is up to you.
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/165/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you worked to build the Earthquake app. Along the way, you learned about connecting to the internet in Android, parsing responses from an API, updating the information in your app, and properly displaying that information. Practicing these skills is imperative in order to build apps that delight and surprise users by anticipating their needs and supplying them with relevant information.
13 |
14 |
15 | # What Will I Learn?
16 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
17 | * Connecting to an API
18 | * Parsing the response of the API
19 | * Handling error cases gracefully
20 | * Updating information regularly
21 |
--------------------------------------------------------------------------------
/deprecated/projects/android/Outbreak.md:
--------------------------------------------------------------------------------
1 | # Project 1: Outbreak
2 |
3 | ## Project Description
4 |
5 | ### Project overview
6 |
7 | For this project, you will make a simple game reminiscent of classic Atari arcade game Breakout. Players will control a platform at the bottom of the screen that moves from side to side to intercept a ball that will bounce on impact. The goal is to stop the ball from falling past your platform and deflect it into various blocks in the upper half of the screen. When the ball collides with a block, the block is destroyed.
8 |
9 | You will create a LibGDX project, implement a Screen, draw the game objects using a ShapeRenderer, and program the controls and real-time motion of the ball.
10 |
11 | ### Why this project?
12 |
13 | A breakout clone looks simple on the surface but there are lots of mechanics that go into making even a small game. Doing this project will allow you to build your skills and give you the confidence to tackle even more difficult projects.
14 |
15 | ### What will I learn?
16 |
17 | This project provides an opportunity to practice many of the core skills of 2D game development: key-frame animation, 2D collision detection, asset loading and management, level design and loading, and efficiently structuring a game with many objects spawning, getting destroyed, and flying across the screen. More important than any individual skill is the knowledge that you can make a complex game like this yourself. Complete this project, and you will be able to apply the same skills to making a variety of 2D games--including ones you design yourself.
18 |
19 | ### Why is this project meaningful to my career?
20 |
21 | Completing this project demonstrates a strong command of essential 2D game development skills. You can also show potential employers or collaborators that you can make an intensive game that runs on desktop or mobile (or as a browser game). This project is an excellent way to display a wide range of technical 2D game development ability.
22 |
23 | ## Completing the Project
24 |
25 | Completing the project consists of the following tasks:
26 |
27 | * Make a LibGDX project using the project generator tool.
28 | * Create a play screen using the Game class and Screen interface.
29 | * Write a render loop that displays all the game objects, including the player's platform, the ball, and the blocks, using ShapeRenderer.
30 | * Program the gameplay, including:
31 | * Polling for input to move the platform (arrow keys for the desktop build, and using the accelerometer on Android).
32 | * Moving the ball in real time and programming its bounce behavior.
33 | * Collision detection that makes the ball bounce when hitting a wall or block or the player platform, and destroying blocks on hit.
34 |
35 | ### Bonus challenges
36 |
37 | * Implement a Score that goes up as the player destroys blocks.
38 | * Add a start screen, Game Over screen, and/or win screen.
39 | * Implement different difficulty settings (eg the ball moves faster, there is a time limit, blocks take multiple hits).
40 |
41 | ## Submitting Your Project
42 |
43 | Before submitting your project for evaluation, we recommend that you check that each of the following is true:
44 |
45 | * Your app compiles & runs as expected
46 | * You are proud of your app and its output
47 | * You completed your project according to the instructions
48 | * You checked your project against [the rubric](https://review.udacity.com/#!/projects/5609616480/rubric)
49 |
--------------------------------------------------------------------------------
/deprecated/projects/android/Pong.md:
--------------------------------------------------------------------------------
1 | # Project 0: Pong
2 |
3 | ## Project description
4 |
5 | ### Project Overview
6 |
7 | In this project, you will write code to complete the classic arcade game, Pong. We provide the skeleton of a libGDX game, and you supply key features such as controls for the player and collision detection between the paddles and the ball.
8 |
9 | ### Why this project?
10 | Pong remains to this day an iconic work in video game history. It can be seen as an emphatic proof of concept for the entire video game medium. Elegant in its simplicity, it still has all the essential features of a video game, such as a render loop, a basic notion of physics, player input, and a computer-controlled agent. Over the course of this Nanodegree program, you will learn how to apply these notions to much more complex projects. Still, there's no better place to start your game development journey than with this classic.
11 |
12 | ### What will I learn?
13 | This project is an opportunity for you to apply what you've learned so far to make a playable game. As far as what you can make with the tools you'll learn in this Nanodegree program, this is only the beginning. Are you ready to take the first step on your game development adventure? Let's play some Pong!
14 |
15 | ## Project Completion:
16 |
17 | Completing the project consists of the following tasks:
18 |
19 | * Download the project [here](https://github.com/udacity/2d-game-dev-project-0).
20 | * Import the libGDX project into Android Studio or IntelliJ IDEA.
21 | * Using the Ball class as an example, add the required method(s) to the Paddle class so that it can draw itself.
22 | * Give the Paddle class an `.update()` method where it moves up or down in response to arrow key input.
23 | * Write collision detection for the Ball and Paddle.
24 | * Instantiate necessary game entities in the PongScreen class, and call the appropriate methods to render/update them in the PongScreen class’ `.render()` method.
25 | * Uncomment starting code indicated by TODOs as you complete various portions of the project.
26 |
27 | ### Bonus challenges / Optional features
28 |
29 | * Add a game selection / start screen
30 | * Add music and / or sound effects.
31 | * Code your own computer paddle logic.
32 |
33 | ## Submitting Your Project
34 | The submission portal for this project is not open yet. You can view the rubric [here](https://review.udacity.com/#!/projects/7425879428/rubric).
35 |
--------------------------------------------------------------------------------
/deprecated/projects/android/PopularMoviesStage1.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 | Most of us can relate to kicking back on the couch and enjoying a movie with friends and family. In this project, you’ll build an app to allow users to discover the most popular movies playing. We will split the development of this app in two stages. First, let's talk about stage 1.
3 | In this stage you’ll build the core experience of your movies app.
4 |
5 | You app will:
6 |
7 | * Present the user with a grid arrangement of movie posters upon launch.
8 | * Allow your user to change sort order via a setting:
9 | * The sort order can be by most popular or by highest-rated
10 | * Allow the user to tap on a movie poster and transition to a details screen with additional information such as:
11 | * original title
12 | * movie poster image thumbnail
13 | * A plot synopsis (called overview in the api)
14 | * user rating (called vote_average in the api)
15 | * release date
16 |
17 | ## Why this Project?
18 | To become an Android developer, you must know how to bring particular mobile experiences to life. Specifically, you need to know how to build clean and compelling user interfaces (UIs), fetch data from network services, and optimize the experience for various mobile devices. You will hone these fundamental skills in this project.
19 |
20 | By building this app, you will demonstrate your understanding of the foundational elements of programming for Android. Your app will communicate with the Internet and provide a responsive and delightful user experience.
21 |
22 | ## What Will I Learn After Stage 1?
23 | * You will fetch data from the Internet with theMovieDB API.
24 | * You will use adapters and custom list layouts to populate list views.
25 | * You will incorporate libraries to simplify the amount of code you need to write
26 |
27 | ## How Will I Complete this Project?
28 | ### Supporting Course Material
29 | You should have the skills you need to complete this app after completing Lessons 1-3 of Developing Android Apps.
30 |
31 | If you'd like to make your app's UI beautiful, we also suggest reviewing this material from Lesson 5, which goes into greater detail about how to make more detailed layouts.
32 | ### Required Tasks
33 |
34 | * Build a UI layout for multiple Activities.
35 | * Launch these Activities via Intent.
36 | * Fetch data from themovieDB API
37 |
38 | ### Implementation Guide
39 | For step-by-step support, we've provided details on how to approach each task in this Implementation Guide.
40 |
41 | ## Project Rubric
42 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
43 |
44 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
45 |
46 | ## Submission and Evaluation
47 |
48 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
49 |
50 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
51 |
52 | If you are using GitHub to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
53 |
54 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
55 |
56 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
57 |
58 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
59 |
60 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
61 |
--------------------------------------------------------------------------------
/deprecated/projects/android/PopularMoviesStage2.md:
--------------------------------------------------------------------------------
1 | ## Project Overview
2 | Welcome back to Popular Movies! In this second and final stage, you’ll add additional functionality to the app you built in Stage 1.
3 |
4 | You’ll add more information to your movie details view:
5 |
6 | * You’ll allow users to view and play trailers ( either in the youtube app or a web browser).
7 | * You’ll allow users to read reviews of a selected movie.
8 | * You’ll also allow users to mark a movie as a favorite in the details view by tapping a button(star). This is for a local movies collection that you will maintain and does not require an API request*.
9 | * You’ll modify the existing sorting criteria for the main view to include an additional pivot to show their favorites collection.
10 |
11 | Lastly, you’ll optimize your app experience for tablet.
12 |
13 | Recall from Stage 1, you built a UI that presented the user with a grid of movie posters, allowed users to change sort order, and presented a screen with additional information on the movie selected by the user:
14 |
15 | 
16 |
17 | In Stage 2, you will go one step further and allow the user to view movie trailers, read reviews, and select favorites.
18 |
19 | 
20 |
21 | Lastly, you will take the entire end-to end-user interaction flow, including what you built in Stage 1, and optimize it to work on tablets.
22 |
23 | 
24 |
25 | ## What Will I Learn After Stage 2?
26 | * You will build a fully featured application that looks and feels natural on the latest Android operating system (Lollipop, as of May 2015).
27 | * You will optimize the UI experience for both phones and tablets.
28 |
29 | ## How Will I Complete this Project?
30 |
31 | ### Supporting Course Materials
32 | You should have the skills you need to complete this project after completing the Developing Android Apps course, focusing on Lessons 4 and 5.
33 |
34 | You are expected to have passed the Popular Movies, Stage 1 project prior to beginning this project.
35 |
36 | ### Implementation Guide
37 | Just like in Stage 1, we've come up with a set of milestones that will help structure your development and ensure that you reach the final product smoothly. These milestones are listed in the Stage 2 Implementation Guide.
38 |
39 | ## Project Rubric
40 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
41 |
42 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
43 |
44 | ## Submission and Evaluation
45 |
46 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
47 |
48 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a GitHub repository. You can clean your project by following the instructions given in **[this](https://goo.gl/8lgeV5)** link.
49 |
50 | If you are using GitHub to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
51 |
52 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
53 |
54 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
55 |
56 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
57 |
58 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
59 |
--------------------------------------------------------------------------------
/deprecated/projects/android/QuizApp.md:
--------------------------------------------------------------------------------
1 | # Overview
2 | The Quiz App project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making your own Android app - taking it from the idea stage to building out the full app. You can share your app with family and friends, as well as with other students in this course.
3 |
4 | The goal is to create an educational app that quizzes a user about a certain topic of your choice. We want you to be creative about how you accomplish this. It’s up to you what the quiz questions will be about and how you want to present them to your user. (We recommend about 5-10 quiz questions for a reasonable scope of your app).
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/158/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | So far in this Nanodegree program, we’ve built three apps together: the Happy Birthday, Court Counter and Just Java apps. At this point, we believe that you’re now ready to create your own app. You will have full ownership over the creative vision, planning, and development of the app.
13 |
14 | From what we’ve seen in the discussion forums, you each have a wealth of different experiences and unique areas of expertise. We would like to see that shine through in the app that you create.
15 | # What Will I Learn?
16 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
17 | * Planning your app design before coding.
18 | * Taking an app layout from drawing to XML code.
19 | * Creating, positioning, and styling views.
20 | * Creating interactivity through button clicks and Java code.
21 | * Commenting and documenting your code.
22 |
--------------------------------------------------------------------------------
/deprecated/projects/android/ReportCard.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | This project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be creating a single file this time - a custom class to represent a report card.
3 |
4 | The goal is to design and create the structure of a ReportCard Class which would allow a school to store a student’s grades for a particular year. This project will be just a java class, rather than a full Android app.
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/160/view) and all of the project details are available to you.
9 |
10 | Either way, we would love to see a description and link to your app on the discussion forum.
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you learned about custom classes, which are critical to every object-oriented program you will build going forward. It is vital to be able to think about how to design objects which interact with each other and model real-world concepts.
13 |
14 | # What Will I Learn?
15 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
16 | * Designing a custom class
17 | * Creating that class in Java code.
18 | * Storing information in an array
19 | * Looping through an array
20 |
--------------------------------------------------------------------------------
/deprecated/projects/android/SpaceKerfuffle!.md:
--------------------------------------------------------------------------------
1 | # Project 2: Space Kerfuffle!
2 |
3 | ## Project Description
4 | ### Project Overview
5 |
6 | Space Kerfuffle! is a top down, starfighter combat game. Players assume the role of an intrepid spacefighter pilot flying headlong into a swarm of aliens or robots or something else evil that wants to destroy humanity, probably. Players control a spacecraft and fire projectiles at oncoming enemies who do the same. Explosions happen. Numbers go up.
7 |
8 | See our prototype of the game here for inspiration. Note that your game doesn’t have to function exactly like this! You can be creative and use your own design ideas. Make sure to read and review the project rubric before submitting, however.
9 |
10 | (No aliens or robots were harmed in the creation of this Nanodegree program.)
11 |
12 | ### Why this project?
13 |
14 | In How to Build a Platfroming Using LibGDX, you built GigaGal, an old-school action platformer. Rather than recreating a similar project here, making Space Kerfuffle! will give you a chance to explore yet another classic arcade game genre. You will get a chance to apply the skills you learned in class, but also stretch your wings (no pun intended!) a bit and design a complex game on your own. When you're done, you'll have a way-cool space combat game to add to your portfolio.
15 |
16 | ### What will I learn?
17 |
18 | This project provides an opportunity to practice many of the core skills of 2D game development: key-frame animation, 2D collision detection, asset loading and management, level design and loading, and efficiently structuring a game with many objects spawning, getting destroyed, and flying across the screen. More important than any individual skill is the knowledge that you can make a complex game like this yourself. Complete this project, and you will be able to apply the same skills to making a variety of 2D games--including ones you design yourself.
19 |
20 | ### Why is this project meaningful to my career?
21 |
22 | Top-down fighter plane games are a classic arcade game genre, and they employ complicated game mechanics and animation. Completing this project demonstrates a strong command of essential 2D game development skills. You can also show potential employers or collaborators that you can make an intensive game that runs on desktop or mobile (or as a browser game). This project is an excellent way to display a wide range of technical 2D game development ability.
23 |
24 | ## Completing the Project
25 |
26 | ### Getting Started
27 |
28 | First, you will need to create a project using the LibGDX project generator tool. If you need a refresher on how to use the project generator, check out this video from the 2D Game Development course.
29 |
30 | Once you have your project set up, you will need one class that extends Game, and one class that implements Screen or extends ScreenAdapter. For a model on how to set this up, look at how we made the GigaGal game in the second course.
31 |
32 | Create an ExtendViewport, just like we did for GigaGal, but this one will extend vertically rather than horizontally. Once you have a Game, a Screen or ScreenAdapter, and a Viewport, you’re ready to start rendering your game.
33 |
34 | ### Importing Assets
35 |
36 | We provide a bunch of art assets for Space Kerfuffle!, which you can download here. These include animation frames for multiple ship types while firing, moving left, and moving right, animation frames for a big bad boss ship, as well as a bunch of projectiles and powerups that you can use. It’s up to you what sprites you use for what parts of the game, and you are free to use your own if you or any of your friends do game art.
37 |
38 | Loading all of these assets individually would be sub-optimal, so you will load them all at once using a TexturePacker. See Level 2-1: Sprites and Animations from How to Build a Platformer Using LibGDX for an example of how to use the built in LibGDX TexturePacker tool. This will pack all the sprite you want to use into a single image called an asset. Inside your game, you will access images from this atlas.
39 |
40 | To access things from your TextureAtlas, you need to create an instance of the AssetManager class. You can then access individual images from your atlas using the findRegion() method. Instead of using the findRegion() method of the TextureAtlas class at runtime, which is slow, you should load all the textures into memory ahead of time, and save them as final variables somewhere.
41 |
42 | ### Classes for the Player, Enemies, and Projectiles
43 |
44 | It’s up to you what classes you make for SpaceKerfuffle!, but we recommend at least making a class for the player’s ship, one for enemy ship, and one for projectiles. You may choose to employ some inheritance here, as many of these objects share certain properties. These classes should manage the position and state of these entities on the screen, and also know how to draw these objects. You may want to implement methods such as `render()` or `update()`.
45 |
46 | Inside the player ship class, or elsewhere, you will need to get input from the player themselves. The player must be able to move their ship using the arrow keys on the desktop backend, and the ship should follow their finger on mobile. There should be a button for firing projectiles on desktop, and we recommend having your ship perpetually firing on mobile. In games like this, many players will be mashing the shoot button anyway!
47 |
48 | For making the player and defining controls, you might want to review Level 1-6: User Input from 2D Game Development with LibGDX and Level 2-2: The Player from How to Build a Platformer Using LibGDX. For inspiration on creating enemy classes, check out Level 2-5: The Enemies.
49 |
50 | You will also need to make a boss battle to come at the end of your level, so a class (or several!) for the boss is recommended. It’s up to you how the boss behaves, but a good boss battle has phases and forces the player to react to the boss’ tactics. Be creative!
51 |
52 | ### Rendering Your Objects
53 |
54 | We recommend that you have some sort of Level class that keeps track of the player, enemies, and projectiles using data structures such as arrays. You can iterate through these arrays and render each individual object in a render method that you can call from the render method of your Screen object.
55 |
56 | In order to animate your objects in real time, you will need to put together the textures you extracted from your atlas into Animation objects, and use the getKeyFrame() method of the Animation class to get the appropriate frame for any given moment. See how we animated GigaGal in Level 2-2: The Player for an example of how to do this.
57 |
58 | You will also need to implement a collision detection mechanic that tests whether entities in your game have been hit by projectiles, removing entities that are destroyed, and spawning explosion animations. You can check out Level 2-6: The Bullets for inspiration here.
59 |
60 | ### Other Requirements
61 |
62 | Your game must load level data from a file rather than hard-coding it all. See Level 2-7: Level Loading (_coming soon_) for a model on how to accomplish this. We recommend using the Overlap2d or Tile map editors to create a JSON, which you can then parse using LibGDX’s built-in JSON parsing classes.
63 |
64 | Additionally, you will need to render a HUD that displays the player’s score, which should increase as they destroy enemies. If the player runs out of lives, a Game Over message should be displayed. If the player defeats the boss, a You Win! message should be displayed along with their final score.
65 |
66 | ## Submitting Your Project
67 |
68 | Before submitting your project for evaluation, we recommend that you check that each of the following is true:
69 |
70 | * Your app compiles & runs as expected
71 | * You are proud of your app and its output
72 | * You completed your project according to the instructions
73 | * You checked your project against [the rubric](https://review.udacity.com/#!/projects/5761872486/rubric)
74 |
--------------------------------------------------------------------------------
/deprecated/projects/android/StockHawk.md:
--------------------------------------------------------------------------------
1 |
2 | ## Project Overview
3 | You will productionize an app, taking it from a functional state to a production-ready state. This will involve finding and handling error cases, adding accessibility features, allowing for localization, adding a widget, and adding a library.
4 |
5 | ## Why this Project?
6 |
7 | Stock Hawk gives you an opportunity to diagnose problems and practice improving apps. These skills are vital to building apps users will love.
8 |
9 | Diagnosing issues with existing apps is key to working on large apps or continuing projects in Android.
10 | Being aware of the common pitfalls in app design frees a developer to produce novel app experiences without making the same mistakes over and over.
11 |
12 | ## What Will I Learn?
13 |
14 | In this project, you will:
15 |
16 | * Diagnose existing issues with an app.
17 | * Make an app accessible to sight-impaired users.
18 | * Allow your app to be localized for distribution in other countries.
19 | * Handle error cases in Android.
20 | * Add a widget to your app experience.
21 | * Leverage the functionality of a library in your app.
22 |
23 | ## How Will I Complete this Project?
24 |
25 | You will improve the Stock Hawk app for this project.
26 |
27 | You can download the starting code for Stock Hawk in the Downloadables section. The app currently finds stock prices from the internet and allows users to add stocks to track.
28 |
29 | Your job will be to take the user feedback in the UX Review and implement changes that will make the app production ready.
30 |
31 | All of the issues you **need** to address to meet specifications are hinted at in the UX Review. There are also a few optional ways in which the apps can be improved that are not mentioned in the UX Review.
32 |
33 | ### Supporting Courses
34 | You should have the skills you need to complete this app after completing Developing Android Apps and
35 | Advanced Android App Development.
36 |
37 | ### Required Tasks
38 |
39 | * Download a zip file of the app code from the Downloadables section.
40 | * Read the UX Review in the next node.
41 | * Spend time exploring the current state of the app, looking for ways they could be improved. Be sure to look specifically at issues called out in the UX Review.
42 | * Execute the improvements!
43 | * For Nanodegree students: Make a single GitHub repo with your code for both apps, and submit through the Nanodegree portal. See the Submission and Evaluation node for detailed instructions.
44 |
45 | For detailed information on how your project will be assessed, see the Rubric node.
46 |
47 |
48 |
49 | ## Project Rubric
50 |
51 | Your project will be evaluated by a Udacity Code Reviewer according to this rubric.
52 |
53 | Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
54 |
55 | Continue to the next node for submission and evaluation instructions.
56 |
57 | ## Submission and Evaluation
58 |
59 | Your project will be evaluated by a Udacity Code Reviewer according to the rubric in the previous node. Be sure to review it thoroughly before you submit. All criteria must "meet specifications" in order to pass.
60 |
61 | **Note**: Please make sure you **clean** your project before creating a zip file or pushing code to a Github repository. You can clean your project by following the instructions given in **[this](https://goo.gl/E7aBxo)** link.
62 |
63 | If you are using Github to host your projects, please make sure the code you want to submit for review is in the **master** branch of your repository.
64 |
65 | **IMPORTANT: If you're submitting via a public Github repository, please make sure any external API key that you utilize, has been removed from your code.** It's highly unsafe (and often breaks the Terms of Service) to include API keys in public repos, so you need to remove yours. You can add a note in a README file where a reviewer should go to insert their API key. Reviewers have been trained to expect this situation.
66 |
67 | When you're ready to submit your project, click on Udacity in the navigation bar at the top your screen to return to your Udacity Home. Then, locate and expand the project you'd like to submit. Click on the button to submit your project. You can view the submission process in more detail here.
68 |
69 | If you have any problems submitting your project, please email us at **android-project@udacity.com**. Due to the high volume of submissions, the turnaround for your project can take **up to a week**.
70 |
71 | Each Android ND project will be reviewed against the Common Project Requirements, in addition to its project-specific rubric.
72 |
--------------------------------------------------------------------------------
/deprecated/projects/android/TourGuide.md:
--------------------------------------------------------------------------------
1 | # Project Overview
2 | The final project is a chance for you to combine and practice everything you learned in this section of the Nanodegree program. You will be making your own multi-screen Android app to share your knowledge about a city you are very familiar with.
3 |
4 | The goal is to create a tour guide app which presents relevant information to a user who’s visiting your city. The app can list top attractions, restaurants, public places, or events for the city. It can contain all the best known secrets that only locals know. It’s up to you which categories you want to provide, as well as what information to provide in each category.
5 |
6 | If you are subscribed to the paid Nanodegree program, coaches will be available in the Coaches Lounge to help guide you through the final project. You will receive feedback after submitting your project and a verified certificate after successfully finishing this project.
7 |
8 | If you are enrolled in the free version of this course, the [project rubric](https://review.udacity.com/#!/rubrics/161/view) and all of the project details are available to you.
9 | Either way, we would love to see a description and link to your app on the discussion forum.
10 |
11 | # Why this project?
12 | In the most recent portion of the Nanodegree program, you worked to build the Miwok language app, which taught you how to present information in a multi-screen app to your users. Now, you will practice that skillset by presenting information that you care about in your own life to a user. Your Tour Guide app will be unique to your city, your life, and your interests.
13 | # What Will I Learn?
14 | This project is about combining various ideas and skills we’ve been practicing throughout the course. They include:
15 | * Planning your app design and navigation before coding.
16 | * Selecting proper data structures to store lists of information.
17 | * Building layouts to display those lists of data.
18 | * Navigating between those lists using either a ViewPager or intents and multiple Activities.
19 | * Creating your own custom classes.
20 | * Properly handling images or audio (if applicable).
21 |
--------------------------------------------------------------------------------
/deprecated/projects/android/YourFirstApp.md:
--------------------------------------------------------------------------------
1 | Beginning Android Project 1: Your First App
2 |
3 | ## Project Overview
4 | Design and implement a single screen app that displays information about a small business that you are closely familiar with.
5 |
6 | Here are some app ideas to help brainstorm:
7 |
8 | - Details about a small business in your neighborhood
9 | - Contact info and description about your workplace or school
10 | - Info about a special interest group (like a club or sports team) you’re part of and how new members can sign up
11 |
12 | Your design should include:
13 | - at least one photo representing the business
14 | - Name
15 | - Description
16 | - Phone Number
17 | - Address
18 | - Website (optional)
19 | - Hours of Operation (optional)
20 |
21 | Note: Be sure to check with the business for permission to use their name and details before you share your work publicly.
22 |
23 |
24 | ## Why this project?
25 | This project is a way for students to demonstrate the concepts they learned in the Developing Android Apps course by building out the design.
26 |
27 | ## What will students learn?
28 | Students will learn how to:
29 | * Use View Groups, Image Views, Text Views, and Button Views to display a screen on an Android application
30 |
31 | ## How do students complete this project?
32 | 1. Complete the Beginning Android Development course.
33 | 2. Students will create an open-ended project following the Project Description and Rubric shown here.
34 | 3. The project must:
35 | * Import and build on the latest version of Android Studio (Eclipse users take note)
36 | * Be entirely self-contained on an Android device (No external devices/bluetooth peripherals).
37 | * Include only safe-for-work content in your app
38 | * Meet specifications on all required components of the rubric
39 |
40 |
41 | ## How Grading Works
42 |
43 | We have created a document that gives rubric specific instructions to help grade Developing Android Apps projects. You can access the document here:
44 | Android Apps Grading- Best Practices
45 |
46 | It is VERY IMPORTANT that you read this document before you begin evaluating projects.
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/deprecated/speedrun-practice/README.md:
--------------------------------------------------------------------------------
1 | ## Practice Speedrun
2 | Topic specific practice, to build out a portfolio, gain additional experience in an area, or for a preset list of assignments to tackle for a hands-on boosting speedrun to drive your ability to the next level:
3 |
4 | - [Algorithms and Data Structures](./algorithms.md)
5 | - [Android](./android.md)
6 | - [Frontend Web Development](./frontend-dev.md)
7 | - [Fullstack Web Development](./fullstack-dev.md)
8 | - [Game Development](./game-dev.md)
--------------------------------------------------------------------------------
/deprecated/speedrun-practice/algorithms.md:
--------------------------------------------------------------------------------
1 | # Algorithms and Data Structures - Speedrun / Practice
2 |
3 | ## Notes
4 | The following is a list of practice problems for studying algorithms and data structures.
5 |
6 | Recommendation: select one programming language and complete all of the problems using that language. If you want to add an additional language, complete them all in the language you selected first, then repeat them with your second language choice. Good choices for a first language are C++ (runs fast) and Python (fast to code), though any language will work (yes, including JavaScript).
7 |
8 | ## Projects
9 | - [ ] [Google Code Jam 2015 - Qualification Round](https://code.google.com/codejam/contest/6224486/dashboard)
10 | - [ ] [Google Code Jam 2015 - Round 1A](https://code.google.com/codejam/contest/4224486/dashboard)
11 | - [ ] [Google Code Jam 2015 - Round 1B](https://code.google.com/codejam/contest/8224486/dashboard)
12 | - [ ] [Google Code Jam 2015 - Round 1C](https://code.google.com/codejam/contest/4244486/dashboard)
13 | - [ ] [Google Code Jam 2015 - Round 2](https://code.google.com/codejam/contest/8234486/dashboard)
14 | - [ ] [Google Code Jam 2015 - Round 3](https://code.google.com/codejam/contest/4254486/dashboard)
15 | - [ ] [Google Code Jam 2015 - World Finals](https://code.google.com/codejam/contest/5224486/dashboard)
16 | - [ ] [Google Code Jam 2016 - Qualification Round](https://code.google.com/codejam/contest/6254486/dashboard)
17 | - [ ] [Google Code Jam 2016 - Round 1A](https://code.google.com/codejam/contest/4304486/dashboard)
18 | - [ ] [Google Code Jam 2016 - Round 1B](https://code.google.com/codejam/contest/11254486/dashboard)
19 | - [ ] [Google Code Jam 2016 - Round 1C](https://code.google.com/codejam/contest/4314486/dashboard)
20 | - [ ] [Google Code Jam 2016 - Round 2](https://code.google.com/codejam/contest/10224486/dashboard)
21 | - [ ] [Google Code Jam 2016 - Round 3](https://code.google.com/codejam/contest/3224486/dashboard)
22 | - [ ] [Google Code Jam 2016 - World Finals](https://code.google.com/codejam/contest/7234486/dashboard)
23 | - [ ] [Google Code Jam 2017 - Qualification Round](https://code.google.com/codejam/contest/3264486/dashboard)
24 | - [ ] [Google Code Jam 2017 - Round 1A](https://code.google.com/codejam/contest/5304486/dashboard)
25 | - [ ] [Google Code Jam 2017 - Round 1B](https://code.google.com/codejam/contest/8294486/dashboard)
26 | - [ ] [Google Code Jam 2017 - Round 1C](https://code.google.com/codejam/contest/3274486/dashboard)
27 | - [ ] [Google Code Jam 2017 - Round 2](https://code.google.com/codejam/contest/5314486/dashboard)
28 | - [ ] [Google Code Jam 2017 - Round 3](https://code.google.com/codejam/contest/8304486/dashboard)
29 | - [ ] [Google Code Jam 2017 - World Finals](https://code.google.com/codejam/contest/6314486/dashboard)
30 |
31 | ## Prep
32 | If you need to study before diving in:
33 |
34 | ### Prep - Intro for beginners
35 | - [ ] Course: [CS for All](https://www.cs.hmc.edu/csforall/)
36 | - [ ] Challenges: [Code Fights Arcade Challenges](https://codefights.com/arcade/)
37 | - [ ] Move on to one of the language specific paths below
38 |
39 | ### Prep - Python version
40 | - [ ] Course: [Introduction to Computer Science and Programming Using Python](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11)
41 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/)
42 | - [ ] Course: [Introduction to Computational Thinking and Data Science](https://www.edx.org/course/introduction-computational-thinking-data-mitx-6-00-2x-6)
43 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
44 | - [ ] Course: [Introduction to Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/index.htm) (requires book purchase) or Book - [Open Data Structures](http://opendatastructures.org/ods-python.pdf)
45 | - [ ] Challenge: [Python Interview Prep](https://www.hackerrank.com/chingu-challenge-3)
46 |
47 | ### Prep - Java version
48 | - [ ] Book: [Think Java - How to Think Like a Computer Scientist](http://greenteapress.com/wp/think-java/)
49 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/)
50 | - [ ] Course: [Software Construction](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-software-construction-spring-2016/index.htm)
51 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
52 | - [ ] Book - [Open Data Structures (in Java)](http://opendatastructures.org/ods-java.pdf)
53 | - [ ] Course: [Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1)
54 | - [ ] Course: [Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2)
55 | - [ ] Challenge: [Java Interview Prep](https://www.hackerrank.com/chingu-challenge-3-java-interview-prep)
56 |
57 | ### Prep - C++ Version
58 | - [ ] Course: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)
59 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/)
60 | - [ ] Course: [Introduction to C and C++](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-s096-introduction-to-c-and-c-january-iap-2013/index.htm)
61 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
62 | - [ ] Lessons: [Basic Programming](https://www.hackerearth.com/practice/basic-programming/input-output/basics-of-input-output/tutorial/)
63 | - [ ] Lessons: [Data Structures](https://www.hackerearth.com/practice/data-structures/arrays/1-d/tutorial/)
64 | - [ ] Book - [Open Data Structures (in C++)](http://opendatastructures.org/ods-cpp.pdf)
65 | - [ ] Practice: [C++ Interview Prep](https://www.hackerrank.com/chingu-challenge-10-c-interview-prep)
66 |
67 | ### Prep - JavaScript Version
68 | - [ ] Course: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)
69 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/)
70 | - [ ] Book: [YDKJS](https://github.com/getify/You-Dont-Know-JS)
71 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
72 | - [ ] Book: [JavaScript Allongé, the "Six" Edition](https://leanpub.com/javascriptallongesix/read)
73 | - [ ] Course: [Khan Academy - Computer Science](https://www.khanacademy.org/computing/computer-science)
74 | - [ ] Book - [Open Data Structures](http://opendatastructures.org/ods-python.pdf)
75 | - [ ] Practice: [JavaScript Interview Prep](https://www.hackerrank.com/chingu-challenge-9-javascript-prep)
76 |
77 | ### Prep - Mathematics / Algorithms to go with any other language of your choice
78 | - [ ] Pick a language and find an online resource for learning the basics of that language
79 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/)
80 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
81 | - [ ] Book - [Open Data Structures](http://www.aupress.ca/books/120226/ebook/99Z_Morin_2013-Open_Data_Structures.pdf)
82 | - [ ] Practice: [HackerRank Data Structures Section](https://www.hackerrank.com/domains/data-structures/)
83 | - [ ] Practice: [HackerRank Algorithms Section](https://www.hackerrank.com/domains/algorithms/)
84 |
85 | ### Advanced Mathematics / Algorithms
86 | (addon to any of the other preps if you want to dive even deeper)
87 | - [ ] Course: [How to Win Coding Competitions: Secrets of Champions](https://www.edx.org/course/how-win-coding-competitions-secrets-itmox-i2cpx-1) Optional - only if it's in session
88 | - [ ] Course: [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
89 | - [ ] Course: [Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)
90 | - [ ] Course: [Design and Analysis of Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015/) Requires textbook purchase (Cormen)
91 | - [ ] Course: [Advanced Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2008/index.htm)
92 | - [ ] Course: [Advanced Data Structures](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-851-advanced-data-structures-spring-2012/index.htm)
93 |
94 |
--------------------------------------------------------------------------------
/deprecated/speedrun-practice/frontend-dev.md:
--------------------------------------------------------------------------------
1 | # Frontend Web Development - Speedrun / Practice
2 |
3 | ## Notes
4 | The following is a list of practice projects for frontend development intended to be used as ideas for portfolio projects or for use in a speedrun (set aside a month or two and speed through as many as you can in that time - as an intensive hands on practice.)
5 |
6 | Always find or make your own open source assets when doing any clone, and attribute your sources. Don't get sued for copyright violation.
7 |
8 | ## Projects
9 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
10 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
11 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
12 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
13 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
14 | - [ ] Project: [CSS Zen Garden](http://www.csszengarden.com/) - implement your own CSS design for the competition
15 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
16 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
17 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
18 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
19 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
20 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
21 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
22 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
23 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
24 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
25 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
26 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
27 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
28 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
29 | - [ ] Project: Clone [this](https://blackrockdigital.github.io/startbootstrap-clean-blog/) blog template - note that there are multiple pages
30 |
31 | ## Helpful links
32 | - How to not f-up your local files with Git [part1](https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-1-e0756c88fd3c), [part2](https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-2-fc4e243be02a) and [part 3](https://medium.com/chingu/how-to-not-f-up-your-local-files-with-git-part-3-bf03b27b6e64)
33 | - [surge.sh](https://surge.sh/)
34 | - [Learn to Code HTML & CSS](http://learn.shayhowe.com/html-css/)
35 | - [Learn to Code Advanced HTML & CSS](http://learn.shayhowe.com/advanced-html-css/)
36 | - [Getting Sassy with CSS](http://www.sassshop.com/#/)
37 | - [Programming for the Web with JavaScript](https://www.edx.org/course/programming-web-javascript-pennx-sd4x)
38 | - [Data Visualization and D3.js](https://www.udacity.com/course/data-visualization-and-d3js--ud507)
39 | - [YDKJS](https://github.com/getify/You-Dont-Know-JS/)
40 | - For when you need assets/ideas
41 | - [pixabay](https://pixabay.com/)
42 | - [Unsplash](https://unsplash.com/)
43 | - [Pexels](https://www.pexels.com/)
44 | - [LibreStock](http://librestock.com/)
45 | - [Google Fonts](https://fonts.google.com/)
46 | - [FlatIcon's Free Icon Sets](https://www.flaticon.com/packs?license=selection&order_by=1)
47 | - Official Docs
48 | - [MDN HTML](https://developer.mozilla.org/en-US/docs/Web/HTML) - for exploring all that HTML has to offer
49 | - [MDN CSS](https://developer.mozilla.org/en-US/docs/Web/CSS)- for exploring all that CSS has to offer
50 | - [MDN JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)- for exploring all that JavaScript has to offer
51 | - [Sass](http://sass-lang.com/guide) - supercharged CSS
52 | - [D3](https://d3js.org/) - for creating awesome graphs and charts
53 | - [Angular](https://angular.io/) - option for creating single page apps on the frontend
54 | - [React](https://reactjs.org/) - option for creating single page apps on the frontend
55 | - [Vue](https://vuejs.org/) - option for creating single page apps on the frontend
56 | - [Redux](http://redux.js.org/) - for managing state in a single page app
57 | - [Mocha](https://mochajs.org/) - venture into testing
58 | - [Karma](https://karma-runner.github.io/1.0/index.html) - venture into testing
59 | - [Jest](https://facebook.github.io/jest/) - venture into testing
60 | - [Webpack](https://webpack.github.io/) - module bundler for use in your build process (so you can minify your HTML/CSS/JavaScript among other things and deliver an optimized build to production)
61 | - [Babel](http://babeljs.io/) - makes the new JavaScript work on old browsers (or node versions for that matter)
62 | - [Gulp](https://gulpjs.com/) - for automating your workflow
63 | - [ESLint](https://eslint.org/) - for helping to keep your code clean
64 | - [Prettier](https://prettier.io/) - more help keeping your code clean
65 | - [Travis](https://travis-ci.org/) - continuous deployment (how to trigger a build/deploy whenever you commit your changes via git)
--------------------------------------------------------------------------------
/deprecated/speedrun-practice/fullstack-dev.md:
--------------------------------------------------------------------------------
1 | # Fullstack Web Development - Speedrun / Practice
2 |
3 | ## Notes
4 | The following is a list of practice projects for full stack development intended to be used as ideas for portfolio projects or for use in a speedrun (set aside a month or two and speed through as many as you can in that time - as an intensive hands on practice.)
5 |
6 | Always find or make your own open source assets when doing any clone, and attribute your sources. Don't get sued for copyright violation.
7 |
8 | ## Projects
9 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
10 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
11 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
12 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
13 | - [ ] Project: Build a full stack flashcards app, pre-populated with flash cards for JavaScript review.
14 | - [ ] Project: Full stack project of your choice (ideas: clone Facebook, Reddit, Netflix, Slack) - Consider building it as a Chrome Extension, Mobile, or Electron App.
15 | - [ ] Project: [CSS Zen Garden](http://www.csszengarden.com/) - implement your own CSS design for the competition
16 | - [ ] Project: Enhance your flash cards app with another deck of cards for an additional topic of your choosing.
17 | - [ ] Project: Full stack project of your choice (ideas: clone Facebook, Reddit, Netflix, Slack) - Consider building it as a Chrome Extension, Mobile, or Electron App.
18 | - [ ] Project: Clone Twitter using the language/framework of your choice on the backend, and your frontend framework/library of choice. Include all basic features: signup/login/logout, follow user, search, tweet, like/retweet, home page with stream of recent tweets.
19 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
20 | - [ ] Project: Enhance your flash cards app with another deck of cards for an additional topic of your choosing.
21 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
22 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
23 | - [ ] Project: Full stack project of your choice (ideas: clone Facebook, Reddit, Netflix, Slack) - Consider building it as a Chrome Extension, Mobile, or Electron App.
24 | - [ ] Project: Enhance your flash cards app with another deck of cards for an additional topic of your choosing.
25 | - [ ] Project: Pick a template from [here](https://freebiesbug.com/psd-freebies/website-template/), [here](http://www.free-css.com/free-css-templates) or [here](http://www.os-templates.com/free-website-templates) and implement the frontend of a website with it as your inspiration (do not use its assets)
26 | - [ ] Project: [100 Days of CSS](https://codepen.io/collection/AVPPQq/) - pick 1 of the 100 and implement it
27 | - [ ] Project: Select an API from [Todd Motto's API List](https://github.com/toddmotto/public-apis) and build a frontend-only application powered by data fetched from the API you chose.
28 | - [ ] Project: Enhance your flash cards app with another deck of cards for an additional topic of your choosing.
29 | - [ ] Project: Clone Medium. Include: create account, create post, publish post, edit post, add topic to post, follow user, follow topic, cheer for post, and home page with feed of recent posts, followed users, and followed topics.
30 |
31 | ## Helpful links
32 | - How to not f-up your local files with Git [part1](https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-1-e0756c88fd3c), [part2](https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-2-fc4e243be02a) and [part 3](https://medium.com/chingu/how-to-not-f-up-your-local-files-with-git-part-3-bf03b27b6e64)
33 | - [surge.sh](https://surge.sh/)
34 | - [heroku](https://www.heroku.com/)
35 | - [Glitch](https://glitch.com/)
36 | - [MDN](https://developer.mozilla.org/en-US/)
37 | - [Learn to Code HTML & CSS](http://learn.shayhowe.com/html-css/)
38 | - [Learn to Code Advanced HTML & CSS](http://learn.shayhowe.com/advanced-html-css/)
39 | - [Getting Sassy with CSS](http://www.sassshop.com/#/)
40 | - [Programming for the Web with JavaScript](https://www.edx.org/course/programming-web-javascript-pennx-sd4x)
41 | - [Data Visualization and D3.js](https://www.udacity.com/course/data-visualization-and-d3js--ud507)
42 | - [YDKJS](https://github.com/getify/You-Dont-Know-JS/)
43 | - For when you need assets/ideas
44 | - [pixabay](https://pixabay.com/)
45 | - [Unsplash](https://unsplash.com/)
46 | - [Pexels](https://www.pexels.com/)
47 | - [LibreStock](http://librestock.com/)
48 | - [Google Fonts](https://fonts.google.com/)
49 | - [FlatIcon's Free Icon Sets](https://www.flaticon.com/packs?license=selection&order_by=1)
50 | - Official Docs
51 | - [MDN HTML](https://developer.mozilla.org/en-US/docs/Web/HTML) - for exploring all that HTML has to offer
52 | - [MDN CSS](https://developer.mozilla.org/en-US/docs/Web/CSS)- for exploring all that CSS has to offer
53 | - [MDN JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)- for exploring all that JavaScript has to offer
54 | - [Sass](http://sass-lang.com/guide) - supercharged CSS
55 | - [Node.js](https://nodejs.org/en/docs/) - should be your primary reference for building backend projects
56 | - [Express](https://expressjs.com/) - an excellent framework to accompany Node.js on the backend
57 | - [MongoDB](https://docs.mongodb.com/) - for storing data
58 | - [Mongoose](http://mongoosejs.com/) - access to MongoDB from Node.js made easy(er)
59 | - [Passport.js](http://passportjs.org/) - remember this link when you have to setup a login system
60 | - [D3](https://d3js.org/) - for creating awesome graphs and charts
61 | - [Angular](https://angular.io/) - option for creating single page apps on the frontend
62 | - [React](https://reactjs.org/) - option for creating single page apps on the frontend
63 | - [Vue](https://vuejs.org/) - option for creating single page apps on the frontend
64 | - [Redux](http://redux.js.org/) - for managing state in a single page app
65 | - [Mocha](https://mochajs.org/) - venture into testing
66 | - [Karma](https://karma-runner.github.io/1.0/index.html) - venture into testing
67 | - [Jest](https://facebook.github.io/jest/) - venture into testing
68 | - [Webpack](https://webpack.github.io/) - module bundler for use in your build process (so you can minify your HTML/CSS/JavaScript among other things and deliver an optimized build to production)
69 | - [Babel](http://babeljs.io/) - makes the new JavaScript work on old browsers (or node versions for that matter)
70 | - [Gulp](https://gulpjs.com/) - for automating your workflow
71 | - [ESLint](https://eslint.org/) - for helping to keep your code clean
72 | - [Prettier](https://prettier.io/) - more help keeping your code clean
73 | - [Travis](https://travis-ci.org/) - continuous deployment (how to trigger a build/deploy whenever you commit your changes via git)
--------------------------------------------------------------------------------
/deprecated/speedrun-practice/game-dev.md:
--------------------------------------------------------------------------------
1 | # Game Development - Speedrun / Practice
2 |
3 | ## Notes
4 | The following is a list of practice projects for game development intended to be used as ideas for portfolio projects or for use in a speedrun (set aside a month or two and speed through as many as you can in that time - as an intensive hands on practice.)
5 |
6 | Always find or make your own open source assets when doing any clone, and attribute your sources. Don't get sued for copyright violation.
7 |
8 | ## Projects
9 | - [ ] Game: Galaga Clone
10 | - [ ] Game: Breakout Clone
11 | - [ ] Game: Asteroids Clone
12 | - [ ] Game: Frogger Clone
13 | - [ ] Game: PacMan Clone
14 | - [ ] Game: Donkey Kong Clone
15 | - [ ] Game: Super Mario Bros Clone
16 | - [ ] Game: Zelda Clone
17 | - [ ] Game: Final Fantasy Clone
18 | - [ ] Game: Your choice - personal project
19 | - [ ] Game: Your choice - personal project
20 | - [ ] Game: Your choice - personal project
21 | - [ ] Game: Your choice - personal project
22 | - [ ] Game: Your choice - personal project
23 | - [ ] Game: Your choice - personal project
24 |
25 | ## Helpful links
26 | Although I've added links to Phaser here, feel free to use any language / framework you prefer.
27 |
28 | - [ ] Tutorial: [Getting Started with Phaser](http://phaser.io/tutorials/getting-started)
29 | - [ ] Tutorial: [Making Your First Phaser Game](http://phaser.io/tutorials/making-your-first-phaser-game)
30 | - [ ] Bookmark: [Phaser docs](http://phaser.io/docs/)
31 | - [ ] Bookmark: [Phaser examples](http://phaser.io/examples)
32 | - [ ] Bookmark: [Tiled](http://www.mapeditor.org/)
33 | - [ ] Bookmark: [OpenGameArt](http://opengameart.org/art-search-advanced?keys=&field_art_type_tid%2525255B%2525255D=9&sort_by=count&sort_order=DESC)
34 | - [ ] Bookmark: [Gimp](https://www.gimp.org/)
35 | - [ ] Article: [Pixel Art Tutorial](http://makegames.tumblr.com/post/42648699708/pixel-art-tutorial)
36 | - [ ] Article: [The Total Beginner’s Guide to Better 2D Game Art](http://www.gamedev.net/page/resources/_/creative/visual-arts/the-total-beginner%E2%80%99s-guide-to-better-2d-game-art-r2959)
37 | - How to not f-up your local files with Git [part1](https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-1-e0756c88fd3c), [part2](https://medium.com/@francesco.agnoletto/how-to-not-f-up-your-local-files-with-git-part-2-fc4e243be02a) and [part 3](https://medium.com/chingu/how-to-not-f-up-your-local-files-with-git-part-3-bf03b27b6e64)
38 | - [surge.sh site](https://surge.sh/)
39 |
--------------------------------------------------------------------------------
/deprecated/wd-cs.md:
--------------------------------------------------------------------------------
1 | # Web Development with Computer Science Foundations - comprehensive
2 |
3 | If you have any questions, be sure to check the [FAQ](./faq.md). In fact, before you even start anything, go read the FAQ.
4 | It has a plethora of hints, tips and answers to help you ensure you get the most out of this guide.
5 |
6 | ## Tier 1 - get started
7 |
8 | - [ ] Book: [You Don't Know JS: Up & Going](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/up%20&%20going/README.md#you-dont-know-js-up--going)
9 | - [ ] Book: [You Don't Know JS: Scope & Closures](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/scope%20&%20closures/README.md#you-dont-know-js-scope--closures)
10 | - [ ] Book: [You Don't Know JS: this & Object Prototypes](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/this%20&%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes)
11 | - [ ] Course: [Learn to Code HTML & CSS](http://learn.shayhowe.com/html-css/)
12 | - [ ] Project: Portfolio from the frontend section of FCC
13 | - [ ] Course: [Introduction to Computer Science - CS50](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x#!)
14 | - [ ] Book: [You Don't Know JS: Types & Grammar](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/types%20&%20grammar/README.md#you-dont-know-js-types--grammar)
15 | - [ ] Book: [You Don't Know JS: Async & Performance](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/async%20&%20performance/README.md#you-dont-know-js-async--performance)
16 | - [ ] Book: [You Don't Know JS: ES6 & Beyond](https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/es6%20&%20beyond/README.md#you-dont-know-js-es6--beyond)
17 | - [ ] Course: [Learn to Code Advanced HTML & CSS](http://learn.shayhowe.com/advanced-html-css/)
18 | - [ ] Project: Clone [this](https://creativemarket.com/ikonome/686585-Material-Resume-Blue/screenshots/#screenshot2) online resume template
19 | - [ ] Article: Read [Project Specification Documents](http://www.pixelearth.net/pages/project-specification) 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
20 | - [ ] Course: [Effective Thinking Through Mathematics](https://www.edx.org/course/effective-thinking-through-mathematics-utaustinx-ut-9-01x)
21 | - [ ] Book: [Setting Up ES6](https://leanpub.com/setting-up-es6/read)
22 | - [ ] Book: [JavaScript Allongé, the "Six" Edition](https://leanpub.com/javascriptallongesix)
23 | - [ ] Course: [Getting Sassy with CSS](http://www.sassshop.com/#/)
24 | - [ ] 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
25 | - [ ] Project: Pick a template from [here](http://www.free-css.com/free-css-templates) and create a new template with it as your inspiration (do not use its assets)
26 |
27 | ## Tier 2 - strengthen your foundation
28 |
29 | - [ ] Course: [How to Code: Simple Data](https://www.edx.org/course/how-code-simple-data-ubcx-htc1x)
30 | - [ ] Course: [How to Code: Complex Data](https://www.edx.org/course/how-code-complex-data-ubcx-htc2x)
31 | - [ ] Course: [Software Construction: Data Abstraction](https://www.edx.org/course/software-construction-data-abstraction-ubcx-softconst1x)
32 | - [ ] Course: [Software Construction: Object-Oriented Design](https://www.edx.org/course/software-construction-object-oriented-ubcx-softconst2x)
33 | - [ ] Course: [Software Engineering: Introduction](https://www.edx.org/course/software-engineering-introduction-ubcx-softeng1x)
34 | - [ ] Course: [Software Development Capstone Project](https://www.edx.org/course/software-development-capstone-project-ubcx-softengprjx)
35 | - [ ] Book: [DOM Enlightenment](http://domenlightenment.com/)
36 | - [ ] Project: Simon Game from the frontend section of FCC
37 | - [ ] Project: Read up on [Gulp](http://gulpjs.com/) - try to incorporate it into your workflow if you aren't using it regularly already
38 | - [ ] Project: Read up on [Mocha](https://mochajs.org/) - try to use it to test your JavaScript, every chance you get
39 | - [ ] Course: [Programming for the Web with JavaScript](https://www.edx.org/course/programming-web-javascript-pennx-sd4x) on edX or Course: [CS50's Mobile App Development with React Native](https://www.edx.org/course/cs50s-mobile-app-development-with-react-native) on edX (or both, your choice)
40 | - [ ] The FCC Backend Certification - all projects, ignore the tutorials and just read the official docs if you want.
41 | - [ ] Course: [Single Variable Calculus](https://ocw.mit.edu/courses/mathematics/18-01sc-single-variable-calculus-fall-2010/)
42 | - [ ] Book: [JavaScript Design Patterns](https://addyosmani.com/resources/essentialjsdesignpatterns/book/)
43 | - [ ] Project: Clone [this](https://blackrockdigital.github.io/startbootstrap-creative/) landing page
44 | - [ ] Course: [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-spring-2015/index.htm)
45 | - [ ] Project: Build the Pomodoro project from the FCC frontend curriculum
46 | - [ ] Article: Read [Algorithms and Flowcharts](http://www.academia.edu/7857144/ALGORITHMS_AND_FLOWCHARTS) and then familiarize yourself with [Pencil](http://pencil.evolus.vn/) ... start flowcharting complex portions of your code logic as part of your documentation
47 | - [ ] Project: Clone the front page of [this](https://urbanarmorgear.com/) 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.
48 | - [ ] Project: Complete all Classic Puzzles - Easy on [CodinGame](https://www.codingame.com/) in JavaScript
49 | - [ ] Book: [Open Data Structures](http://www.aupress.ca/books/120226/ebook/99Z_Morin_2013-Open_Data_Structures.pdf)
50 | - [ ] Project: Complete all challenges from the [Code Jam Qualification Round 2015](https://code.google.com/codejam/contest/6224486/dashboard)
51 | - [ ] Project: Pick a template from [here](http://www.free-css.com/free-css-templates) and create a new template with it as your inspiration (do not use its assets)
52 |
53 | ## Tier 3 - build on the foundation
54 |
55 | - [ ] Course: [Algorithms, Part I](https://www.coursera.org/learn/algorithms-part1)
56 | - [ ] Course: [Algorithms, Part II](https://www.coursera.org/learn/algorithms-part2)
57 | - [ ] Project: Complete all Classic Puzzles - Medium on [CodinGame](https://www.codingame.com/) in JavaScript
58 | - [ ] Book: [Professor Frisby's Mostly Adequate Guide to Functional Programming](https://www.gitbook.com/book/drboolean/mostly-adequate-guide/details)
59 | - [ ] Course: [Software Testing](https://www.udacity.com/course/software-testing--cs258)
60 | - [ ] Course: [Software Debugging](https://www.udacity.com/course/software-debugging--cs259)
61 | - [ ] Project: Clone [this](https://blackrockdigital.github.io/startbootstrap-clean-blog/) blog template - note that there are multiple pages
62 | - [ ] Book: [Functional Light JS](https://github.com/getify/Functional-Light-JS)
63 | - [ ] 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.
64 | - [ ] Project: Pick a template from [here](http://www.free-css.com/free-css-templates) and create a new template with it as your inspiration (do not use its assets)
65 | - [ ] Project: Clone Reddit
66 | - [ ] Project: Complete all ES6 Katas [here](http://es6katas.org/)
67 | - [ ] Course: [Multivariable Calculus](https://ocw.mit.edu/courses/mathematics/18-02sc-multivariable-calculus-fall-2010/)
68 | - [ ] Project: Complete all Classic Puzzles - Hard on [CodinGame](https://www.codingame.com/) in JavaScript
69 | - [ ] Project: Clone [this Admin template](http://rubix410.sketchpixy.com/ltr/dashboard)
70 | - [ ] Project: Pick a template from [here](http://www.free-css.com/free-css-templates) and create a new template with it as your inspiration (do not use its assets)
71 | - [ ] Course: [Agile Software Development](https://www.edx.org/course/agile-software-development-ethx-asd-1x)
72 | - [ ] Project: Clone the Netflix interface- pulling data from [the Movie DB API](https://www.themoviedb.org/documentation/api) or an API in a backend you create yourself.
73 | - [ ] Course: [Software Architecture & Design](https://www.udacity.com/course/software-architecture-design--ud821)
74 | - [ ] Project: Write the CSS Necessary to create your own 12 column based grid layout - see [here](http://960.gs/) for an example
75 | - [ ] Project: Pick a template from [here](http://www.free-css.com/free-css-templates) and create a new template with it as your inspiration (do not use its assets)
76 | - [ ] Project: Clone FaceBook - yes, all the functionality. See [here](http://www.theodinproject.com/courses/ruby-on-rails/lessons/final-project) for a list of requirements you should fullfill.
77 |
78 | ## Tier 4 - polish the rough edges
79 |
80 | - [ ] Project: Read up on [Travis CI](https://travis-ci.org/) - try to incorporate it into any project in active development or which you intend to keep running on the web
81 | - [ ] Course: [Linear Algebra - Foundations to Frontiers](https://www.edx.org/course/linear-algebra-foundations-frontiers-utaustinx-ut-5-04x#!)
82 | - [ ] Project: Clone Twitter - yes, all the functionality
83 | - [ ] Course: [Computer Graphics](https://www.edx.org/course/computer-graphics-uc-san-diegox-cse167x)
84 | - [ ] Course: [Artificial Intelligence](https://www.edx.org/course/artificial-intelligence-uc-berkeleyx-cs188-1x#!)
85 | - [ ] Course: [Machine Learning](https://www.coursera.org/learn/machine-learning)
86 | - [ ] 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 include a substantial AI component.
87 | - [ ] Project: Complete all Classic Puzzles - Very Hard on [CodinGame](https://www.codingame.com/) in JavaScript
88 | - [ ] Project: Create a node module that will convert markdown to properly formatted html
89 | - [ ] 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.
90 | - [ ] Project: Complete all problems from all rounds of the [Google Code Jam 2016](https://code.google.com/codejam/contests.html) - scroll down to the appropriate section
91 | - [ ] Project: Extend your CSS grid framework to include the CSS and JavaScript required to implement 5 to 10 material design components
92 | - [ ] Project: Clone [Learn Harmony](http://learnharmony.org/#/?_k=0okjs7)
93 | - [ ] 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.
94 |
--------------------------------------------------------------------------------
/v4/faq.md:
--------------------------------------------------------------------------------
1 | # About this guide - FAQ
2 |
3 | ## Who is this guide for?
4 |
5 | This guide is for anyone who wants to learn a fair amount of computer science while also gaining practical hands on experience building projects. Whether you're just starting out, or already have some experience, you can tailor the guide to suit your needs by starting either earlier or later in the tiers.
6 |
7 | ## Why did you write this guide?
8 |
9 | My primary goal is to save aspiring programmers the time of vetting the litany of resources available so they can spend more time learning and less time deciding what to learn. The internet is vast and chock full of tutorials and 'one off' courses and a significant amount of them only teach material at the surface level. I wanted there to be a resource that would go deeper, teach foundations, then build on those foundations for folks who want dive deep and aspire to go beyond 'good enough'.
10 |
11 | ## Do I really have to do App Academy Open in Tier 0? Why should I waste time on Ruby?
12 |
13 | If you want a bit tougher intro, please feel free to substitute with [Web Development - Deep Dive Into Modern Web Development - Full Stack Open 2020](./specializations/full_stack_open_2020.md). This, will result in you learning "about the same" amount as you would with App Academy, however the content will begin at a more advanced level so you'll need a higher degree of determination and "grit" to make the most of it.
14 |
15 | If "but am I wasting my time learning Ruby" is causing you anxiety that is preventing you from progressing in your learning journey, feel free to substitute with [Web Development - Fullstack Bootcamp - The Odin Project - Full Stack JavaScript](./specializations/the_odin_project_javascript.md). Note, this option will result in you learning less than you would have with App Academy Open but it's still a viable path in which you will learn a lot. Note 2: You're really not wasting your time learning Ruby. The language used isn't what's important here. The important part is the foundational concepts that will illuminate all of your future learning, regardless of language.
16 |
17 | ## Why did you deprecate all the other guides and condense everything down into just one guide?
18 |
19 | This guide is a restructuring of previous iterations of multiple guides in order to solve two issues:
20 |
21 | 1. _Which guide should I choose?_ This question comes up all the time. With this restructure the answer becomes consistent - 'this guide'. This guide contains the core content within tiers, then asks you to pick a 'specialization' as your capstone for the tier. Within the specialization, you'll have an opportunity to dive more deeply in the areas of most interest to you and complete a number of specialization specific projects.
22 | 2. _X course is paywalled or no longer available, what do I do?_ This has been a recurring issue as Coursera and edX try to settle on a sustainable business model. There are still awesome courses there, and I'll leave my prior guides available in the 'deprecated' section should you want to look into them, but for now, I'm going to focus on much less volatile resources.
23 |
24 | _Why? Coursera and edX have continually ramped up 'paywall' efforts over the past couple years, thus rendering many of the 'open' (as in free) course options available on their platforms increasingly unavailable for those without the funds to do more than audit._
25 |
26 | ## What if I just want to specialize and don't want all that extra 'fluff' that's not pertinent to my specialization in a tier?
27 |
28 | I believe that 'fluff' is important. However, you know your goals, they are yours. YOLO. You do you. I would suggest that, when you're considering skipping something, you pause and consider that there's nothing I added to the guide without the intention of providing a resource that will help you grow your skills and career as a programmer.
29 |
30 | ## What about CS50? It is awesome!
31 |
32 | CS50 remains in the guide, however, the sequence beyond has been re-evaluated to use courses unlikely to hit the paywall issues. There are now a couple of courses listed which may require the purchase or borrowing of a book, but the majority of the courses are self-contained and books (like Cormen's Algorithms) should be freely available from your public library.
33 |
34 | ## What about the 'How to Code' series of courses? They are awesome!
35 |
36 | They are unfortunately behind a paywall now. You will find, however, that the book on which the courses are based is now included in Tier 4.
37 |
38 | ## Why so many courses in a row without any projects?
39 |
40 | You'll note that each tier has Courses, Reading, and Practice sections It appears that Readings come after Courses, and Practice comes after Reading - but you need not take that literally. Take the Courses in order, stopping to Read or Practice as you like, aiming to finish everything in the tier before moving to the next tier. Most tiers end with a Capstone 'specialization' which will contain much more hands-on coding via projects.
41 |
42 | ## What are the Tier Programming Projects?
43 |
44 | 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](./project_ideas.md) 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')
45 |
46 | **An important note about Programming Projects** - you may elect to clone templates, apps, or games for your programming projects. When doing so, always use your own assets (images, audio, etc.) or assets you know are legal to use, and mark your project as 'inspired by' the original, giving full credit to the original author. Don't try to put their ideas off as your own, or (worse yet) try to put your project up on app stores as an original app. These are practice projects - don't go out and clone Tetris, toss it up on the app store, and get sued for copyright infringement and blame me - I warned you.
47 |
48 | ## Why switch from simple checkboxes to a tabular format?
49 |
50 | While the checkboxes made for easily checking items off as you complete them, I've found that using a table where it's easier to mark both what you're working on and what you've completed, plus add links to any projects you completed or other 'evidence' type materials, gives a much more meaningful progress indication. Plus, it builds in the process of linking to anything you create along the way which will put everything right at your fingertips should you later wish to create a portfolio or highlight prior work.
51 |
52 | ## Do I really have to create a separate 'highlights' site for each tier?
53 |
54 | No, you don't. You may either create a separate site for each tier or maintain one site which you create in the first tier and update as you progress through subsequent tiers.
55 |
--------------------------------------------------------------------------------
/v4/project_ideas.md:
--------------------------------------------------------------------------------
1 | # Tier Programming Project Ideas
2 |
3 | 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, this section 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')
4 |
5 | **Note:** Your projects can be any programming project you wish: web development, mobile development, games, applications, command line utilities, browser extensions, compilers, _anything_. They can be small to large endeavors. Pick something you want to code, that will provide you practice with existing skills or stretch you to grow new skills. Ideas: clone a popular website, clone a website template, create or clone a game, build a command line utility, enter a hackathon/programming competition. Many other ideas are listed below but keep in mind that they are only ideas - you are completely free to either use one of the ideas listed below or an idea of your own.
6 |
7 | - [Tier Programming Project Ideas](#tier-programming-project-ideas)
8 | - [To Practice Frontend Web, Mobile App, or Desktop Development](#to-practice-frontend-web-mobile-app-or-desktop-development)
9 | - [To Practice Algorithms and Data Structures](#to-practice-algorithms-and-data-structures)
10 | - [To Practice working with others](#to-practice-working-with-others)
11 | - [Game Programming ideas](#game-programming-ideas)
12 |
13 | ## To Practice Frontend Web, Mobile App, or Desktop Development
14 |
15 | **Complete any of the free challenges on [Frontend Mentor](https://www.frontendmentor.io/challenges) as a web, mobile or desktop app.**
16 |
17 | **Clone one or more of the following Website Templates (or the frontend of any website or theme you like) as a web or mobile app:**
18 |
19 | Note: Either use the theme as inspiration, coding similar features but using your own typography, images, and design ideas, or fully attribute the original theme and note yours as a clone - or both. The intention is to gain practice coding, not to get sued for copyright infringement. Give attribution to your sources.
20 |
21 | - [this theme](https://startbootstrap.com/previews/landing-page/), include all features (hover effects, animations, pages, etc)
22 | - [this theme](https://startbootstrap.com/previews/agency/), include all features (hover effects, animations, pages, etc)
23 | - [this theme](https://startbootstrap.com/previews/resume/), include all features (hover effects, animations, pages, etc)
24 | - [this theme](https://startbootstrap.com/previews/stylish-portfolio/), include all features (hover effects, animations, pages, etc)
25 | - [this theme](https://webthemez.com/demo/ballet-one-page-free-website-template/), include all features (hover effects, animations, pages, etc)
26 | - [this theme](https://webthemez.com/demo/delta-corporate-material-design-bootstrap-html-template/index.html), include all features (hover effects, animations, pages, etc).
27 | - [this theme](https://startbootstrap.com/previews/creative/), include all features (hover effects, animations, pages, etc)
28 | - [this theme](https://startbootstrap.com/previews/coming-soon/), include all features (hover effects, animations, pages, etc)
29 | - [this theme](https://webthemez.com/demo/lookup-interior-design-bootstrap-website-template/), include all features (hover effects, animations, pages, etc)
30 | - [this theme](https://webthemez.com/demo/flavour-restaurant-html5-responsive-web-template/), include all features (hover effects, animations, pages, etc)
31 | - [this theme](https://webthemez.com/demo/fine-best-app-landing-page-free-web-template/), include all features (hover effects, animations, pages, etc)
32 | - [this theme](https://webthemez.com/demo/startup-multi-purpose-responsive-html5-bootstrap-template/), include all features (hover effects, animations, pages, etc)
33 |
34 | **Clone a Web Application as a Web, Mobile, or Desktop App:**
35 |
36 | - Twitter
37 | - Snapchat
38 | - Instagram
39 | - Uber
40 | - Netflix
41 | - Medium
42 | - Trello
43 | - Slack
44 | - Facebook
45 |
46 | **Create a new Web, Mobile, or Desktop App in a typical category:**
47 |
48 | - Blog
49 | - Forum
50 | - Todos
51 | - Notepad
52 | - E-commerce
53 | - Product
54 | - Restaurant
55 | - Real Estate
56 | - School
57 | - Festival
58 | - Tech News
59 | - Fitness
60 | - Tutorial
61 | - Flash Cards
62 | - Recipes
63 | - Document Editor
64 | - Support Tickets
65 | - Community Chat
66 |
67 | **Clone a favorite game (or create a new one) as a Web, Mobile, or Desktop App**
68 |
69 | ## To Practice Algorithms and Data Structures
70 |
71 | **Complete any of the following archived coding competitions prior to 2015:**
72 |
73 | - [Facebook Hacker Cup]([https://www.facebook.com/hackercup/past_rounds/228440181128818/](https://www.facebook.com/codingcompetitions/hacker-cup))
74 | - [Google Kick Start](https://codingcompetitions.withgoogle.com/kickstart/archive)
75 | - [Google Code Jam](https://codingcompetitions.withgoogle.com/codejam/archive)
76 | - [Google Hash Code](https://codingcompetitions.withgoogle.com/hashcode/archive)
77 |
78 | **Complete a [CodinGame](https://www.codingame.com) Sponsored Contest**
79 |
80 | **Complete one or more sections on [HackerRank](https://www.hackerrank.com)**
81 |
82 | ## To Practice working with others
83 |
84 | **Contribute to Open Source**
85 |
86 | - [CodeTriage](https://www.codetriage.com/)
87 | - [First Timers Only](http://www.firsttimersonly.com/)
88 |
89 | [This site](https://opensource.guide/how-to-contribute/) has a ton of information about how to break into open source.
90 |
91 | **Enter a hackathon**
92 |
93 | - [list on devpost](https://devpost.com/hackathons?utf8=%E2%9C%93&search=&challenge_type=online&sort_by=Submission+Deadline)
94 | - [HackerRank Contests](https://www.hackerrank.com/contests)
95 | - [Itch.io Game Jams](https://itch.io/jams)
96 |
97 | ## Game Programming ideas
98 |
99 | Clone one of the following (note, do NOT publish as your own, you'll get sued)
100 |
101 | - Pong
102 | - Zork
103 | - Mastermind
104 | - Memory Puzzle
105 | - Galaga
106 | - PacMan
107 | - Breakout
108 | - Solitaire
109 | - Flappy Bird
110 | - Space Invaders
111 | - Super Mario Bros
112 | - Fruit Ninja
113 | - Last Stand
114 | - Tetris
115 | - Angry Birds
116 | - Bejeweled
117 | - Sokoban
118 | - Katamari Damacy
119 | - Blackjack (with AI opponents)
120 | - Checkers (with AI opponent)
121 | - Donkey Kong
122 | - Tron (two players, with an option for multiplayer or AI opponent)
123 | - Pokemon
124 | - Monopoly (1-4 players, with an option for multiplayer or AI opponent)
125 | - Bomberman
126 | - Diablo
127 | - Zelda
128 | - Scythe
129 | - Minecraft
130 | - Risk
131 | - Lunar Lander
132 | - Streetfighter
133 | - Castlevania
134 |
--------------------------------------------------------------------------------
/v4/specializations/advanced-algorithms.md:
--------------------------------------------------------------------------------
1 | # Computer Science - Advanced Algorithms Specialization
2 |
3 | Pick this specialization to focus on higher level mathematics and algorithms and gain practice with data structures and algorithms of the type one might find in coding competitions or in whiteboard interviews.
4 |
5 | **Note:** This is a more advanced specialization. [Computer Science - Algorithms](./algorithms.md) should be considered a pre-requisite.
6 |
7 | **Note:** This specialization is more involved and will require more effort than some of the other specializations.
8 |
9 | | Courses | Status | Evidence |
10 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
11 | | [Advanced Algorithms](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2008/) | | |
12 | | [Advanced Data Structures](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-851-advanced-data-structures-spring-2012/index.htm) | | |
13 | | **Reading** | **Status** | **Evidence** |
14 | | [Competitive Programming on HackerEarth](https://www.hackerearth.com/getstarted-competitive-programming/) | | |
15 | | [Competitive Programming Tutorials on TopCoder](https://www.topcoder.com/community/competitive-programming/tutorials/) | | |
16 | | **Practice** | **Status** | **Evidence** |
17 | | Complete sections 1 through 18 of [CodeMonk](https://www.hackerearth.com/practice/codemonk/) on HackerEarth | | |
18 | | Complete all sections of [The HackerRank Interview Preparation Kit](https://www.hackerrank.com/interview/interview-preparation-kit) | | |
19 | | Complete 5 Easy problems of your choice on [TopCoder](https://arena.topcoder.com/#/u/practiceProblemList) | | |
20 | | Complete 5 Easy problems of your choice on [LeetCode](https://leetcode.com/problemset/algorithms/) | | |
21 | | Complete 5 Easy problems of your choice from the [HackerRank Artificial Intelligence](https://www.hackerrank.com/domains/ai) section | | |
22 | | Complete 10 Medium problems of your choice on [LeetCode](https://leetcode.com/problemset/algorithms/) | | |
23 | | [Google Code Jam](https://codingcompetitions.withgoogle.com/codejam/archive) year of your choice | | |
24 | | Complete 10 Medium problems of your choice on [TopCoder](https://arena.topcoder.com/#/u/practiceProblemList) | | |
25 | | Complete 10 Medium problems of your choice from the [HackerRank Artificial Intelligence](https://www.hackerrank.com/domains/ai) section | | |
26 | | [Meta Hacker Cup](https://www.facebook.com/codingcompetitions/hacker-cup) year of your choice | | |
27 | | Complete 10 Hard problems of your choice on [LeetCode](https://leetcode.com/problemset/algorithms/) | | |
28 | | Complete 10 Hard problems of your choice on [TopCoder](https://arena.topcoder.com/#/u/practiceProblemList) | | |
29 | | Complete 10 Hard problems of your choice from the [HackerRank Artificial Intelligence](https://www.hackerrank.com/domains/ai) section | | |
30 | | [Google Code Jam](https://codingcompetitions.withgoogle.com/codejam/archive) year of your choice | | |
31 | | [Meta Hacker Cup](https://www.facebook.com/codingcompetitions/hacker-cup) year of your choice | | |
32 | | **Capstone** | **Status** | **Evidence** |
33 | | 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. | | |
34 |
--------------------------------------------------------------------------------
/v4/specializations/algorithms.md:
--------------------------------------------------------------------------------
1 | # Computer Science - Algorithms Specialization
2 |
3 | Pick this specialization to gain a ton of practice with data structures and algorithms of the type one might find in coding competitions or in whiteboard interviews. Note: this has value outside interviews, it will help you learn to solve complex problems efficiently which is a valuable skill throughout your programming career.
4 |
5 | **Note:** This is a more advanced specialization which will rely on knowledge introduced in tier 2 and reinforced in tier 3, so it would be best to wait until one of those tiers to tackle it.
6 |
7 | **Note:** If you elect to select this specialization in multiple tiers, select a different language per tier to get the experience of how solutions are implemented in various languages.
8 |
9 | | **Practice** | **Status** | **Evidence** |
10 | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
11 | | Pick: Study [C](https://www.geeksforgeeks.org/c-programming-language/) and then complete all [Quizzes ](https://www.geeksforgeeks.org/quizzes-on-programming-languages-gq/) for that language | | |
12 | | or Pick: Study [C++](https://www.geeksforgeeks.org/c-plus-plus/) and then complete all [Quizzes ](https://www.geeksforgeeks.org/quizzes-on-programming-languages-gq/) for that language | | |
13 | | or Pick: Study [Java](https://www.geeksforgeeks.org/java/) and then complete all [Quizzes ](https://www.geeksforgeeks.org/quizzes-on-programming-languages-gq/) for that language | | |
14 | | or Pick: Study [Python](https://www.geeksforgeeks.org/python-programming-language/) and then complete all [Quizzes ](https://www.geeksforgeeks.org/quizzes-on-programming-languages-gq/) for that language | | |
15 | | Review [Algorithms](https://www.geeksforgeeks.org/fundamentals-of-algorithms/) | | |
16 | | Review [Data Structures](https://www.geeksforgeeks.org/data-structures/) | | |
17 | | Study [Design Patterns](https://www.geeksforgeeks.org/software-design-patterns/) | | |
18 | | Do [Must Do Coding Questions Company-wise](https://www.geeksforgeeks.org/must-coding-questions-company-wise/) for Google | | |
19 | | Do [Must Do Coding Questions Company-wise](https://www.geeksforgeeks.org/must-coding-questions-company-wise/) for Facebook | | |
20 | | Do [Must Do Coding Questions Company-wise](https://www.geeksforgeeks.org/must-coding-questions-company-wise/) for Microsoft | | |
21 | | Do [Must Do Coding Questions Company-wise](https://www.geeksforgeeks.org/must-coding-questions-company-wise/) for Adobe | | |
22 | | Do [Must Do Coding Questions Company-wise](https://www.geeksforgeeks.org/must-coding-questions-company-wise/) for an additional company of your choice | | |
23 | | [Google Code Jam](https://codingcompetitions.withgoogle.com/codejam/archive) year of your choice (that you haven't previously completed) | | |
24 | | [Google Code Jam](https://codingcompetitions.withgoogle.com/codejam/archive) year of your choice (that you haven't previously completed) | | |
25 | | [Meta Hacker Cup](https://www.facebook.com/codingcompetitions/hacker-cup) year of your choice (that you haven't previously completed) | | |
26 | | [Meta Hacker Cup](https://www.facebook.com/codingcompetitions/hacker-cup) year of your choice (that you haven't previously completed) | | |
27 | | **Capstone** | **Status** | **Evidence** |
28 | | 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. | | |
29 |
--------------------------------------------------------------------------------
/v4/specializations/app_academy_open.md:
--------------------------------------------------------------------------------
1 | # Web Development - Fullstack Bootcamp - App Academy Open Specialization
2 |
3 | Complete the [App Academy Open](https://www.appacademy.io/course/app-academy-open) free online Fullstack Bootcamp. You may elect to complete this specialization only once.
4 |
5 | | Courses | Status | Evidence |
6 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
7 | | Welcome To Coding | | |
8 | | Full Stack Online - Intro to Programming | | |
9 | | Full Stack Online - Software Engineering Foundations | | |
10 | | Full Stack Online - Ruby | | |
11 | | Full Stack Online - SQL | | |
12 | | Full Stack Online - Rails | | |
13 | | Full Stack Online - JavaScript | | |
14 | | Full Stack Online - React | | |
15 | | Full Stack Online - Full Stack Project | | |
16 | | Full Stack Online - MERN Stack Curriciulum | | |
17 | | Full Stack Online - Job Search | | |
18 | | Full Stack Online - Docker | | |
19 | | Full Stack Online - GraphQl | | |
20 | | Full Stack Online - Data Structures and Algorithms | | |
21 | | **Reading** | **Status** | **Evidence** |
22 | | [Official React Docs](https://reactjs.org/docs/getting-started.html) | | |
23 | | **Capstone** | **Status** | **Evidence** |
24 | | 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. | | |
25 |
--------------------------------------------------------------------------------
/v4/specializations/backend.md:
--------------------------------------------------------------------------------
1 | # Web Development - Backend Specialization
2 |
3 | Pick a backend language and library/framework and complete the following:
4 |
5 | **Note:** include complementary technologies related to your choice: for instance, if you chose Python, consider the entire ecosystem of developing Python applications, including a framework such as Flask or Django.
6 | **Note:** Pick any Backend language you like, some ideas include - Golang, Rust, Elixir, JavaScript, Java, C#, Python, PHP, Ruby
7 | **Note:** All Projects should use your selected language and framework/library
8 |
9 | You may elect to complete this specialization more than once by selecting it as your capstone for multiple tiers.
10 |
11 | | Courses | Status | Evidence |
12 | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
13 | | [M001: MongoDB Basics](https://university.mongodb.com/courses/catalog) | | |
14 | | [M220J, M220JS or M220P](https://university.mongodb.com/courses/catalog) | | |
15 | | [M310: MongoDB Security](https://university.mongodb.com/courses/catalog) | | |
16 | | **Reading** | **Status** | **Evidence** |
17 | | [TravisCI](https://docs.travis-ci.com/) | | |
18 | | [Docker](https://docs.docker.com/) | | |
19 | | [Kubernetes](https://kubernetes.io/docs/home/) | | |
20 | | **Practice** | **Status** | **Evidence** |
21 | | Study all docs for your chosen language and its ecosystem | | |
22 | | Tier Programming Project | | |
23 | | Tier Programming Project | | |
24 | | Identify blogs and Twitter users to follow to stay up to date on your chosen language and its ecosystem and begin 'reading up' on a weekly basis to stay current | | |
25 | | Tier Programming Project | | |
26 | | Tier Programming Project | | |
27 | | Tier Programming Project | | |
28 | | Tier Programming Project | | |
29 | | Participate in the community surrounding your chosen language and its ecosystem - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself | | |
30 | | Tier Programming Project | | |
31 | | Tier Programming Project | | |
32 | | Tier Programming Project | | |
33 | | Tier Programming Project | | |
34 | | **Capstone** | **Status** | **Evidence** |
35 | | 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. | | |
36 |
--------------------------------------------------------------------------------
/v4/specializations/computer_science.md:
--------------------------------------------------------------------------------
1 | # Computer Science - Intensive Specialization
2 |
3 | This specialization dives deep into computer science from algorithms and data structures all the way through databases, compilers, operating systems, and other advanced topics. It is best attempted as the capstone to tier 4 as it reinforces the breadth of knowledge built in that tier.
4 |
5 | **Note:** Though this list may seem far shorter than other specializations, this specialization is actually far more work. There is a LOT of study involved.
6 |
7 | | **Practice** | **Status** | **Evidence** |
8 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
9 | | Study all topics for [Graduate Aptitude Test in Engineering](https://www.geeksforgeeks.org/gate-cs-notes-gq/) | | |
10 | | Take the exam found in the [2018 Paper](https://www.geeksforgeeks.org/original-gate-previous-year-question-papers-cse-and-it-gq/) and grade it according to the 2019 Keys or [take the exam online](https://www.geeksforgeeks.org/gate-cs-2018/) | | |
11 | | Study all topics for [Graduate Aptitude Test in Engineering](https://www.geeksforgeeks.org/gate-cs-notes-gq/) this time creating a comprehensive set of 'last-minute notes' similar to what is [found here](https://www.geeksforgeeks.org/lmns-gq/) | | |
12 | | Thoroughly study/review your 'last-minute notes' with the goal of attaining the best score possible on the next exam | | |
13 | | Take the exam found in the [2019 Paper](https://www.geeksforgeeks.org/original-gate-previous-year-question-papers-cse-and-it-gq/) and grade it according to the 2019 Keys or [take the exam online](https://www.geeksforgeeks.org/gate-cs-2019/) - closed book | | |
14 | | If you did not pass the exam with at least 80% correct, repeat the study process and then take the 2017 test as an open book exam. Then, retake the 2019 exam closed book. | | |
15 | | **Capstone** | **Status** | **Evidence** |
16 | | 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. | | |
17 |
--------------------------------------------------------------------------------
/v4/specializations/data-science-i.md:
--------------------------------------------------------------------------------
1 | # Data Science I Specialization
2 |
3 | Expand beyond Computer Science into Statistics, Probability and Data Science
4 |
5 | **Note:** The data science specializations are more involved and will require more effort than some of the other specializations.
6 |
7 | | Courses | Status | Evidence |
8 | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
9 | | [Data Science](https://cognitiveclass.ai/learn/data-science/) | | |
10 | | [M001: MongoDB Basics](https://university.mongodb.com/courses/catalog) | | |
11 | | [Applied Data Science with Python](https://cognitiveclass.ai/learn/data-science-with-python/) | | |
12 | | [Deep Learning](https://cognitiveclass.ai/learn/deep-learning/) | | |
13 | | [M220P](https://university.mongodb.com/courses/catalog) | | |
14 | | Take this: [Introduction to Probability and Statistics](https://ocw.mit.edu/courses/mathematics/18-05-introduction-to-probability-and-statistics-spring-2014/index.htm) (more rigorous) | | |
15 | | or this: [Khan Academy Probability and Statistics](https://www.khanacademy.org/math/statistics-probability) (a more gentle introduction) | | |
16 | | **Reading** | **Status** | **Evidence** |
17 | | [Think Python](http://greenteapress.com/thinkpython2/thinkpython2.pdf) | | |
18 | | [Pandas Docs](http://pandas.pydata.org/pandas-docs/stable/) | | |
19 | | [Think Stats](http://greenteapress.com/thinkstats2/thinkstats2.pdf) | | |
20 | | [Numpy Docs](https://docs.scipy.org/doc/numpy/user/index.html) | | |
21 | | [An Introduction to Statistical Learning](http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf) | | |
22 | | [Think Bayes](http://www.greenteapress.com/thinkbayes/thinkbayes.pdf) | | |
23 | | **Practice** | **Status** | **Evidence** |
24 | | Do 10 problems (of your choice) on [Rosalind](http://rosalind.info/problems/locations/) | | |
25 | | Complete one competition of your choice from [Crowd Analytix](https://www.crowdanalytix.com/community) | | |
26 | | Complete one [Bot Programming Competition on CodinGame](https://www.codingame.com/multiplayer/bot-programming) | | |
27 | | Complete [Deep Learning - TensorFlow on CodinGame](https://www.codingame.com/ide/puzzle/deep-learning-tensorflow) | | |
28 | | Do 20 problems (of your choice) on [Rosalind](http://rosalind.info/problems/locations/) | | |
29 | | Complete the [Digit Recognizer](https://www.kaggle.com/c/digit-recognizer) competition on Kaggle | | |
30 | | Complete the [Hackerrank Probability Challenges](https://www.hackerrank.com/domains/mathematics/probability) | | |
31 | | Complete the [Hackerrank Linear Algebra Foundations Challenges](https://www.hackerrank.com/domains/mathematics/linear-algebra-foundations) | | |
32 | | Complete one competition of your choice from [Crowd Analytix](https://www.crowdanalytix.com/community) | | |
33 | | Complete one competition of your choice from [Analytics Vidhya](https://datahack.analyticsvidhya.com/contest/all/) | | |
34 | | Complete one competition of your choice from [Driven Data](https://www.drivendata.org/competitions/) | | |
35 | | Complete one competition of your choice on [Kaggle](https://www.kaggle.com/competitions?sortBy=prize&group=active&page=1&pageSize=20) | | |
36 | | **Capstone** | **Status** | **Evidence** |
37 | | 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. | | |
38 |
--------------------------------------------------------------------------------
/v4/specializations/data-science-ii.md:
--------------------------------------------------------------------------------
1 | # Data Science II Specialization
2 |
3 | Expand beyond Computer Science into Statistics, Probability and Data Science
4 |
5 | **Note:** The data science specializations are more involved and will require more effort than some of the other specializations.
6 |
7 | | Courses | Status | Evidence |
8 | | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
9 | | [Big Data](https://cognitiveclass.ai/learn/big-data/) | | |
10 | | [Statistics for Applications](https://ocw.mit.edu/courses/mathematics/18-650-statistics-for-applications-fall-2016/index.htm) | | |
11 | | [Data Science](http://cs109.github.io/2015/) | | |
12 | | [Convex Optimization](https://lagunita.stanford.edu/courses/Engineering/CVX101/Winter2014/about) | | |
13 | | [Probabilistic Systems Analysis and Applied Probability](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041sc-probabilistic-systems-analysis-and-applied-probability-fall-2013/) | | |
14 | | [Hadoop](https://cognitiveclass.ai/learn/hadoop/) | | |
15 | | **Reading** | **Status** | **Evidence** |
16 | | [Think Complexity](http://greenteapress.com/complexity2/thinkcomplexity2.pdf) | | |
17 | | [Matplotlib Tutorials](https://matplotlib.org/tutorials/index.html) | | |
18 | | [The Quest for Artificial Intelligence](http://ai.stanford.edu/~nilsson/QAI/qai.pdf) | | |
19 | | [Multiagent Systems](http://www.masfoundations.org/download.html) | | |
20 | | [scikit-learn](https://scikit-learn.org/stable/documentation.html) | | |
21 | | [Differential Equations in Data Science](https://nbviewer.jupyter.org/github/URXtech/techblog/blob/master/continuousTimeMarkovChain/markovChain.ipynb) | | |
22 | | [A Course in Machine Learning](http://ciml.info/) | | |
23 | | [Probabilistic Programming and Bayesian Methods for Hackers](https://nbviewer.jupyter.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Prologue/Prologue.ipynb) | | |
24 | | **Practice** | **Status** | **Evidence** |
25 | | Do 10 problems (of your choice) on [Rosalind](http://rosalind.info/problems/locations/) | | |
26 | | Complete one competition of your choice from [Crowd Analytix](https://www.crowdanalytix.com/community) | | |
27 | | Complete one [Bot Programming Competition on CodinGame](https://www.codingame.com/multiplayer/bot-programming) | | |
28 | | Complete one competition of your choice on [Kaggle](https://www.kaggle.com/competitions?sortBy=prize&group=active&page=1&pageSize=20) | | |
29 | | Complete the [Hackerrank Artificial Intelligence Challenges](https://www.hackerrank.com/domains/ai) | | |
30 | | Complete one competition of your choice from [Crowd Analytix](https://www.crowdanalytix.com/community) | | |
31 | | Complete one competition of your choice from [Analytics Vidhya](https://datahack.analyticsvidhya.com/contest/all/) | | |
32 | | Complete one competition of your choice from [Driven Data](https://www.drivendata.org/competitions/) | | |
33 | | Do 20 problems (of your choice) on [Rosalind](http://rosalind.info/problems/locations/) | | |
34 | | Complete one [Bot Programming Competition on CodinGame](https://www.codingame.com/multiplayer/bot-programming) | | |
35 | | Complete one competition of your choice on [Kaggle](https://www.kaggle.com/competitions?sortBy=prize&group=active&page=1&pageSize=20) | | |
36 | | **Capstone** | **Status** | **Evidence** |
37 | | 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. | | |
38 |
--------------------------------------------------------------------------------
/v4/specializations/frontend.md:
--------------------------------------------------------------------------------
1 | # Web Development - Frontend Specialization
2 |
3 | Pick a frontend library/framework (Angular, React, Vue) and complete the following:
4 | **Note:** include complementary technologies such as TypeScript, NgRx, and RxJS for Angular, Redux and React Router for React, etc.
5 | **Note:** All Projects should use your selected framework/library
6 |
7 | You may elect to complete this specialization more than once by selecting it as your capstone for multiple tiers.
8 |
9 | | **Reading** | **Status** | **Evidence** |
10 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
11 | | [FireBase](https://firebase.google.com/docs/) | | |
12 | | [WebPack](https://webpack.js.org/concepts) | | |
13 | | **Practice** | **Status** | **Evidence** |
14 | | Study all docs for the library/framework of your choice | | |
15 | | Tier Programming Project | | |
16 | | Tier Programming Project | | |
17 | | Identify blogs and Twitter users to follow to stay up to date on your chosen framework/library and begin 'reading up' on a weekly basis to stay current | | |
18 | | Tier Programming Project | | |
19 | | Tier Programming Project | | |
20 | | Tier Programming Project | | |
21 | | Tier Programming Project | | |
22 | | Participate in the community surrounding your chosen framework/library - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself | | |
23 | | Tier Programming Project | | |
24 | | Tier Programming Project | | |
25 | | Tier Programming Project | | |
26 | | Tier Programming Project | | |
27 | | **Capstone** | **Status** | **Evidence** |
28 | | 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. | | |
29 |
--------------------------------------------------------------------------------
/v4/specializations/full_stack_open_2020.md:
--------------------------------------------------------------------------------
1 | # Web Development - Deep Dive Into Modern Web Development - Full Stack Open 2020 Specialization
2 |
3 | Complete the [Deep Dive Into Modern Web Development - Full Stack Open 2020](https://fullstackopen.com/en) free online Fullstack course. You may elect to complete this specialization only once.
4 |
5 | | Courses | Status | Evidence |
6 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
7 | | Fundamentals of Web apps | | |
8 | | Introduction to React | | |
9 | | Communicating with server | | |
10 | | Programming a server with NodeJS and Express | | |
11 | | Testing Express servers, user administration | | |
12 | | Testing React apps | | |
13 | | State management with Redux | | |
14 | | React router, custom hooks, styling app with CSS and webpack | | |
15 | | GraphQL | | |
16 | | Typescript | | |
17 | | **Reading** | **Status** | **Evidence** |
18 | | [Official React Docs](https://reactjs.org/docs/getting-started.html) | | |
19 | | [Official Express Docs](https://expressjs.com/) | | |
20 | | **Capstone** | **Status** | **Evidence** |
21 | | 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. | | |
22 |
--------------------------------------------------------------------------------
/v4/specializations/games.md:
--------------------------------------------------------------------------------
1 | # Game Development Specialization
2 |
3 | Pick your targeted platform, programming language, and related framework and complete the following:
4 | **Note:** Choices include, but are not limited to
5 |
6 | - JavaScript/TypeScript using the Phaser framework targeting Android, iOS, and/or Web
7 | - C# using Unity targeting Android, iOS, and/or Web
8 | - C++ using Unreal Engine targeting Android, iOS, and/or Web
9 |
10 | **Note:** Each Tier Programming Project in this tier should be a game you create - it can be a clone or a new idea, but the deliverable for each project is a completed game. Do not deploy non-original (clone) games to app stores - you'll get sued - you've been warned.
11 |
12 | You may elect to complete this specialization more than once by selecting it as your capstone for multiple tiers.
13 |
14 | | **Practice** | **Status** | **Evidence** |
15 | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
16 | | [CS50's Introduction to Game Development](https://www.edx.org/course/cs50s-introduction-to-game-development) | | |
17 | | Study all docs for your chosen platform and its ecosystem | | |
18 | | Tier Programming Project | | |
19 | | Tier Programming Project | | |
20 | | Identify blogs and Twitter users to follow to stay up to date on your chosen platform and its ecosystem and begin 'reading up' on a weekly basis to stay current | | |
21 | | Tier Programming Project | | |
22 | | Tier Programming Project | | |
23 | | Tier Programming Project | | |
24 | | Participate in the community surrounding your chosen platform and its ecosystem - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself | | |
25 | | Tier Programming Project | | |
26 | | Tier Programming Project | | |
27 | | Complete [an Itch.io Game Jam](https://itch.io/jams) | | |
28 | | Tier Programming Project | | |
29 | | Tier Programming Project | | |
30 | | Complete [an Itch.io Game Jam](https://itch.io/jams) | | |
31 | | **Capstone** | **Status** | **Evidence** |
32 | | 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. | | |
33 |
--------------------------------------------------------------------------------
/v4/specializations/mobile.md:
--------------------------------------------------------------------------------
1 | # Mobile App Development Specialization
2 |
3 | Pick your targeted mobile platform and complete the following:
4 | **Note:** All Projects should target your selected mobile platform
5 |
6 | **Helpful Links**
7 |
8 | - [Nativescript](https://www.nativescript.org/) for iOS or Android
9 | - [React Native](https://facebook.github.io/react-native/) for iOS or Android
10 | - [Ionic](https://ionicframework.com/) for iOS or Android
11 | - [Xamarin](https://visualstudio.microsoft.com/xamarin/) for iOS or Android
12 | - [Swift](https://developer.apple.com/swift/) and [iOS](https://developer.apple.com/develop/)
13 | - [Kotlin](https://kotlinlang.org/) and [Android](https://developer.android.com/)
14 | You may elect to complete this specialization more than once by selecting it as your capstone for multiple tiers.
15 |
16 | | **Reading** | **Status** | **Evidence** |
17 | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :----------: |
18 | | [FireBase](https://firebase.google.com/docs/) | | |
19 | | Study all docs for your chosen platform and its ecosystem | | |
20 | | **Practice** | **Status** | **Evidence** |
21 | | Tier Programming Project | | |
22 | | Tier Programming Project | | |
23 | | Identify blogs and Twitter users to follow to stay up to date on your chosen platform and its ecosystem and begin 'reading up' on a weekly basis to stay current | | |
24 | | Tier Programming Project | | |
25 | | Tier Programming Project | | |
26 | | Tier Programming Project | | |
27 | | Tier Programming Project | | |
28 | | Participate in the community surrounding your chosen platform and its ecosystem - begin regularly interacting on twitter and other's blogs, and posting relevant content yourself | | |
29 | | Tier Programming Project | | |
30 | | Tier Programming Project | | |
31 | | Tier Programming Project | | |
32 | | Tier Programming Project | | |
33 | | **Capstone** | **Status** | **Evidence** |
34 | | 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. | | |
35 |
--------------------------------------------------------------------------------
/v4/specializations/open_source.md:
--------------------------------------------------------------------------------
1 | # Open Source Contributions Specialization
2 |
3 | Pick one or more Open Source projects and contribute to them. Follow each project's contribution guidelines. Either tackle existing feature requests or bug reports on the project or propose, then once approved, add your own features.
4 |
5 | | **Practice** | **Status** | **Evidence** |
6 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
7 | | Study [This site](https://opensource.guide/how-to-contribute/) | | |
8 | | Open Source Contribution | | |
9 | | Open Source Contribution | | |
10 | | Open Source Contribution | | |
11 | | Open Source Contribution | | |
12 | | Open Source Contribution | | |
13 | | Open Source Contribution | | |
14 | | Open Source Contribution | | |
15 | | Open Source Contribution | | |
16 | | Open Source Contribution | | |
17 | | Open Source Contribution | | |
18 | | Open Source Contribution | | |
19 | | Open Source Contribution | | |
20 | | **Capstone** | **Status** | **Evidence** |
21 | | 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. | | |
22 |
--------------------------------------------------------------------------------
/v4/specializations/the_odin_project_javascript.md:
--------------------------------------------------------------------------------
1 | ### Web Development - Full Stack JavaScript- The Odin Project Specialization
2 |
3 | Complete [The Odin Project - Full Stack JavaScript](https://www.theodinproject.com/paths/full-stack-javascript) free online Fullstack Bootcamp. You may elect to complete this specialization only once.
4 |
5 | | Courses | Status | Evidence |
6 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
7 | | Fundamentals | | |
8 | | JavaScript | | |
9 | | HTML and CSS | | |
10 | | JavaScript | | |
11 | | NodeJS | | |
12 | | **Capstone** | **Status** | **Evidence** |
13 | | 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. | | |
14 |
--------------------------------------------------------------------------------
/v4/specializations/the_odin_project_ruby.md:
--------------------------------------------------------------------------------
1 | ### Web Development - Full Stack Ruby on Rails - The Odin Project Specialization
2 |
3 | Complete [The Odin Project - Full Stack Ruby on Rails](https://www.theodinproject.com/tracks/full-stack-ruby-on-rails) free online Fullstack Bootcamp. You may elect to complete this specialization only once.
4 |
5 | | Courses | Status | Evidence |
6 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------: | :----------: |
7 | | Fundamentals | | |
8 | | Ruby Programming | | |
9 | | Databases | | |
10 | | Ruby on Rails | | |
11 | | HTML and CSS | | |
12 | | JavaScript | | |
13 | | **Capstone** | **Status** | **Evidence** |
14 | | 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. | | |
15 |
--------------------------------------------------------------------------------