Week 1

Overview

The focus of this week is:

  • Arriving
  • Revising and practicing core skills
  • Introducing test-driven development
  • Synchronous and asynchronous operations
  • Persistence with the filesystem

Core Concepts

  1. Pair programming
  2. Git & GitHub
  3. Data types
  4. Nested data structures
  5. Functions
  6. Modular JavaScript (CommonJS, Node and npm)
  7. Unit Testing and Test Driven Development (TDD)
  8. Synchronous vs. asynchronous functions
  • Writing and calling async functions
  • Promises
  1. Filesystem interactions (reading & writing)
  2. Refactoring

Learning outcomes

By the end of this week you should be able to:

  • declare and call functions confidently
  • read and write nested data structures
    • explain the difference between 'dot' and 'bracket' notation for reading and writing object properties
  • explain and apply the practice of test driven development
  • read and write basic tests with Jest
  • explain the basic pattern of a unit test (the 3 A's)
  • read error messages to determine where your problem is to troubleshoot issues in your code
  • identify a function that is doing too many things
  • use Object.keys() and can explain what it returns

Human Skills

  • explain the importance of being an effective member of a pair
  • explain the responsibilities of the driver and the navigator
  • effectively communicate about software development

Git and GitHub

  • create GitHub repositories
  • clone remote repositories
  • view the current state of a branch
  • understand and explain the difference between local and remote repositories
  • create branches and switch between branches
  • review changes before staging and committing
  • push to and pull to/from remote repositories
  • create pull requests
  • write meaningful commit messages
  • use Git to review your project's history
  • handle Git auto-merge commit messages

Node and npm

  • write a basic Node.js web server application that defines routes and returns text
  • use npm to install new packages, saving them to your package.json as either dependencies or dev dependencies
  • write modular code using module.exports to export and require to import modules
  • export things (objects, functions, variables, etc) from a module
  • import (require) things from other modules
  • install all packages listed in the package.json file
  • run npm scripts (built-in and custom)
  • state where local npm packages are installed
  • how to pass a function as an argument to another function

Debugging, Testing and TDD

  • setup unit testing in a project
  • run the unit tests in a project
  • import the code under test
  • implement requirements with code
  • start a web server in debug mode using VS Code
  • perform basic debugging tasks (step over code and inspect variables)

Promises

  • use metaphors to explain asynchronous programming
  • describe the difference between synchronous and asynchronous operations
  • use a then and catch block on a function that expects one
  • read and write text to and from a file on the filesystem

Sometimes you may feel like you have no idea what you are doing. But don't worry, that's normal. Stay positive, be kind to yourself, work at it and ask questions. Everything will be fine - you have lots of support!