CS175 - Physical Computing - May 2012

What This Is

Arduino Uno
This is an Arduino. This little board will be our interface between the computer and the physical world.

Physical Computing means creating and using objects that interact with the physical world and the people around them; that bridge the gap between the digital world (computers) and the analog world (everything else); and that sense, act, move, measure, talk, and react... In this class, we will approach computing from this perspective, learning about the fundamentals of programming and electronics as we create. With physical computing, you can create interactive art pieces; make sensors and control experiments; have your houseplant post to Twitter when it needs water; and, overall, connect the physical world and the digital world in a variety of ways. No programming or electronics experience is necessary; we'll start from scratch and work in teams to build cool things.

How This Works

We'll be exploring physical computing through the use of the Arduino board, pictured above. This is a small electronic board with a "microcontroller" that can be programmed with software that you write to, basically, tell it what to do. It plugs into the USB port on any computer, and a variety of sensors, motors, lights, and other actuators can be plugged into it to provide the interface to the world and the people around it. In order to use it, we'll have to learn both about how to write that software (programming) and how to connect those sensors and actuators (electronics). In the end, you will have an incredibly versatile "bridge" between your computer and the physical world; it can do something entirely new just by writing some new software and plugging some different parts into it.

Details

When/Where: MTWRF 1:00-4:00 / CNS E201 and E203 (meet in E201 most days)

Instructor: Mark Liffiton
Office: CNS C207B   (2nd floor CNS, directly above entrance from quad)
Contact: Email is preferred (please start the subject with "CS175:").
For more pressing matters, my office # is 309-556-3535.

Textbook: Beginning Arduino Programming by Brian Evans
ISBN: 978-1430237778
Info/Purchase: Publisher's siteAmazonBarnes & Noble

Main course site: Moodle — links, assignments, announcements, and other online resources will be posted here.
Supplemental: Online Resources — a large collection of links to documentation, software, and learning resources relevant to all aspects of the course.

May Term

May term has several explicit goals, and this course hits many of them directly:

Course Mechanics

This course will be very fluid. As much as possible, it will be driven by you. Your interests and your ideas will shape a large part of your experience in the course, as well as that of the other students. Overall, the course will focus on projects and mastering concepts and skills. The following lays out some of how this will work.

Mastery

There will be no set exams in this course. Instead, a portion of your grade will be based on your demonstrating mastery of new concepts and skills. You will choose which you want to explore, and in what order, within some simple constraints. It will be up to you to explore, study, practice, potentially fail once or twice, and learn — with my help and that of the rest of the class — to reach a point where you can demonstrate to me that you've mastered a concept or skill. A portion of your grade will be based on how much you master within the term.

Final Projects

All of your learning and exploration will culminate in one final project of your own design, to be completed in teams of two (three or one alone will be considered). This will be a challenging project, drawing on several things you've learned in the course (and likely a few you'll still need to pick up on the way), that should result in something useful, beautiful, impressive, hilarious, clever, or perhaps some combination of all of these, but above all, it should be novel. You will present your projects to the rest of the class, and you will present them to the rest of the campus community in an exhibition on the last day of the term.

Assignments

A variety of small assignments will be given, especially early in the term, to provide some initial structure and guidance for exploring particular topics. These will vary widely, potentially involving finding something, making something, reading something, etc. Most will require submitting a simple write-up, and some will lead to short presentations to the class.

Assignments will be due at set times; no late submissions will be accepted. Your lowest assignment grade will be dropped.

Presentations

Sharing one's work with others is a huge part of the culture of physical computing, and the art of presenting a project or skill to others well worth developing in general. We will use classroom presentations to familiarize ourselves with the myriad projects that others have produced with physical computing, as well as to showcase our own work to each other. Everyone will present several times throughout the term, and the rest of us will provide developmental feedback. The exact form of the presentation is not set, but the overall goals will always be 1) clear, accurate presentation of relevant information, and 2) reaching the audience in a persuasive, motivating way.

Expectations

This will be an intensive, somewhat demanding course, but as long as you follow your interests and make it your own, it should be no problem. The catalog states that students should spend roughly ten to twelve hours per week on a course, including time spent in class. Given that the May term compresses each week into one day, you should expect to spend seven hours on this course for every day (three hours) spent in class. Spread over weekends, this will be roughly five hours per day outside of class. Much of that time can be spent in our classroom and lab space, working on projects and assignments there.

Given the nature of this course, your attendance and engagement will be critical. Attendance is required for every class session, and any planned absences need to be cleared with the instructor well beforehand. Furthermore, each student benefits from the engagement of all others in the class. To that end, constructive participation is needed, both in class and out, such as asking questions, answering those of other students, responding in the forum, sharing insights or useful/interesting resources with the class (posting in the forum, for example), and in many other ways.

Grading

The final grade will be based roughly on the following breakdown:

Final Project30%
Mastery25%
Assignments15%
Presentations10%
Attendance & Engagement20%

Sharing and Re-use (Academic Honesty)

As mentioned above, sharing is a huge part of the culture of physical computing. And it will play a crucial role in your learning. The web contains numerous explanations and examples of how to accomplish any particular thing with physical computing, especially with regards to code or electronic circuits. I expect and encourage you to make use of those resources. However, you need to be very careful to always do two things:

  1. Cite any sources you use. If you find some code that solves a problem you have, you can use it or adapt it for your own purposes, but you must cite the original work. It's a simple as giving credit where credit is due.
  2. Understand any sources you use. If you use something, understand it. "Copy, paste, and tweak things until it works" is nearly worthless. Even if you end up using some code nearly verbatim, don't move on until you know how and why it does what it does. You need to be able to demonstrate that understanding to me.

They're simple enough, so I don't expect any trouble, but violating either of those rules will result in a 0 on an assignment, project, etc. Failure to cite, and thus claiming work that is not your own, can result in further action. For details on the university's policies regarding academic honesty, please read the sections of the student handbook on conduct, cheating, and plagiarism here.

End-of-Syllabus Advice

Help each other. This is good advice for any course. By working out concepts with others or teaching someone about something you've already worked out yourself, you can greatly improve your understanding. Teaching or any other kind of back and forth will point out any gaps in your understanding, trust me; as a student, I learned a great deal and did well in many classes primarily because I helped others. In this course, helping each other is perhaps even more useful than normal, because the course is full of new kinds of ideas. Much of it will not be like anything you've done before. With everyone coming from a different background, each person in the class might have a valuable insight or perspective on a particular concept that can be shared with the rest. The work will also be very conducive to this sort of sharing; if you find a better way to do something, a new way to understand something, or a really great resource that helps with either, let the rest of us know! There is no competition here.