Assigned on Wednesdays.
Due the following Sunday at 11:59pm.

This page will be updated weekly.


Homework: Due Monday 2/18

Note: There's nothing to submit for this week's homework. Just be sure to have it done before class on Monday.

  1. FreeCodeCamp Functions (5-15 minutes -- one lesson only)
  2. Reading:



Homework: Due Monday 2/25

(we will step through the homework submission process together at the start of class)

  1. 99 Bottles of Beer (30-90 minutes)

    starter-code > Homework-1 > 99-bottles-of-beer

  2. Random address generator (30-60 min)

    starter-code > Homework-1 > random-address-generator

  3. BONUS: Madlibs

    starter-code > Homework-1 > z_BONUS-madlibs

    We haven't covered all of the concepts necessary to complete this project, but we will pick them up over the next few weeks. Identify syntax in the code that you recognize, and research any code you encounter that you don't understand. This project will be due in a few weeks, so if you're looking for a preview of upcoming content, this will give you a head start.


Homework: Due Sunday 3/3, 11:59pm

  1. Fizzbuzz (60 min)

    starter-code > Homework-2 > fizzbuzz

    1. Construct a for loop that iterates through and console.logs the numbers 1 - 100.
    2. Add an if/else statement that logs the string "fizz" if the value being iterated over is divisible by 3; otherwise, log the value.
    3. Add an else if clause that logs the string "buzz" if the value being iterated over is divisible by 5.
    4. Add an additional else if clause that logs the string "fizzbuzz" if the value being iterated over is divisible by both 3 and 5. (Hint: Test your code after adding this; your program may require additional changes in order to work correctly.)
  2. Temperature converter (60-90 min)

    starter-code > Homework-2 > temp-converter

    1. Create a function that accepts a temperature value in Fahrenheit and converts it to Celsius.
    2. Create a second function that accepts a temperature value in Celsius and converts it to Fahrenheit.
  3. Outline and create objects (30-60 min)

    starter-code > Homework-2 > object-homework folder

  4. Read about Hubot (45 min)
  5. Interact with the bots in our class Slack organization (only works in DMs with these bots, or in channels that they are members of, such as #general) (30 min)
    • @slackbot
      • Direct message with a question
    • @plusplus
      • In a public channel, mention someone's @ name and the characters ++ (with no space between the name and the pluses) to give them a a point.
      • Direct message help to @plusplus to learn other commands to experiment with.
      • Note that you can give points to things as well (try snacks++!)
    • giphy
      • Type /giphy and a space, followed by a word
      • giphy responds with an animated GIF related to that word.
  6. Read the Project 1 description and start thinking about what you'd like your bot to do. (We will configure our computers and start building bots in class next week, so no need to start coding yet.) (30 min)

Homework: Due Sunday 12/9, 11:59pm

  1. Slack bot
    • Finish your Slack bot
    • Create a new GitHub Enterprise repo for your bot, including:
      • the JS code for your bot
      • updates to the default README.md file that documents what your bot is capable of and how to interact with it
    • Push your code to your repo, then use Slack to send Sasha a link to the repo
  2. Convert between JavaScript objects and JSON (30-60 min)

    starter-code > Homework-3 > json-homework folder

  3. Reading

Optional exploration

    Visual Studio Code settings

    You can change custom settings in the Visual Studio Code editor by editing a JSON file. Open and view this file by pressing command+shift+P (Mac) or Ctrl+Shift+P (Windows/Linux) to open the Command Bar, type settings, and then in the list displayed, click Preferences: Open Settings (JSON). The document that opens allows you to add custom settings to override the VS Code defaults. Read through the Visual Studio Code default settings documentation, and then customize at least two settings with your own values. Save your changes, restart the editor, and verify that the changes you made are reflected in the editor.


Homework: Due Sunday 03/17, 11:59pm

  1. Customizable survey form (90 min - 2 hours)

    Homework-4 > dom-homework

  2. Madlibs (30-60 min)

    Homework-4 > madlib-with-loops

  3. Reading


  • Dice (30-60 min)

    Homework-4 >BONUS-dice-lab

    • Create an app where every time the user hits the "Roll Dice" button, the screen randomly updates each of the two images to display an image of a die corresponding to the value rolled.
    • Specific instructions in the js > app.js folder

Homework: Due Sunday 03/24, 11:59pm

  1. Current weather lab (started in Monday's class) (60-90 min)

    09-ajax-apis > starter-code > 7-ajax-lab

    Be sure to store your API keys and app key in js/keys.js, NOT in js/main.js.

  2. Zip code/weather lab (60-90 min)

    Homework-5 > async-lab

    Be sure to store your API keys and app key in js/keys.js, NOT in js/main.js.

  3. Download and install Postman
  4. Pre-work for Project 2: Feedr (2 hours)

    (Final project due Monday 4/8)

    • Read project overview
    • Research and choose APIs to use
    • Read API documentation for the APIs you've selected
  5. Reading:

Homework: Due Sunday 03/31, 11:59pm

  1. Local Landscapes (started in Monday's class)

    11-advanced-apis > starter-code > Homework-6

    Complete the Local Landscapes app we started in class on Monday.

    • Using the Flickr API documentation, customize the search results for the app we created today to do the following:
      • Return 30 photos instead of the default 100
      • Sort results by relevance
    • Bonus 1: Return URLs for larger images (Hint: Check out the extras argument at https://www.flickr.com/services/api/flickr.photos.search.html and look at the Size Suffixes section at https://www.flickr.com/services/api/misc.urls.html).
    • Bonus 2: Instead of landscapes, return photos from a different category (see popular tags)
    • Bonus 3: Flickr provides an SDK (software development kit), which is essentially a library optimized to work with the Flickr service. Read the documentation, follow the instructions to download/install the SDK, then rewrite your app to use methods of the Flickr SDK in place of your vanilla JavaScript code where possible.
  2. Project 2 (Feedr)

    Working code for an API call that returns data from one of your news sources, and draft code to extract data and add it to the DOM

    NOTE: This is a milestone to help you ensure that you don't fall behind on this project, but you don't need to submit anything for Project 2 until the final deadline of Monday 4/8.

  3. Final project
    • Read the project overview.
    • Come up with a basic idea for your final project. Create an outline/project description that details how your project will meet each of the project requirements.
    • Create a list of possible APIs to use.
    • Bring your project outline and API list to class on Monday.
  4. Reading

Homework: Due Monday 04/08

  1. Project 2 (Feedr)

    Completed project due

    • Send Sasha the URL for your fork of the Feedr repo on GitHub
    • Ensure that your API keys are stored only in keys.js before pushing to GitHub
  2. Final project milestone

    Pseudocode of basic features & draft of HTML/CSS code

    NOTE: This is a milestone to help you ensure that you don't fall behind on this project, but you don't need to submit anything for your final project until you present it during the last class on Monday 4/22.



Homework: Suggested progress by Monday 4/15

  1. Final project milestone

    Final HTML/CSS code, draft of basic API functionality and DOM manipulation code

    Note: This is a milestone toward getting your final project done on time, but you don't need to demonstrate anything for your final project until the last class on Monday 4/22. Meeting this milestone by Monday 4/15 will enable you to take advantage of the lab time in that day's class to continue building out and troubleshooting your JS.



Homework: Due Monday 4/22

  • Completed final project & presentation!