Note: “codebook” entries below are verbatim pasting of all of the code we used in class. It’s possible they may not compile (i.e. may have errors) if we left things unresolved, or were writing pseudocode, etc.

Wednesday, Jan. 19th: Intro

  • Welcome to class!
  • Quick introductions: students in random pairs each answer a few questions about each other:
    1. Their name and pronouns
    2. What they’re studying and what year they’re in
    3. What brings them to this class
    4. Something fun/interesting/exciting/great/awful they did over break
  • Review course Canvas site briefly
  • Review main course site (the one you’re reading this on) briefly, going over the various sections listed in the navigation bar on the left
  • Virtual Phys Comp Lab tour
  • Guest visitors Mike Melville and Prof. Marti Louw (both join to speak about respective research studies addressed in the syllabus)
  • Please sign up for a slot to chat with me for 10 minutes on Friday using this sheet
  • If you’re able to pick up a small electronics kit, those should be available in room A9 of Hunt Library by Thursday. This is strictly optional!
  • Homework 1 assigned

Monday, Jan. 24: Syllabus, asynch review I, et al.

  • Homework review
    • Syllabus (Zach randomly calls on people to ask them questions about course policies, etc.)
    • Asynchronous video questions addressed
      • What exactly is a “net” and what does it mean in a schematic?
      • What’s the difference between a battery and a 5V / ground connection?
  • Don’t connect more than 5V to the Arduino’s 5V pin. If you do that while Arduino is plugged into a computer, you can seriously harm that computer!
  • Brief introduction to Tinkercad, which any student without a physical Arduino kit may use to complete the homework assignments
  • Reviewing projects that students chose to look at from prior semesters
  • Homework 2 assigned

Wednesday, January 26: Asynch review II, Project 1 introduction

  • Asynchronous homework questions review
    • A circuit with 5V, ground, a potentiometer, and an LED (how to use a pot as a rheostat)
    • Other briefly reviewed questions from the asynch discussion board
  • Introduction to block diagramming using the tool
    • Sample diagrams shown here: block diagramming sample
    • Students put into random teams of three to draw their own diagrams of different devices/systems
      • Microwave
      • Refrigerator
      • Traffic signal with pedestrian button
      • Car
      • Airplane
      • Laptop computer
  • Brief review of how to do searches for parts available in the Phys Comp Lab
    • For parts that are in the Maker Card system, use the main Maker Card site
    • For a complete inventory of the Physical Computing Lab (without photos and tutorials) click on “Useful Links” on the navigation column, and then “Phys Comp Lab inventory page.” This loads a big spreasheet, which you can do a command-F search of to find where parts are. (Clunky but complete.)
  • Additional parts available for pickup from A9:
    • HC-SR04 ultrasonic ranger
    • 9g hobby servo motor
    • photoresistor
    • 5.6kΩ resistor
  • Introduction to Project 1, and assignment of teams (please see Canvas for the announcement listing those). Note that there is an ideation deadline for this project for Monday, January 31st.
  • Homework 3: Finishing up asynchronous learning assigned

Monday, Jan. 31: Asynch review III, Project 1 ideation presentations

  • Quick review of asynch homework questions
  • Very brief IDeATe walking tour
  • Handing out 1’ × 1’ boards for Project 1 mounting
  • Handing out physical MakerCard decks
  • Project 1 team meetings with Eric and Zach

Wednesday, Feb. 2nd: Some technical notes, and Project 1 work time

  • Technical topics to cover briefly in preparation for Project 1:
    • Data types
      • bool: true or false
      • int: whole number in range –32,268 to 32,767
      • unsigned int: the same number of values as int, but starting at 0, so: range is 0 to 65,535
      • long: whole number in range approximately –2.1 billion to 2.1 billion
      • unsigned long: the same number of values as long, but starting at 0, so: range is 0 to about 4.3 billion
      • float: “floating point” number, meaning something with a decimal in it like 1.543 or –10493.25, but with limits (a float has 6 or 7 digits of precision, so it wouldn’t store 9872.19886757275). Range is about –3.4 × 1038 to 3.4 × 1038
      • char: short for “character,” things like a, Q, ?, or even 8 (as a character, not the value 8)
      • String: a “string” of characters put together, like "Abracadabra!" she yelled. or 735 (that last one is not a number—it’s a String so it has no numerical value)
      • Read lots more details at this section of the main Arduino reference page
    • Blink without blocking (how to juggle multiple events without delay(), using event loop programming)
    • Simple circuit debugging: using a multimeter for testing continuity, resistance, and voltage
    • Soldering tutorials posted on Canvas
    • 16×2 LCD displays shown
  • Introduction to the Diary of Sorrows, a place to share your technical frustrations
  • Project 1 due date is moved back to Weds., Feb. 9th
  • Project 1 work time

Codebook: do multiple things at the same time with event loop programming

N.b.: To see a more fleshed-out example of this sort of programming style, go to the Blink without blocking section of the Code bites page.

unsigned long lastQuarterTime = 0;
unsigned long lastThirdTime = 0;

void setup() {

void loop() {

  // this block will run four times per second
  if (millis() - lastQuarterTime >= 250) {
    // do some stuff
    lastQuarterTime = millis();

  // this block will run three times per second
  if (millis() - lastThirdTime >= 333) {
    // do some stuff
    lastThirdTime = millis();

Monday, Feb. 7th: Project 1 work time

  • Advice on building and debugging: “Unit testing”
    • Start with simple, isolated individual pieces (e.g. one input, or one output)
    • Confirm that the one piece is working as expected
    • Then try to connect it (in software) with another piece (e.g. connect one input to one output)
    • Keep putting small pieces together, patiently, slowly building up your whole
  • Code structuring advice: generally, there are four main parts of your loop:
    1. Read information about the world
    2. Change internal state variables
    3. Drive outputs
    4. Report data back to the user
      See this Code bites sketch for a more complete example that uses this structure
  • Wednesday’s critique structure
    • About 8 minutes per team
    • You’ll talk us through your device from the front of the room
    • We’ll see it magnified through the document camera
    • Quick questions from the class
    • Plenty of time at the end to try to chain everything together!

Wednesday, Feb. 9th: Project 1 critique

  • Teams show their projects one at a time
  • And for the grand finale, we chain them all together!

Monday, Feb. 14th: Project 2 ideation review

  • Project 2 ideation review with Zach and Eric
  • Reminder: Project 1 documentation due Wednesday, Feb. 16th

Wednesday, Feb. 16th: Project 2 work time

  • Project 1 documentation is due at the start of class.
  • Zip zap zop!
  • Peer ideation review in groups of 3. Each group should spend 5 minutes per person:
    • First minute is the person’s ideation pitch
    • Last four minutes are for feedback/discussion. Try to address:
      • Any part of the project that you believe will be very difficult. Can it be worked around?
      • Identifying parts of the project that are critical to its success.
      • Thoughts on ergonomics/design
      • Thoughts or tips regarding technical pieces (“I think you might want to use this part for that,” etc.)
      • Any other thoughts you’ve got
  • Disassemble first projects so the parts can go on to live more lives and be used for new things!
  • Remainder of the class is work time.

Monday, Feb. 21st: Lasercutting tutorial, Project 2 work time

Wednesday, Feb. 23rd: Project 2 prototype presentations

  • Zach is now more than one week late on grade feedback (for Project 1 final documentation/projects) so there’s a treat for everyone
  • Each student presents for five minutes to the class:
    • One minute of sharing
    • Four minutes of Q & A
    • Written responses via Google Slides:
      • What is working well here?
      • What do you recommend changing?
      • Any particular parts/techniques/methods/devices that you’d recommend they look into?
      • Any other thoughts?
  • Brief remainder of class is work time

Monday, Feb. 27th: Project 2 work time

  • Work time for Project 2, which is due on Wednesday
  • A few reminders as you progress:
    • Focus on creating a minimum viable product first, then add additional/optional features to what you’re making
    • Remember that while you can’t full credit for showing up with a device that’s not totally functional, you’ll be able to get lots of partial credit—so just get however far you can get
    • If your device is fully working, take a video right then! It’s very common for a thing to work the night before the crit, but then fail the next morning for whatever reason.
    • Take pictures as you go (process documentation is an important piece of this project)

Wednesday, Mar. 2nd: Project 2 Final Crit

  • Class is divided into halves to present their Project 2 pieces
  • Each student shows their work for ~10 minutes and gets written, and verbal, feedback from other students as well as guest critiquers
  • Written feedback goes onto this form

Monday, Mar. 14th: DSLR lesson, work time

Wednesday, Mar. 16th: Beginning of Final Project, with design client guests

  • Welcome to our guests (design clients for Final Project)
  • Introductions and names
  • Introduction to Final Project
    • Project overview
    • Schedule overview
    • Discussion of purpose of needfinding interviews/meetings
    • Brief review of a few past projects
  • Two Truths and a Lie played in randomized groups
  • Building activity: teams each use household materials to build a solution to a problem like “My little brother is so annoying,” or “I always forget my hat when I leave the house.”
  • Final project teams announced; they are posted on Canvas

Monday, Mar. 21st: No class to allow time for teams to conduct interviews

Wednesday, Mar. 23rd: Interview debriefing

  • Due: Ideation sketches
  • Quick zip-zap-zop at the top
  • Question about masking: the university policy is changing such that starting Monday, March 28th (our next class meeting), masks will no longer be required indoors. If you are uncomfortable being unmasked in our class, please email me letting me know and I will ask everyone to please keep their masks on (I won’t reveal your identity).
  • Project 2 documentation grades are posted for everyone who submitted their documentation links to Canvas. If you did not, please do that immediately.
  • Remainder of class time is spent in team meetings with Zach and Eric about interviews

Monday, Mar. 28th: Prototype work

  • Masks are now optional, per university policy
  • Brief review of ideation
  • Project schedule overview
  • Prototyping process introduction
  • Course staff meetings with teams

Wednesday, Mar. 30th: Prototype work

  • Work session

Monday, Apr. 4th: Prototype work

Wednesday, Apr. 6th: Prototype presentations

  • Each team presents from a slide deck for ~7 minutes
  • Quick Q&A from the room
  • Long meeting time for teams to confer with their clients about various design discussions to be had

Monday, Apr. 11th: Prototype wrap-up and final build planning

  • Debrief of prototype presentations
  • Review of overall course scope for the here-on-out
  • Please be sure to place critical-items orders soon using the course request form (there’s no strict deadline for this but sooner is better)
  • Explanation of expectations for assignment to put together a planning document (due Wednesday), and quick demo of exactly how to use that sheet
  • Teams meet with Zach individually to talk over their plans and ideas moving forward (Eric is out today)

Wednesday April 13: Guest speaker, Final build planning review

  • Grades and extended feedback on prototypes are posted on Canvas—please read the comments!
  • Guest speaker Mallory Hudson joins us from CLASS (Community Living and Support Services), the organization through whom we’ve gotten connected with this semester’s design clients. Mallory’s presentation slides are here for your reference. (Link only works for logged-in members of our class.)
  • Remainder of day is discussion time to review everyone’s Gantt charts and planning for the rest of the semester.
  • Take pictures as you go!

Monday April 18: A few notes, project work time

  • A few follow-up notes from our visitor Mallory Hudson last week:
    • “Alt text” is a special feature that can be added to HTML images for the use of screen readers (demo on our course site, in the final assignment page)
    • ASL (American Sign Language) classes available at low cost in Pittsburgh via two great organizations:
    • “De-institutionalization” was a major step away from some truly awful state-run institutions that existed during the twentieth century and came to be decrepit, horrible places for people with disabilities to live their whole lives; see this breakthrough 1972 28-minute documentary if you’re interested: Willowbrook: The Last Great Disgrace
    • Brother André’s Cafe on Duquesne’s campus—worth checking out!
    • Art show at SPACE Gallery downtown: Deaf Brown American Mom, an exhibit by Fran Ledonio Flaherty (through May 15th)
  • Meeting of the Minds is on Wednesday, May 4th, and IDeATe will have a room reserved in the UC.
    • You are welcome to show any class work you’d like to (I’m guessing you’ll want to show Project 2 and the Final Project)
    • For the final project, the whole team doesn’t need to present—one/two/three of you is all fine
    • Please email me to let me know if you’re interested
  • As homework for Wednesday 4/20, please fill out a brief form (link to be posted after class via Canvas), which is just a quick check-in so I can take a temperature and make sure all the groups are distributing their work well.

Wednesday April 20th: Work day

  • Final project work day
  • Take pictures as you go!

Monday April 25th: Work day

  • Super clarifying reminder: final presentations are on Monday, May 2nd, 1–3:30pm, in Studio A (same room upstairs where we did the prototype critiques). Refreshments will be served, and guests will be joining us to give their thoughts and opinions.
  • Final presentation deck that you’ll be using for next Monday; fill out your section before the critique!
  • Please refer to your Gantt chart to assess how you’re doing. Today is probably the last day you should:
    • make any major adjustments to your deliverables for next week,
    • request any parts ordering,
    • or make any big effort reallocations in your team.
  • Zach is going to come around to talk with each team and check in. Please prepare a list of to-do’s for each team member.
  • Remember to take pictures as you go!

Wednesday April 27th: Final work day

  • Reminder that Meeting of the Minds is on May 4th and IDeATe has an area reserved. Quick polling of the room to see who’d like to participate.
  • A few final parts are on their way for teams who’ve requested them.
  • Begin final fabrication now if you haven’t already! This is very likely the most time-consuming part of your project at this point.
  • We’ve currently got eight yeses and six maybes for Monday’s critique, and the list keeps growing.
  • Zach is happy to help by appointment—just ask. Availability as of Wednesday morning:
    • Wednesday 4/27 2:30–3:30pm
    • Thursday 4/28 9–10am; noon–1:30pm; 2:30–5:30pm
    • Friday 4/29 noon–1pm; 4–4:30pm