Introduction to Physical Computing (60-223) is a 10-credit semester course offered at Carnegie Mellon University by the School of Art under the auspices of IDeATe.

Instructor: Robert Zacharias, (without the cation)
Teaching Assistant: Joseph Paetz, (without the cation)

Class meetings: Mondays and Wednesdays, 9:30am–11:20am, room A10 in Hunt Library (IDeATe’s Physical Computing Lab)

Lab hours
* Joseph: Sundays 1–3pm, and Tuesdays 4:30–6:30pm in Phys Comp
* RZ: Mondays and Wednesdays 4:30–6:30pm in Phys Comp

Short course description

The first half of this practical project-based course is spent covering the basic technical skills (including electronics, programming, and hardware) needed to build simple interactive objects with embedded behavior using the Arduino microcontroller. Inputs to read information about the world include sensors such as an ultrasonic ranger, thermometer, light sensor, and human inputs like buttons and knobs. Outputs to affect the world include actuators such as motors, LED lights, speakers, and haptic feedback devices. A sequence of projects challenge students to apply their technical skills in creative ways. The class will be working with a local group of older people who serve as design clients; students conjure and build functioning assistive devices of a of a practical or whimsical nature for their critique and feedback. Readings and guest speakers address topics including design and disability.

Topic and assignment schedule

week week of Monday class Wednesday class
1 January 14 Martin Luther King Jr. Day (1) Jan. 17th: intro and expectations; IDeATe facilities available; Arduino board tour; digitalWrite() and blink with variations
2 January 21 (2) Jan. 22nd: quick review of example projects posted by students to course site; schematics and circuits part 1; breadboard; always maintain enough resistance between power and ground; more LED outputs; using the IDE’s built-in reference; Serial feedback (3) Jan. 24th: digitalRead() and a voltage divider; schematics and circuits part 2 and V=IR; ultrasonic ranger and contributed libraries; the Arduino is a voltmeter DMM exercise (while analogRead()ing a potentiometer); groups assigned for Project 1
3 January 28 (4) Jan. 29th: analogWrite(); ADXL335 accelerometer; driving a hobby servo; map(); using the bench supply with transistors; external power via battery or transformer; documentation requirements review (5) Jan. 31st: work day; soldering; handsaw
4 February 4 (6) Feb. 5th: Project 1 due date and crit; Homework 3 assigned (7) Feb. 7th: Photo Zone and DSLR tutorial; guest speaker Laura Poskin, MPSG
5 February 11 (8) Feb. 12th: Project 1 documentation due; journey through the datasheet; basics of Git and Github; stepper motors; mechanical linkages part 1 (9) Feb. 14th: ♥ juggling timing tasks without delay(); toy dissection; Project 2 introduction and assignment
6 February 18 (10) Feb. 19th: Project 1 documentation feedback; JCC field trip prep; Project 2 ideation discussions with course staff (11) Feb. 21st: first JCC field trip: introductions, brainstorming, and open ideation
7 February 25 (12) Feb. 26th: Technical odds and ends; Project 2 work day (13) Feb. 28th: Project 2 work day
8 March 4 (14) Mar. 5th: Project 2 due date and crit (15) Mar. 7th: Practicum exam
9 March 11 spring break spring break
10 March 18 (16) Mar. 19th: midterm review; practical project planning and debugging; final groups announcement (17) Mar. 21st: site-visit scheduling/planning/skill-building and documentation requirement introduced
11 March 25 (18) Mar. 26th: optional class (meetings with older people this week) (19) Mar 28th: midterm exam retake (optional)
12 April 1 Apr. 1st: final project meeting documentation due; (20) Apr. 2nd: group check-ins; first round prototype work day 1 (21) Apr. 4th: prototype work day 2
13 April 8 (22) Apr. 9th: prototype work day 3 (23) Apr. 11th: JCC field trip: presentation and formative critique of “behaves-like” prototypes
14 April 15 (24) Apr. 16th: debrief JCC visit; groups work on final work plans and discuss with course staff (25) Apr. 18th: final build work day 1; prototype process documentation due
15 April 22 (26) Apr. 23rd: final build work day 2 (27) Apr. 25th: final build work day 3
16 April 29 (28) Apr. 30th: final build work day 4 (29) May 2nd: third JCC field trip: final crit with invited guests
17 May 6 (finals week) final project documentation due May 11th at 10 p.m.  

Policies, expectations, and housekeeping

Room access

Enrolled students have access to the IDeATe Phys Comp Lab whenever Hunt Library is open, which is around the clock for most of fall and spring semesters. (The library’s hours are posted on their website.) The caveat is that there are many other classes in the room, and while you can come and go as you’d like, please be respectful of other classes and make as little noise as you can while they’re in session. All of IDeATe’s spaces’ schedules are available online.

The Phys Comp Lab’s inventory is online for your convenience.

While in the Phys Comp Lab please observe some simple rules:

  • Food and nonwater drink must remain in the zone of shame by the door
  • Please store project material in your cubby; if you need more space let us know and we’ll make arrangements
  • Tools that belong to the room (like those on the pegboard in the Heavy Work Zone, or in the red tool cabinet) must always remain in the room. Don’t take them elsewhere, and don’t hide them in your cubby!
  • Electronics in the drawers are available for your use; take them as you need. The expectation is that you’ll return things when you’re done with them. Don’t worry so much about little stuff like resistors and LEDs; do worry about things like motor drivers or rotary encoders or pumps.
  • It’s kind of a Kindergarten situation: when you’re done working, please clean up after yourself.
  • There are more than 75 students rotating through this room every week in 7 different classes, so consideration of the common areas is really important.

Class time

Class time is very precious—we’ve got only 4 hours a week, about 60 hours over the course of the semester. Because of this, I have some expectations for myself and for you:

  • I will get to class early and ready to go. During class time, I’ll focus exclusively on our course.
  • I’ll use class time as wisely as I can: if the whole group does not need to be involved in a discussion, I’ll try to bring only the needed group together.
  • You’ll also use class time carefully; you will come on time and ready to learn. If you’re late, please enter quietly and speak with me after class.
  • Attendance is expected at all sessions. Any absences beyond your 2nd will result in a third of a grade (3 point) deduction from your final course grade. Three latenesses equal an absence. Excused absences and emergencies are excepted, of course. Speak with me and email me in the case of either of these events coming about.



This course, and IDeATe more broadly, purposefully attracts students from a wide disciplinary range, including art, design, engineering, architecture, computer science, business, and more.

Projects in the course are completed in groups rather than individually. Sometimes groups will be assigned, and sometimes students will choose their own groups. In both cases, the expectation is that group members will honestly strive to work together on their projects and will rise or fall as a unit, understanding that identifying complimentary strengths and weaknesses early on will help the team succeed. All members of a group receive the same grade for a project except in rare cases.

If your group is having trouble working together, please reach out to Zach or Joseph as soon as you think there may be some real issues. As authoritative outsiders, we can step in to help in ways that group members themselves can’t.

Due dates

Assignments are generally due at the beginning of class, and arriving late to class because you are finishing the assignment results in a late attendance mark as well as a late project mark. Documentation is also due at the beginning of class; if you haven’t submitted by 9:30am on the day the documentation is due, it will be considered late and incur a grade penalty.

Submission requirements for each project

The documentation guidelines page details the submission requirements for each project.

Practicum exam

A midterm exam, called a practicum, covers practice and theory. The exam occupies a full class period (i.e. 1 hour and 50 minutes). There is a written portion covering some practical questions in electrical theory (no calculus or anything even approaching calculus), and a practical portion where students will be asked to write software, build a circuit, and produce a functioning machine/device to particular specifications.

The practicum serves as a midterm checkpoint to ensure that you have gotten a reasonable technical foundation. There is a retest offered for students who need it because of poor performance on the miderm.

Academic integrity

This is not a class, and IDeATe’s Phys Comp Lab is not an environment, where you are expected to write every line of your own code. We gratefully stand on the shoulders of giants and also regular-sized heroes who share interesting projects on Instructables, or Github, or their blogs. You are expected to incorporate ideas, hardware/electronics designs, and even verbatim software fragments from other sources. This isn’t considered plaigirism in this class if: 1) you properly cite sources, and 2) you don’t simply make a wholesale reproduction of somebody else’s project but instead use their work as a jumping-off point. If you do plaigiarize, however, you can expect a serious response, including a major grade penalty and referral to the University disciplinary structure.

If you’re not sure if you’re borrowing too much from somebody else, or you don’t know how to credit the work you’re borrowing from, please discuss it with us.

Grading scheme

As noted above, more than two unexcused absences (or more than six unexcused latenesses, since three latenesses make an absence) will lower a student’s final grade by 3 points. Each of the projects, and practicum, have their own grade breakdowns; see the relevant project pages for those details.

  • 10% Project 1
  • 25% Project 2
  • 25% Practicum exam
  • 60% Final project:
    • 20% Final documentation
    • 15% Final crit and presentation
    • 5% Community/home/etc. meeting documentation
    • 5% “Behaves-like” prototype process documentation
    • 5% “Behaves-like” prototype crit and presentation

But really

All of the structure provided by the rules and grades and submission requirements is there partly because we’re operating in an academic environment that requires that I evaluate you as fairly as I can with a grade at the end of the semester, and partly because a bit of structure helps us thrive.

I hope you’re taking this class because you’re interested in learning something new and useful. I’m teaching it because I sincerely believe that the ability and confidence to use these technological tools can be transformative—and that it’s good to work towards a world in which as many people as possible are empowered to solve their own problems in creative ways, build interesting things, and help enrich our shared experience.