Main Page

From CS 160 Fall 2012

Jump to: navigation, search

CS160 Home Page

Course Control Number: 26517

4 Credits. Three hours of lecture per week. Prerequisites: upper division standing.


CS 160 is an introduction to Human Computer Interaction (HCI). It's about designing, prototyping, and evaluating user interfaces. You will work with a group of other students in this project-based course. Your team's semester-long project will be proposed by your group. Project design follows a human-centered process, and the design will be carefully tailored to the needs of your intended users.

In contrast to most of the other CS classes at Berkeley, CS160 does not focus on particular algorithmic techniques or computer technologies. Instead, you will make use of technology to develop your applications, and you will acquire some expertise in the development environment you choose. The focus of the course is on developing a broad set of skills needed for user-centered design. These skills include ideation, needs assessment, communication, rapid prototyping, algorithmic implementation and evaluation.

Course Focus: This semester's focus is web interfaces. i.e. interfaces and services delivered by web browsers. The growth of cloud computing and rich content standards such as HTML 5 make it possible to provide very effective and satisfying experiences on any client computer. The experience doesn't require installing an app locally, and allows the experience to persist across both fixed and mobile client devices.


Midterm Histogram here here

10/16/12 Sample Midterms are here

9/13/12 In case you havent found it already, the course Piazza is here: It includes a thread for finding a partner for pair programming.

9/10/12 Project Groups are up here: Project groups. You should have received an email to you and your partners with contact information.


Get readings and post your comments to the discussion page for lecture. (follow link from lecture title)

8/27/2012: Introduction [Slides ]

Assignments (due August 29): Create a Wiki Account, Course Petition

8/29/2012: The Design Cycle and Brainstorming [Slides ] [ Readings ]

Due: Create a Wiki Account, Course Petition
Assignment (due before class on Sept 5): Individual Project Proposal

9/5/2012: Task Analysis and Contextual Inquiry [Slides ] [ Readings ]

Due: Individual Project Proposal
Assignment (due before class on Sept 19): Pair Programming I

9/10/2012: Sketching, Storyboarding, and Critique [Slides] [ Readings ]

Assignment (due before class on 9/17/2012): Group Brainstorm

9/12/2012: In-Class Group Brainstorm [Slides][ Readings ]

9/17/2012: Conceptual Models [Slides] [ Readings ]

Due (before class): Group Brainstorm
Assignment (due before class on 10/1/2012): Contextual Inquiry and Task Analysis

9/19/2012: Usability Inspection Methods [Slides] [ Readings ]

Due: Pair Programming I

9/24/2012: Prototyping [Slides] [ Readings ]

Assignment (due before class on Oct 8): Pair Programming II

9/26/2012: Web Programming Systems [Slides] [ Readings ]

10/1/2012: Quantitative Evaluation [Slides] [ Readings ]

Due (before class): Contextual Inquiry and Task Analysis
Assignment (due before class on 10/15/2012): Low-Fidelity Prototype

10/3/2012: Qualitative Evaluation [Slides] [ Readings ]

10/8/2012: Web Application Design [Slides] [ Readings ]

10/10/2012: Human Information Processing [Slides ] [ Readings ]

10/15/2012: Interactive Programming [Slides] [ Readings ]

Due (before class): Low-Fidelity Prototype
Assignment (due on 11/5/2012): Interactive Prototype
Due: Pair Programming II
Assignment (due before class on Oct 29): Pair Programming III

10/17/2012: Input Devices [Slides] [ Readings ]

10/22/2012: Midterm Review [Slides ] - includes sample midterms

10/24/2012: Midterm Exam

10/29/2012: Graphic and Experience Design [Slides ] [ Readings ]

Due: Pair Programming III

10/31/2012: Continuing Graphic and Experience Design [Slides ][ Readings ]

11/5/2012: Interactive Prototype Presentations

Due (before class): Interactive Prototype

11/7/2012: Interactive Prototype Presentations

11/12/2012: Holiday

11/14/2012: MMOs and Social Software [Slides ] [ Readings ]

Assignment (due before class on 11/28/2012): Pilot Usability Study

11/19/2012: Crowds and Crowdsourcing [Slides ] [ Readings ]

11/21/2012: UI Design Patterns [ Readings ][Slides ]

Assignment (due on 12/05/12): Final Presentation and Poster
Assignment (due on 12/05/12): Final Report

11/26/2012: Tangible Interfaces [Slides ]

11/28/2012: Visualization [Slides ]

Due (before class): Pilot Usability Study

12/5/2012 Final Presentations 1-4pm in 306 Soda

Due: Final Report

12/6/2012 Poster Session 6th Floor Soda Atrium, 2-3pm + (optional) extra time to talk to visitors (3-4pm)

Discussion Sections

Project Teams


Instructor: John Canny

Teaching Assistants: Pablo Paredes Anuj Tewari

Email (for all class related issues): cs160(at)

  • Please avoid emailing the TAs and the Instructor directly. You will receive a response much faster if you use the email address above.
  • You may also choose to email us anonymously.


  • Lectures: MW 1:00-2:30PM, 306 SODA
  • Discussion Sections:

Office Hours:

  • John: 637 Soda Hall, M & W 2:30-3:30pm
  • Pablo: 354/360 Hearst Mining Building, Thursday 12:00 - 2:00pm
  • Anuj: 354/360 Hearst Mining Building, Tuesday & Thursday 12:00-1:00pm

Textbook: There is no required textbook for this class. There will be readings assigned for each lecture. The readings will be available online through this wiki. If you are interested in reading further take a look at the recommended reading list.


CS160 is an upper division design course, and you will work extensively on one significant UI project. One of the most valuable experiences in CS160 is the opportunity to work with an interdisciplinary team. While you will need programming expertise on your team, the process of design is quite distinct from programming, and involves many skills beyond coding. For that reason, there is no programming requirement for the course. However since most students in the course are CS majors, there will be a series of programming assignments aimed at developing your fluency with relevant tools. These will be pair programming assignments designed to two students. If you are not a CS major, you should find a partner who is for the assignments. Pair programming is a useful software engineering practice in its own right, and here it will allow two students with quite different backgrounds to learn from each other.

You will be expected to actively participate in lectures, complete readings ahead of time, and, most importantly, participate fully in your group project. The teaching staff will promptly return graded homework to you, and will be available to provide feedback and help with problems.

Note that the majority of the work in this course is conducted in the form of a semester-long group project. Unlike other courses, dropping the course before the end of the semester has negative consequences for your other group members. So once you have joined a group please make sure you are committed to staying in the course.

  • You are expected to read the assigned readings and post 1 substantive comment to the discussion on this wiki about the readings before class. Late comments on the wiki will NOT be accepted. There will be plenty of opportunities in class to apply that knowledge and in-class participation will be part of your grade.
  • You will be expected to turn in written documentation at each stage of your project. You will also turn in working code. Each group member will help to give an oral presentation about your project.
  • There will be a midterm exam.
  • Most assignments will be turned in through this class wiki. Most assignments will be due before the start of the lecture during which they are due.
  • Group assignments may not be turned in late.
  • Each group is responsible for making sure that all members are participating. As part of the project reports, you be required to describe the effort put in by each member, both on specific tasks and as a fraction of the group’s effort. Make sure you discuss this regularly, to make sure your group is in agreement about the work breakdown.
  • If a group member is not participating, the entire group must meet with the teaching staff. Effective group work (which entails some amount of conflict resolution) is a key skill for success in industry. We would like you to work through conflicts if at all possible, and we will devote some class time to this topic.
  • If you have a question about a grade, you should meet with one of the TAs. You can come to the professor if the issue cannot be resolved with the TA's help.
  • Cheating will not be tolerated, and will get you an F in the class.


11/5/12: Note: pair programming weighting has been increased due to the length of the PP assignments. Individual score has decreased:

  • Class participation (5%)
  • Individual (non-programming) assignments (5%)
  • Pair programming assignments (20%)
  • Group project (50%)
  • Midterm (20%)

Late Policy: Group assignments may not be turned in late. Individual assignments will lose 20% per 24 hours they are late.

Note: This is a design class. There are many "correct" design solutions, and often no easy way to find a best solution because there are so many dimensions of good. Usually there are many good designs with different advantages and disadvantages. In this class you will learn to both design new interfaces and evaluate the pros and cons of the interfaces you design. As you complete the assignments for this class you should try to point out both the pros and the cons of the interfaces and applications you design.

Design is typically evaluated in a qualitative manner. As a result a significant portion of the grading in this class will be qualitative, including assessments of the end user experience of the system and the quality of your designs, evaluations, and prototypes.

Pair Programming Assignments

There will be 3 graded programming assignments aimed at developing your fluency with Web Interface languages and other concepts of interactive programming. Since we strongly encourage diverse teams with non-CS-majors, individual compulsory programming assignments are an obstacle for those students and conflict with the primary goal of the course. But we do want CS majors to improve their fluency with relevant tools, and to provide a similar benefit to non-majors. Therefore we will be giving out programming assignments designed to be done in pairs. You should plan to do these assignments using pair programming (to be covered in the course). The assignments will typically be broken into two parts, so that one partner can function as driver for each part.

Tips and Tricks

How to use and edit this wiki

New to wikis? Read the Wiki editing guide.

To contribute to this wiki, you'll need to first create an account. Please use your full name as your user name as in this example. Afterwards, please add some descriptive information about yourself on your personal page -- click your login name (next to the person icon) at the top of the page to access your personal page.

To facilitate discussion we have created the [add comment] button that appears at the bottom of each page. Clicking on the button will allow you to add a comments, ideas or question to the current page. The comments will include your user name and the date in the section heading. Try adding a comment to the discussion page for a lecture.


This lectures, format and syllabus of this class are based on HCI classes taught by Maneesh Agrawala, Ben Bederson, Francois Guimbretiere, Marti Hearst and James Landay. These authors have kindly provided access to their lecture slides and my own slides borrow from their earlier work.

Personal tools