Course Meeting Times

Lectures: 3 sessions / week, 1 hour / session


6.005 Elements of Software Construction

Course Overview

6.813/6.831 introduces the principles of user interface development, focusing on the following areas:


We will look at how to design good user interfaces, covering important design principles (learnability, visibility, error prevention, efficiency, and graphic design) and the human capabilities that motivate them (including perception, motor skills, color vision, attention, and human error).


We will see techniques for building user interfaces, including low-fidelity prototypes, Wizard of Oz, and other prototyping tools; input models, output models, model-view-controller, layout, constraints, and toolkits.


We will learn techniques for evaluating and measuring interface usability, including heuristic evaluation, predictive evaluation, and user testing.


We will learn how to conduct empirical research involving novel user interfaces (graduate level only).


There is no required textbook for this course, but a list of Recommended Textbooks is available for students who wish to further explore the subject.


You may discuss assignments with other people, but you are expected to be intellectually honest and give credit where credit is due. In particular, for all individual assignments:

  • you should write your solutions entirely on your own;
  • you should not share written materials or code with anyone else;
  • you should not view any written materials or code created by anyone else for the assignment;
  • you should list all your collaborators (everyone you discussed the assignment with) on your hand in.


Course project (GR1–GR6) 42%
Problem sets (HW, PS/RS) 30%
Nanoquizzes (unavailable on OCW) 24%
Class participation 4%

The largest contribution to your grade will be the course project (42%), in which you will work in small groups to design, implement, and evaluate a user interface, through an iterative design process with a series of graded milestones (GR1–GR6). Students from 6.813 and 6.831 may work in the same group.

Five problem sets (HW, PS/RS) will be assigned, which you must complete individually, not in a group. HW1–2 ("homeworks") are assigned to both courses; PS1–3 ("programming") are assigned only to the undergraduate course 6.813; and RS1–3 ("research") are assigned only to the graduate course 6.831. These five assignments will constitute 30% of your grade.

Every lecture will begin with a "nanoquiz," which covers the content of the previous lecture or two. There will be approximately 30 nanoquizzes, which altogether count for 24% of your grade. If you miss class, no makeup quiz is offered. However, we will automatically drop your lowest 6 quiz grades, so that you have flexibility to miss class when necessary. (Nanoquizzes unavailable on MIT OpenCourseWare.)

There will be no other in-class quizzes, no midterm, and no final exam.

Participation in lecture, in-class activities, and project group meetings with course staff will also be a factor in your grade (4%).

Differences between 6.813 and 6.831

Students must choose between the undergraduate course 6.813 and the graduate course 6.831. This section summarizes the main differences between the two courses. In general, the graduate version is a strict superset of the undergraduate version.

Course Content

Students in the graduate course are responsible for all the material in the undergraduate course (lectures on design, implementation, and evaluation), plus additional material (lectures on research methods). Some nanoquizzes will include extra questions only for the graduate course.


The undergraduate problem sets PS1–PS3 cover implementation techniques. The graduate course's RS1–RS4 cover research methods. Both courses share the same HW1 and HW2.

Group Project

Both courses have the same group project, and students from either course may freely work together in the same group.