Exam 2: Friday, August 23rd


  • The stats are:
    • Mean: 70.1%
    • Median: 76.0%

Important: Exam 2 "Absorption" option

As announced in Week 8, students will have the option to "absorb" the Exam 2 score into the Final Project. Recall that Exam 2 and Final Project are each worth 15% of the final course grade. This means that if you choose to focus your time on the Final Project next week and skip the Exam 2, you may opt to let that be 30% instead of 15% of your final course grade.

If you would rather continue to have the Final Project be 15% and Exam 2 be 15% of your grade, you may. If you choose, you may also take the max of the two options using the following calculation:

max(0.15 * FP Score + 0.15 * Exam 2 Score,
    0.30 * FP Score)

If you choose to do both the Final Project and Exam 2, we will use whichever strategy that gives you a higher score.

Details to be aware of "Day of" Exam:

  • The exam will start promptly at 1:10 - please arrive by 1:00 so we can distribute exams and start on time.
  • If you arrive for the exam and find someone else in your seat, ask them to move/double-check their seat, and check with a TA/instructor if needed. Students are expected to make a reasonable effort to sit in their assigned seat. Students who demonstrate an egregious disregard for the seating assignments will receive a 5-point penalty.
  • We will distribute the exam early and you can read and fill out the cover page of the exam, but you should not open the exam until you are told to begin. At the end when time is called, you are required to stop writing and close your exam. Students who open the exam before being told to begin and students who make changes to their exam after time is called will receive a 10% penalty. Students who do not close their exam booklet when time is called may also receive a 10% penalty. Students that continue to write (anything) on their exam after time is called will receive a 10% penalty.
  • We will ask to check your UW ID card during the exam so please have it ready.
  • You must work alone and may not use any computing devices of any kind including calculators. Cell phones, music players, and other electronic devices may NOT be out during the exam for any reason.
  • The exam will be worth a total of 50 points (same weight as Exam 1).


The exam will have programming, "mechanical", and short answer questions related to material covered in readings, lectures, sections, and HW throughout Modules 3, 4, and 5. Topics that will be tested include:

  • Module 3: Using AJAX/fetch from a Node.js/Express API
    • Review HW3/HW4
    • Review Module 3 and Module 4 section exercises on client-side JS with AJAX
  • Module 4: Writing an API using Node.js/Express with text/JSON responses
    • Will involve file/directory processing and 2-3 GET endpoints (review fs, glob, and path)
  • Module 5: SQL
    • Writing 2-3 SQL Queries (SELECT, INSERT, UPDATE, DELETE, and joins)
    • Node/SQL connection: Using promise-mysql in Node.js
  • Various short answer related to all modules, including:
    • npm, Node modules, and Node project structure
    • Basic regex
    • Different storage technologies (e.g. files/directories, databases, cookies)
    • Accessibility
    • Tradeoffs between web technologies
    • HTTP requests/responses (GET vs. POST, status codes, etc.)
    • Callbacks and Promises
    • Asynchronous program excecution in JS

The following topics are guaranteed not to be tested on Exam 2:

  • Git/Command Line Tools
  • Writing HTML/CSS
  • Writing JS with setTimeout/setInterval
  • localStorage/sessionStorage

Useful Study Resources

  • Exam 2 Cheat Sheet (provided during the exam, but useful study reference)
  • CP and HW feedback from Modules 3 and 4
  • Section Exercises
  • Lecture Pre-Checks (all on Canvas)
  • Thursday section review
  • Extra SQL Practice
  • Regex practice exercises on CSBS
  • Practice Exams

    Exam 1: Monday, July 22nd


    • The stats are:
      • Mean: 75.2%
      • Median: 81.3%

    Regrade policy: Exams are graded collectively by the course staff - your TAs can not deal with specific exam grading issues.

    • For non-frivolous grading issues, you may submit a regrade request by Thursday, August 1st, 12:00pm (noon).
    • In order for your a regrade request to be considered you must:
      1. Understand the grading rubric: only the "checked" items are applied to you. Read all of the rubric items carefully to understand how the full rubric was applied to the problem in question.
      2. Initiate the regrade request through Gradescope.
      3. Explain concisely and clearly why you think your particular answer should be regraded.
      4. Test your solutions fully using the reference solution programs for Problems 3 (problem3-css.zip), 5 (problem5-js-dom.zip), and/or 6 (problem6-js-timers.zip).
    • Please note that regrade requests will result in the entire exam being re-examined, and may result in a lower score if we find other grading inconsistencies.


    The exam will have programming, "mechanical", and short answer questions related to material covered in readings, lectures, sections, labs, and HW up through Wednesday July 17th. While examples are not guaranteed to be the same format as the Exam 1 this quarter, some types of problems that have been on previous midterms to help guide your studying include:

    • Writing CSS from screenshot/text specifications (emphasis on flex layout and Box Model)
      • See CSS Basics and Page Layout on CSBS for a number of practice problems, as well as section/lecture examples
    • Identifying and fixing HTML/CSS/JS validation issues
      • Example: Problem 1 of Practice Exam 1A
    • CSS query selectors
      • Writing selectors for specified elements or identifying elements selected by a list of selectors) (example)
    • JS programming: DOM manipulation, event listeners/handling, timers, UI elements, etc.
      • (e.g. Section problems from Weeks 2 and 3, JavaScript problems on practice exams, lecture slides)
    • Short answer responses and "Mechanical/Mystery" including:
      • JS scoping/program execution (example)
      • JSON mystery (accessing keys/values) (example)
      • Understanding the DOM tree given HTML
      • General use of languages and technologies we have used in class (e.g. separation of languages, basic accessibility principles we have discussed, etc.). You can find some short answer questions from practice exams.

    Content that is guaranteed not to be on the exam includes:

    • Git
    • AJAX/Promises/fetch
    • window.getComputedStyle

    Useful Study Resources

    Practice Exams (Previous Midterms)

    These are intended to give you a general idea of the kinds of questions you may see on the real exam. The real exam will have a similar general style of questions as on the practice tests. However, we do not promise that the real exam will exactly match the practice tests in terms of questions, difficulty level, timing, or exact concepts needed to solve each problem. You are responsible for knowing all class material listed under 'Topics'.