# FSA Lesson Plan 2020 ## Day 05 - Intro to Node ### Daily Objectives * Understand Node as an alternative JS environment (to browsers) * Apply I/O design patterns to read and write to a filesystem in JS * Leverage NPM to install and manage project dependencies * Recall the definition of 'asynchronous programming' and demonstrate use cases * Apply the `process` modules in node ### Key Topics * Node, `npm`, the module system * Concurrency, async programming, callbacks * Bash, CLI * Interpreters and runtime environments * `fs` ### Pre-reading * [What Exactly Is Node.js](https://medium.freecodecamp.org/what-exactly-is-node-js-ae36e97449f5) ### Lessons <hr> #### 01 - Node Part 1 (Modules) #### Objectives * Students will apply the `require` and `module.exports` node modules. #### Assets | | Assets | Time | | - | ------ | ---- | | **KEYNOTE** | [node-intro.key](https://drive.google.com/drive/u/0/folders/174hf067VltJkos8adgarQL6rBu-bAMBy) | | | **LECTURE** | [Sample Lecture (Orlando)](https://www.youtube.com/watch?v=sZX3heAch-k&feature=youtu.be) | 60 min | | **LAB** </br> LMS </br> Start </br> Solution | </br> [Lab: Node Basics](https://learn.fullstackacademy.com/workshop/5a3940d8dc3d510004d72bc5/landing) </br> None </br> [Solution.NodeBasics/main](https://github.com/FullstackAcademy/Solution.NodeBasics) | 30 min | <hr> #### 02 - Node Part 2 (Asynchronicity and Callbacks) #### Objectives * Students will apply `process` to access STDIN, STDOUT, and STDERR streams in node * Students will understand the uses of `require` and `module.exports` in a node app * Students will apply callbacks to deal with asynchronicity in node. #### Assets | | Assets | Time | | - | ------ | ---- | | **KEYNOTE** | [asynchronicity-intro.key](https://drive.google.com/drive/u/0/folders/174hf067VltJkos8adgarQL6rBu-bAMBy) | | | **LECTURE** | [Sample Lecture (Orlando)](https://www.youtube.com/watch?v=fh3f6UB6mv8&feature=youtu.be) | 30 min | | **WORKSHOP** </br> LMS </br> Start </br> Solution | </br> [Pair Exercise: Node Shell](https://learn.fullstackacademy.com/workshop/5a391504cb229b00046e7c1b/landing) </br> None </br> [Solution.NodeShell/main](https://github.com/FullstackAcademy/Solution.NodeShell) | 3.5 hr | | **Captioned Lecture** | [Node (Eric)](https://www.youtube.com/watch?v=_zag2sF8814&feature=youtu.be)| 1 hr | <hr> ### Exit Ticket | Template | Solution | | -------- | -------- | | [🎟](https://docs.google.com/forms/d/1xcyqyby0tGe8KCLLsLY8AdXEGRUsTnAFIoFxzjD6-7A/edit) | [👾](exit-ticket-solutions/05-node.md) | ### Additional Resources - **Node Modules:** - [Livecode](https://github.com/FullstackAcademy/node-modules-demo/) - [Livecode Recording](https://www.youtube.com/watch?v=zvtn9rLvJDU&feature=youtu.be) - **Asynchronicity** - [Livecode](https://github.com/FullstackAcademy/node-async/) - [Livecode Recording](https://www.youtube.com/watch?v=ZtuyDv4255k&feature=youtu.be) ### Notes None.