Main Page

From CS 160 Fall 2011

Jump to: navigation, search


Course Control Number: 26506

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



CS 160 is an introduction to Human Computer Interaction (HCI). You will learn to prototype, evaluate, and design a user interface. You will be expected to 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.

Project Theme: This semester's project theme is games for change. See e.g. this site. Games for change borrow design principles from game design, but they have a focus other than entertainment. Ideally they produce positive, measurable improvements toward some social good. e.g. education, health and well-being, better use of energy and resources. The project platform will be Android. Each team will be provided with a state-of-the-art Android tablet for the duration of the course.


11/30/2011 Interactive Prototype Scores

Scores for the interactive prototype assignment are now available on bSpace. Average on the write-up/implementation was ~45/60, average on the presentation was ~21/25. You can pick up your write-up with notes/scores in office hours this week or next. Questions on the write-up/implementation score should be directed to David. Questions on the presentation score should be directed to Andy.

11/4/2011 Midterm Results

Your midterm scores are now on bSpace. You can pick up your graded exam at office hours or in next week's discussion sections.


Score Stats: Mean -- 41 Median -- 41.5 Standard Deviation -- 8.4

10/31/11 Project presentation schedule is here

10/24/11 Sample midterms:

Fall 2010 Example Solution

Fall 2008 Example Solution

Spring 2006 Example Solution

10/25 Discussion sections are canceled this week (10/27 and 10/28)

10/24 David will hold drop-in office hours from 1-4pm on Tuesday 10/25 @ Hearst Memorial Mining 360. His regular Monday 12-1pm OH will be cancelled this week.

10/24 Please bring a check of $200 written to "John Canny" to either Andy or David's sections/office hours to pick up a tablet for your team project.

9/12/2011 Studio sessions meet starting this week at CDL (Cal Design Lab) on the 5th floor of Wurster Hall. Please attend one of these sessions:

  • 12:00 - 1:30pm
  • 1:30 - 3:00pm
  • 3:00 - 4:30pm
  • 4:30 - 6:00pm

8/29/2011 Two new discussion sections have been added:

Thursday 11:00AM-12:00PM, 405 SODA

Friday 2:00-3:00PM, 405 SODA

in addition to sections 101 and 102 from 10-11 and 11-12 on Friday in 405 Soda.


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

8/29/2011: Introduction [Slides ]

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

8/31/2011: The Design Cycle and Brainstorming [Slides ] [ Readings ]

Due: Create a Wiki Account, Course Petition
Assignment (due before class on Sept 7): Individual Project Proposal
Optional Assignment (due before class on Sept 14): Individual Programming I

9/7/2011: Sketching, Storyboarding, and Critique [Slides ] [ Readings ]

Due: Individual Project Proposal

9/12/2011: Game Design Principles [Slides] [ Readings ]

Assignment (due before class on 9/19/2011): Group Brainstorm

9/14/2011: Task Analysis and Contextual Inquiry [Slides][ Readings ]

Due: Individual Programming I
Optional Assignment (due before class on Sept 28): Individual Programming II

9/15/2011: Studio Brainstorm [ Video ]

9/19/2011: Conceptual Models [Slides] [ Readings ]

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

9/21/2011: Usability Inspection Methods [Slides] [ Readings ]

9/22/2011: Studio Session II [ Scenarios ]

9/26/2011: Prototyping [Slides] [ Readings ]

9/28/2011: Learning and Games [Slides] [ Readings ]

Due: Individual Programming II
Optional Assignment (due before class on Oct 12): Individual Programming III

9/29/2011: Studio III: Junk Prototyping

10/3/2011: Behavior Change and Games [Slides]

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

10/5/2011: Human Information Processing/Input Devices [Slides] [ Readings ]

10/6/2011: Studio Session IV [ Video Prototype ]

10/10/2011: Qualitative Evaluation [Slides] [ Readings ]

10/12/2011: Quantitative Evaluation [Slides ] [ Readings ]

Due: Individual Programming III
Optional Assignment (due before class on Oct 24): Individual Programming IV

10/17/2011: Interactive Programming I [Slides] [ Readings ]

Due (before class): Low-Fidelity Prototype
Assignment (due on 11/7/2011): Interactive Prototype

10/19/2011: Interactive Programming II [Slides] [ Readings ]

10/24/2011: Midterm Review

Due: Individual Programming IV
Optional Assignment (due before class on Nov 9): Individual Programming V

10/26/2011: Midterm Exam

(No Discussion Sections This Week Due to Midterm)

10/28/2011: Graphic and Experience Design [Slides ] [ Readings ]

11/2/2011: Continuing Graphic and Experience Design [Slides ][ Readings ]

11/7/2011: Interactive Prototype Presentations

Due (before class): Interactive Prototype
Assignment (due before class on 11/21/2011): Pilot Usability Study

11/9/2011: Interactive Prototype Presentations

Due: Individual Programming V

11/14/2011: CSCW and MMOs [Slides ] [ Readings ]

11/16/2011: MMOs and Social Software [Slides ] [ Readings ]

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

Due (before class): Pilot Usability Study
Assignment (due on 12/05/11): Final Presentation and Poster
Assignment (due on 12/05/11): Final Report

11/23/2011: Visualization [ Readings ]

11/28/2011: Tangible Interaction [Slides ] - guest lecture by Hayes Raffle

11/30/2011: Course Summary [Slides ]

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

Due: Final Report

12/6/2011: Poster Session 4-6pm in Soda 6th floor Atrium

Discussion Sections

Week 1 [Slides]

Week 3 [Slides]

Week 4 [Slides]

Week 5 [Slides]

Week 6 [Slides]

Week 7 [Heuristic Evaluation of Persuasive Health Technologies]

Week 8 [Slides]

Project Teams

Are here


Instructor: John Canny

Teaching Assistants: Andy Carle David Sun

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 2:30-4:00PM, 306 SODA
  • Discussion Sections:

103 Thursday 11:00AM-12:00PM, 405 SODA

101 Friday 10:00AM-11:00AM, 405 SODA

102 Friday 11:00AM-12:00PM, 405 SODA

104 Friday 2:00-3:00PM, 405 SODA

Office Hours:

  • John: 637 Soda Hall, M & W 4-5pm
  • Andy: 354 Hearst Mining Bldg, Tu 4-5, F 1-2
  • David: 360 Hearst Mining Bldg, M 12-1, F 4-5

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. As in previous semesters, there will be a series of programming assignments aimed at developing your fluency with Android. However, this semester these assignments are optional. Your skill will Android will have an influence on your final project score, which is the major part of the course grade. But we will not use programming assignment scores directly. Instead we will create Leaderboards for each assignment, explained in more detail below. The purpose of these is to enhance your learning from others, and learning from multiple examples of best practice.

To enhance the experience of learning from others, we will be conducting several "studio" sessions in the early weeks of the course. These will be run in a collaborative space in groups of around 25 on Thursday afternoon/evening. Teams will evolve their designs on paper and present in front of their peers and outside designers.

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.


  • Class participation (10%)
  • Individual (non-programming) assignments (15%)
  • Group project (50%)
  • Midterm (25%)

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

Note: This is largely a design class. Unlike most other CS classes there is not always a single "correct" design soution. Usually there are many possible 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.

Programming Assignments and Leaderboards

There will be five programming assignments aimed at developing your fluency with Android and other concepts of interactive programming. Since we strongly encourage diverse teams with non-CS-majors, 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 become fluent with Android. Your Android proficiency will have a strong bearing on your final grade through the team project, so you *should* do these assignments if you are a CS major. In addition we will be using a Leaderboard to post scores and solutions to the assignments. There are several motives behind the leaderboard:

  • It is a further incentive for you to submit in order to get a high score and place on the board.
  • Other students will be able to see your solution if its posted there. We strongly believe, based on current learning theories, that one of the best ways to learn a language/programming environment is to see several examples of best practices, i.e. several good but different solutions to the same problem.
  • You can post under your own name or under an alias. In neither case will the score be used in any way toward your final grade. If you submit, you are agreeing to allow other students to see your solution if it appears on the leaderboard.
  • The leaderboard embodies several of the principles of games for change which is the course project focus.

There will be two lectures on interactive programming methods. In the midterm, you will be required to answer one question either on this material, or on more general design theory and methods. Thus you will not be required to demonstrate individual proficiency with programming.

Tips and Tricks

Are now available here

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