Lesson 13: Wrap Up

  Overview

Introduction

Welcome to lesson thirteen! Congrats on making it to the end of the course! In this lesson, you will complete, publish and submit your final projects. The new content in this lesson however, is not as technical as it has been all semester long. Instead, the lesson content is of a more professional nature, intended to help you start thinking about applying what you've learned to getting an awesome job.

Topics for this lesson:

  • Resume Tips
  • Interview Prep
  • Interview Questions
Have Feedback?

  Learning Material

Resources for this lesson are accessible to you in this repository

The following learning material may be helpful but is not required. Please reference the syllabus for more details.

Here are some questions you should be prepared to answer for yourself:

  • How do I schedule a practice or mock interview with the BYUI career center?
  • What are the Wall Street Interviewing Strategies?
  • What is your market value?
  • How can you make a powerful introduction?
  • How should you dress for interviews or career fairs? What does your appearance say about you?

Here are some questions you should be prepared to answer in an interview regarding the technologies taught in this class:

  • T/F: NPM is a programming language.
  • Node.js is a runtime for Javascript, NOT a Back End language.
  • Node.js is a back end language, NOT a runtime for JavaScript.
  • Node.JS allows JavaScript to be run outside of the browser.
  • What does NPM stand for?
  • What is the command to install the nodemon package globally?
  • How do you initialize a Node.js project that creates a package.json and node_modules for you?
  • What is the method to set up a server and make it run in a certain port?
  • What Node.JS code is compiled into?
  • What are Middleware functions?
  • What is Express.js?
  • What does MVC stand for?
  • How do you make use of an express router for your requests?
  • What is the responsibility of the Model?
  • What is the responsibility of the Controller?
  • How do you make relations in a NoSQL database such as MongoDB?
  • What are the most important pieces of the structure of a MongoDB database?
  • How do you find the id of a MongoDB document?
  • What is a Cookie?
  • What is a real disadvantage of using cookies on the client-side?
  • What is a CSRF attack?
  • The 300–399 range of http response status codes are for what?
  • The 200–299 range of http response status codes are for what?
  • The 400–499 range of http response status codes are for what?
  • The 500–599 range of http response status codes are for what?
  • What is the synchronous way of handling errors?
  • What does the term “Sanitizing” refer to in Node.js?
  • Where exactly do you inject your dependencies?
  • Is Node.js recommended for heavy calculations and 3D rendering?
  • What is risk?
  • What are the tasks of risk management?
  • When identifying and classifying risks, what are the 5 main risk impact areas?
  • Why isn’t it possible to pass images/files with the file picker through the body of the request?
  • What do the skip( ) and limit( ) methods do and where do you use them?
  • Which is the HTTP verb that should be used with client-side JavaScript in order to delete something upon request?
  • T/F: When performing an asynchronous request, the server has to send a response without reloading/re-rendering the page.
  • T/F: Because every company’s needs are unique, the payment process should not be outsourced and the development team should develop its own.

  Team Assignment

Overview

Purpose: Gain experience working in a team as a backend developer.
Task: Complete the assignment.

Learning Objectives

By the end of this assignment the student will be able to do the following:

Assignment Description

For this assignment, you will complete your final project.

Rubric

CriteriaWeightMasteryProficientDevelopingBeginningMissing/Incomplete
100%90%78%65%0%
Deployed to the Web

(Graded via YouTube)
15%Meets Proficient criteria and video shows use of Render CONFIG VARS to connect to MongoDBMeets Developing criteria and app connects to MongoDBMeets Beginning criteria and Render url can be opened without any errorsNode.js app deployed to RenderRender link or YouTube link not submitted
OAuth

(Graded via YouTube)
15%Meets Proficient criteria and the video shows that each protected route (needs authentication) requires authentication before accessMeets Developing criteria and user can log out using OAuthMeets Beginning criteria and user can log in using OAuthEvidence of OAuth is in the Node.js projectGitHub link or YouTube link not submitted, or No evidence of OAuth in project
HTTP Requests

(Graded via YouTube)
15%Meets Proficient criteria plus at least 4 collections have a PUT or DELETE request (MongoDB change is shown in video)Meets Developing criteria plus at least 4 collections have a POST request (MongoDB change is shown in video)Meets Beginning criteria plus at least one HTTP Request is present for each collection in the databaseSeveral HTTP Requests are in the project and work (shown in video)GitHub link, Render link or YouTube link not submitted, or no evidence of HTTP Requests
Testing

(Graded via YouTube and GitHub)
15%Meets Proficient criteria and unit tests exist and pass for main server.js file and .js files in routes folderMeets Developing criteria and YouTube video shows all tests running and passingMeets Beginning criteria and GitHub shows at least one unit test file for each .js file in the controllers folderGitHub shows that at least one unit test file exists (".spec.js")GitHub link or YouTube link not submitted, or No evidence of unit testing in project
Database

(Graded via YouTube)
10%Meets Proficient criteria and at least one collection features documents with at least 7 fieldsMeets Developing criteria and database has at least 4 collectionsMeets Beginning criteria and database has a single collectionDatabase exists and is shown in the videoGitHub link or YouTube link not submitted, or No evidence of Database in project
API Documentation

(Graded via Render)
10%Meets Proficient criteria and the documentation can test each endpoint (video should show MongoDB being updatedMeets Developing criteria and the documentation is published (either to Render at "/api-docs" route, or to apollo server)Meets Beginning criteria and documentation is organized by collectionThe swagger.json file is present (or Apollo server is shown in video for graphql extra credit)Render link, GitHub link, or YouTube link not submitted. Or no evidence of API documentation
Data Validation

(Graded via GitHub)
10%Meets Proficient criteria and each route has data validation, and returns some type of 400 or 500 error if data requirements aren't metMeets Developing criteria and data validation is being used for each PUT and DELETE routeMeets Beginning criteria and data validation is being used for each GET and POST routeNode project has evidence of data validation (for example: checks for at least one variable's existence before continuing)GitHub link or Render link not submitted. Or no evidence of Data Validation
Error Handling

(Graded via GitHub)
10%Meets Proficient criteria and each route has error handling, and returns some type of 400 or 500 errors get thrownMeets Developing criteria and error handling is being used for each PUT and DELETE routeMeets Beginning criteria and error handling is being used for each GET and POST routeNode project has evidence of error handling (for example: at least one try/catch)GitHub link or Render link not submitted. Or no evidence of Error Handling
Extra Credit
GraphQL instead of REST

(Graded via YouTube)
20%Meets Proficient criteria and REST is not used at all, only GraphQL (should be shown in YouTube video)Meets Developing criteria and project uses GraphQL to access and modify MongoDB (should be shown in YouTube video)Meets Beginning criteria and project uses GraphQL for some aspects (should be shown in YouTube video)GitHub link (perhaps in previous commits) and YouTube video show that GraphQL was attemptedGitHub link, Render link, or YouTube link not submitted
Extra Credit
TypeScript

(Graded via YouTube)
20%Meets Proficient criteria and there is not a single file in project with ".js" extension. All JavaScript files have been replaced with error-free TypeScript (.ts) filesMeets Developing criteria and project uses TypeScript for all files in "controllers" folderMeets Beginning criteria and project uses TypeScript for some aspects (should be shown in YouTube video and evident in GitHub repository)GitHub link (perhaps in previous commits) and YouTube video show that TypeScript was attemptedGitHub link, Render link, or YouTube link not submitted