Bootcamp Overview

Goal

By the end of the bootcamp, students should have the skills and competencies to build a simple todo web application on a javascript and MongoDB stack.

Learning Schedule

Week 1

  • Advanced Javascript
  • MongoDB, Mongo Shell, Mongoose
  • RESTful architecture, APIs
  • Introduction to express
  • Express Routing

Week 2

  • Sessions, Cookies, Headers, HTTP Parsing
  • React: flux, JSX, state, props
  • React: component lifecycle
  • React: advanced concepts
  • Redux

Typical Daily Schedule

  • 9am-12pm Breakout lectures, general conversations about code, begin peer programming.
  • 12pm-1pm Lunch
  • 1pm-5pm Peer programming on coding challenge.

Setup:

  • Create GitHub Account
  • Download Brew
  • Download NodeJS > 8.0
  • Download and start MongoDB Community Edition
  • Download MongoDB Compass
  • Install Postman
  • Install Terminal or iTerm
  • Install Atom, Sublime, or other IDE
  • Install Firefox

Day 1 Warmup

Breakouts

  • GitHub, Git, .gitignore
  • npm, yarn, and package management
  • require, import, exports

Javascript 101

  1. What is asynchronocity? Why is it important? https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean

Notice what happens with this code:

function getGoogle() {
  console.log("A");
  fetch("google.com").then(function(res) {
    console.log("B: I got the website!");
  });
  console.log("C");
}
  1. What is a Promise?
  2. What is Promise.all?
  3. What is a callback?
  4. What is an arrow function? What's different about arrow functions?
  5. What is going on here? Can you rewrite with function() instead of => ?
let addFiveDigits = a => b => c => d => e => a + b + c + d + e;
addFiveDigits(1)(1)(1)(1)(1);
  1. Whats the difference between const, var, let?
  2. What are object prototypes?
  3. What are higher order components (HOCs)?

Release 1 (on your own)

  1. Write a function that fetches the html from https://www.nytimes.com/ and then writes the return value (which should just be HTML) to the console.
  2. Write a function that fetches the HTML from five major news sources all at once, then concatenates the HTML from the sites into one long string. (Hint: Promise.all)
  3. Write a function that fetches the HTML from five major news sources all at once and returns the HTML of the webpage that loads first. (Hint: Promise.race)
  4. Write a function that fetches the HTML from five major news sources one after the other. Hint:
fetch().then(() => {
  fetch().then(() => {
    fetch().then();
  });
});
  1. For the previous three functions, use console.time() to benchmark the speed of all three promises. What do you notice?
  2. Write a function that takes as arguments an arbitrary period of time (in milliseconds) and an arbitrary function that it executes after the specified period of time. (This is a callback.)
  3. Write a Promise that resolves after 4000 milliseconds.