For Educators
TAC 348 is a four-unit, project-based course that introduces physical computing to students from a wide range of majors. The course assumes introductory programming experience, but no previous electronics or microcontroller experience.
The materials on this site are shared as an open educational resource. Educators are welcome to use or adapt individual lessons, assignments, reference guides, or the broader course sequence under the terms of the site’s Creative Commons license.
Course Approach
Students develop both hardware and software skills through a sequence of increasingly integrated projects. They begin with fundamental circuits and embedded programming, then work with sensors, motors, displays, wireless communication, cloud services, APIs, and user interfaces. The course concludes with an original physical device and interface.
The course emphasizes:
- Learning through frequent hands-on construction
- Connecting software concepts to physical behavior
- Communicating data between devices, cloud services, and interfaces
- Documenting circuits, code, and design decisions
- Considering accessibility when designing embedded devices
Learning Objectives
By the end of the course, students should be able to:
- Design a device using a microcontroller and electronic components
- Measure environmental conditions and send readings to a cloud platform
- Create physical effects using motors, lights, sound, and other actuators
- Build an interface that communicates with and controls a device
- Identify accessibility challenges and suggest design improvements
The complete objectives, outcomes, prerequisites, and policies are available in the current syllabus.
Course Structure
The public materials include:
- A week-by-week schedule connecting preparation, lectures, exercises, and assignments
- Lecture materials covering electronics, embedded C++, sensors, communication, and prototyping
- Assignments with requirements, diagrams, and build instructions
- Pre-lecture videos and readings
- A component-based technical reference library
- In-class code exercises
- Documentation for the custom course kit
Adapting the Materials
The materials can be used at several scales:
- Link to a single reference guide or lecture from another course
- Adapt an assignment to a different microcontroller or component set
- Use the weekly sequence as a starting point for a physical computing course
- Combine selected modules into an IoT, prototyping, wearable computing, or embedded systems course
The current implementation uses the Particle Photon 2 and Particle Workbench. Many concepts and activities can be adapted to Arduino-compatible or other embedded platforms, although code, pin assignments, and cloud integrations will require revision.
Licensing and Attribution
Unless otherwise noted, the original course materials are licensed under CC BY-NC-SA 4.0. Some pages also include third-party images, code, or resources governed by their own licenses.
A suggested attribution is:
Rob Parke, TAC 348: Making Smart Devices, University of Southern California, https://reparke.github.io/TAC348-Making-Smart-Devices/, CC BY-NC-SA 4.0.
Share Your Use
If you use or adapt these materials, please use the contact and feedback form to share what you used and how it worked. Reports of classroom use, corrections, adaptations, and suggestions are welcome.