Make: A Hands-on Introduction to Physical Computing
Inspired by the Maker movement, this course provides a hands-on introduction to physical computing: techniques for sensing and responding to the physical world using computers. The main focus is on learning principles of electronic components and circuits, embedded programming, product design, and rapid prototyping through hands-on learning. The course will encourage and empower students to invent, design, and build practical hardware projects that can interact with the physical world.
Specific topics: introduction to basic electronics and circuit design, microcontroller programming using Arduinos, sensing and responding to the physical world, rapid prototyping techniques (such as 3D printing and laser cutting), soft circuits and wearable electronics. There will be in-class experiments, weekly homework/quizzes, discussion sections, a midterm, and a final project. This course has a required lab section.
Prerequisites: COMPSCI187 (or equivalent experience) and Basic Math Skills (R1). This course counts towards the CS lab science requirement. 4 credits.
Course Staff and Office Hours
- Lectures: TuThu 2:30pm-3:45pm @ COMPSCI 142
- Lab: Fri 9:05am-11:05am @ CMPSCI 142
- Instructor: Rui Wang (email@example.com)
- TA: Alyx Burns (firstname.lastname@example.org)
- Office Hours:
- Monday 4-5pm, LGRT 220 (Alyx)
- Tuesday 4-5pm, CS 270 (Rui)
- Wednesday noon-2pm, LGRT 220 (Alyx)
- Wednesday 11am-noon, CS 270 (Rui)
You should consult the UMass academic calendar to make sure you are aware of important dates and events. The following are the weekly topics that will be covered during this course.
Homework and Lab Reports
- Homework is generally due by each Thursday 11:59pm, submitted to Gradescope.
- Lab report following each week's lab is generally due by the next Monday 11:59pm, submitted to Gradescope.
The topics of each week's lectures are listed below. Lecture slides are all posted in Piazza.
- Week 1: Introduction and Basic Electronics. Topics: voltage, current, power, resistor, Ohm’s law, KCL and KVL laws, how to use a multimeter, battery, potentiometer, voltage divider, capacitor, how to use breadboard
- Week 2: More on Basic Electronics. Topics: capacitor charging, RC circuits, principles of capacitive sensing, switch, inductor, solenoid, relay, semiconductors, diode, LED, transistor, transistor applications.
- Week 3: Arduino Programming. Topics: introduction to Arduino programming, principles of digital input/output, analog input/output, principles of digital-analog conversion (ADC), Serial input/output.
- Week 4: More on Arduino Programming. Topics: sound theory, buzzer and tone generation, color theory, color LED strip and matrix, OLED display
- Week 5: Sensing the Physical World. Topics: principles of photoresistor and light sensor, thermistor and temperature sensor, microphone sensor, distance sensor, PIR motion sensor, tilt sensor, water sensor, accelerometer, DIY sensors.
- Week 6: Responding to the Physical world. Topics: motor, servo, muscle wire, heat wire, speaker.
- Week 7: Arduino projects. Topics: introducing several practical Arduino projects that combine sensors and actuators, such as night light (darkness-triggered light), temperature-triggered alarms, thermostat, automatic plant watering system, automatic garage door opener.
- Week 8: Circuit Design and Assembly Techniques. Topics: creating a simple circuit board using the EagleCAD software, printed circuit board, home PCB method, soldering, perf board, surface mount assembly (solder pasting, pick and place, reflow).
- Week 9: Project Pitching and Preparation. Topics: form project groups (2-person teams), provide example project topics, in-class presentation of project proposals. A fixed set of project topics are probably more suitable than open-topic projects.
- Week 10: Wireless Communication. Topics: principles of signal modulation, radio-frequency communication using RF transmitter and receiver, basics of WiFi communication using the ESP8266 microcontroller, writing a simple embedded webserver.
- Week 11: Fabrication and Rapid Prototyping Techniques. Topics: principles of 3D printing, designing 3D models using TinkerCad, constructive solid geometry (CSG), laser cutting, CNC, injection molding, vacuum forming.
- Week 12: Soft Circuits and Wearable Electronics. Topics: conductive thread and fabric, attaching electronics to fabrics, touch sensing, wearable circuits.
- Week 13: Project Advising and Additional Topics. Topics: advising students on their final projects, additional topics such as Raspberry Pi, Internet of Things (IoT).
All labs are on Fridays 9:05am-11:05am. Please check Piazza for the specific lab topic of each week.
This is no required textbook for the course, but there is a list of recommended books for reading:
- Learn Electronics with Arduino: An Illustrated Beginner's Guide: beginner's guide to physical computing using Arduino.
- Programming Arduino: Getting Started with Sketches (2nd edition): beginner's guide to programming Arduino.
- Beginning Arduino Programming: intro-level Arduino programming guide.
- Physical Computing: Sensing and Controlling the Physical World with Computers: intermediate-level introduction to Physical Computing (covers a good amount of sensing and controlling, but does not use Arduino).
- Practical Arduino: Cool Projects for Open Source Hardware: intermediate-level Arduino programming guide with practical projects.
- Practical Electronics for Inventors (4th edition): advanced-level and in-depth coverage of electronic components, circuit designs.
- Making Things Talk: advanced-level Arduino projects.
This course will use a number of web-based services. We will create accounts for you, but it is your responsibility to log in and check that everything has been set up correctly.
Piazza is an online course management system. It will be used as the main hub for communication in this course. Lecture slides, labs and solutions are all posted in Piazza. All questions and answers should also be posted in Piazza. You are responsible for visiting Piazza frequently to see updates, or subscribe to email notifications. Please check Piazza features to get an understanding of how to use it. Please observe the following guidelines:
- You should use Piazza to ask technical questions and get advice on projects. But you may not post assignment code or solutions to Piazza, either in questions or answers to others’ questions.
- If your post must contain code or solutions, make it a private post, which is only visible to the instructor and TA.
- Your question may already have been asked by someone. Before posting, make use of the search feature to see if your questions have already been answered. You should only post after thinking through the problem and clearly articulating your question.
- You are encouraged to help other students with answering questions.
The course staff (instructors and TAs) will monitor Piazza and answer your questions in a timely manner. If a question has already been answered in a previous post we may not respond to you right away (hence it’s important to learn to use the ‘search’ feature).
Moodle is used for tracking your grades only. Course materials are only posted in Piazza and not in Moodle.
Gradescope is used for managing and grading all submissions, including exam. Gradescope allows us to provide fast and accuracy feedback on your work, and allows the TA and grader to parallelize grading tasks and use a standard rubric for grading faireness. This also frees us from handing back papers in class! Regrading requests can be easily submitted and handled in Gradescope.
Every student will be given a toolbag to be used throughout the semester. The toolbag contains essential materials and supplies for the course, including circuit boards, cables, Arduinos, electronic components (e.g. resistors, capacitors, inductors, LEDs, batteries), basic tools (e.g. screwdrivers, tweezers, pliers). It is your responsibility to bring the toolbag to class and lab each time, and make sure you don't lose or damage it. If the toolbag is lost or damaged, you will be asked to cover its full cost.
Because the lectures and labs are taught in a classroom with no desktop computers, you must bring a laptop to each lecture and lab, in order to complete the Arduino programming exercises in class and lab. If you don't have a laptop, or your laptop stopped working, please contact the instructor immediately to arrange for a loaner laptop.
Lecture attendance and lab attendance are required. There will be in-class experiments and exercises every lecture. There will be several assignments, some written, some programming; weekly labs; one midterm and one final project.
- In-class exercises (5%)
- Homework (25%)
- Midterm (20%)
- Final project (25%)
- Labs (25%)
Late submissions for any assessment component will not be accepted, with the one exception noted below. It is your responsibility for maintaining your own schedule and being prompt with your submissions. We expect that you become familiar with the course submission software and verify that your submission has been properly uploaded. We will not accept late submissions due to lack of checking on this. We assume:
- You are an adult and have the ability to check and verify your work has been received properly.
- You are capable of using DropBox, Google Drive, or some other backup software to ensure that your work is not lost in the event of a computer failure.
- You have a back-up plan in place in the event that your computer fails or your Internet connection is unavailable. Make sure you have a plan B and C if your computer crashes or your Internet is unavailable. This is your responsibility.
To cope with unexpected situations truly beyond your control, we will drop your lowest assignment grade, lowest lab grade, and two lowest in-class exercise grades.
The University of Massachusetts Amherst is committed to providing an equal educational opportunity for all students. If you have a documented physical, psychological, or learning disability on file with Disability Services (DS), you may be eligible for reasonable academic accommodations to help you succeed in this course. If you have a documented disability that requires an accommodation, please notify me within the first two weeks of the semester so that we may make appropriate arrangements.
Academic Honesty Statement
Since the integrity of the academic enterprise of any institution of higher education requires honesty in scholarship and research, academic honesty is required of all students at the University of Massachusetts Amherst. Academic dishonesty is prohibited in all programs of the University. Academic dishonesty includes but is not limited to: cheating, fabrication, plagiarism, and facilitating dishonesty. Appropriate sanctions may be imposed on any student who has committed an act of academic dishonesty. Instructors should take reasonable steps to address academic misconduct. Any person who has reason to believe that a student has committed academic dishonesty should bring such information to the attention of the appropriate course instructor as soon as possible. Instances of academic dishonesty not related to a specific course should be brought to the attention of the appropriate department Head or Chair. Since students are expected to be familiar with this policy and the commonly accepted standards of academic integrity, ignorance of such standards is not normally sufficient evidence of lack of intent.
Programming assignments present specific academic honesty issues. Programming is a creative activity, but also one where collaboration is both possible and desired. Students may work together on programming projects as long as two principles are observed: submitted programs must be the individual’s own work with respect to presentation, and all sources of help other than course staff must be declared. Students may determine the essential ideas of a solution together, but should write the actual code separately. Copying and pasting another student’s code is a violation of academic honesty, and course staff will endeavor to detect this by any means including automated similarity analysis of submitted assignments.