1.1. Course Description

16-223: Introduction to Physical Computing
MW 9:30AM-11:30AM
Hunt Library A10 (IDeATe Physical Computing Lab)
Instructor: Dr. Garth Zeglin (garthz)
Prerequisites: none

Physical computing refers to the art and science of constructing systems that use a mix of software and physical hardware to sense and respond to the surrounding world. Such systems blend digital and physical processes into toys and gadgets, kinetic sculpture, tools, mobile instruments, interactive wearables, and more. This is a project-based course that deals with all aspects of collaborating to conceive, design, and develop projects with physical computing: the application, the artifact, the computer-aided design environment, and the physical prototyping facilities.

The course is organized around a series of practical hands-on pair exercises which introduce the fundamentals of circuits, embedded programming, sensor signal processing, simple mechanisms, actuation, and time-based behavior. A key objective is gaining an intuitive understanding of how information and energy move between the physical, electronic, and computational domains to create a desired behavior. The exercises provide essential skills for the collaborative projects which challenge students to not only consider how to make things, but also for whom we design, and why the making is worthwhile.

This course is part of the Integrative Design, Arts, and Technology program at Carnegie Mellon University and makes use of the IDeATe fabrication facilities and labs in the lower level of Hunt Library. The current course website is always at https://courses.ideate.cmu.edu/16-223. This course is an IDeATe Portal Course for entry into either of the IDeATe Intelligent Environments or Physical Computing programs.

1.2. Course Sections

Introduction to Physical Computing is offered in two sections. CFA/DC/TSB students can enroll under 16-223; CIT/MCS/SCS students can enroll in the 60-223 version of the course.

  • The 16-223 section trains students with a focus in art, design, performance, or business to approach physical computing as a study of systems theory expressed through the development of practical prototypes. The goal is an intuitive high-level understanding of the analysis of energetic and informational processes which span the physical, electronic, and algorithmic domains. The informal subtitle of the course is “How to think like an engineer” since many of the lessons are embedded in the thought processes of engineering: consideration of interfaces, boundaries, abstractions, representation, and systematic approaches to diagnosis. This is intended to provide analytic intellectual tools to complement and extend academic experience in conceptualization and narrative, while also teaching a host of practical techniques for successfully executing project ideas.
  • The 60-223 section trains students with a focus in computer science and engineering to approach physical computing from an art and design perspective. The goal is to helps students develop a culturally expansive, inclusive and critical perspective to projects, products and services that bring computation into the physical world. Since the students have a technical academic focus outside of IDeATe, this section offers complementary experiences that characterize training in the arts, design, architecture and drama: self-directed learning, critical making, performance and storytelling, discussion and critique.

1.3. Learning Objectives

Upon completion of this course the students will be able to:

  • effectively collaborate across disciplines
  • communicate with technical collaborators using precise language
  • participate in collaborative teams by negotiating common goals and coordinating roles
  • make effective use of standard hardware and software tools for physical computing
  • select and build basic sensor and actuator circuits for microcontrollers
  • apply elementary electrical theory to exploring and debugging simple circuits
  • program imperative and event-loop based software for real-time embedded control
  • partition system functionality between mechanism, electronic hardware, and software
  • develop physical computing solutions through an iterative research, design, and prototyping process
  • evaluate a system in the context of an end user application or experience

1.3.1. Teaching Philosophy

This course is an introduction to the IDeATe Physical Computing Program, using technology learning as a vehicle for exploring interdisciplinary thinking. It operates under the following principles:

Immersion. Language shapes thought; thinking clearly about engineering and computing requires precise use of language. The course emphasizes correct use of technical terminology from the start, even as the meaning incrementally becomes understood.

Experiential Learning. We learn by doing. The course emphasizes immediate application of theory into practical demonstration; it is the success and especially the failure of the experiment which creates a vivid understanding of the principles.

Cooperative Learning. We teach each other. Articulating an explanation develops and tests knowledge and hones the skill of knowing the bounds of one’s own knowledge. Sometimes we will teach each other incorrectly, but careful attention to further evidence will correct this over time.

Self-motivation. Students are responsible for their own progress. Wherever possible, the driving motivation will be a self-chosen goal, divided into manageable subproblems. The desire for the goal prompts autonomous exploration. If you ever find the course dull, that is an opportunity to reflect on what you are trying to achieve and choose a new objective.

Reflection and Writing. Understanding develops through reflection, and the best discipline for reflection is writing and drawing. Mere repetition of the examples does not build skill; it is the process of reflection which integrates experience into knowledge which can be applied to novel situations.

Collaboration. The aim of IDeATe is to train each student to be excellent in one area of technology or arts and be able to collaborate within diverse cohorts of technology and arts experts. Collaborative skill requires excellence in one’s own areas of expertise, an ability to translate ideas across disciplinary bounds, and a proficiency in negotiation and compromise.

1.3.2. Collaborative Work

This course relies on group work and group learning. Throughout the course, students will work in pairs or groups that are either assigned or self-selected Assigned groups are intended to give students practice with teamwork among unfamiliar collaborators, a common setting in the real world.

Members of small teams may have either fixed or fluid roles as long as each project responsibility is clearly assigned to a team member. When assuming a role, we expect each individual to fully assume the responsibilities of their selected role(s) for the project. Students are expected to reflect on their own successes and failures within each role and to develop a better understanding of how their own behavior can affect group dynamics and how group dynamics affect the development of a project.

We encourage experimentation with individual roles within each group. Each student is expected to occupy diverse roles over the course of the semester both within and outside their expertise.

Some important roles include the following:

  • Leading the overall development of the project. Responsibilities include leading the negotiation of a common objective, negotiating assigned roles and expectations for other group members, facilitating communication among group members, setting and maintaining and overall timeline for the project’s execution, and researching existing relevant work.
  • Leading development of an aspect of the project, including design, fabrication, testing, and iterative redesign. Responsibilities include researching relevant existing solutions, developing concepts which meet the objectives, producing sketches and diagrams to refine the implementation plan, determining and executing fabrication strategies, evaluating prototypes against the agreed objectives, finding solutions to problems, and modifying or refabricating as appropriate.
  • Documenting the project with photos, videos, and writing. Responsibilities include documenting the development process as well as the final outcome, and creating a well formatted document with text, images, and video describing the project’s goals, methodologies and results.
  • Teaching specific techniques or knowledge to teammates. This role is natural for students with advanced knowledge or experience with the activity who will gain the most by teaching and helping others instead of breezing through familiar territory. Responsibilities include assuring that all group members gain the necessary essential skills required for the project.

A person may flow naturally from one role to the next as projects are subdivided into subgoals, as long as an individual clearly takes responsibility for each element. Note that the documentation role is often best universally shared so that each person is continually documenting their own process, and then collaborating on final documentation at the end.

1.4. Grading Rubric

Everybody is assumed to start with an A in the course. If you do the work you will keep it, but failing to fulfill the expectations will cause you to drift downward.

Grading for this course is based on frequent low-stakes assessment. Each formal assignment is graded using a rubric which includes one or more of the following categories:

  • concept: clarity of the key idea, articulation of key principles and narrative, applicability to human or artistic needs, selection of appropriate aspects for proof-of-concept.
  • execution: translation of the concept into design, quality of the technical implementation.
  • documentation: quality of the reflection, clarity of the presentation, detail of the technical documentation.

Please note that project deadlines are strict as outlined in the Lateness Policy section.

Project reports must also adhere carefully to the requirements specified in the Final Project Reports section in order to achieve full documentation scores.

The total course grades are scored on a relative scale based on weighted point totals. The approximate total weighting is 60% for projects, 25% for the practicum exam, and 15% for technical exercises and demos. The full grade includes many categories:

  1. group project proposals
  2. group project milestones
  3. group project reports documenting full projects
  4. ideation exercises
  5. practical evaluation of lab and technical skills
  6. brief individual topical lectures
  7. individual peer-evaluation reports
  8. skills survey
  9. attendance

Grades provide only a rough metric for student feedback. The more nuanced and useful feedback comes from in-class verbal critiques, individual interviews, and written comments.

1.4.1. Practicum Examination

The engineering intensive phase concludes with an in-class practicum examination in which each student will be asked to demonstrate their individual knowledge and skills. Students will be required to pass this exam to advance to the project phase.

Details will be released in time.

1.4.2. Project Reports

Each assignment serves both learning and evaluative goals. Fulfilling the assignment is an essential step in the learning process, and the result also demonstrates learning success. Please take careful note of the requirements for each assignment: they represent a contract between student and instructor.

The objective of assigning reports is to encourage evaluative thinking throughout the process of development. Writing and sketching is much faster than physically building something, and writing the core of the report first is a great way to clarify a concept. It is highly recommended to consider the report requirements throughout your process, e.g., by taking in-process notes and photos, and fully drawing out designs. For full project reports, please be careful to observe the detailed specifications listed in Final Project Reports.