{"id":18653536,"url":"https://github.com/fullstackacademy/2109-wdf-ny-web-ft","last_synced_at":"2026-02-18T07:02:31.303Z","repository":{"id":76925550,"uuid":"407195024","full_name":"FullstackAcademy/2109-WDF-NY-WEB-FT","owner":"FullstackAcademy","description":null,"archived":false,"fork":false,"pushed_at":"2022-01-27T21:03:04.000Z","size":17849,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-10-28T02:39:57.000Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FullstackAcademy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-16T14:24:25.000Z","updated_at":"2022-07-29T15:35:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"e341f463-78a8-4537-a396-e39b4b69b0e6","html_url":"https://github.com/FullstackAcademy/2109-WDF-NY-WEB-FT","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FullstackAcademy/2109-WDF-NY-WEB-FT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FullstackAcademy%2F2109-WDF-NY-WEB-FT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FullstackAcademy%2F2109-WDF-NY-WEB-FT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FullstackAcademy%2F2109-WDF-NY-WEB-FT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FullstackAcademy%2F2109-WDF-NY-WEB-FT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FullstackAcademy","download_url":"https://codeload.github.com/FullstackAcademy/2109-WDF-NY-WEB-FT/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FullstackAcademy%2F2109-WDF-NY-WEB-FT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29571888,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T06:19:27.422Z","status":"ssl_error","status_checked_at":"2026-02-18T06:18:44.348Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T07:12:11.184Z","updated_at":"2026-02-18T07:02:31.277Z","avatar_url":"https://github.com/FullstackAcademy.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 **2109-WDF-NY-WEB-FT Library**\n\nThis will be your main place for Fullstack-related materials!\n\n## **Helpful Resources/Links**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n- [🗺 Stack Map Diagram][stack-map-diagram]\n- [📺 Video: Debugging Node][vid-debugging-node]\n- [📖 Effective git and github usage for pairing on workshops][git-pairing]\n- [📺 Video of Github workflow when pairing on Workshops][vid-git-pairing]\n- [📖 Fullstack Student / Alum Blogs List][alum-blogs]\n- [📖 Gist: Debugging][doc-glebec-debug]\n- [📺 Video: Debugging][vid-glebec-debug]\n- [📖 Gist: Some code wars problems, categorized][codewars-categorized]\n- [📖 Gist: Book Recommendations][doc-glebec-books]\n- [📖 Oh-My-ZSH cheatsheet][oh-my-zsh]\n- [📖 MVC vs Redux (Flux)][mvc-vs-redux]\n- [📖 Gist: Functional Programming][doc-glebec-fp]\n- **Destructuring**\n  - [📖 MDN: Destructuring assignment][mdn-destructuring]\n  - [📖 A Dead Simple intro to Destructuring JavaScript Objects][wes-bos-destructuring]\n  - [📖 Rename \u0026 Destructure Variables in ES6][wes-bos-destructure-renaming]\n\n[stack-map-diagram]: https://fullstackacademy.github.io/stack-map/\n[vid-debugging-node]: https://youtu.be/N9w__SIB-wA\n[git-pairing]: https://gist.github.com/omriBernstein/4fd2c21be8416d5e5a69aabc6fa94b82\n[vid-git-pairing]: http://www.youtube.com/watch?v=VJHyW8OmSaI\n[alum-blogs]: https://github.com/FullstackAcademy/student-blogs\n[doc-glebec-debug]: https://gist.github.com/glebec/8a0d06e54a4b3f95a33392f948e97b6a\n[vid-glebec-debug]: https://youtu.be/-NoR8H_mrC0\n[codewars-categorized]: https://gist.github.com/joedotjs/7614f84264bf20e49d39\n[doc-glebec-books]: https://gist.github.com/glebec/c8139b51feb86005504810b8f58a696c\n[oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet\n[mvc-vs-redux]: https://blog.gisspan.com/2017/02/Redux-Vs-MVC,-Why-and-How.html\n[doc-glebec-fp]: https://gist.github.com/glebec/a5c9309c7615d4bbdb838a4973e0f9d7\n[wes-bos-destructuring]: https://wesbos.com/destructuring-objects\n[wes-bos-destructure-renaming]: https://wesbos.com/destructuring-renaming\n[mdn-destructuring]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment\n\n\u003c/details\u003e\n\n___\n\n## 🥚 **Foundations**\n\n\u003cdetails\u003e\u003csummary\u003eFullstack Test First Solution Videos\u003c/summary\u003e\n\n- [📺 01 Properties][vid-foundations-01-properties]\n- [📺 02 Calculator][vid-foundations-02-calculator]\n- [📺 03 RPN Calculator Playlist][vid-foundations-03-RPN]\n- [📺 04 Loops Playlist][vid-foundations-01-loops]\n- [📺 05 Functions][vid-foundations-01-functions]\n- [📺 06 Functional][vid-foundations-01-functional]\n- [📺 07 Mammals][vid-foundations-01-mammals]\n- [📺 08 Recursion][vid-foundations-01-recursion]\n\n[vid-foundations-01-properties]: https://www.youtube.com/watch?v=YDoRg2topuA\n[vid-foundations-02-calculator]: https://www.youtube.com/watch?v=komtSeCkzCA\n[vid-foundations-03-RPN]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmnfk2sgE6qjfmAk6vbQVcNG\n[vid-foundations-01-loops]: https://www.youtube.com/watch?v=66bl0bvyH2M\u0026list=PLx0iOsdUOUmmHlW6T7IPy8uyiSgZp9R-E\n[vid-foundations-01-functions]: https://www.youtube.com/watch?v=oAHIBcmFUsg\n[vid-foundations-01-functional]: https://www.youtube.com/watch?v=fbf7aLX9dx4\n[vid-foundations-01-mammals]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmkJGuH7-4KJ6dToxFJzgVFh\n[vid-foundations-01-recursion]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmmrCVtFYTSvFgytB34qWT8a\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eFoundations Checkpoint\u003c/summary\u003e\n\n- [💬 Q \u0026 A](https://youtu.be/hanrq65sulg)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003eFoundations Lectures\u003c/summary\u003e\n\n### Week 1 Review Videos\n\n- [📓 08-18-2021](https://youtu.be/5MIZTQckGbY)\n- [📓 08-20-2021](https://youtu.be/VdX2uvsqcsA)\n\n### Week 2 Review Videos\n\n- [📓 08-24-2021](https://youtu.be/ahPntoSt36o)\n- [📓 08-26-2021](https://youtu.be/UfhfYU-dCMU)\n\n### Week 3 Review Videos\n\n- [📓 09-01-2021](https://youtu.be/f7ydmX9pOk0)\n- [📓 09-03-2021](https://youtu.be/_b1Eqagds-E)\n\n### Week 4 Review Videos\n\n- [📓 09-08-2021](https://youtu.be/gLT20XwFOj4)\n- [📓 09-10-2021](https://youtu.be/_rDxxnaA_T0)\n\n\u003c/details\u003e\n\n___\n\n## 🐣 **Junior Phase**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n### ✔️ **Checkpoints**\n\n| Topic | Link | Due by | Solution | Walkthrough |\n| ---------- | ---- | ------ | -------- | -------- |\n| DOM | [🔗][ckpt-dom] | Sun 09/26 6PM EST | [👾][ckpt-dom-sol] | [📺][ckpt-dom-video] |\n| Express \u0026 Sequelize | [🔗][ckpt-express-sequelize] | Sun 10/03 6PM EST | [👾][ckpt-express-sequelize-sol] | [📺][ckpt-express-sequelize-video]\n| Pillars | [🔗][pillars] | Wed 10/05 6PM EST | - | [📺][pillars-rev] |\n| React | [🔗][ckpt-react] | Sun 10/10 6 PM EST | [👾][ckpt-react-sol] | [📺][ckpt-react-rev] |\n| Redux | [🔗][ckpt-redux] | Sun 10/17 6 PM EST | [👾][ckpt-redux-sol] | - |\n\u003c!-- | JPFP | [🔗][jpfp] | - | - | --\u003e\n\u003c!-- | Data Structures | [🔗][ckpt-data-structures] | - | - | --\u003e\n\n[//]: # ( Open checkpoint solutions the day after it is due [depending on extensions] )\n\n[ckpt-dom]: https://github.com/FullstackAcademy/Checkpoint.DOM\n[//]: # ( Paste in table above \u003e\u003e [👾][ckpt-dom-sol] )\n[ckpt-dom-sol]: 01-junior-phase/checkpoints/Checkpoint.DOM.Solution-master\n[ckpt-dom-video]: https://youtu.be/3EtAyIhudF0\n\n[ckpt-express-sequelize]: https://github.com/FullstackAcademy/Checkpoint-Express-Sequelize-B\n[//]: # ( Paste in table above \u003e\u003e [👾][ckpt-express-sequelize-sol] )\n[ckpt-express-sequelize-sol]: 01-junior-phase/checkpoints/Checkpoint-Express-Sequelize-B-Solution-main\n[ckpt-express-sequelize-video]: https://www.youtube.com/playlist?list=PL_yPiP-ZZLhKmY7Je1N1Gk06TkyKPgkwe\n\n\n[pillars]: https://github.com/FullstackAcademy/Checkpoint-Pillars-v2\n[//]: # ( Paste in table above \u003e\u003e [📺][pillars-rev] )\n[pillars-rev]: https://www.youtube.com/playlist?list=PL_yPiP-ZZLhKph-MuCSKujl_MVved1OWC\n\n[ckpt-react]: https://github.com/FullstackAcademy/Checkpoint-React-v2\n[//]: # ( Paste in table above \u003e\u003e [👾][ckpt-react-sol] )\n[ckpt-react-sol]: 01-junior-phase/checkpoints/Checkpoint-React-v2-Solution-master\n[//]: # ( Paste in table above \u003e\u003e [📺][ckpt-react-rev] )\n[ckpt-react-rev]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmmUG8GiGcfoy2in0z3NrR3p\n\n[ckpt-redux]: https://github.com/FullstackAcademy/Checkpoint-Redux\n[//]: # ( Paste in table above \u003e\u003e [👾][ckpt-redux-sol] )\n[ckpt-redux-sol]: 01-junior-phase/checkpoints/Checkpoint-Redux-Solution-master\n\n[jpfp]: #tba\n\n[ckpt-data-structures]: https://github.com/FullstackAcademy/Checkpoint-Data-Structures\n[//]: # ( Paste in table above \u003e\u003e [👾][ckpt-data-structures-sol] )\n[ckpt-data-structures-sol]: #tba\n\n\n**\u003cdetails\u003e\u003csummary\u003e📚 Supplemental Study Materials\u003c/summary\u003e**\n\n| Topic | Link | Solution |\n| ----- | ---- | -------- |\n| Study Saturday: Express \u0026 Sequelize | [🔗][ss-express-sequelize] | [👾][ss-express-sequelize-sol] |\n| Cody's Cafe | [🔗][codys-cafe-repo] | [👾][codys-cafe-sol] |\n| Study Saturday: React | [🔗][ss-react] | [👾][ss-react-sol] |\n| Goodie Bag | [🔗][goodie-bag] | [👾][goodie-bag-sol] |\n\u003c!-- | Cody's Quiz | [🔗][codys-quiz-repo] | [👾][codys-quiz-sol] | --\u003e\n\u003c!-- | Study Saturday: Fullstack Flow | [🔗][ss-fullstack] | [👾][ss-fullstack-sol] | --\u003e\n\n[//]: # ( Open Study Saturday material the following Monday )\n\n[codys-cafe-repo]: https://github.com/FullstackAcademy/codys-cafe\n[codys-cafe-sol]: https://github.com/FullstackAcademy/codys-cafe-solution.git\n\n[ss-express-sequelize]: https://github.com/FullstackAcademy/Study-Saturday-Express-Sequelize\n[ss-express-sequelize-sol]: https://github.com/FullstackAcademy/codys-cafe-solution\n\n[ss-react]: https://github.com/FullstackAcademy/Study-Saturday-React\n[ss-react-sol]: #tba\n\n[goodie-bag]: https://learn.fullstackacademy.com/workshop/5f077126514d6d000422faa4/landing\n[goodie-bag-sol]: https://github.com/FullstackAcademy/GoodieBag.Solution\n\n[ss-fullstack]: https://github.com/FullstackAcademy/Study-Saturday-Fullstack\n[ss-fullstack-sol]: #tba\n\n- [Anatomy of a full-stack application directory structure](https://app.creately.com/diagram/M63wZ4CZnOh/view)\n  - **Note:** This is just _one_ potential way to structure.\n\n\u003c/details\u003e\n\n\u003c!--\n**\u003cdetails\u003e\u003csummary\u003e🏃 Fitness Tracker Series\u003c/summary\u003e**\n\n| Workshop | Link | Solution |\n| ----- | ---- | -------- |\n** Will be added when opened\n\n\u003c!-- | Fitness Tracker Pro 1 ⛹️ | [🔗][fitness-tracker-1] | - | --\u003e\n\u003c!-- | Fitness Tracker Pro 2 🚴 | [🔗][fitness-tracker-2] | - | --\u003e\n\u003c!-- | Fitness Tracker Pro 3 🧗 | [🔗][fitness-tracker-3] | - | --\u003e\n\u003c!-- | Fitness Tracker Pro 4 🧗 | [🔗][fitness-tracker-4] | - | --\u003e\n\n[fitness-tracker-1]: https://learn.fullstackacademy.com/workshop/5c6f1e993812f00004238930/landing\n[//]: # ( Paste in table above \u003e\u003e [👾][fitness-tracker-1-sol] )\n[fitness-tracker-1-sol]: #tba\n\n[fitness-tracker-2]: https://learn.fullstackacademy.com/workshop/5c7d659837e0d200045b7a77/landing\n[//]: # ( Paste in table above \u003e\u003e [👾][fitness-tracker-2-sol] )\n[fitness-tracker-2-sol]: #tba\n\n[fitness-tracker-3]: https://learn.fullstackacademy.com/workshop/5c86c0b95587580004b80c3f/landing\n[//]: # ( Paste in table above \u003e\u003e [👾][fitness-tracker-3-sol] )\n[fitness-tracker-3-sol]: #tba\n\n[fitness-tracker-4]: https://learn.fullstackacademy.com/workshop/5c9110fc3fb0a40004e67bd8/landing\n[//]: # ( Paste in table above \u003e\u003e [👾][fitness-tracker-4-sol] )\n[fitness-tracker-4-sol]: #tba\n\n\n___\n\n### **Week 1: Collaboration \u0026 Git, HTML \u0026 CSS, Debugging, DOM \u0026 Events, Node**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Collaboration, Git\n\n- Pre-Work:\n  - [📖 A Pair is Better Than One][pair-better]\n  - [📖 Git Handbook][git-handbook]\n\n[git-handbook]: https://guides.github.com/introduction/git-handbook/\n[pair-better]: https://hackernoon.com/a-pair-is-better-than-one-e9d4514add9f\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to Junior Phase | - | - | - | - | - |\n| Zoom Protocols | - | [🖼️][zoom-slides] | - | - | - |\n| Intro to Pair Programming | [📺][pair-programming-lec] | [🖼️][pair-programming-slides] | - | - | - |\n| Git: Getting Confident | [📺][git-lec] | [🖼️][git-slides] | - | - | - |\n| Morning Review | [📺][am-rev-1-1] | [🎟][am-rev-1-1-ticket] | - | [👾][am-rev-1-1-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [🖼️][intro-jr-phase-slides] )\n[intro-jr-phase-slides]: #link-to-slide-deck-here\n\n[//]: # ( Paste in table above \u003e\u003e [🖼️][zoom-slides] )\n[zoom-slides]: https://docs.google.com/presentation/d/1UTdfDmUkNakkOEB40YFUPGikJIhtD_DKYm3nY32iqm8/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [📺][pair-programming-lec] )\n[pair-programming-lec]: https://youtu.be/3BU8d27sZa4\n[pair-programming-slides]: https://docs.google.com/presentation/d/1H_Oxl0ewwlD5HO_HGvEz0SXS47j9TboSLHi73xDLgrs/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [📺][git-lec] )\n[git-lec]: https://youtu.be/EqH8DlDt_BY\n[git-slides]: https://docs.google.com/presentation/d/1GLe6zqtfQkw0bxmxCSON9WVC746kPaSaJCzYRqUdIYQ/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][git-demo] )\n[git-demo]: #link-demo-here\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-1-1] )\n[am-rev-1-1]: https://youtu.be/kDfGpRl6b50\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-1-1-ticket] )\n[am-rev-1-1-ticket]: https://forms.gle/P8pQQi1ZqognD5wy6\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-1-1-demo] )\n[am-rev-1-1-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-1-1-sol] )\n[am-rev-1-1-sol]: 01-junior-phase/exit-ticket-solutions/01-git-pairing.md\n\n- **You should be able to:**\n  - Practice effective pair programming\n  - Manage a project using `git`\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n- [Git Book](https://git-scm.com/book/en/v2/Getting-Started-Git-Basics)\n- [GitHub: Git Cheat Sheet](https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf)\n- [Centralized vs Distributed Version Control Systems (CVCS vs DVCS)](https://scmquest.com/centralized-vs-distributed-version-control-systems)\n- [Git: Customizing Git - Git Configuration](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)\n- [Stackoverflow: `git branch BRANCH_NAME` vs. `git checkout -b BRANCH_NAME`](https://stackoverflow.com/questions/7987687/what-is-the-difference-between-git-branch-and-git-checkout-b/7987711#7987711)\n- [Git Without Github: Private Repositories](https://catxmachina.xyz/git-without-github/private-repos/)\n- [Atlassian: Git merge conflicts](https://www.atlassian.com/git/tutorials/using-branches/merge-conflicts)\n- [freeCodeCamp: How to Delete a Git Branch Both Locally and Remotely](https://www.freecodecamp.org/news/how-to-delete-a-git-branch-both-locally-and-remotely/)\n- [Checkersaga: Google and GitHub will stop using terms like ‘master and slave’ or ‘blacklist’ in their code](https://checkersaga.com/google-and-github-will-stop-using-terms-like-master-and-slave-or-blacklist-in-their-code/48456/)\n\n\u003c/details\u003e\n\n\n#### Day 2: HTML, CSS, Flexbox\n\n- Pre-Work:\n  - [📖 HTML Basics][html-basics]\n  - [📖 CSS Basics][css-basics]\n  - [📖 A Complete Guide to Flexbox][flexbox-complete-guide]\n\n[html-basics]: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics\n[css-basics]: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics\n[flexbox-complete-guide]: https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| HTML | [📺][html-lec] | [🖼️][html-slides] | [🧑‍💻][html-demo] | - | - |\n| CSS | [📺][css-lec] | [🖼️][css-slides] | [🧑‍💻][css-demo] | - | - |\n| Flexbox | [📺][flexbox-lec] | [🖼️][flexbox-slides] | [🧑‍💻][flexbox-demo] | - | - |\n| Landing Page Liftoff | - | - | - | [👾][landing-page-sol] | [📺][landing-page-rev] |\n| Morning Review | [📺][am-rev-1-2] | [🎟][am-rev-1-2-ticket] | - | [👾][am-rev-1-2-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][html-lec] )\n[html-lec]: https://youtu.be/MYhWwb9iURI\n[html-slides]: https://docs.google.com/presentation/d/1Nx7cEU0bMGIBSQPqC5BYS622owsmnoMlmY6yzfN21I0/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][html-demo] )\n[html-demo]: 01-junior-phase/02-html-css-flexbox/html-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][css-lec] )\n[css-lec]: https://youtu.be/33Sr39xXJtw\n[css-slides]: https://docs.google.com/presentation/d/1rDKlYTjosIqNGcEQ3jXNzHSYFnq41ZeuyYB4nxIEEWk/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][css-demo] )\n[css-demo]: 01-junior-phase/02-html-css-flexbox/css-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][flexbox-lec] )\n[flexbox-lec]: https://youtu.be/G5xFqE22sDw\n[flexbox-slides]: https://docs.google.com/presentation/d/1K0WQvp8wSHEyIZQci_eDh8EhwKafD-m6mymsA7G80l0/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][flexbox-demo] )\n[flexbox-demo]: 01-junior-phase/02-html-css-flexbox/flexbox-demo\n\n[//]: # ( Paste in table above \u003e\u003e [👾][landing-page-sol] \u003c/br\u003e [👾 Extra Credit][landing-page-sol-extra] )\n[landing-page-sol]: 01-junior-phase/02-html-css-flexbox/Landing-Page-Launchpad-Solution\n[landing-page-sol-extra]: ####\n[//]: # ( Paste in table above \u003e\u003e [📺][landing-page-rev] )\n[landing-page-rev]: https://www.youtube.com/watch?v=TvTiebmefWY\u0026ab_channel=FullstackAcademy\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-1-2] )\n[am-rev-1-2]: https://youtu.be/UM8n81ggB1g\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-1-2-ticket] )\n[am-rev-1-2-ticket]: https://forms.gle/CG23syVAWfUoc3US9\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-1-2-demo] )\n[am-rev-1-2-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-1-2-sol] )\n[am-rev-1-2-sol]: 01-junior-phase/exit-ticket-solutions/02-html-css-flexbox.md\n\n- **You should be able to:**\n  - Create a basic HTML document using common elements (`div`, `p`, `h1`, `ul`, `button`, etc)\n  - Add some basic styling to an HTML document\n  - Navigate the browser developer tools (console, elements, network)\n  - Style a page using Flexbox\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [Calculate Specificity][specificity-calc]\n  - [Calculate Specificity v2][specificity-calc2]\n  - [REM vs EM vs PX][rem-em-px]\n  - [CSS Units Ultimate Guide][css-units]\n  - [CSS Grow][css-grow]\n  - [CSS Center][css-center]\n  - [Colorful Flexbox][flexbox-color]\n  - [FlexBox Froggy][flexbox-froggy]\n  - [Flexbox Froggy Level 24 Walkthrough][vid-flexbox-froggy] \u003e\u003e Spoiler alert!\n  - [FlexBox in 10 Minutes][flexbox-ten-minutes]\n\n[specificity-calc]: https://slicejack.com/quick-guide-to-css-specificity/\n[specificity-calc2]: https://css-tricks.com/specifics-on-css-specificity/\n[rem-em-px]: https://engageinteractive.co.uk/blog/em-vs-rem-vs-px\n[css-units]: https://blog.alexdevero.com/css-units-ultimate-guide/\n[css-grow]: https://css-tricks.com/flex-grow-is-weird/\n[css-center]: https://css-tricks.com/centering-css-complete-guide/\n[flexbox-color]: https://medium.freecodecamp.org/even-more-about-how-flexbox-works-explained-in-big-colorful-animated-gifs-a5a74812b053\n[flexbox-froggy]: https://flexboxfroggy.com/\n[vid-flexbox-froggy]: https://youtu.be/D8V74OeZm5Y\n[flexbox-ten-minutes]: https://medium.freecodecamp.org/flexbox-in-10-minutes-7295497804ed\n\n\u003c/details\u003e\n\n\n#### Day 3: Debugging, DOM, Event Listeners \u0026 Handlers\n- Pre-Work:\n  - [📖 Thoughts on Debugging][debug-thoughts]\n  - [📖 What is the DOM?][dom-what]\n  - [📖 An Introduction To DOM Events][dom-intro]\n\n[debug-thoughts]: https://www.bignerdranch.com/blog/thoughts-on-debugging-part-2/\n[dom-what]: https://css-tricks.com/dom/\n[dom-intro]: https://www.smashingmagazine.com/2013/11/an-introduction-to-dom-events/\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Practical Debugging: Prevention| [📺][prevention-lec] | [🖼️][prevention-slides] | - | - | - |\n| Practical Debugging: Detection, Diagnosis \u0026 Treatment | [📺][ddt-lec] | [🖼️][ddt-slides] | - | - | - |\n| Intro to the DOM | [📺][dom-intro-lec] | [🖼️][dom-intro-slides] | - | [👾][dom-sol] | - |\n| Morning Review | - | [🎟][am-rev-1-3-ticket] | - | [👾][am-rev-1-3-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][prevention-lec] )\n[prevention-lec]: https://youtu.be/Z1AolPk-cvk\n[prevention-slides]: https://docs.google.com/presentation/d/1heeFT5nf6AHDzMrnRO9PQR38yT9OlVwIFkdO9k0E3Ts/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [📺][ddt-lec] )\n[ddt-lec]: https://youtu.be/C96Zh-1UuqE\n[ddt-slides]: https://docs.google.com/presentation/d/1ubjsEvmFcS9fZAOi3kQ3QRknoGWIsUYRyP472VbQJSc/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [📺][dom-intro-lec] )\n[dom-intro-lec]: https://youtu.be/nREik7gTqbI\n[dom-intro-slides]: https://docs.google.com/presentation/d/1aVwRxJmGNpJlBc7yJc9DHAIqWMnwAIS5TAEWBBMZC1A/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][dom-intro-demo] )\n[dom-intro-demo]: #link-demo-here\n\n[//]: # ( Paste in table above \u003e\u003e [👾][dom-sol] )\n[dom-sol]: 01-junior-phase/03-dom/Checkpoint.DOM.Solution-master\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-1-3] )\n[am-rev-1-3]: #paste-YouTube-link-here\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-1-3-ticket] )\n[am-rev-1-3-ticket]: https://forms.gle/JaneK3AQ6VFNxLd88\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-1-3-demo] )\n[am-rev-1-3-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-1-3-sol] )\n[am-rev-1-3-sol]: 01-junior-phase/exit-ticket-solutions/03-debugging-dom.md\n\n- **You should be able to:**\n  - Describe simple steps to prevent bugs\n  - Demonstrate how to read a stack trace, and use `console.log` and `debugger`\n  - Define the DOM and explain its importance\n  - Set up event listeners to handle DOM events\n  - Manipulate the DOM using the DOM API\n  - Explain how a browser uses HTML, CSS, and JavaScript to display a web page\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [HTML Collection vs NodeList][html-collection-vs-nodelist]\n  - [NodeList Doc][doc-nodelist]\n\n[html-collection-vs-nodelist]: https://teamtreehouse.com/community/understanding-the-difference-between-an-htmlcollection-and-a-nodelist\n[doc-nodelist]: https://developer.mozilla.org/en-US/docs/Web/API/NodeList\n\n\u003c/details\u003e\n\n\n#### Day 4: Pixelate\n\n- Pre-Work:\n  - [📖 An Introduction To DOM Events][dom-intro] from yesterday's pre-work\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Event Listeners \u0026 Handlers | [📺][dom-events-lec] | [🖼️][dom-events-slides] | [👨‍💻][dom-events-demo] | - | - | - |\n| Whack-a-mole | - | - | - | [👾][whack-a-mole-sol] \u003c/br\u003e [👾 with timer][whack-a-mole-sol-timer] | - |\n| Pixelate | - | - | - | [👾][pixelate-sol] | [📺][pixelate-rev] |\n| Office Hours | [📺][office-hours-lec] | - | [👾][office-hours-demo] | - | - |\n| Morning Review | [📺][am-rev-1-4] | [🎟][am-rev-1-4-ticket] | - | [👾][am-rev-1-4-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][dom-events-lec] )\n[dom-events-lec]: https://www.youtube.com/watch?v=9kFsz37bI3w\u0026feature=youtu.be\n[dom-events-slides]: https://docs.google.com/presentation/d/1Unq4gPwi1N5Dn-8yX5MlWRr4RH_FOosaiU2uEXyogNg/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [👨‍💻][dom-events-demo] )\n[dom-events-demo]:01-junior-phase/04-pixelate/event-listener-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][whack-a-mole-sol] \u003c/br\u003e [👾 with timer][whack-a-mole-sol-timer] )\n\n[//]: # ( Paste in table above \u003e\u003e [📺][whack-a-mole-sol] )\n[whack-a-mole-sol]: 01-junior-phase/04-pixelate/Lab.Whack-a-mole-solution\n[whack-a-mole-sol-timer]: 01-junior-phase/04-pixelate/Lab.Whack-a-mole-solution-with-timer\n\n[//]: # ( Paste in table above \u003e\u003e [👾][pixelate-sol] )\n[pixelate-sol]: 01-junior-phase/04-pixelate/PairExercise.Pixelate.Solution\n[//]: # ( Paste in table above \u003e\u003e [📺][pixelate-rev] )\n[pixelate-rev]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmlGmcCCcsf9os6lVu0l5kg-\n\n[//]: # ( Paste in table above \u003e\u003e [📺][office-hours-lec] )\n[office-hours-lec]: https://youtu.be/WdrWK5c-m30\n[//]: # ( Paste in table above \u003e\u003e [👾][office-hours-demo] )\n[office-hours-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/office-hours/week-1/solution\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-1-4] )\n[am-rev-1-4]: https://youtu.be/WYSWXMO5qIo\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-1-4-ticket] )\n[am-rev-1-4-ticket]: https://forms.gle/HTiRRrksRfAu2Fr58\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-1-4-demo] )\n[am-rev-1-4-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-1-4-sol] )\n[am-rev-1-4-sol]: 01-junior-phase/exit-ticket-solutions/04-dom-events.md\n\n- **You should be able to:**\n  - Hone in on the previous day's objectives\n    - Set up event listeners to handle DOM events\n    - Manipulate the DOM using the DOM API\n    - Explain how a browser uses HTML, CSS, and JavaScript to display a web page\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [MDN: Introduction to events](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events)\n  - [Eloquent JavaScript: Handling Events](https://eloquentjavascript.net/15_event.html)\n  - **Visualizing the Event Life Cycle:**\n    - [Slow motion event path](https://jsbin.com/exezex/4/edit?css,js,output)\n    - [Identifying event phases](http://jsbin.com/unuhec/4/edit)\n  - [JavaScript.info: Bubbling and capturing](https://javascript.info/bubbling-and-capturing)\n  - [MDN: `EventTarget.addEventListener()`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\n  - Once you isolate the target element via `event.target`, you can \"dot\" off of that element to access a number of properties. See here: [MDN: Element Properties](https://developer.mozilla.org/en-US/docs/Web/API/Element#Properties)\n    - By doing this, we can add logic to our event handlers when we leverage event delegation in order to prevent code from running on elements we don't want it to.\n  - [Overlay demonstrating stopPropagation](https://jsbin.com/fizuyesere/edit?html,js,output)\n\n\u003c/details\u003e\n\n\n#### Day 5: Intro to Node\n\n- Pre-Work:\n  - [📖 What Exactly is Node.js][nodejs-intro]\n\n[nodejs-intro]: https://medium.freecodecamp.org/what-exactly-is-node-js-ae36e97449f5\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to Node: Modules | [📺][node-modules-lec] | [🖼️][node-slides] | - | [👾][node-basics-sol] | - |\n| Intro to Node: Asyncronicity \u0026 Callbacks | [📺][node-async-lec] | [🖼️][node-async-slides] | - | [👾][node-shell-sol] | - |\n| How to Give and Receive Feedback | - | - | - | - | - |\n| Morning Review | [📺][am-rev-1-5] | [🎟][am-rev-1-5-ticket] | - | [👾][am-rev-1-5-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][node-modules-lec] )\n[node-modules-lec]: https://youtu.be/9JO5ktOesl0\n[node-slides]: https://docs.google.com/presentation/d/15Nwz0S0zWY42WtmhiU3evJF-OKm6kJJHcToA7g-zhPs/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][node-modules-demo] )\n[node-modules-demo]: #link-demo-here\n\n[//]: # ( Paste in table above \u003e\u003e [📺][node-async-lec] )\n[node-async-lec]: https://www.youtube.com/watch?v=fh3f6UB6mv8\u0026feature=youtu.be\n[node-async-slides]: https://docs.google.com/presentation/d/1ayc7OaoS0F18seaijfoa6SdNtmZEJMZ3wN3JdCdwomk/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][node-async-demo] )\n[node-async-demo]: #link-demo-here\n\n[//]: # ( Paste in table above \u003e\u003e [👾][node-basics-sol] )\n[node-basics-sol]: 01-junior-phase/05-node/Solution.NodeBasics-main\n[//]: # ( Paste in table above \u003e\u003e [👾][node-shell-sol] )\n[node-shell-sol]: 01-junior-phase/05-node/Solution.NodeShell-main\n\n[//]: # ( Paste in table above \u003e\u003e [📺][give-recieve-feedback-lec] )\n[give-recieve-feedback-lec]: #paste-YouTube-link-here\n[//]: # ( Paste in table above \u003e\u003e [🖼️][give-recieve-feedback-slides] )\n[give-recieve-feedback-slides]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-1-5] )\n[am-rev-1-5]: https://youtu.be/oKVaywJHwLY\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-1-5-ticket] )\n[am-rev-1-5-ticket]: https://forms.gle/fyYTqWFquz5WSbCA9\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-1-5-demo] )\n[am-rev-1-5-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-1-5-sol] )\n[am-rev-1-5-sol]: 01-junior-phase/exit-ticket-solutions/05-node.md\n\n- **You should be able to:**\n  - Explain the purpose of Node\n  - Explain asynchronicity in JavaScript and how to handle asynchronous code\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [📺 What is the Event Loop Anyway?][event-loop]\n\n[event-loop]: https://www.youtube.com/watch?v=8aGhZQkoFbQ\u0026vl=en\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n___\n\n### **Week 2: Express, Async/Await, Databases (PostgreSQL), ORMs (Sequelize)**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Express, Handling Asynchronous Operations (`async`/`await`)\n\n- Pre-Work:\n  - [📺 Web Dev Simplified: What is an API?][what-is-an-api]\n  - [📺 Codecademy: Back-End Web Architecture][codecademy-be-web-arch]\n  - 📤 Download an API development tool (your choice) 📥\n    - [Postman](https://www.postman.com/)\n    - [Insomnia](https://insomnia.rest/)\n  - [📖 Async/Await: The Hero Javascript Deserved][twilio-async-await]\n\n[what-is-an-api]: https://youtu.be/tgbRY96q-KM\n[codecademy-be-web-arch]: https://www.codecademy.com/articles/back-end-architecture\n[twilio-async-await]: https://www.twilio.com/blog/2015/10/asyncawait-the-hero-javascript-deserved.html\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| HTTP and Express 101 | [📺][express-101-lec] | [🖼️][express-101-slides] | [🧑‍💻][express-101-demo] | - | - |\n| Express 201 (Wizard News Pt 1) | [📺][express-201-lec] | [🖼️][express-201-slides] | [🧑‍💻][express-201-demo] | [👾][express-wizard-1-sol] | [📺][express-wizard-1-rev] |\n| `async`/`await` | [📺][async-await-lec] | [🖼️][async-await-slides] | [🧑‍💻][async-await-demo] | [👾][async-await-sol] | - |\n| Morning Review | [📺][am-rev-2-1] | [🎟][am-rev-2-1-ticket] | [🧑‍💻][am-rev-2-1-demo] | [👾][am-rev-2-1-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][express-101-lec] )\n[express-101-lec]: https://youtu.be/PshnTdSbKcA\n[express-101-slides]: https://docs.google.com/presentation/d/17LTfUVqbK1bz9fMaejOvxebxit_2IomBnAxe7kqYK-E/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][express-101-demo] )\n[express-101-demo]: 01-junior-phase/06-express-and-async/express-101-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][express-201-lec] )\n[express-201-lec]: https://youtu.be/maIyR4sBdXk\n[express-201-slides]: https://docs.google.com/presentation/d/1cS548bLr3YMkA9tdwviIzwVU-qO29uOuw_DSJoD4O1o/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][express-201-demo] )\n[express-201-demo]: 01-junior-phase/06-express-and-async/express-201-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][express-wizard-1-sol] )\n[express-wizard-1-sol]: 01-junior-phase/06-express-and-async/Solution.Wizard-news-Part1\n[//]: # ( Paste in table above \u003e\u003e [📺][express-wizard-1-rev] )\n[express-wizard-1-rev]: https://www.youtube.com/watch?v=w07G_eMRFZ4\u0026ab_channel=FullstackAcademy\n\n[//]: # ( Paste in table above \u003e\u003e [📺][async-await-lec] )\n[async-await-lec]: https://youtu.be/48WuIqbk3Nk\n[async-await-slides]: https://docs.google.com/presentation/d/1lyOQtOBzNPx5gyc7hupZHdt-qn8XmhIN-xYRQhFal98/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][async-await-demo] )\n[async-await-demo]: 01-junior-phase/06-express-and-async/asynchronous-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][async-await-sol] )\n[async-await-sol]: 01-junior-phase/06-express-and-async/Solution.Lab.AsyncAwait-master\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-2-1] )\n[am-rev-2-1]: https://youtu.be/U0u4uKnfRBo\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-2-1-ticket] )\n[am-rev-2-1-ticket]: https://forms.gle/kTDn26KUumP9ka1Z8\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-2-1-demo] )\n[am-rev-2-1-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/promises\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-2-1-sol] )\n[am-rev-2-1-sol]: 01-junior-phase/exit-ticket-solutions/06-express-async-await.md\n\n- **You should be able to:**\n  - Describe the role of a client, a server, and HTTP\n  - Describe Express middleware, requests, and responses\n  - Handle URL params in an Express route\n  - Know when and why you would use `app.use` and `next` in your Express app\n  - Use `module.exports` and `require` to create modular applications\n  - Handle asynchronous code and Promises with `async`/`await`\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [📖 A Simple Explanation of Express Middleware][express-middleware]\n  - [📖 Nodejs in Flames][nodejs-flames]\n\n[express-middleware]: https://medium.com/@agoiabeladeyemi/a-simple-explanation-of-express-middleware-c68ea839f498\n[nodejs-flames]: https://medium.com/netflix-techblog/node-js-in-flames-ddd073803aa4\n\n\u003c/details\u003e\n\n\n#### Day 2: Databases, SQL, Schema Design\n\n- Pre-Work:\n  - [📖 Schema Design Overview][schema-design]\n\n[schema-design]: https://medium.com/@kimtnguyen/relational-database-schema-design-overview-70e447ff66f9\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to Databases \u0026 PostgreSQL | [📺][db-lec] | [🖼️][db-slides] | - | - | - |\n| Intro to SQL | [📺][sql-lec] | [🖼️][sql-slides] | - | - | - |\n| Schema Design | [📺][schema-lec] | [🖼️][schema-slides] | - | [👾][schema-sol] | - |\n| Morning Review | [📺][am-rev-2-2] | [🎟][am-rev-2-2-ticket] | [👾][am-rev-2-2-sol] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][db-lec] )\n[db-lec]: https://youtu.be/LYl27t43Ayc\n[db-slides]: https://docs.google.com/presentation/d/1_lofGkCsKUjx7oJ7x3UNvgcfcl6S_T0DsrdHfzgoNpw/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [📺][sql-lec] )\n[sql-lec]: https://youtu.be/rr31aMR7eio\n[sql-slides]: https://docs.google.com/presentation/d/1aN10QfCA64zBROsPwDd3ZQkzyt_qdL9ny2eX8D7s1c0/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][sql-demo] )\n[sql-demo]: #link-demo-here\n\n[//]: # ( Paste in table above \u003e\u003e [📺][schema-lec] )\n[schema-lec]: https://youtu.be/JcdB3VZUx7Y\n[schema-slides]: https://docs.google.com/presentation/d/1As2mGl4QtmhkLy5G6WIsTyfvbu6h3cuTdJKwUB_SOZ8/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [👾][schema-sol] )\n[schema-sol]: 01-junior-phase/07-dbs/twitter-example.pdf\n\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-2-2] )\n[am-rev-2-2]: https://youtu.be/tPrNH35byp8\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-2-2-ticket] )\n[am-rev-2-2-ticket]: https://forms.gle/gSzG94VW9cL9opc89\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-2-2-demo] )\n[am-rev-2-2-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-2-2-sol] )\n[am-rev-2-2-sol]: 01-junior-phase/exit-ticket-solutions/07-sql-postgresql-schema.md\n\n- **You should be able to:**\n  - Explain what a database is, and why you would use one\n  - Write SQL queries using some common keywords (`SELECT`, `FROM`, `WHERE`, `ORDER BY`, `JOIN`, etc)\n  - Articulate what a primary key is\n  - Articulate what a foreign key is, and why you would use one\n  - Explain the differences between a 1-to-1, 1-to-many, and many-to-many relationship\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [Normalization][normalization]\n  - [SQL-Relationships][sql-relationships]\n  - [SQLzoo][sql-zoo]\n  - [SQL vs NoSQL][sql-nosql]\n  - [📖 SQL W3schools][sql-w3]\n  - [📖 What is a RDBMS anyway?][rdbms-what]\n\n[normalization]: https://opentextbc.ca/dbdesign01/chapter/chapter-12-normalization/\n[sql-relationships]: https://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships--net-8561\n[sql-zoo]: https://sqlzoo.net/\n[sql-nosql]: https://medium.com/xplenty-blog/the-sql-vs-nosql-difference-mysql-vs-mongodb-32c9980e67b2\n[sql-w3]: https://www.w3schools.com/sql/sql_intro.asp\n[rdbms-what]: https://www.codecademy.com/articles/what-is-rdbms-sql\n\n\u003c/details\u003e\n\n\n#### Day 3: Node-Postgres (`pg`), Express `Router()`\n\n- Pre-Work:\n  - [node-postgres (Sections: \"Welcome\" and \"Queries\")][pg-docs]\n\n[pg-docs]: https://node-postgres.com/\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Node-Postgres (`pg`) (Wizard News Pt 2) | [📺][node-postgres-lec] | [🖼️][node-postgres-slides] | [🧑‍💻][node-postgres-demo] | [👾][wizard-news-2-sol] | [📺][wizard-news-2-rev] |\n| RESTful Routing (Wizard News Pt 3) | [📺][restful-express-lec] | [🖼️][restful-express-slides] | [🧑‍💻][restful-express-demo] | [👾][wizard-news-3-sol] | [📺][wizard-news-3-rev] |\n| Morning Review | [📺][am-rev-2-3] | [🎟][am-rev-2-3-ticket] | - | [👾][am-rev-2-3-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][node-postgres-lec] )\n[node-postgres-lec]: https://youtu.be/z_dn64-NYd8\n[node-postgres-slides]: https://docs.google.com/presentation/d/1oUojPIxCeJcGP0iPoX01XdBdJyBTI4sYuFPaMjRlPdE/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][node-postgres-demo] )\n[node-postgres-demo]: 01-junior-phase/08-postgres-and-routing/pg-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][wizard-news-2-sol] )\n[wizard-news-2-sol]: 01-junior-phase/08-postgres-and-routing/Solution.Wizard-news-Part2\n[//]: # ( Paste in table above \u003e\u003e [📺][wizard-news-2-rev] )\n[wizard-news-2-rev]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmmM-IVZfeksQqCXLGrKXCrl\n\n[//]: # ( Paste in table above \u003e\u003e [📺][restful-express-lec] )\n[restful-express-lec]: https://youtu.be/Ij5GSQRxnr4\n[restful-express-slides]: https://docs.google.com/presentation/d/1O_hFzWApi9_mtLuCuvpkc4jna90JTOrfkNpJ5usmuVs/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][restful-express-demo] )\n[restful-express-demo]: 01-junior-phase/08-postgres-and-routing/router-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][wizard-news-3-sol] )\n[wizard-news-3-sol]: 01-junior-phase/08-postgres-and-routing/Solution.Wizard-news-Part3\n[//]: # ( Paste in table above \u003e\u003e [📺][wizard-news-3-rev] )\n[wizard-news-3-rev]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmlBAQOjZdHZ5EOZta0l9e2L\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-2-3] )\n[am-rev-2-3]: https://youtu.be/O0UX-VBOrXI\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-2-3-ticket] )\n[am-rev-2-3-ticket]: https://forms.gle/scwcbhBKFXfqN3uK6\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-2-3-demo] )\n[am-rev-2-3-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-2-3-sol] )\n[am-rev-2-3-sol]: 01-junior-phase/exit-ticket-solutions/08-pg-express-routing-rest.md\n\n- **You should be able to:**\n  - Describe the role of `pg` in our stack\n  - Define REST and its advantages\n  - Create and mount Express Routers\n  - Explain the role of body parsing middleware\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n- **PostgreSQL**\n  - [Documentation][psql-docs]\n  - [Tutorial][psql-tutorial]\n- **[node-postgres (`pg`)](https://node-postgres.com/)**\n  - [Features: Connecting](https://node-postgres.com/features/connecting)\n  - [Features: Queries](https://node-postgres.com/features/queries)\n  - [API: `pg.Client`](https://node-postgres.com/api/client)\n- **Express \u0026 RESTful Routing**\n  - [Gist: REST Anti-Patterns and Mistakes][rest-mistakes]\n  - [RESTful API Resource Naming Convention][restful-api-naming]\n  - Express has reincorporated body parsing starting with **v4.16**:\n    - [Stackoverflow: `express.json` vs `bodyParser.json`][bparser-v-express]\n  - [How bodyParser() works](https://medium.com/@adamzerner/how-bodyparser-works-247897a93b90)\n\n[psql-docs]: https://www.postgresql.org/docs/8.0/tutorial.html\n[psql-tutorial]: http://www.postgresqltutorial.com/\n[rest-mistakes]: https://gist.github.com/omriBernstein/9f9c5f39afacc84faf44503fd64369cb\n[restful-api-naming]: https://restfulapi.net/resource-naming/\n[bparser-v-express]: https://stackoverflow.com/a/47232318\n\n\u003c/details\u003e\n\n\n#### Day 4: ORM (Sequelize), WikiStack 1\n\n- Pre-Work:\n  - [Sequelize An Introduction][sequelize-intro]\n  - [Sequelize: Getting Started][sequelize-guide]\n    - **Disclaimer:** Some syntax in the FSA Sequelize Guides is **deprecated** (e.g. `findById`). ***Always*** check the version in your `package.json` file and use the appropriate syntax for that specific version.\n\n[sequelize-intro]: https://youtu.be/qsDvJrGMSUY\n[sequelize-guide]: https://sequelize-guides.netlify.app/getting-started/\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to ORMs (Sequelize) | [📺][orm-lec-1] | [🖼️][orm-slides-1] | [🧑‍💻][orm-demo] | - | - |\n| Sequelize Hooks | [📺][orm-lec-2] | [🖼️][orm-slides-2] | [🧑‍💻][orm-demo] | - | - |\n| Wikistack 1 | - | - | - | [👾][wikistack-1-sol] | - |\n| Morning Review | [📺][am-rev-2-4] | [🎟][am-rev-2-4-ticket] | - | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][orm-lec-1] )\n[orm-lec-1]: https://youtu.be/9CMwxGUCAZw\n[orm-slides-1]: https://docs.google.com/presentation/d/1VjqI_-UjXMmBjV013n2F8_rnuNMnHRyRykzHO7O1UNw/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [📺][orm-lec-2] )\n[orm-lec-2]: https://youtu.be/ZwemG7lfbto\n[orm-slides-2]: https://docs.google.com/presentation/d/1y86WmG5VObSeNNKR3FzEM0alyGPcII9qfOYinIs8MZM/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][orm-demo] )\n[orm-demo]: https://github.com/orlandocaraballo/class-examples/blob/master/sequelize-examples/db.js\n[//]: # ( Paste in table above \u003e\u003e [👾][orm-sol] )\n[orm-sol]: ###link-sequelize-lab-solution-here\n\n[//]: # ( Paste in table above \u003e\u003e [👾][wikistack-1-sol] )\n[wikistack-1-sol]: 01-junior-phase/09-sequelize/Solution.Wikistack1-master\n[//]: # ( Paste in table above \u003e\u003e [📺][wikistack-1-rev] )\n[wikistack-1-rev]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-2-4] )\n[am-rev-2-4]: https://youtu.be/YqsG-pDGRt4\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-2-4-ticket] )\n[am-rev-2-4-ticket]: https://forms.gle/srJq8ydNeAfCVZEh6\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-2-4-demo] )\n[am-rev-2-4-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-2-4-sol] )\n[am-rev-2-4-sol]: 01-junior-phase/exit-ticket-solutions/09-orms.md\n\n- **You should be able to:**\n  - Define an ORM, and explain its pros/cons\n  - Define models in Sequelize\n  - Associate models with each other\n  - Hook into Sequelize lifecycle events\n  - Query on models (`findAll`, `findOne`, `create`, \"magic methods\", etc)\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [Official Sequelize Documentation](https://sequelize.org/master/)\n  - [How to Locate Magic Methods](https://gist.github.com/jbracht/1778e93ced532b902fc49d70a743ffb8)\n  - [Magic Methods Script](https://gist.github.com/b17z/916171a778c4ed7053d2052b0c6f7d55)\n  - [Lifecycle Methods](https://gist.github.com/Julissa93/6a6d29874d34a801d603d2522645025f)\n\n\u003c/details\u003e\n\n\n#### Day 5: WikiStack 2\n\n- Pre-Work:\n  - [Sequelize: Eager Loading][sequelize-eager]\n  - [Sequelize: Instance \u0026 Class Methods][sequelize-methods]\n  - [Express: Error Handling][express-error]\n\n[sequelize-eager]: https://sequelize-guides.netlify.com/eager-loading/\n[sequelize-methods]: https://sequelize-guides.netlify.com/instance-and-class-methods/\n[express-error]: https://expressjs.com/en/guide/error-handling.html\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Rounding Out Express \u0026 Sequelize | [📺][rounding-out-lec] | [🖼️][rounding-out-slides] | [🧑‍💻][rounding-out-lec-demo] | - | - |\n| Wikistack 2 | - | - | - | [👾][wikistack-2-sol] | - |\n| Afternoon Review | [📺][afternoon-review-2-5] | - | - | [👾 finished project][review-demo-finished] | [👾 coded in-class][review-demo-wip]  |\n| Morning Review | [📺][am-rev-2-5] | [🎟][am-rev-2-5-ticket] | - | [👾][am-rev-2-5-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][rounding-out-lec] )\n[rounding-out-lec]: https://youtu.be/XwajsAY0rgU\n[rounding-out-slides]: https://docs.google.com/presentation/d/1QrlyvcJmexEATyZRBDr3D5GaU5rAqN_v4h9EK8xwYF0/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][rounding-out-lec-demo] )\n[rounding-out-lec-demo]: 01-junior-phase/10-rounding-out/express-sequelize-rounding-out-demo\n\n[//]: # ( Paste in table above \u003e\u003e [👾][wikistack-2-sol] )\n[wikistack-2-sol]: 01-junior-phase/10-rounding-out/Solution.Wikistack2-main\n\n[//]: # ( Paste in table above \u003e\u003e [📺][afternoon-review-2-5] )\n[afternoon-review-2-5]: https://youtu.be/CVCKXGusJIs\n[//]: # ( Paste in table above \u003e\u003e [👾 ][review-demo-wip] )\n[review-demo-wip]: 01-junior-phase/10-rounding-out/imdb-WIP\n[//]: # ( Paste in table above \u003e\u003e [👾][review-demo-finished] )\n[review-demo-finished]: 01-junior-phase/10-rounding-out/imdb-FINISHED\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-2-5] )\n[am-rev-2-5]: https://youtu.be/g8xFdQ7YFrs\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-2-5-ticket] )\n[am-rev-2-5-ticket]: https://forms.gle/79UuJ4jrwH3uhg4u5\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-2-5-demo] )\n[am-rev-2-5-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-2-5-sol] )\n[am-rev-2-5-sol]: 01-junior-phase/exit-ticket-solutions/10-eager-loading-custom-error.md\n\n- **You should be able to:**\n  - Write custom error handlers in Express\n  - Utilize eager loading in Sequelize queries\n  - Write class and instance methods on Sequelize models\n\n\u003c/details\u003e\n\n___\n\n### **Week 3: Single-Page Applications, Pillars, React**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Single-Page Applications\n\n[trip-planner-pre]: https://learn.fullstackacademy.com/workshop/5a709ec934f42b0004ded97f/content/5a709ec934f42b0004ded98a/text\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Front-End Modules | [📺][fe-modules-lec] | - | [🧑‍💻][fe-modules-demo] | [👾][fe-modules-lab] | - |\n| SPA \u0026 AJAX (PuppyBowl) | [📺][spa-ajax-lec] | [🖼️][spa-ajax-slides] | - | [👾][puppybowl-sol] | - |\n| Morning Review | - | [🎟][am-rev-3-1-ticket] | - | [👾][am-rev-3-1-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][fe-modules-lec] )\n[fe-modules-lec]: https://youtu.be/kn7UBmb0x80\n[fe-modules-slides]: https://docs.google.com/presentation/d/1DULROUIBXCIsPsiHHYH2SsFgvxjUqOGJf9o6qKN3SMw/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][fe-modules-demo] )\n[fe-modules-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/webpack-practice\n[//]: # ( Paste in table above \u003e\u003e [👾][fe-modules-lab] )\n[fe-modules-lab]: 01-junior-phase/11-spa/Lab.Webpack-solution\n\n[//]: # ( Paste in table above \u003e\u003e [📺][spa-ajax-lec] )\n[spa-ajax-lec]: https://youtu.be/wt_NbLxmJmY\n[spa-ajax-slides]: https://docs.google.com/presentation/d/1h14jJR1h3woz1F8S4iFXVS844PkFpEfXgNWdMi0eCBc/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][spa-ajax-demo] )\n[spa-ajax-demo]: #link-demo-here\n\n[//]: # ( Paste in table above \u003e\u003e [👾][puppybowl-sol] )\n[puppybowl-sol]: 01-junior-phase/11-spa/PairExercise.PuppyBowl.Solution-main\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-3-1] )\n[am-rev-3-1]: #paste-YouTube-link-here\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-3-1-ticket] )\n[am-rev-3-1-ticket]: https://forms.gle/scRR4q466F6VAnak9\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-3-1-demo] )\n[am-rev-3-1-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-3-1-sol] )\n[am-rev-3-1-sol]: 01-junior-phase/exit-ticket-solutions/11-spa-ajax-webpack.md\n\n- **You should be able to:**\n  - Define a single page application (SPA)\n  - Implement an AJAX request using fetch in a client-side application\n  - Import and export objects using ES6 module syntax\n  - Identify Webpack’s role as a module bundler\n  - Bundle, modularize their front-end code using Webpack\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - **Client Server Architecture**\n    - [MDN: What is a web server?](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_web_server)\n    - [MDN: HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP)\n    - [HTTP Status Dogs](https://httpstatusdogs.com/)\n    - [TCP/IP, Simplified.](https://whatismyipaddress.com/tcpip-simplified)\n    - [TCP/IP Protocol Fundamentals Explained with a Diagram](https://www.thegeekstuff.com/2011/11/tcp-ip-fundamentals/)\n  - Front End Modules (Webpack)\n    - [Webpack documentation](https://webpack.js.org/concepts/)\n    - [Everything I Know About The Script Tag](https://eager.io/blog/everything-I-know-about-the-script-tag)\n    - [JavaScript Immediately-invoked Function Expressions (IIFE)](https://flaviocopes.com/javascript-iife/)\n  - **SPA \u0026 AJAX**\n    - [Microsoft invented Ajax: Let's give credit where it's due](https://garrettsmith.net/blog/archives/2006/01/microsoft_inven_1.html)\n    - [MDN: AJAX](https://developer.mozilla.org/en-US/docs/Web/Guide/AJAX)\n    - [MDN: JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n    - [MDN: JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\n    - [MDN: Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)\n    - [Google Developers: Introduction to fetch()](https://developers.google.com/web/updates/2015/03/introduction-to-fetch)\n    - [JavaScript.info: Fetch](https://javascript.info/fetch)\n    - [dev.to: JavaScript Fetch API and using Async/Await](https://dev.to/shoupn/javascript-fetch-api-and-using-asyncawait-47mp)\n  - **ES Modules**\n    - [MDN: JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)\n\n\u003c/details\u003e\n\n\n#### Day 2: Pillars\n\n- To prepare, see the \"📚 Supplemental Study Materials\" section at the top of this repo.\n- _Thoroughly_ read the [Academic Integrity Policy](01-junior-phase/academic-integrity-policy.md), which includes allowed resources.\n\n\n#### Day 3: Intro to React\n\n- Pre-Work:\n  - [freeCodeCamp: React’s Five Fingers of Death. Master these five concepts, then master React.][react-five]\n\n[react-five]: https://medium.freecodecamp.org/the-5-things-you-need-to-know-to-understand-react-a1dbd5d114a3\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to React | [📺][intro-react-lec] | [🖼️][intro-react-slides] | [🧑‍💻][intro-react-demo] | [👾][intro-react-sol] | - |\n| State \u0026 Props | [📺][state-props-lec] | [🖼️][state-props-slides] | - | [👾][state-props-sol] | - |\n| Morning Review | [📺][am-rev-3-3] | [🎟][am-rev-3-3-ticket] | - | [👾][am-rev-3-3-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][intro-react-lec] )\n[intro-react-lec]: https://youtu.be/gzFxdTL20yI\n[intro-react-slides]: https://docs.google.com/presentation/d/1V2xtYaPdcxSnzpFlKzSBErkj_svWXiLKptLhuP0Pb3o/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][intro-react-demo] )\n[intro-react-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/react/example\n[//]: # ( Paste in table above \u003e\u003e [👾][intro-react-sol] )\n[intro-react-sol]: 01-junior-phase/13-react/Lab.FirstComponent.Solution-main\n\n[//]: # ( Paste in table above \u003e\u003e [📺][state-props-lec] )\n[state-props-lec]: https://youtu.be/vco7NOvBXPg\n[state-props-slides]: https://docs.google.com/presentation/d/17MP47tlpw0zCYSBI2V-l9CyPNtW_UaB0lIcrc075fwQ/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][state-props-demo] )\n[state-props-demo]: ###\n[//]: # ( Paste in table above \u003e\u003e [👾][state-props-sol] )\n[state-props-sol]: 01-junior-phase/13-react/Lab.PropsAndState.Solution-master\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-3-3] )\n[am-rev-3-3]: https://youtu.be/wYPdrswRjFQ\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-3-3-ticket] )\n[am-rev-3-3-ticket]: https://forms.gle/cLPKCdhbzVKtTrbT9\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-3-3-demo] )\n[am-rev-3-3-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-3-3-sol] )\n[am-rev-3-3-sol]: 01-junior-phase/exit-ticket-solutions/13-react-intro.md\n\n- **You should be able to:**\n  - Write a class or functional component in React\n  - Pass, receive, and render props in a React component\n  - Render lists of data in JSX\n- **Homework:**\n  - [React Concepts Video Series][react-concepts]\n\n[react-concepts]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmlkkod59nXwkN4iB04beamn\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [React: All the Fundamental React Concepts Jammed Into This Single Medium Article](https://medium.freecodecamp.org/all-the-fundamental-react-js-concepts-jammed-into-this-single-medium-article-c83f9b53eac2)\n  - [A Visual Guide to State in React](https://daveceddia.com/visual-guide-to-state-in-react/)\n  - **React documentation**\n    - [Components and Props](https://reactjs.org/docs/components-and-props.html)\n      - Includes section on \"Function and Class Components\"\n    - [Conditional Rendering](https://reactjs.org/docs/conditional-rendering.html)\n      - [MDN: Logical AND (\u0026\u0026)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND)\n    - [Lists and Keys](https://reactjs.org/docs/lists-and-keys.html)\n      - An in-depth explanation about why keys are necessary if you’re interested in learning more – [Recursing On Children](https://reactjs.org/docs/reconciliation.html#recursing-on-children)\n  - [codeburst.io: A quick intro to React’s props.children](https://codeburst.io/a-quick-intro-to-reacts-props-children-cb3d2fce4891)\n  - [React Patterns](https://reactpatterns.com/)\n  - [Overreacted: Why Do We Write super(props)?](https://overreacted.io/why-do-we-write-super-props/)\n  - [Index as a key is an anti-pattern](https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318)\n  - **The Virtual DOM**\n    - [Codecademy: React The Virtual DOM](https://www.codecademy.com/articles/react-virtual-dom)\n    - [Pluralsight: Virtual DOM - the Difference Maker in React JS](https://www.pluralsight.com/guides/virtual-dom-difference-maker-react-js)\n    - [bitsofcode: Understanding the Virtual DOM](https://bitsofco.de/understanding-the-virtual-dom/)\n\n\u003c/details\u003e\n\n\n#### Day 4: React Component Lifecycle\n\n- Pre-Work:\n  - [React: State and Lifecycle][react-state-and-lifecycle]\n\n[react-state-and-lifecycle]: https://reactjs.org/docs/state-and-lifecycle.html\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Component Lifecycle (Contact List) | [📺][react-lifecycle-lec] | [🖼️][react-lifecycle-slides] | [🧑‍💻][react-lifecycle-demo]\u003cbr\u003e[🧑‍💻 extra demo][react-lifecycle-demo] | [👾][react-lifecycle-sol] | - |\n| Morning Review | [📺][am-rev-3-4] | [🎟][am-rev-3-4-ticket] ) | - | [👾][am-rev-3-4-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][react-lifecycle-lec] )\n[react-lifecycle-lec]: https://youtu.be/MjHLIOBnerI\n[react-lifecycle-slides]: https://docs.google.com/presentation/d/1tA5RcZsdLVFBehh27C6TsDIafCHSMKytwgcybo3fz20/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [👾][react-lifecycle-sol] )\n[react-lifecycle-sol]: 01-junior-phase/14-lifecycle/PairExercise.ContactList.Solution\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻] Extra demo[react-lifecycle-extra-demo] )\n[react-lifecycle-extra-demo]: 01-junior-phase/14-lifecycle/React-Lifecycle-Extra-Demo\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][react-lifecycle-demo] )\n[react-lifecycle-demo]: 01-junior-phase/14-lifecycle/React-Lifecycle-demo\n\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-3-4] )\n[am-rev-3-4]: https://youtu.be/zq-zVncdids\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-3-4-ticket] )\n[am-rev-3-4-ticket]: https://forms.gle/GrgJhgML1itZ9sEeA\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-3-4-demo] )\n[am-rev-3-4-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-3-4-sol] )\n[am-rev-3-4-sol]: 01-junior-phase/exit-ticket-solutions/14-react-component-lifecycle.md\n\n- **You should be able to:**\n  - Hook into React lifecycle events (i.e. `componentDidMount`)\n  - Define and update state in a component\n  - Handle state changes in response to AJAX, user events, etc\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - **React documentation**\n    - [`setState()`](https://reactjs.org/docs/react-component.html#setstate)\n    - [State and Lifecycle](https://reactjs.org/docs/state-and-lifecycle.html)\n      - Includes sections on \"Using State Correctly\" and \"The Data Flows Down\"\n    - [Handling Events](https://reactjs.org/docs/handling-events.html)\n      - Includes section on \"Passing Arguments to Event Handlers\"\n      - [Why is my function being called every time the component renders?](https://reactjs.org/docs/faq-functions.html#why-is-my-function-being-called-every-time-the-component-renders)\n      - [How do I pass a parameter to an event handler or callback?](https://reactjs.org/docs/faq-functions.html#how-do-i-pass-a-parameter-to-an-event-handler-or-callback)\n    - [Composition vs Inheritance](https://reactjs.org/docs/composition-vs-inheritance.html)\n    - [Design Principles](https://reactjs.org/docs/design-principles.html)\n    - [Virtual DOM and Internals](https://reactjs.org/docs/faq-internals.html)\n      - [Optimizing Performance](https://reactjs.org/docs/optimizing-performance.html)\n      - [Reconciliation](https://reactjs.org/docs/reconciliation.html)\n  - [React Lifecycle Methods Diagram](https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/)\n  - [freeCodeCamp: This is why we need to bind event handlers in Class Components in React](https://www.freecodecamp.org/news/this-is-why-we-need-to-bind-event-handlers-in-class-components-in-react-f7ea1a6f93eb/)\n  - [Overreacted: Why Do We Write super(props)?](https://overreacted.io/why-do-we-write-super-props/)\n  - **Interested in learning _React Hooks_? Check out the following resources...**\n    - [Fun Fun Function: Trying React Hooks for the first time with Dan Abramov](https://youtu.be/G-aO5hzo1aw)\n    - [Introducing Hooks](https://reactjs.org/docs/hooks-intro.html)\n    - [Wattenberger: Thinking in React Hooks](https://wattenberger.com/blog/react-hooks)\n    - [Daily JS: Comparison of state management solutions for React](https://medium.com/dailyjs/comparison-of-state-management-solutions-for-react-2161a0b4af7b#4ce5)\n\n\u003c/details\u003e\n\n\n#### Day 5: Juke\n\n- Pre-Work: None!\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to Juke | [📺][intro-juke-lec] | [🖼️][intro-juke-slides] | - | - | - |\n| Morning Review | [📺][am-rev-3-5] | [🎟][am-rev-3-5-ticket] |  | [👾 Juke][juke-sol]\u003cbr\u003e[👾 exit ticket][am-rev-3-5-sol] | [📺][juke-review] |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][intro-juke-lec] )\n[intro-juke-lec]: https://youtu.be/lEXMW4LGFJU\n[intro-juke-slides]: https://docs.google.com/presentation/d/1kg2IfIk1GaGzqXxXCA_GrZehDsXutF0gpAZqCvzt3Mo/edit?usp=sharing\n[juke-sol]: 01-junior-phase/15-juke/PairProject.Juke.Solution-master\n[juke-review]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmlDnS91P6zf3LrIu-ZPs2pG\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-3-5] )\n[am-rev-3-5]: https://youtu.be/oQHCgzpl-5I\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-3-5-ticket] )\n[am-rev-3-5-ticket]: https://forms.gle/WWb31AMgnPGwsSev5\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-3-5-demo] )\n[am-rev-3-5-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-3-5-sol] )\n[am-rev-3-5-sol]: 01-junior-phase/exit-ticket-solutions/15-fullstack-data-flow.md\n\n- **You should be able to:**\n  - Describe how data flows between the client and server in a fullstack application\n  - Organize a reasonable file structure for a fullstack application\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [📺 React Behind the Scenes](https://youtu.be/P6JmkT27awk)\n  - [👾 React Behind the Scenes Code](01-junior-phase/react-behind-the-scenes)\n  - [Can you `console.log` in JSX?](https://medium.com/javascript-in-plain-english/can-you-console-log-in-jsx-732f2ad46fe1)\n  - [Intro to Debugging React Applications](https://medium.com/@baphemot/intro-to-debugging-reactjs-applications-67cf7a50b3dd)\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n\n___\n\n### **Week 4: Redux, React Router, Forms**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Redux\n\n- Pre-Work:\n  - [Redux: Core Concepts][redux-core-concepts]\n  - [Redux: Three Principles][redux-three-principles]\n  - [egghead.io: Getting Started with Redux][egghead-redux]\n  - [gitconnected: An Unforgettable Way to Learn Redux - The Visual Guide][unforgettable-redux]\n\n[redux-core-concepts]: https://redux.js.org/introduction/core-concepts\n[redux-three-principles]: https://redux.js.org/introduction/three-principles\n[egghead-redux]: https://egghead.io/lessons/react-redux-the-single-immutable-state-tree\n[unforgettable-redux]: https://levelup.gitconnected.com/an-unforgettable-way-to-learn-redux-f36afd38c966\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Intro to Redux (Redux Bank) | [📺][intro-redux-lec] | [🖼️][intro-redux-slides] | - | [👾][redux-bank-sol] | - |\n| Action Types and Action Creators | [📺][action-types-creators-lec] | - | [🧑‍💻][action-types-creators-demo] | - | - |\n| Pixelate-Redux | - | - | - | [👾][pixelate-redux-sol] | - |\n| React-Redux `connect` | [📺][connect-lec] | [🖼️][connect-slides] | [🧑‍💻][connect-demo] | - | - |\n| Morning Review | [📺][am-rev-4-1] | [🎟][am-rev-4-1-ticket] | - | [👾][am-rev-4-1-sol] | - |\n\n\n[//]: # ( Paste in table above \u003e\u003e [📺][intro-redux-lec] )\n[intro-redux-lec]: https://youtu.be/UZFd8SyoUgI\n[intro-redux-slides]: https://docs.google.com/presentation/d/1GRN3chkUUxoWm94DgPy_T6MtvDRhOGYMnA8Djdo3rmA/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][intro-redux-demo] )\n[intro-redux-demo]: ###\n[//]: # ( Paste in table above \u003e\u003e [👾][redux-bank-sol] )\n[redux-bank-sol]: 01-junior-phase/16-redux/Lab.ReduxBank-solution\n\n[//]: # ( Paste in table above \u003e\u003e [📺][action-types-creators-lec] )\n[action-types-creators-lec]: https://youtu.be/Hd6ghiT3l_Q\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][action-types-creators-demo] )\n[action-types-creators-demo]: 01-junior-phase/16-redux/redux-modularization-demo\n\n[//]: # ( Paste in table above \u003e\u003e [👾][pixelate-redux-sol] )\n[pixelate-redux-sol]: 01-junior-phase/16-redux/PairExercise.Pixelate-Redux.Solution-main\n\n[//]: # ( Paste in table above \u003e\u003e [📺][connect-lec] )\n[connect-lec]: https://youtu.be/MTaMo2SFWUk\n[connect-slides]: https://docs.google.com/presentation/d/16wYjdImk0qyF3PCZYb2hm8ynLaRfkeWx9i-SlLmpnLs/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][connect-demo] )\n[connect-demo]: 01-junior-phase/16-redux/ReactReduxConnect-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][connect-sol] )\n[connect-sol]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-4-1] )\n[am-rev-4-1]: https://youtu.be/-GLwaDKm3AQ\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-4-1-ticket] )\n[am-rev-4-1-ticket]: https://forms.gle/yzXxBG2u5oJFzvsp9\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-4-1-demo] )\n[am-rev-4-1-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-4-1-sol] )\n[am-rev-4-1-sol]: 01-junior-phase/exit-ticket-solutions/16-redux.md\n\n- **You should be able to:**\n  - Create a Redux store (with a proper reducer)\n  - Write action types and creators corresponding to your store\n  - Subscribe to store changes\n  - Dispatch state-changing actions to the store\n\n\n#### Day 2: React-Redux, Thunks, `combineReducers`\n\n- Pre-Work:\n  - [React-redux \"connect\" explained][connect-explained]\n  - [Thunks in Redux: The Basics][thunks-the-basics]\n\n[connect-explained]: https://www.sohamkamani.com/blog/2017/03/31/react-redux-connect-explained/\n[thunks-the-basics]: https://medium.com/fullstack-academy/thunks-in-redux-the-basics-85e538a3fe60\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| React-Redux `connect` review | [📺][connect-review-lec] | - | [🧑‍💻][connect-review-demo] | [👾][connect-sol] | - |\n| Redux Groceries | - | - | - | [👾][redux-groceries-sol] | - |\n| Redux Thunks | [📺][thunks-lec] | - | [🧑‍💻][thunks-demo] | [👾][thunks-sol] | - |\n| Redux `combineReducers` | [📺][combinereducers-lec] | - | [🧑‍💻][combineReducers-demo] | [👾][combinereducers-sol] | - |\n| Morning Review | [📺][am-rev-4-2] | [🎟][am-rev-4-2-ticket] | [🧑‍💻][am-rev-4-2-demo] | [👾][am-rev-4-2-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][connect-review-lec] )\n[connect-review-lec]: https://youtu.be/XEnxApHk9DQ\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][connect-review-demo] )\n[connect-review-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/connect/app\n[//]: # ( Paste in table above \u003e\u003e [👾][connect-sol] )\n[connect-sol]: 01-junior-phase/17-connect/Lab.ReactAndRedux-solution-connect-lab\n\n[//]: # ( Paste in table above \u003e\u003e [👾][redux-groceries-sol] )\n[redux-groceries-sol]: 01-junior-phase/17-connect/PairExercise.ReduxGroceries-Solution\n\n[//]: # ( Paste in table above \u003e\u003e [📺][thunks-lec] )\n[thunks-lec]: https://youtu.be/oA_hKNNetjE\n[thunks-slides]: https://docs.google.com/presentation/d/1fnISsDpLf-uG5vhGMwTzERSv0BHxg_fysz-dMsIhhWo/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][thunks-demo] )\n[thunks-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/connect/app\n[//]: # ( Paste in table above \u003e\u003e [👾][thunks-sol] )\n[thunks-sol]: 01-junior-phase/17-connect/Lab.Thunk-solution\n\n[//]: # ( Paste in table above \u003e\u003e [📺][combinereducers-lec] )\n[combinereducers-lec]: https://youtu.be/y5DG2WGKbrc\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][combineReducers-demo] )\n[combineReducers-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/connect/app\n[//]: # ( Paste in table above \u003e\u003e [👾][combinereducers-sol] )\n[combinereducers-sol]: 01-junior-phase/17-connect/Lab.CombineReducers-solution\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-4-2] )\n[am-rev-4-2]: https://youtu.be/-mISnbxIMt0\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-4-2-ticket] )\n[am-rev-4-2-ticket]: https://forms.gle/MykudAKGdpmX9pxFA\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-4-2-demo] )\n[am-rev-4-2-demo]: https://excalidraw.com/#json=6150202817773568,vgPZ3umE9ySYzgFS5XCuCg\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-4-2-sol] )\n[am-rev-4-2-sol]: 01-junior-phase/exit-ticket-solutions/17-thunks-combine-reducers-connect.md\n\n- **You should be able to:**\n  - `connect` a React component to the Redux store, mapping necessary state/dispatch to props\n  - Create a Redux store (with a proper reducer and any necessary middleware)\n  - Use thunks to perform AJAX requests with a React/Redux application\n  - Use `combineReducers` to split your reducer function into separate functions, each managing independent slices of your store's state\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [Redux Essentials, Part 5: Async Logic and Data Fetching](https://redux.js.org/tutorials/essentials/part-5-async-logic)\n    - [Loading State for Requests](https://redux.js.org/tutorials/essentials/part-5-async-logic#loading-state-for-requests)\n  - [egghead.io's Redux: Displaying Loading Indicators](https://egghead.io/lessons/javascript-redux-displaying-loading-indicators) – Taught by Dan Abramov!\n\n\u003c/details\u003e\n\n\n#### Day 3: React Router, Readium\n\n- Pre-Work:\n  - [A Simple React Router v4 Tutorial][react-router-tutorial]\n  - [React Router: Quick Start][react-router-quick-start]\n\n[react-router-tutorial]: https://blog.pshrmn.com/simple-react-router-v4-tutorial/\n[react-router-quick-start]: https://reacttraining.com/react-router/web/guides/quick-start\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| React Router 101 | [📺][router-101-lec] | [🖼️][router-101-slides] | - | [👾][router-lab-sol] | - |\n| React Router 201 | [📺][router-201-lec] | [🖼️][router-201-slides] | [🧑‍💻][router-demo]  | - | - |\n| Readium | - | - | - | [👾][readium-sol] | - |\n| Morning Review | - | [🎟][am-rev-4-3-ticket] | - | [👾][am-rev-4-3-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][router-101-lec] )\n[router-101-lec]: https://youtu.be/XMpkswl0wwo\n[router-101-slides]: https://docs.google.com/presentation/d/1lfxgExnD_gjI97Dalwk_Gskefk49AFMm3YL4g-hsljc/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [👾][router-lab-sol] )\n[router-lab-sol]: 01-junior-phase/18-react-router/Lab.ReactRouter.Solution-master\n\n[//]: # ( Paste in table above \u003e\u003e [📺][router-201-lec] )\n[router-201-lec]: https://youtu.be/B1H3bS4_eAQ\n[router-201-slides]: https://docs.google.com/presentation/d/18aYozkFFmBQ1BNQCznw2T6tkF8O9dONFPPtrRnxSf28/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][router-demo] )\n[router-demo]: 01-junior-phase/18-react-router/router-nalgene-demo-start\n\n[//]: # ( Paste in table above \u003e\u003e [👾][readium-sol] )\n[readium-sol]: 01-junior-phase/18-react-router/PairExercise.Readium-with-Redux.Solution-master\n[//]: # ( Paste in table above \u003e\u003e [📺][readium-rev] )\n[readium-rev]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-4-3] )\n[am-rev-4-3]: https://youtu.be/k0zh-Bm9FNY\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-4-3-ticket] )\n[am-rev-4-3-ticket]: https://forms.gle/cdhnhkZyVUD94Cco8\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-4-3-demo] )\n[am-rev-4-3-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-4-3-sol] )\n[am-rev-4-3-sol]: 01-junior-phase/exit-ticket-solutions/18-react-router.md\n\n- **You should be able to:**\n  - Use the URL bar to manage state and control navigation within a SPA using the `react-router-dom` library\n  - Set up `HashRouter`/`BrowserRouter` in a parents component to handle routing\n  - Swap views using `Route` components\n  - Navigate to specific routes using `Link` components\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [MDN: id](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)\n  - [MDN: Document fragment identifier](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web#Fragment)\n  - [MDN: History.back()](https://developer.mozilla.org/en-US/docs/Web/API/History/back)\n  - [MDN: History.forward()](https://developer.mozilla.org/en-US/docs/Web/API/History/forward)\n  - [MDN: Window.location](https://developer.mozilla.org/en-US/docs/Web/API/Window/location)\n  - [React Router documentation](https://reacttraining.com/react-router/web/guides/quick-start)\n\n\u003c/details\u003e\n\n\n#### Day 4: React Forms\n\n- Pre-Work:\n  - [React: Forms][react-forms-docs]\n\n[react-forms-docs]: https://reactjs.org/docs/forms.html\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| React Forms 101 + 201 | [📺][forms-lec] | [🖼️][forms-slides] | [🧑‍💻][forms-demo] | [👾][forms-lab-sol] | - |\n| Todo List | - | - | - | [👾][todo-list-sol] | - |\n| Morning Review | [📺][am-rev-4-4] | [🎟][am-rev-4-4-ticket] | - | [👾][am-rev-4-4-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][forms-lec] )\n[forms-lec]: https://youtu.be/IsgaHyrGJiw\n[forms-slides]: https://docs.google.com/presentation/d/1rMPRpf5jAaznQlqagvHfM74l4CWBWods2IfmmMlcDKM/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][forms-demo] )\n[forms-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/react-forms\n\n[//]: # ( Paste in table above \u003e\u003e [👾][forms-lab-sol] )\n[forms-lab-sol]: 01-junior-phase/19-react-forms/Solution.ReactForms-main\n\n[//]: # ( Paste in table above \u003e\u003e [👾][todo-list-sol] )\n[todo-list-sol]: 01-junior-phase/19-react-forms/PairExercise.TodoList.V2.Solution-main\n[//]: # ( Paste in table above \u003e\u003e [📺][todo-list-rev] )\n[todo-list-rev]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-4-4] )\n[am-rev-4-4]: https://youtu.be/F-o-qYE7a2s\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-4-4-ticket] )\n[am-rev-4-4-ticket]: https://forms.gle/VFviarmVVCtXGMjM9\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-4-4-demo] )\n[am-rev-4-4-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-4-4-sol] )\n[am-rev-4-4-sol]: 01-junior-phase/exit-ticket-solutions/19-react-forms.md\n\n- **You should be able to:**\n  - Explain the difference between a controlled and uncontrolled form\n  - Build a form using React\n  - Explain the difference between local state and application state\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - **React Forms**\n    - [React-Champ: Part I: Controlled vs Uncontrolled Components][controlled-uncontrolled-1]\n    - [React-Champ: Part II: When and how to use uncontrolled components][controlled-uncontrolled-2]\n    - [Building forms using React - everything you need to know][codementor-react-forms]\n  - **MDN Documentation: HTML Forms**\n    - [Your first form](https://developer.mozilla.org/en-US/docs/Learn/Forms/Your_first_form)\n    - [`\u003cform\u003e`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form)\n    - [`\u003cinput\u003e`: The Input (Form Input) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)\n    - [`\u003cbutton\u003e`: The Button element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button)\n    - [HTMLFormElement: submit event](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit_event)\n\n  [controlled-uncontrolled-1]: https://medium.com/@adarshsingh1407/react-champ-part-i-controlled-vs-uncontrolled-components-9af452277d79\n  [controlled-uncontrolled-2]: https://medium.com/@adarshsingh1407/react-champ-part-ii-when-to-use-controlled-uncontrolled-components-870f42cf398\n  [codementor-react-forms]: https://www.codementor.io/blizzerand/building-forms-using-react-everything-you-need-to-know-iz3eyoq4y\n\n\u003c/details\u003e\n\n\n#### Day 5: Sockets\n\n- Pre-Work:\n  - [Pusher: What are WebSockets?][pusher-sockets]\n  - [treehouse: An Introduction to WebSockets][treehouse-sockets]\n\n[pusher-sockets]: https://pusher.com/websockets\n[treehouse-sockets]: https://blog.teamtreehouse.com/an-introduction-to-websockets\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| TCP, WebSockets \u0026 Socket.IO | [📺][sockets-lec] | [🖼️][sockets-slides] | [🧑‍💻][sockets-demo] | [👾][sockets-sol] | - |\n| StackChat | - | - | - | [👾][stackchat-sol] | [📺][stackchat-rev] |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][sockets-lec] )\n[sockets-lec]: https://youtu.be/4hoTF0YtzkI\n[sockets-slides]: https://docs.google.com/presentation/d/1-IVJ6SVkx6Ds2pSJogB44bEZp1Z8OTtrMFiaQD7er_w/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][sockets-demo] )\n[sockets-demo]: 01-junior-phase/20-sockets/bookshelf-demo\n[//]: # ( Paste in table above \u003e\u003e [👾][sockets-sol] )\n[sockets-sol]: 01-junior-phase/20-sockets/Lab.Sockets-solution\n\n[//]: # ( Paste in table above \u003e\u003e [👾][stackchat-sol] )\n[stackchat-sol]: 01-junior-phase/20-sockets/PairProject.StackChat-solution\n[//]: # ( Paste in table above \u003e\u003e [📺][stackchat-rev] )\n[stackchat-rev]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmk_yzrwLejLCOBaC5kkRsIm\n\n[//]: # ( No Exit Ticket or Morning Review for Sockets )\n\n- **You should be able to:**\n  - Define the networking layers IP, TCP, and HTTP\n  - Describe how TCP establishes a connection with a server\n  - Define websockets and event emitters\n  - Implement websockets using socket.io\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [Socket.IO cheatsheet](https://socket.io/docs/emit-cheatsheet/)\n  - [Socket.IO documentation](https://socket.io/docs/)\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n___\n\n\n\n### Week 6: Node / Databases Review\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Node\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Node 1 | [📺][node-1-lec] | - | [🧑‍💻][node-1-demo] |\n| Node 2 | [📺][node-2-lec] | - | -  |\n| Morning Review | [📺][am-replay-rev-1-1] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][node-1-lec] )\n[node-1-lec]: https://youtu.be/Ak9gKtxNVns\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][node-1-demo] )\n[node-1-demo]: 01-junior-phase/21-node-replay\n\n[//]: # ( Paste in table above \u003e\u003e [📺][node-2-lec] )\n[node-2-lec]: https://youtu.be/K6XXGrOJWOg\n\n[//]: # ( Paste in table above \u003e\u003e [📺][node-rev] )\n[node-rev]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-1-1] )\n[am-replay-rev-1-1]: https://youtu.be/BmnTtLdhJEQ\n\n##### Prior Content:\n\n[Intro to Node](#day-5-intro-to-node)\n\n#### Day 2: Express and Async / Await\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Express 1 | [📺][replay-express-1-lec] | - | [🧑‍💻][replay-express-1-demo] |\n| Express 2 | [📺][replay-express-2-lec] | - | [🧑‍💻][replay-express-2-demo]  |\n| Async / Await | [📺][replay-async_await-lec] | - | [🧑‍💻][replay-async_await-demo] |\n| Morning Review | [📺][replay-am-rev-1-2] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-express-1-lec] )\n[replay-express-1-lec]: https://youtu.be/2qGYP0LmV0g\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-express-1-demo] )\n[replay-express-1-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/express-examples\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-express-2-lec] )\n[replay-express-2-lec]: https://github.com/orlandocaraballo/class-examples/tree/master/express-examples\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-express-2-demo] )\n[replay-express-2-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/express-examples\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-async_await-lec] )\n[replay-async_await-lec]: https://youtu.be/TDiZ2OIn8hk\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-async_await-demo] )\n[replay-async_await-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/promises\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-am-replay-rev-1-2] )\n[replay-am-rev-1-2]: https://youtu.be/yYCcC09Ywuw\n\n##### Prior Content:\n\n[Intro to Express + Async / Await](#day-1-express-handling-asynchronous-operations-asyncawait)\n\n#### Day 3: Databases\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| SQL | [📺][replay-sql-lec] | - | [🧑‍💻][replay-sql-demo] |\n| Schema Design | [📺][replay-schema-lec] | - | [🧑‍💻][replay-schema-demo] |\n| Morning Review | [📺][replay-am-rev-1-3] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-sql-lec] )\n[replay-sql-lec]: https://youtu.be/ipFZQvAWXMU\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-sql-demo] )\n[replay-sql-demo]: 01-junior-phase/23-dbs-replay/sql-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-schema-lec] )\n[replay-schema-lec]: https://youtu.be/vB8h3lItcgg\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-schema-demo] )\n[replay-schema-demo]: https://excalidraw.com/#json=5184912139223040,BSWBon7ywmyuYDrcl1ohuw\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-am-rev-1-3] )\n[replay-am-rev-1-3]: https://youtu.be/c0K_ceGhQmQ\n\n##### Prior Content:\n\n[Intro to Databases](#day-2-databases-sql-schema-design)\n\n#### Day 4: `pg`\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| `pg` | [📺][replay-pg-lec] | - | [🧑‍💻][replay-pg-demo] |\n| Express + `pg` | [📺][replay-express-pg-lec] | - | [🧑‍💻][replay-express-pg-demo] |\n| Morning Review | [📺][replay-am-rev-1-4] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-pg-lec] )\n[replay-pg-lec]: https://youtu.be/DR-cq3Ux-fM\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-pg-demo] )\n[replay-pg-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/pg\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-express-pg-lec] )\n[replay-express-pg-lec]: https://youtu.be/fqXTGfJR6fU\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-express-pg-demo] )\n[replay-express-pg-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/express-router\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-am-rev-1-4] )\n[replay-am-rev-1-4]: https://youtu.be/MkKVffmxgsg\n\n##### Prior Content:\n\n[Intro to pg](#day-3-node-postgres-pg-express-router)\n\n#### Day 5: `Sequelize`\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| `Sequelize` | [📺][replay-orm-lec] | - | [🧑‍💻][replay-orm-demo] |\n| Morning Review | [📺][replay-am-rev-1-5] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-orm-lec] )\n[replay-orm-lec]: https://youtu.be/97QEzSuaW18https://youtu.be/MkKVffmxgsg\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][replay-orm-demo] )\n[replay-orm-demo]: 01-junior-phase/25-orms-replay\n\n[//]: # ( Paste in table above \u003e\u003e [📺][replay-am-rev-1-5] )\n[replay-am-rev-1-5]: https://youtu.be/jwCRBKyeNPc\n\n##### Prior Content:\n\n[Intro to ORMs](#day-4-orm-sequelize-wikistack-1)\n\n\u003c/details\u003e\n\n\n___\n\n### Week 7: From Sequelize to React Review\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Express + Sequelize\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Express / Sequelize | [📺][express-sequelize-lec] | - | [🧑‍💻][express-sequelize-demo] |\n| Morning Review | [📺][am-replay-rev-2-1] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][express-sequelize-lec] )\n[express-sequelize-lec]: https://youtu.be/WGgGiBXBdlw\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][express-sequelize-demo] )\n[express-sequelize-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/express-sequelize\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-2-1] )\n[am-replay-rev-2-1]: https://youtu.be/BscQpsnYwpc\n\n##### Prior Content:\n\n[WikiStack 2](#day-5-wikistack-2)\n\n#### Day 2: Intro to the Client Side\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Front-end Modules | [📺][front-end-modules-lec-replay] | - | [🧑‍💻][front-end-modules-demo-replay] Front-end modules\u003cbr\u003e [🧑‍💻][webpack-demo-replay] Webpack \u003cbr\u003e[🧑‍💻][front-end-modules-diagram] |\n| Intro to SPA / AJAX | [📺][spa-ajax-lec-replay] | - | [🧑‍💻][spa-ajax-demo-replay] |\n| Morning Review | [📺][am-replay-rev-2-2] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][front-end-modules-lec-replay] )\n[front-end-modules-lec-replay]: https://youtu.be/2PjXwU98MYE\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][front-end-modules-demo-replay] )\n[front-end-modules-demo-replay]: 01-junior-phase/27-spa-replay/modules-demo\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][front-end-modules-diagram] )\n[front-end-modules-diagram]:\nhttps://excalidraw.com/#json=5745940631650304,RdU4Ym5uPCM3tvrFKnY7oA\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][webpack-demo-replay] )\n[webpack-demo-replay]: 01-junior-phase/27-spa-replay/webpack-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][spa-ajax-lec-replay] )\n[spa-ajax-lec-replay]: https://youtu.be/8SFGyvaiVZ8\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][spa-ajax-demo-replay] )\n[spa-ajax-demo-replay]: 01-junior-phase/27-spa-replay/ajax-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-2-2] )\n[am-replay-rev-2-2]: https://youtu.be/o16gHiI1Jdk\n\n##### Prior Content:\n\n[Single-Page Applications](#day-1-single-page-applications)\n\n#### Day 3: React\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Intro to React | [📺][react-replay-lec] | - | [🧑‍💻][react-demo-replay] |\n| State and Props | [📺][state-props-replay-lec] | - | [🧑‍💻][state-props-demo-replay] |\n| Morning Review | [📺][am-replay-rev-2-3] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][react-replay-lec] )\n[react-replay-lec]: https://youtu.be/MLa03jjmerE\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][react-demo-replay] )\n[react-demo-replay]: 01-junior-phase/28-react-replay/magic-8-ball-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][state-props-replay-lec] )\n[state-props-replay-lec]: https://youtu.be/tY48QY9GjC4\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][state-props-demo-replay] )\n[state-props-demo-replay]: 01-junior-phase/28-react-replay/pizza-demo\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-2-3] )\n[am-replay-rev-2-3]: https://youtu.be/fwf6iQCB9eM\n\n##### Prior Content:\n\n[Intro to React](#day-3-intro-to-react)\n\n#### Day 4: React Component Lifecycle\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Component Lifecycle | [📺][component-lifecycle-lec] | - | [🧑‍💻][component-lifecycle-demo] |\n| Morning Review | [📺][am-replay-rev-2-4] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][component-lifecycle-lec] )\n[component-lifecycle-lec]: https://youtu.be/dFUjZ5Cdrl8\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][component-lifecycle-demo] )\n[component-lifecycle-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/react-lifecycle\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-2-4] )\n[am-replay-rev-2-4]: https://youtu.be/aHgRSkOCXOc\n\n##### Prior Content:\n\n[React Component Lifecycle](#day-4-react-component-lifecycle)\n\n#### Day 5: Fullstack Data Flow / Juke\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Fullstack Data Flow | [📺][fullstack-data-flow-lec] | - | [🧑‍💻][fullstack-data-flow-demo] |\n| Morning Review | [📺][am-replay-rev-2-5] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][fullstack-data-flow-lec] )\n[fullstack-data-flow-lec]: https://youtu.be/ayV7flphI1I\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][fullstack-data-flow-demo] )\n[fullstack-data-flow-demo]:https://excalidraw.com/#json=5070617204228096,5qj4vXbJzxJ84FB8KVdxtg\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-2-5] )\n[am-replay-rev-2-5]: https://youtu.be/ZpXBPo0wO7g\n\n##### Prior Content:\n\n[Juke](#day-5-react-forms)\n\n\u003c/details\u003e\n\n\n___\n\n\n### Week 8: From Redux to React Forms Review\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: Redux\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| Functional Programming | [📺][fp-replay-lec] | - | [🧑‍💻][fp-replay-demo] |\n| Redux | [📺][redux-replay-lec] | - | [🧑‍💻][redux-replay-demo] |\n| React-Redux `connect` | [📺][connect-lec] | - |[🧑‍💻][connect-demo] |\n| Morning Review | [📺][am-replay-rev-3-1] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][fp-replay-lec] )\n[fp-replay-lec]: https://youtu.be/jw1yGHa5t3k\n\n[//]: # ( Paste in table above \u003e\u003e [📺][redux-replay-lec] )\n[redux-replay-lec]: https://youtu.be/aFtlMW3qXxA\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][fp-replay-demo] )\n[fp-replay-demo]: https://github.com/orlandocaraballo/class-examples/blob/master/redux/simple\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][redux-replay-demo] )\n[redux-replay-demo]: https://github.com/orlandocaraballo/class-examples/blob/master/redux/simple/main.js\n\n[//]: # ( Paste in table above \u003e\u003e [📺][connect-lec] )\n[connect-lec]: https://youtu.be/kCAaSAUDk2M\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][connect-demo] )\n[connect-demo]: https://github.com/orlandocaraballo/class-examples/tree/master/connect/app\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-3-1] )\n[am-replay-rev-3-1]: https://youtu.be/-uljUfBcj_I\n\n##### Prior Content:\n\n[Redux](#day-1-redux)\n\n#### Day 2: React-Redux, Thunks, `combineReducers`\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| React-Redux `connect` review | [📺][react-redux-lec-replay] | - | [🧑‍💻][react-redux-demo-replay] |\n| Redux Thunks  | [📺][thunks-lec-replay] | - | [🧑‍💻][thunks-demo-replay] |\n| Redux `combineReducers`  | [📺][combine-reducers-lec-replay] | - | [🧑‍💻][combine-reducers-demo-replay] |\n| Morning Review | [📺][am-replay-rev-3-2] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][react-redux-lec-replay] )\n[react-redux-lec-replay]: https://youtu.be/-uljUfBcj_I\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][react-redux-demo-replay] )\n[react-redux-demo-replay]: https://excalidraw.com/#json=uG3f21z1j2kfA9lEAYVc2,zAEuUq97NItmgFzM37wg6w\n\n[//]: # ( Paste in table above \u003e\u003e [📺][thunks-lec-replay] )\n[thunks-lec-replay]: https://youtu.be/E39xvmR0BO8\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][thunks-demo-replay] )\n[thunks-demo-replay]: 01-junior-phase/30-redux-thunks-replay/thunk-demo-end\n\n[//]: # ( Paste in table above \u003e\u003e [📺][combine-reducers-lec-replay] )\n[combine-reducers-lec-replay]: https://youtu.be/VXmXFmh9BnQ\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][combine-reducers-demo-replay] )\n[combine-reducers-demo-replay]: 01-junior-phase/30-redux-thunks-replay/combine-reducers-end\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-3-2] )\n[am-replay-rev-3-2]: https://youtu.be/vJrJdhPv4rM\n\n##### Prior Content:\n\n[React-Redux Connect](#day-2-react-redux)\n\n#### Day 3: React Router, Readium\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| React Router 101 | [📺][router-101-replay-lec] | - | [🧑‍💻][router-101-demo-replay] |\n| React Router 201 | [📺][router-201-replay-lec] | - | [🧑‍💻][router-201-demo-replay] |\n| Morning Review | [📺][am-replay-rev-3-3] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][router-101-replay-lec] )\n[router-101-replay-lec]: https://youtu.be/On4FSHB-Z3w\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][router-101-demo-replay] )\n[router-101-demo-replay]: https://github.com/orlandocaraballo/class-examples/tree/master/react-router-webpack\n\n[//]: # ( Paste in table above \u003e\u003e [📺][router-201-replay-lec] )\n[router-201-replay-lec]: https://youtu.be/cgOVXccgYYY\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][router-201-demo-replay] )\n[router-201-demo-replay]: https://github.com/orlandocaraballo/class-examples/tree/master/react-router-webpack\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-3-3] )\n[am-replay-rev-3-3]: https://youtu.be/Ck4r-zTI5WM\n\n##### Prior Content:\n\n[React Router](#day-3-react-router)\n\n#### Day 4: Veterans Day\n\n#### Day 5: React Forms\n\n| Topic | Lecture | Slides | Demo |\n| ----- | ------- | ------ | ---- |\n| React Forms 101 + 201 | [📺][forms-replay-lec] | - | - |\n| Morning Review | [📺][am-replay-rev-2-5] | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][forms-replay-lec] )\n[forms-replay-lec]: https://youtu.be/RFsU7vX5PT8\n\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][forms-replay-demo] )\n[forms-replay-demo]:/01-junior-phase/32-react-forms\n[//]: # ( Paste in table above \u003e\u003e [📺][am-replay-rev-2-5] )\n[am-replay-rev-3-5]: https://youtu.be/pVsM1YC0ZbU\n\n##### Prior Content:\n\n[React Forms](#day-4-react-forms)\n\n\u003c/details\u003e\n\n\n___\n\n### **Week 9: Course Review, Junior Phase Final Project (JPFP), Senior Checkpoint**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Goodie Bag | - | - | - | - | - |\n| Draw the Stack | - | - | - | - | - |\n| Intro to JPFP | - | - | - | - | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][goodie-bag-lec] )\n[goodie-bag-lec]: #paste-YouTube-link-here\n[//]: # ( Paste in table above \u003e\u003e [🔗][goodie-bag] \u003e\u003e ALREADY LINKED AT TOP IN SUPPLEMENTAL STUDY MATERIALS )\n[//]: # ( Paste in table above \u003e\u003e [👾][goodie-bag-sol] )\n\n[//]: # ( Paste in table above \u003e\u003e [📺][draw-the-stack-lec] )\n[draw-the-stack-lec]: #paste-YouTube-link-here\n[//]: # ( Paste in table above \u003e\u003e [🔗][draw-the-stack] \u003e\u003e ALREADY LINKED AT TOP IN SUPPLEMENTAL STUDY MATERIALS )\n[//]: # ( Paste in table above \u003e\u003e [👾][draw-the-stack-sol] )\n[draw-the-stack-sol]: ###link-to-img-of-end-point\n\n[//]: # ( Paste in table above \u003e\u003e [📺][jpfp-lec] )\n[jpfp-lec]: #paste-YouTube-link-here\n[//]: # ( Paste in table above, already linked at top in Checkpoints section \u003e\u003e [🔗][jpfp] )\n\n\u003c/details\u003e\n\n___\n\n### **Week 10: Async Week Workshops and Materials**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\nBelow are the **mandatory** topics to complete ***before*** Senior Phase starts!\n\n| Topic | Link | Solution | Review |\n| ----- | ------------ | -------- | ------ |\n| ⭐️ Boilermaker | [🔗][boilermaker-workshop] | [👾][boilermaker-sol] | [📺- Security][security-playlist] [📺- Testing][Intro to testing playlist]  |\n| 🛫 Deployment | [📺][heroku-video] | - | - |\n| 🔍 Project (AWP) | [🔗][awp-overview] | - | - |\n| AGILE Development| [📺][agile-lec] | - | - |\n| Giving Feedback| [📺][feedback-lec] | - | - |\n| 🚨 Security - Optional! | See below! | - | - |\n\n[boilermaker-workshop]: https://learn.fullstackacademy.com/workshop/589f3d5b12f93c00045c27fd/landing\n[boilermaker-sol]: https://github.com/FullstackAcademy/fs-app-template\n[boilermaker-rev]: https://www.youtube.com/playlist?list=PLx0iOsdUOUmn7D5XL4mRUftn8hvAJGs8H\n\n[deployment-workshop]: https://learn.fullstackacademy.com/workshop/5bad3ec1ecb5e7000452b2d6/landing\n[deployment-rev]: https://youtu.be/JuZEOv2X2o0\n\n[awp-overview]: 02-async-week/AWP.md\n\n[agile-lec]: https://www.youtube.com/watch?v=Z82ns5d8uFI\u0026feature=emb_logo\n[feedback-lec]: https://www.youtube.com/watch?v=RWmkqX_3fX0\u0026feature=emb_logo\n\n[Intro to testing playlist]: https://www.youtube.com/playlist?list=PL_yPiP-ZZLhIA7zPzYMTSQOnmQevX2Ivt\n[security-playlist]: https://www.youtube.com/playlist?list=PL_yPiP-ZZLhJfnvYtJGkzJObGHKdINpQF\n[heroku-video]: https://www.youtube.com/watch?v=Iz23rO7LvbE\n\n\n**A few notes:**\n- It's _best_ if you do Boilermaker ***before*** doing Deployment. Each will build upon concepts in the the previous topic.\n- We've also included video links to talks on Agile Software Development, and Giving Feedback, two invaluable soft skills to aid you on your Senior Phase Journey! The videos are optional but encouraged!\n\n**\u003cdetails\u003e\u003csummary\u003eSecurity resources\u003c/summary\u003e**\n\nFeel free to read as much as you can, but there is _a lot_ to cover so **don't worry if you cannot get through it all**.\n\n- **High Priority:**\n  - Take a look at [OWASP’s top 10][owasp-top] and for a different perspective [this article][common-vulnerabilities] for some reading about common web security vulnerabilities.\n- **Details:**\n  - Look into these vulnerabilities more in depth\n    - [Injection](https://www.owasp.org/index.php/Top_10_2013-A1-Injection)\n    - [Poor Authentication][poor-auth]\n    - [Cross-Site Scripting][xss]\n    - [Data Exposure][data-exposure]\n    - [Missing Access Control][missing-access-control]\n    - [Cross-Site Request Forgery][csrf]\n  - Check out these articles on\n    - [What HTTPS is/does][https-intro]\n    - [Public-key cryptography][public-key-crypto]\n\n[owasp-top]: https://www.owasp.org/index.php/Top_10_2013-Top_10\n[common-vulnerabilities]: https://www.toptal.com/security/10-most-common-web-security-vulnerabilities\n[poor-auth]: https://www.owasp.org/index.php/Top_10_2013-A2-Broken_Authentication_and_Session_Management\n[data-exposure]: https://www.owasp.org/index.php/Top_10_2013-A6-Sensitive_Data_Exposure\n[xss]: https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)\n[csrf]: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)\n[missing-access-control]: https://www.owasp.org/index.php/Top_10_2013-A7-Missing_Function_Level_Access_Control\n[https-intro]: http://robertheaton.com/2014/03/27/how-does-https-actually-work/\n[public-key-crypto]: https://medium.com/@vrypan/explaining-public-key-cryptography-to-non-geeks-f0994b3c2d5\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n\n___\n\n### **Week 11: Data Structures, Algorithms, Advanced Content**\n\n\u003cdetails\u003e\u003csummary\u003eClick to view\u003c/summary\u003e\n\n#### Day 1: JWT Authentication\n\n- Pre-Work:\n  - [Getting started with JSON web tokens](https://auth0.com/learn/json-web-tokens/)\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| JWT | [📺][jwt-lec] | [🖼️][jwt-slides] | - | - | - |\n| Authentication | - | - | - | [👾][authentication-sol] | - |\n| Morning Review | [📺][am-rev-6-4] | [🎟][am-rev-6-4-ticket] | - | [👾][am-rev-6-4-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][jwt-lec] )\n[jwt-lec]: https://youtu.be/t_3GjJHjZow\n[jwt-slides]: https://docs.google.com/presentation/d/10xFSLjUGROHLZM1HtMsKzWKZh04UPf-UpHCu7582tsQ/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [👾][authentication-sol] )\n[authentication-sol]: 01-junior-phase/33-authentication\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-6-4] )\n[am-rev-6-4]: https://youtu.be/Ey6oq_kKxUo\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-6-4-ticket] )\n[am-rev-6-4-ticket]: https://forms.gle/1qHWCdDjfM5msrQ68\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-6-4-demo] )\n[am-rev-6-4-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-6-4-sol] )\n[am-rev-6-4-sol]: 01-junior-phase/exit-ticket-solutions/26-authentication.md\n\n- **You should be able to:**\n  - Explain the motivation for token-based authentication\n  - Describe the various parts of a JSON web token\n  - Implement JWT authentication in a full stack application using the jsonwebtoken library\n  - Explain the motivation for encrypting passwords\n  - Use the bcrypt library to encrypt passwords before you store them in your database\n\n\n\n#### Day 2: Algorithms \u0026 Analysis, Sorting\n\n- Pre-Work:\n  - [Big-O notation in 5 minutes - The basics][big-o-basics]\n  - [Visualization of Quick sort][quick-sort-viz]\n  - [Merge Sort vs Quick Sort][merge-vs-quick]\n\n[big-o-basics]: https://youtu.be/__vX2sjlpXU\n[quick-sort-viz]: https://youtu.be/aXXWXz5rF64\n[merge-vs-quick]: https://youtu.be/es2T6KY45cA\n\n| Topic | Lecture | Slides | Demo | Solution | Review |\n| ----- | ------- | ------ | ---- | -------- | ------ |\n| Algorithms \u0026 Analysis | [📺][big-o-lec] | [🖼️][big-o-slides] | - | - | - |\n| Bubble Sort | [📺][bubble-sort-lec] | [🖼️][bubble-sort-slides] | [🧑‍💻][bubble-sort-demo] | [👾][bubble-sort-sol] | - |\n| Merge Sort | [📺][merge-sort-lec] | [🖼️][merge-sort-slides] | [🧑‍💻][merge-sort-demo] | [👾][merge-sort-sol] | - |\n| Morning Review | [📺][am-rev-6-2] | [🎟][am-rev-6-2-ticket] | - | [👾][am-rev-6-2-sol] | - |\n\n[//]: # ( Paste in table above \u003e\u003e [📺][big-o-lec] )\n[big-o-lec]: https://youtu.be/JozVsx6q-wE\n[big-o-slides]: https://docs.google.com/presentation/d/1la5IAb1s2NZZDySKmsZgLDbwh_wk9HymUH4yE6rtUNg/edit?usp=sharing\n\n[//]: # ( Paste in table above \u003e\u003e [📺][bubble-sort-lec] )\n[bubble-sort-lec]: https://youtu.be/3RIezoAakVw\n[bubble-sort-slides]: https://docs.google.com/presentation/d/1CHnYo3N-PExYnqwKVKsvBPjEimgVejMfAEJN-M4XLBM/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [👾][bubble-sort-sol] )\n[bubble-sort-sol]: 01-junior-phase/34-algos/PairExercise.BubbleSort.Solution-main\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][bubble-sort-demo] )\n[bubble-sort-demo]: https://github.com/orlandocaraballo/class-examples/blob/master/sorting/bubbleSort.js\n[//]: # ( Paste in table above \u003e\u003e [📺][bubble-sort-rev] )\n[bubble-sort-rev]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][merge-sort-lec] )\n[merge-sort-lec]: https://youtu.be/916p_snMGQ0\n[merge-sort-slides]: https://docs.google.com/presentation/d/1bzAOKas12vcGvCuh_GdhfCoW1JHouFWoGj1n8K5DjrY/edit?usp=sharing\n[//]: # ( Paste in table above \u003e\u003e [👾][merge-sort-sol] )\n[merge-sort-sol]: 01-junior-phase/34-algos/PairExercise.MergeSort.Solution-main\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][merge-sort-demo] )\n[merge-sort-demo]: https://github.com/orlandocaraballo/class-examples/blob/master/sorting/mergeSort.js\n[//]: # ( Paste in table above \u003e\u003e [📺][merge-sort-rev] )\n[merge-sort-rev]: ###\n\n[//]: # ( Paste in table above \u003e\u003e [📺][am-rev-6-2] )\n[am-rev-6-2]: https://youtu.be/dumuvKrx9Ng\n[//]: # ( Paste in table above \u003e\u003e [🎟][am-rev-6-2-ticket] )\n[am-rev-6-2-ticket]: https://forms.gle/Qm5znNbaV3ghRj4T6\n[//]: # ( Paste in table above \u003e\u003e [🧑‍💻][am-rev-6-2-demo] )\n[am-rev-6-2-demo]: #link-demo-here\n[//]: # ( Paste in table above \u003e\u003e [👾][am-rev-6-2-sol] )\n[am-rev-6-2-sol]: 01-junior-phase/exit-ticket-solutions/28-sorting-algo-analysis.md\n\n- **You should be able to:**\n  - Articulate the difference between an algorithm and a heuristic\n  - Explain Big O in terms of both time and space (when/how is it useful, what does it measure, etc)\n  - Describe how both Bubble Sort and Merge Sort operate, as well as discuss their time/space complexities\n\n**\u003cdetails\u003e\u003csummary\u003eExtra Resources:\u003c/summary\u003e**\n\n  - [Sorting Algorithms][sorting-algos]\n  - [Khan Academy Big-O vs Big-Theta][big-o-big-theta]\n  - Interview Cake:\n    - [Big O Notation](https://www.interviewcake.com/article/javascript/big-o-notation-time-and-space-complexity)\n    - [Logarithms](https://www.interviewcake.com/article/javascript/logarithms)\n  - Visualizations:\n    - [Toptal: Sorting Algorithms Animations](https://www.toptal.com/developers/sorting-algorithms)\n    - [Visualization: Bubble Sort vs. Quick Sort](https://youtu.be/aXXWXz5rF64)\n    - [Visualization: Merge Sort vs. Quick Sort](https://youtu.be/es2T6KY45cA)\n    - [VisuAlgo: Visualising data structures and algoroithms through animation](https://visualgo.net/en)\n\n[sorting-algos]: https://brilliant.org/wiki/sorting-algorithms/\n[big-o-big-theta]: https://www.khanacademy.org/computing/computer-science/algorithms/asymptotic-notation/a/asymptotic-notation\n\n\u003c/details\u003e\n\n#### Day 3: Data Structures (Stacks, Queues \u0026 Linked Lists)\n\n- Pre-Work:\n  - [Stacks and queues: the basics","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstackacademy%2F2109-wdf-ny-web-ft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullstackacademy%2F2109-wdf-ny-web-ft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstackacademy%2F2109-wdf-ny-web-ft/lists"}