Yeseul Song

Fall 2025

Class Times

Tues 09:30am to 12:00pm in 370 Jay St, Room 408

Instructor’s Contact

Yeseul Song
Location: South Faculty Office
Email: yeseul.song@nyu.edu
My work: yeseul.com / @yeseulsong_
Office Hours
Class Google Drive (All necessary files will be shared here.)

Class Blogs

⭐️⭐️⭐️ Add your blogs and see others’ HERE! (Sign-in with NYU account)

  • Please add your name and blog link to the spreadsheet. You can add other information too, as long as you feel comfortable with it. Please set up a category/menu for this class and submit the link for that category, not to your whole blog!
  • This is where I’ll look at your assignments to give feedback and consider in designing each session. Other peers might see your blog and exchange information and experience, which I encourage.
  • At the end of the semester, I’ll make this spreadsheet private.

Yeseul’s Message

🧶 I’d love for you to consider Physical Computing as your “craft”—I want you to build physical relationship and embodiment with Physical Computing, as well as an intellectual relationship (embodied learning). That’s where intuition and imagination starts. As an inspiration, circuit building itself can be a beautiful act. See Mohit Bhoite’s circuit sculpture making time-lapse.

⏳ I want you to take time and appreciate the process as much as (if not more) the outcomes. Learning physical computing is like building muscles by doing regular exercise. I hope you’re find the exercise to be fun and enjoyable. See how Slow Dancing aesthetically captures the process of getting to a posture.

📝 Document very well. It’s a strong and impactful communication tool. Also an excellent learning tool that lets you digest what you did! Try to develop your documentation style. The documentation itself can be a piece of work, for example, Music Board. More documentation references here.

🎈 Class time is where we try to float a big ballon together in the air, like Aeroscne. I need all of you to contribute to this floating, from your own corner. We need your FULL ATTENTION AND PRESENCE. Do not hide behind your laptop or going into your own rabbit hole during the class time. Cherish each moment and contribute.

Learning Support

Your Arduino

Arduino Nano IoT 33 Pinouts

Class Notes

Project Planning
Motor
Playtesting Prep
  • Prepare a few questions you want to ask
  • Plan how to document (taking notes, taking videos with consent, lay out paper for writing, etc.)

1. What do you want to “test?”

  • Invitation/Affordance: If people know what to do. How much guidance is needed?
  • Engagement: How long do people engage with it? Do they complete the flow that you intended?
  • Emotions: How do people respond to it? What do people feel during/after the interaction? 
  • Learning: What do they learn from it, if you intended any learning?
  • Errors: What type of errors happen during the interaction process? When errors happen, can they recover from it by themselves? 
  • After-experience Conversation: What do people think or talk about after the experience?
  • Pain points (in your making process): Is there any design or technical decisions you’re trying to make but unsure? Your “testers” might be able to help with it!
  • Warnings: Are there any safety or accessibility concerns that people need to know about before their testing.

2. For each, how will you test? Here are some methods you could consider:

3. Scenario

  • Review your questions and testing methods, put them together as a scenario by writing it down or illustrate it. Avoid giving a long instruction or description about your project before people start interacting with it. It might also be a good idea to just watch people what they do with it without any prior comments from you.

4. Supplements

  • Anything you need to set up the stage for people to try your project? For example, posters, illustrated instructions, titles, warnings, etc. If so, prepare them for an efficient communication of your project.

David Rios

Class Info

Tuesday 9:30am to 12:00pm in 370 Jay St, Room 410
Instructor Email: rios@nyu.edu
Office Hours Calendar link (If times are unavailable or do not work for your schedule please email ! )

Class Blogs

Add your name and blog URL to this spreadsheet

Weekly Resident Workshops

P-comp:
Mondays 12:30pm – 2pm
Thursdays 1:30pm – 3pm
@ ITP Shop / White Tables Near Shop

P-comp Sessions: 
Mondays 12:30pm - 2pm
Thursdays 1:30pm - 3pm
Hosted by the residents: Andre, Octavio, Tobi, Christina

Fabrication:
TBD

ICM:
TBD @TBD
TBD @TBD

Class Notes

Class 01 – Intro

Tips for using this site:

Tips adopted and amended from Jeff Feddersen:

With the ITP site, we’ve tried to do two things:

  1. Provide a week-by-week syllabus for the semester that takes you through the physical computing material in a logical progression. Each week has clear tasks, assignments for the following week, and links to labs, write-ups, and videos that support or explain the current material. Follow along here and you’ll be fine. A more concise table view can also be found here
  2. Provide an organized set of materials covering the core physical computing topics, to serve as a first resource for any questions you may have as you study the subject. These live under the Topics, Videos, Resources, and Labs tabs. These materials are also linked to from the syllabus, but here they’re organized by subject matter, whereas the week-by-week syllabus is chronological. Many of these resources are also not assigned or covered in labs so there are plenty of extras that are intended to help as you need it, or provide a starting point for something you may want to use later.

Doing the labs:

  1. Please make sure to budget enough time to read through each lab before plugging things in. Read everything first without trying to follow along. Then re-read and follow the appropriate steps with your kit and code in front of you.
  2. Class is flipped so the idea is to do the labs, write down any questions and bring those questions to class. We will discuss an review in class before moving to new content. 
  3. If you are having a lot of success with the labs and have no questions, try to figure out next steps eg”How can the lab be applied creatively or taken further?”. Apply what you learned to a mini project or question. Questions can be creative or technical.
  4. Bring your kits to class.  We will often do things in class and use parts from the shop
  5. There are parts in the labs that are not in the kits!  These parts are in the Yellow bins in the shop. 
  6. I recommend doing your labs at ITP, we have a lot of resources and things that are hard to find in the outside world.
  7. Make sure you know what you need for the labs if you are not doing homework at ITP
  8. Talk to Adrian at the front desk to get a red bin.  These are used to store things on the floor Adrian can help you get a red bin and a locker if you want one. You can also email him am13084@nyu.edu

Arduino References

Pin out diagram of the Arduino Nano 33 IoT
Labelled Pin out diagram of the Arduino Nano 33 IoT

Windows Driver Installation for Arduino

Resources:

Ordering parts and Suppliers
How to read a schematic
Resistor Calculator

Pedro Oliveira

Pedro Oliveira
pedro.itp(at)nyu.edu
Office hours
NYU ITP, Fall 2025
TUE 12:20pm to 2:50pm / 370 Jay St, Room 411

Class Links

Useful Links

Arduino NANO 33 IoT Diagram

How to Use the Website

The ITP Pcomp website has a wealth of information that is organized in 3 ways:

  1. The Week-to-Week gives a chronological run down of all the subject matter that will be covered as we move through the semester, as well as assignments and labs that you must do on your own.
  2. The Lessons, Videos, and Labs pages covers a lot of the same information, but organized by subject matter and in different formats.
  3. The Resources section contains information that are useful for physical computing in general, like suppliers, links to other useful sites, recommended tools and parts to get started, and more.

Blogs and Documentation

Document your progress in the class online in a regular blog as you go. At a minimum, you should summarize any insights and questions you have from each week’s lab assignments, and document your production projects and technical research thoroughly. You can find guidelines for good documentation, and several examples, on the Journals & Documentation page.

Setup your blog and add the link to this spreadsheet, please. (You will need to log in with your NYU account).

Class Notes

(Here is where you will find the class Notes)


Class 02

Electricity and components:

Class 03

Digital Input and Digital Output

// OUTPUT / INPUT
pinMode(13, OUTPUT);
pinMode(2, INPUT);

// Write / Read
digitalWrite(13, HIGH);
digitalRead(2);

Digital IO Examples:

Class 04

Analog Input and “Analog Output” (PWM)

// You do not need to call pinMode() to set the pin as an Analog Input or Analog Output(PWM).

// Write / Read
analogWrite(9, 150);  // ~PWM Pin  (Output)
analogRead(A0);       // Analog Pin (Input)

Analog IO Examples:

Tone Example:

Class 05
  • Soldering by Adafruit: Link
  • Connectors by Sparkfun: Link
  • Connectors & Enclosures by David Rios: Link
Class 06

Examples:

Class 07

For week 8:

  1. Document your Midterm project and update on your blog
  2. Upload the feedback to this [link]
Class 08

Serial Communication

// Sets the data rate in bits per second (baud) for serial data transmission. For communicating with Serial Monitor, make sure to use one of the baud rates listed in the menu at the bottom right corner of its screen. You can, however, specify other rates - for example, to communicate over pins 0 and 1 with a component that requires a particular baudrate.

Serial.begin(9600); 

// Writes binary data to the serial port. This data is sent as a byte or series of bytes; to send the characters representing the digits of a number use the print() function instead.

Serial.write(45);

// Prints data to the serial port as human-readable ASCII text. This command can take many forms. Numbers are printed using an ASCII character for each digit. Floats are similarly printed as ASCII digits, defaulting to two decimal places. Bytes are sent as a single character. Characters and strings are sent as is

Serial.print('A');

// Prints data to the serial port as human-readable ASCII text followed by a carriage return character (ASCII 13, or '\r') and a newline character (ASCII 10, or '\n'). This command takes the same forms as Serial.print().

Serial.println("Hello");

// Reads incoming serial data.

Serial.read();

Serial Communication Examples:

Class 09

Serial Communication

Arduino NANO RX TX Diagram
// UART is the communication protocol we use to communicate the PC to the board through the USB cable. In some older boards, TX and RX pins are used for communication with the computer, which means connecting anything to these pins can interfere with that communication, including causing failed uploads to the board. This is not the case for the Nano or MKR families, since these ones have two separate channels, using Serial for the communication with the computer and Serial1 for the communication with any other device through UART.

// Serial through the USB cable
Serial.begin(9600);

// Serial through the pins RX and TX (Nano 33 IOT)
Serial1.begin(9600);
Class 10

Final Proposals [link]

Class 11

USB – HID

A note from Tom: “All Arduinos appear to your personal computer’s operating system as an asynchronous serial port, sometimes called a COM port or Universal Asyncronous Receiver-Trasmitter (UART). This is its USB profile, and when you plug it into your computer, the operating system notes that profile and adds it to the list of USB devices. When you program an Arduino to behave as an HID device, you’re giving it an additional USB profile.

When you include the Keyboard library in a sketch, your board’s serial port number will change. For example, on MacOS, if the port number is /dev/cu.usbmodem14101, then adding the Keyboard library will change it to /dev/cu.usbmodem14102. Versions of the Arduino IDE from 1.8.13 and higher will automatically adjust the serial port selected when you do this, but earlier versions won’t, and other applications using the serial port won’t, so you might need to make the adjustment yourself.”

Danny Rozin

Fall 2025

QR code for  this page

Class Times

Section 6: Tues 09:30am to 12:00pm in 370 Jay St, Room 413
Section 7: Tues 3:20pm to 5:50pm in 370 Jay St, Room 413

ITP Physcomp weekly syllabus
ITP Physcomp syllabus with all weeks chart summary

Contact

Book office hours with me on my calendar. I will schedule regular office hour appointment slots which you can book automatically once the semester starts. You’ll need to sign in with your NYU login to see it.

Feel free to email me at danny.rozin@nyu.edu if you have any questions or things you want to talk about.

Class Blogs

Morning class- add your blog URL here
Afternoon class – add your blog URL here
(Sign-in with NYU account)

First class

slides about interaction

my work

Fantasy Device – As a class, we’ll make a list of fantasy devices; things that don’t exist, but that we wish did. For today, we’ll ignore technical feasibility and concentrate on how you’d operate these devices if they did exist. We’ll divide into groups of 3. Pick a fantasy device from the list. Design/mockup a control interface for this device and demonstrate it in­ class. Try to think physically and avoid too much screen controls, speech and direct mind control…

It is sometimes useful to think in terms of WH questions and try to answer them in your design:

WHO? WHEN? WHERE? WHAT?

Lets take an example, A popular fantasy device in movies and books is a time machine. In movies and TV, the production has to imagine what these devices look like and how they are controlled:

“Back to the future” movie:

Time Machine control panel
Time Machine control panel
Time Machine in "Back to the future" movie
Time Machine in “Back to the future” movie

So thinking about the WH questions:

WHAT is it ? – A car.
WHO gets to go ? – anyone in the car.
WHERE does it take you ? Set in the control panel.
WHEN does it activate ? When the car reaches 80 MPS.

Stewie from “Family Guy” time machine:

Stewey's time machine
Stewie’s time machine
Stewey's time machine cabinet
Stewie’s time machine cabinet
Stewey's time machine control panel
Stewie’s time machine control panel

Here the designers decided the machine is a cabinet, but they also added a disc that goes with Stewie and is used to get back:

WHAT? – A cabinet and a disc
WHO gets to go? Anyone in the cabinet or on the disc.
WHEN does it activate ? Not sure, but there is a big red button…
WHERE does it take you? There is a control panel, note that the control seems to be relative, so you can go forwards and backwards, not absolute like in “Back to the future”

“Spongebob Squarepants” time machine:

https://www.youtube.com/watch?v=mJZXCBLbNkU
video of Spongebob Squarepants episode – Time machine at 2:20

Here the machine is the freezer from the Crusty Crab, note that the whole freezer travels through time and it is ripped from it’s surroundings

WHAT is it ? A freezer.
WHO gets to go ? Whoever is in the freezer.
WHERE does it go? Hard to say, looks like two levers and no display.
WHEN does it activate? Hard to say, but it has some buttons.

Jeff Feddersen

Fall 2025

Tuesdays, 12:20pm to 2:50pm in 370 Jay St, Room 413

Important Scheduling Note: Due to a conflict, Class 4, scheduled for September 23rd, will be rescheduled to MONDAY September 22nd. Exact time TBD.

Welcome

Welcome! I’m very excited to be teaching Physical Computing again this year. It’s material I love and use a lot. I created and teach two other courses in the Physical Computing Area: Energy and Time. I’m curious about every aspect of how things are made – how materials can be shaped into useful and beautiful forms, how sensors can perceive the world, how code can be crafted to run on processors and affect the world.

Gif from last years intro video.
Me in my workshop surrounded by pcomp stuff.

Recently there’s been an explosion in tools available to beginners for embedding computation into just about any project imaginable. It can be a bit overwhelming – electronics! programming! so many boards to choose from! – but this course lays a foundation for you to build amazing things now and continue developing creative and technical skills over a lifetime.

AI

Another very new and rapidly changing factor in our field is Artificial Intelligence. I began studying Computer Science during the “Second AI Winter”, when progress in the field seemed to stall. But we are all familiar with the unprecedented pace of AI today, and recent (as of 2025) model advances have made LLMs amazing tools tool for writing code, and even designing physical objects. (Pause a moment to consider that these are emergent abilities, often discovered after the fact, not “built-in” by design.) AI can be an powerful learning guide and creative tool, and at the same time it can create very difficult to solve problems when learning a new field and trying to build things that work in the real world. Everyone – you as students, me, industry pros, everyone – is learning right now how to harness these new capabilities and handle these problems. 

My plan this year is to remain open to AI. It’s not going away. There will be good and bad ways to use it. In preparation for this year’s class, I’ve been trying to put myself in the mindset of a student to see how tools like Gemini, Claude, and ChatGPT can help understand the material of this course. I’ve asked models basic questions about electronics, requested explanations of code, and even given open-ended prompts to build passable midterms or finals for this class. The results are fascinating! Often helpful, sometimes astoundingly so; occasionally confusing and downright frustrating. Even sometimes – dangerous. But with enough potential that I’ll continue to explore and share the results as we work together this semester.

I also have so many things I still want to learn – new boards I haven’t had time to program yet, new IDEs and development tools I want to add to my skill set, let alone vague project ideas I want help moving forward – and I’m seeing how AI can assist, very much as you might during your time at ITP. 

If you are coming to this class as a first-time programmer, I’ve always felt that PCOMP is a great way to learn coding. It’s so fun to see what you write come to life in a real object that is running just your code. I think PCOMP will be a great way to engage AI, too, because there is an immediate, testable ground truth – does the code run? Does the circuit work? 

AI can too easily replace deep study with easy answers, short circuiting our learning. And I’m wary – and puzzled, excited, thrilled – about what it will mean to “be creative” in an age where machines can do things that mimic art. I’m so glad to be working with you this semester to find ways to accelerate our learning and deepen our understanding. Our task is to learn and build while preserving the core, human part of our creative practice, using tools that will no doubt be different and more powerful at the end of our 14 weeks together than at the start. This is an amazing time to be studying creative technology! 

3 AI rules for this class:

  • Anything generated with AI must be labeled as such.
  • Link to logs of the full chat/context that generated the result so the full process is visible.
  • I won’t debug your broken AI code. AI can generate things much faster than you or I can read them. If you use the tools to make a mess, its on you to clean it up before you start asking me to help. 

And one AI recommendation: Don’t outsource your creative essence to a machine. I want to see *you* in your work.

Contact

This is my NYU office hours calendar. You’ll need to sign in with your NYU login to see it. I will schedule regular office hour appointment slots which you can book automatically once the semester starts.

My email: jeff@fddrsn.net, jeff.feddersen@nyu.edu (or jf543@nyu.edu)

Outside of office hours, email me and we can discuss issues and find a time to connect if necessary. For Fall 2025, I teach at ITP Tuesdays and Thursdays and have the roll of Production Mentor. I will have a desk space in the North area, and I’m happy to talk when I’m at ITP. I’m also glad to find times to connect over video outside those days or scheduled office hours. That said, I don’t work full time at NYU, and try to keep “normal” business hours balanced with other work and life.

For more support, the residents and other professors keep office hours as well, here; and watch for the weekly resident pcomp support sessions soon.

Class Blogs

You will document your work in this class online, typically through a blog, Notion, or similar. Please add a link to your documentation site to our shared class spreadsheet before Class 2. Note – set up a category/menu for this class and submit the link for that category, not to your whole blog.

Useful links

Pin out for the Nano 33 IoT
Pin out for the Nano 33 IoT

A note on how to use this site

There’s a lot, lot! of information at itp.nyu.edu/physcomp. Then there’s the whole rest of the internet, starting with Arduino HQ, going on to great sites like learn.adafruit.com and learn.sparkfun.com, not to mention infinite how-tos on YouTube (even Vimeo), data sheets for every component ever made, etc… It can get overwhelming.

With the ITP site, we’ve tried to do two things:

  1. Provide a week-by-week syllabus for the semester that takes you through the physical computing material in a logical progression. Each week has clear tasks, assignments for the following week, and links to labs, write-ups, and videos that support or explain the current material. Follow along here and you’ll be fine.
  2. Provide an organized set of materials covering the core physical computing topics, to serve as a first resource for any questions you may have as you study the subject. These live under the TopicsVideosResources, and Labs tabs. These materials are also linked to from the syllabus, but here they’re organized by subject matter, whereas the week-by-week syllabus is chronological.

Class Notes

I’ll post slides and topics from class discussion here when they’re helpful.

Class 1

Slides

Cover slide showing many electronic devices and the course title, Physical Computing

Tom Igoe

Fall 2025

Tues 3:20pm to 5:50pm in 370 Jay St, Room 412

Contact

My email: tom.igoe@nyu.edu

My office hours calendar. You’ll need to sign in with your NYU login to do so. Generally my office hours are on Tuesday, Wednesday, and Thurday, during times when most first years have few or no classes. I may have to shift from week to week due to other school commitments, however. Watch the link above for the latest. Please book no more than one a week, so that I can serve you all as equally as possible.

Outside of office hours, I generally work from 9 AM to 5 PM NYC time Monday-Friday. I’m usually on campus Mon – Thurs, and work offsite Fridays. If you contact me outside of working hours, I’ll try to get back to you as soon as my next working time allows.

Schedule Note

This section will have a slightly different week-to-week schedule than the other classes. We will swap week 7 and week 8, as follows:

Week 7 (Tuesday 10/21/25) will follow the week 8 lesson plans, introducing synchronous serial communication. This class will be held on Zoom at this link.

Week 8 (Tuesday 10/28/25) will follow the week 7 lesson plans: you’ll show your midterm projects this day. This class will be held in person as usual.

Class Blogs

Please fill in your blog link and other details here. (requires NYU login). I learn a lot about your progress in this class from your blogs, and it improves the quality of the class. So post frequently. Please set up a category/menu for this class and submit the link for that category, not to your whole blog. I don’t have a Notion account, so if you use Notion, please publish the pages publicly so I can see them. NYU WordPress is another viable option.

Useful links

Pin out for the Nano 33 IoT

Assignments Fall 2023

Lab Assignments

Technical material will be demonstrated in class. Each week your instructor will explain a given topic, and demonstrate it by building circuits, code or fabrication techniques in class. You’ll follow along, stopping to ask questions or clarify what’s happening as we go. Then you’ll go home and try it yourself.

Once you’ve done a lab, make a project with the new techniques you learned.  It doesn’t need to be large or complex, just something simple that shows what you learned and how it can be used in everyday life. We’ll look at a few of these in each class. You’ll be expected to show at least one finished lab project in the first half of the semester in class. Your instructor will pick the lab presenters at random each week. If you make something and aren’t called upon in class, write it up on your blog, with pictures and video as appropriate.

Midterm Project

The goal of this assignment is to show that you can make a simple interactive system with physical controls, and that you can keep a user engaged with your system. This will be due in week 7.

Work in pairs on this assignment. Your instructor will assign the pairs.

This year, since the midterm falls near Halloween, the midterm project can have a Halloween theme. You could make a media controller that controls spooky projections, or a music player that controls the sound in a haunted house, or a tangible interface for things that go bump in the night.  You could also make a musical instrument that makes spooky music like you’d hear in a horror film. If you have another idea, discuss it with your instructor to see if it’s appropriate.

You don’t have to have a halloween theme if you don’t want to. On a technical level, though, your project should show that you understand digital input and output, analog input and output, serial communication, and good physical interaction design principles. On a conceptual level, your project should help people to enjoy whatever setting it is designed for. If it is a Halloween party, it would have just enough surprises to make it fun, with no chance for injury or psychic trauma.

Consider the  behavior of the thing that the user will see, hear, or feel, and choose sensors that let you create that kind of behavior. For example, if your system featured a bouncing ball that moved with a “squishy” feeling, make sure the physical control has a similar feel. You might get this by embedding force sensors in foam, or attaching pressure sensors to a balloon. If your animation has a sharp feeling to it, you might need sensors that have a precise, sharp feel, such as pushbuttons with a good solid “click”.

If there is more than one parameter to be controlled, you will need to send data from multiple sensors to control each parameter. For example, if you’re controlling an object that moves in three dimensions on the screen, you’ll need sensors that give you control over all three dimensions. You might use a 3-axis accelerometer, or three photosensors, or some other combination.

If you or your partner on this exercise are waiving Intro to Computational Media, that means you’re good enough programmers to create this project in a desktop programming environment on your own. Good for you! You’ll be expected to show your ability to do this.

Your midterm can be art or design project, but it can also be a research project. Consider these options:

  • Remix project: observe an existing system, analyze the system, and create your own version of it with your own context. For example, have you seen the game show, Jeopardy? Watch this video about the buzzer in the show. How does it work? If you were to design a buzzer system for a game show, what would that be? Any other examples?
  • Research project: you’re very welcome to deeper “research” any of the things that you were introduced to in this class. For example, compare 3 different knobs/sensors/etc and review them (e.g., Knob Feel). Or, you could thoroughly research a particular sensor to learn how it works technically (e.g., FSR) and create your own version of a sensor. Any other examples?
  • Sensors for environmental research
  • Sensors for scientific or medical research (e.g. build a reaction timer with an LED and a pushbutton)
  • Sensors in civic infrastructure (stop lights, cross walks)
  • Assistive technology devices
  • Tools (air quality device, temp/humidity monitor for a garden, etc)

Final Assignment

The goal of this assignment is to show that you can make a more fully detailed interactive system with physical controls, and that you can keep a user engaged with your system.

This will be due in the final week of class, but you will show progress on the project in each week from week 11 onward. Work in groups or alone, though groups are highly recommended.

Your final project will depend on you already having learned the skills from the whole semester. It should also demonstrate some of the following skills:

  • Microcontroller-to-PC communication, through one of the following:
  • Physical interaction design principles
    • Is the interface understandable to the participant with minimal instruction? Do they know what to do by looking at, listening to, or touching the interface?
    • Can someone besides you use it?
    • Can it be started, stopped, and reset without your intervention
    • Make the interaction iterative. In other words, it’s not just one action by the participant, but they read the interface, take action, read the device’s response, and take another action, in a continued loop.
  • Construction principles
    • Does it have a housing so that the controls, not the electronics, are exposed?

You can improve on one of your previous projects for this project, or you can start a new project. Don’t make the project larger in scope than the midterm, though, as you won’t have time to complete it if it’s too large or complex a project.

Document your work thoroughly online as you go. Include details of all phases of the project. Include a project summary as well, explaining what the system you built is, what it does, and what purpose it’s intended to serve. Your summary should introduce the project.

Project Suggestions

Many students struggle with project ideas for midterm or final. Here are a few ideas to consider:

Combination Lock

A combination lock responds after the user performs a specific sequence of actions, like pressing buttons in a sequence, or turning a knob to a series of pre-determined positions in a sequence. For example, think about the typical hotel room safe. When it’s open, you close the door, enter a code, press the enter button, and the safe locks. When you enter the code a second time, the safe unlocks. Closing the door and entering a new code resets the lock. On some safes, you can simply press enter again to use the same code.

This is a good project for the midterm.

The simplest of combination locks typically use a sequence of four or five buttons. To make it work, you have to detect when the button changes its state from pressed to released, or vice versa.

Your combination lock doesn’t have to open a lock. It could turn on a light when the sequence is entered successfully, or play a tune on a speaker. It should be possible to reset the device once it’s done its task, however, like the example above. Your device doesn’t have to just use buttons, either. You can use any sequence of physical actions that you know know how to sense in order to activate your lock.

Musical Instrument (Tone)

Make a simple musical instrument. Your instrument should be able to control pitch and to start and stop a pitch. It does not have to control more than one pitch at a time.

This is a good project for the midterm.

Consider a few things in designing your instrument:

  • Do you want to play discrete notes (like a piano), or sliding pitches (like a theremin)? How do you program to achieve these effects?
  • Do you want to control the tempo and duration of a note?
  • Do you want the same physical action to set both the pitch and the velocity (volume) of a note?
  • Do you want to be able to play more than one note at a time (e.g. chords)?

All of these questions, and many more, will affect what sensors you use, how you read them, and how you design both the physical interface and the software.

Media Controller (Serial)

Make a music or video playback controller. Your controller should be able to start, stop, and pause the playback of a media file, to fast-forward, to rewind, and to control the volume.

You can make this controller and the media player in p5.js and control it using asynchronous serial communication, or you can control it using Keyboard and Mouse controls.

This is a good project to get comfortable with asynchronous serial communication.

Game Controller (Serial)

Make a game controller. The most minimal controllers have very few controls. Consider WASD controllers, for example, in which the keys W, A S, and D control 2-dimensional movement on a screen. Or joystick controllers, where a 2-axis joystick and a pushbutton support all the action onscreen. The fun of a good controller is when you can perform complex behaviors with a limited amount of control.

Make a game in p5.js. or use an existing game like Pong.

Your controls should be arranged so that the player can watch the screen, not concentrate on the controls.

Game Controller (USB HID)

Make a game controller. The most minimal controllers have very few controls. Consider WASD controllers, for example, in which the keys W, A S, and D control 2-dimensional movement on a screen. Or joystick controllers, where a 2-axis joystick and a pushbutton support all the action onscreen. The fun of a good controller is when you can perform complex behaviors with a limited amount of control.

You do not have to make the game. You can use any pre-existing game that can be controlled by Mouse or Keyboard, since your microcontroller (Nano 33 IoT) can be programmed to operate as a mouse or keyboard. Consider browser-based games, like Lunar Lander. Here’s a different version of Lunar Lander. Consider controlling Zoom.

Your controls should be arranged so that the player can watch the screen, not concentrate on the controls.

This project will most likely rely on USB HID communication using the Keyboard or Mouse libraries. Take a look at the USB HID labs for ways to do it.

Musical Instrument (MIDI)

Make a MIDI musical instrument. Your instrument should be able to control pitch and volume and to start and stop a pitch. It should also be able to play chords; that is, to play multiple notes at the same time.

This project requires some understanding of music, and MIDI. Take a look at the MIDI labs for ways to do it.

Sensor Datalogger and Visualizer (SPI, I2C SD Card)

Capture a time lapse with sensors and create a visualization or sonification that represents the changes over time.

There are many changes that are too slow for us to observe without lots of patience, but which give us good insights when we see their patterns played back in a time-lapse. For example, a graph of changes in the light in a space can tell us about the seasonal changes, or the human activity. Temperature changes can tell us how crowded a place is at different times of days. Air quality sensor readings over time can give us a picture of when production activities happen in a shop. Motion sensors graphed over time can show us traffic patterns of a space over the course of a day.

Pick a sensor that can measure changes in an environment and write a program that will take readings on a set interval and record them. Then find a way to present the readings in order to show the patterns of change over time. That might be as simple as a graph of the change over time generated by a spreadsheet, or it might be a sound program that converts the changes to pitches and plays the changes musically over time. Pick a way to represent the data that lets the viewer read and understand the changes that they can’t see in real-time.

You could capture the data by :

  • Sending sensor data from an Arduino to your laptop over a few hours, and leaving the laptop alone (but secured).
  • Sending the sensor data as USB keystrokes to your laptop over time and saving them to a file (command-S is also a keystroke)
  • Recording data to a file on an SD card from an Arduino, then reading that data in p5.js

This project is a good project to combine asynchronous serial communication and data visualization in p5.js. Alternatively, it can be a good way to learn about reading and writing from files on an Arduino and in p5.js.

Gesture Controller (Bluetooth LE)

Make a controller that is controlled by large physical gestures. Examples:

  • a media control device that responds to swiping your hand left and right.
  • a game controller that responds to swordplay movements of your arm.
  • a musical controller that responds to particular hand signals.

Your controller should be able to start and stop a particular output repeatably and reliably. For example, if you’re making the media controller mentioned above, it should be able to play, pause, fast forward, rewind, and stop with distinct gestures.

Since you’re using large physical gestures, this project is most likely best done using Bluetooth LE communication to the personal computer, to avoid wires.

This is a more advanced version of the media controller or musical instrument projects, in that it requires you to read sensor data, understand the patterns of the changes in that data, and write a program to send control messages when those patterns are detected.

Pedro Oliveira Fall 2024

Pedro Oliveira
pedro.itp(at)nyu.edu
Office hours
NYU ITP, Fall 2024
TUE 3:20-5:50pm

Class Links

Useful Links

Arduino NANO 33 IoT Diagram

How to Use the Website

The ITP Pcomp website has a wealth of information that is organized in 3 ways:

  1. The Week-to-Week gives a chronological run down of all the subject matter that will be covered as we move through the semester, as well as assignments and labs that you must do on your own.
  2. The Lessons, Videos, and Labs pages covers a lot of the same information, but organized by subject matter and in different formats.
  3. The Resources section contains information that are useful for physical computing in general, like suppliers, links to other useful sites, recommended tools and parts to get started, and more.

Documentation

Document your progress in the class online in a regular blog as you go. At a minimum, you should summarize any insights and questions you have from each week’s lab assignments, and document your production projects and technical research thoroughly. You can find guidelines for good documentation, and several examples, on the Journals & Documentation page.

Setup your blog and add the link to this spreadsheet, please. (You will need to log in with your NYU account).

Class Notes

(Here is where you will find the class Notes)


Class 02

Electricity and components:

Class 03

Digital Input and Digital Output

// OUTPUT / INPUT
pinMode(13, OUTPUT);
pinMode(2, INPUT);

// Write / Read
digitalWrite(13, HIGH);
digitalRead(2);

Digital IO Examples:

Class 04

Analog Input and “Analog Output” (PWM)

// You do not need to call pinMode() to set the pin as an Analog Input or Analog Output(PWM).

// Write / Read
analogWrite(9, 150);  // ~PWM Pin  (Output)
analogRead(A0);       // Analog Pin (Input)

Analog IO Examples:

Tone Example:

Class 05
  • Soldering by Adafruit: Link
  • Connectors by Sparkfun: Link
  • Connectors & Enclosures by David Rios: Link
Class 06

Examples:

Class 07

For week 8:

  1. Document your Midterm project and update on your blog
  2. Upload the feedback to this [link]
Class 08

Serial Communication

// Sets the data rate in bits per second (baud) for serial data transmission. For communicating with Serial Monitor, make sure to use one of the baud rates listed in the menu at the bottom right corner of its screen. You can, however, specify other rates - for example, to communicate over pins 0 and 1 with a component that requires a particular baudrate.

Serial.begin(9600); 

// Writes binary data to the serial port. This data is sent as a byte or series of bytes; to send the characters representing the digits of a number use the print() function instead.

Serial.write(45);

// Prints data to the serial port as human-readable ASCII text. This command can take many forms. Numbers are printed using an ASCII character for each digit. Floats are similarly printed as ASCII digits, defaulting to two decimal places. Bytes are sent as a single character. Characters and strings are sent as is

Serial.print('A');

// Prints data to the serial port as human-readable ASCII text followed by a carriage return character (ASCII 13, or '\r') and a newline character (ASCII 10, or '\n'). This command takes the same forms as Serial.print().

Serial.println("Hello");

// Reads incoming serial data.

Serial.read();

Serial Communication Examples:

Class 09

Serial Communication

Arduino NANO RX TX Diagram
// UART is the communication protocol we use to communicate the PC to the board through the USB cable. In some older boards, TX and RX pins are used for communication with the computer, which means connecting anything to these pins can interfere with that communication, including causing failed uploads to the board. This is not the case for the Nano or MKR families, since these ones have two separate channels, using Serial for the communication with the computer and Serial1 for the communication with any other device through UART.

// Serial through the USB cable
Serial.begin(9600);

// Serial through the pins RX and TX (Nano 33 IOT)
Serial1.begin(9600);
Class 10

Final Proposals [link]

Class 11

USB – HID

A note from Tom: “All Arduinos appear to your personal computer’s operating system as an asynchronous serial port, sometimes called a COM port or Universal Asyncronous Receiver-Trasmitter (UART). This is its USB profile, and when you plug it into your computer, the operating system notes that profile and adds it to the list of USB devices. When you program an Arduino to behave as an HID device, you’re giving it an additional USB profile.

When you include the Keyboard library in a sketch, your board’s serial port number will change. For example, on MacOS, if the port number is /dev/cu.usbmodem14101, then adding the Keyboard library will change it to /dev/cu.usbmodem14102. Versions of the Arduino IDE from 1.8.13 and higher will automatically adjust the serial port selected when you do this, but earlier versions won’t, and other applications using the serial port won’t, so you might need to make the adjustment yourself.”

Class 12

In-class playtesting of final projects.

Class 13

In-class final user testing of final projects.

Class 14

Final Presentations.

ITP/IMA Physical Computing Workshops

Fall 2022

Finally picked up your PComp kit but have no idea what the parts do?

Confused about this whole Ohm’s Law nonsense?

Did you accidentally blow up all your Arduinos and class hasn’t even started yet?

ITP/IMA PComp Workshops are here to help!

PComp Workshops // Help Sessions are every Monday and Thursday at 3:30pm-5:00pm EST – starting this Thursday the 8th. All ITP and IMA students are welcome!

These sessions are a place for you to work on projects, ask any questions, get feedback, concept development, and do anything else PhysComp related. It’s also a great place to see what your peers are working on.

Haven’t done this week’s lab/homework yet? Do it at the workshop & get your questions answered at the same time 🙌

Location: Shop

RSVP here: https://forms.gle/VHNgNAGrkVqhfSAz7

These times don’t work for you? Let us know! Or book our office hours. (You can also try coding lab 😉)

Your PComp Residents,

Elias, Dave, Phil, Yony & Tora  

Week-to-Week Activity

This page provides a week-to-week breakdown of the class, with links to all related lessons, labs, and readings.

Week 1

Tuesday 09/02/25

In-Class Activity

Fantasy Device – As a class, we’ll make a list of fantasy devices; things that don’t exist, but that we wish did. For today, we’ll ignore technical feasibility and concentrate on how you’d operate these devices if they did exist. You’ll be divided into groups of 3. Pick a fantasy device from the list. Design a control interface for this device and demonstrate it in­ class.

Think about what a person has to see, hear, touch, etc. while operating the device. Think about what cues they need to understand the interface. Think about what parts of their body they need to have free, what gestures are best for triggering the device’s behaviors, and so forth. Build a mock­up of the controls from anything you can find nearby. At the end of class, one or two of you will act out the use of the device using your mock­up while the third person narrates.

Assignments for next class

You’ll get your parts kit in class today. This week, your main goal is to understand what those parts are, and to build your first circuits. The lessons and labs below will help with that.

Set up your Physical Computing Comp blog and e-mail the URL to your instructor.

Lessons

These two lessons give you background material for the labs you’ll do, which are linked below.

Related videos. These cover the same material as the lessons above:

Labs

These labs will give you a chance to practice what’s in the lessons. Try the labs below as soon as you have parts. Come to next class with questions:

Readings

The following readings provide some context for thinking about physical interaction design. You won’t be tested on whether you’ve read these, but your instructor may refer to these ideas in future class discussions.

Week 2

Tuesday 09/09/25

In-Class Activity

Since last week, you’ve built built some simple circuits and learned some of the terminology of electronics. We’ll discuss how it went for you, and answer any questions that came up.

We’ll also talk about documenting:

  • System diagrams (block diagrams of components in the system)
  • Circuit Drawings (Fritzing, circuits.io, Eagle, SVG, etc.)
  • Schematics (Fritzing, circuits.io, Eagle, SVG, etc.)

Assignments for next class

Go over the Electronics review questions. This self-graded quiz covers intro to electronics material. You should be able to answer all the questions in it by now. If there are any you’re not sure of, set up office hours with your instructor to discuss your understanding the electronics concepts.

Lessons

These lessons give you background material for the labs you’ll do, which are linked below. There are several, but they are all short and they build on each other.

Introduction to Microcontrollers:

Introduction to Programming Microcontrollers:

Related videos. These cover the same material as the lessons above:

Labs

These labs will give you a chance to practice what’s in the lessons. Try the labs below and come to next class with questions:

Readings

The following reading provides some context for thinking about physical interaction design. You won’t be quizzed on whether you’ve read this, but your instructor may refer to these ideas in future class discussions.

Week 3

Tuesday 09/16/25

In-Class Activity

Since last week, you’ve built your first microcontroller circuits and you’ve written programs to sense the physical world. We’ll discuss how it went for you, and answer any questions that came up.

Assignments for next class

  • Go over the Digital I/O review questions. This self-graded quiz covers the intro to microcontrollers and digital in and out. You should be able to answer all the questions in it by now. If there are any you’re not sure of, set up office hours with your instructor to discuss your understanding the electronics concepts.

Lessons

This lesson will give you background material for the labs you’ll do, which are linked below.

Analog Output: Pulse width modulation vs. frequency modulation

Related videos. These cover the same material as the lessons above:

Labs

These labs will give you a chance to practice what’s in the lessons. Try the labs below and come to next class with questions:

Readings

The following readings provide some context for thinking about physical interaction design. You won’t be quizzed on whether you’ve read these, but your instructor may refer to these ideas in future class discussions.

Week 4

Tuesday 09/23/25

In-Class Activity

Since last week, you’ve experimented with output from a microcontroller controlling light, sound, and movement. We’ll discuss how it went for you, and answer any questions that came up.

Assignments for Next Class

Go over the Analog In and Out review questions. This self-graded quiz covers the analog in and out labs. You should be able to answer all the questions in it by now. If there are any you’re not sure of, set up office hours with your instructor to discuss your understanding the electronics concepts.

Lessons

This week’s lesson is to go into more detail on learning about components. Review the following videos and data sheets and come to next class with questions:

Labs

This lab will give you a chance to practice working with sensors more.

Lab: Sensor Change Detection

Readings

There are no readings this week other than the videos and data sheets above.

Midterm

Come up with a concept for your midterm project. It’s due in week 7.

Week 5

Tuesday 09/30/25

In-Class Activity

Since last week, you’ve taken a look at a few electronic component data sheets and documentation. We’ll discuss, and answer any questions that came up. We’ll also talk some more about project planning and documents that are useful in making a project:

  • Project descriptions: how to describe your project for execution. How this differs from describing it conceptually
  • Drawings for project planning:
    • system diagrams
    • floor plans
    • elevations
  • Timelines
  • Bills of materials

Assignments for next class

Midterm

Start planning your midterm project. It’s due in week 7.

Lessons

These lessons will give you background material for the labs you’ll do, which are linked below.

Related Videos. These cover the same material as the notes above:

  • DC Motors (multiple videos)
  • The following videos cover additional material on stepper motors that we’ll cover next week, time permitting:
  • Stepper Motors (multiple videos)

Labs

These labs will give you a chance to practice working with motors and high-current loads.

Readings

The following reading provides some context for thinking about physical interaction design. You won’t be quizzed on whether you’ve read this, but your instructor may refer to these ideas in future class discussions.

Week 6

Tuesday 10/07/25

In-Class Activity

Since last week, you’ve learned about motors and high current loads. We’ll discuss the following, and answer any questions that came up.

Assignments For Next Class

Finish your midterm project. You will present it next week.

10/14/25. No Tuesday Classes

Monday classes meet on Tuesday this week. See the Fall ’25 Class Dates & Deadlines page on the ITP Help Site for details.

Week 7

Tuesday 10/21/25

Project Presentation: Midterm assignments

Present your midterm project. This will take the whole class period this week.

Assignments for next class

Lessons

These lessons will give you background material for the labs you’ll do, which are linked below.

Related Videos. These cover the same material as the notes above:

Labs

These labs will give you a chance to begin working with serial communication.

Reading

The following reading provides some context for thinking about physical interaction design. You won’t be quizzed on whether you’ve read this, but your instructor may refer to these ideas in future class discussions.

Sarah Hendren, All Technology is assistive 

Week 8

Tuesday 10/28/25

In-Class Activity

Since last week, you’ve learned about asynchronous serial communication between computers and microcontrollers. We’ll discuss, and answer any questions that came up.

Assignments for next class

Lessons

This week you’ll continue to practice serial communication in the lab exercise. The Serial Review Questions. This self-graded quiz covers the asynchronous serial labs. You should be able to answer all the questions in it by now. If there are any you’re not sure of, set up office hours with your instructor to discuss your understanding the electronics concepts.

Labs

This lab will introduce you to how to communicate using asynchronous serial communication in two directions.

Reading

The following reading provides some context for thinking about physical interaction design. You won’t be quizzed on whether you’ve read this, but your instructor may refer to these ideas in future class discussions.

Igoe, Making Interactive Art: Set the Stage, Then Shut Up and Listen

Week 9

Tuesday 11/04/25

In-Class Activity

Since last week, you’ve learned more about asynchronous serial communication between computers and microcontrollers. We’ll discuss, and answer any questions that came up.

Assignments for next class

Final Project

Come up with a concept for your final project.

Week 10

In-Class Activity

Tuesday 11/11/25

We’ll talk through everyone’s final project idea.

Lab Activities

Lessons

These lessons will give you background material for the labs you’ll do, which are linked below.

Related Videos. These cover the same material as the notes above:

Labs

These labs will give you practical experience with synchronous serial communication.

  • Synchronous serial labs – Try one of the SPI and one of the I2C labs. They all introduce I2C or SPI, just using different components.
  • Sensor labs (optional) – By now you’re ready to explore a wider range of sensors, many of which have I2C or SPI interfaces. The sensor labs section of this site offers more examples and information on how to use sensors. Read through them, and if you’re interested, see what sensors the shop has available to check out. Additionally, check out the sensor lesson notes.

Final Project

Continue working on your final project. Begin documenting the project if you haven’t already as well. Revisit the documentation page for more details on how to approach it. As a starting point, come up with a system diagram and a bill of materials.

Week 11

Tuesday 11/18/25

Since last week, you’ve learned about synchronous serial communication between computers and sensors and other electronic components. We’ll discuss, and answer any questions that came up.

Assignments for next class

Final Project

Prepare a playtest of your final project.

Week 12

Tuesday 11/25/25

In-Class Activity

In-class playtesting of final projects.

Assignments for next class

Final Project

Prepare an initial version of your final project.

Week 13

Tuesday 12/02/25

In-Class Activity

In-class final user testing of final projects.

Week 14

Tuesday 12/09/25

In-Class Activity

Final Presentations

You’ll present your final prototype in class, report on your test with participants, and if possible, and give some of your classmates the chance to interact with it. How long you have to present will depend on how many projects there are. We’ll divide the available class time such that each project gets equal time. In addition to the class critique, take written notes and hand them to your classmates after they present as well.