CS6326 Human-Computer Interactions

Instructor: John Cole
Section 001: Tuesday/Thursday from 11:30 AM to 12:45 PM
Office hours: Tuesday/Thursday: noon Room: ECSS 2.410

Teaching Assistant:  Haan Mo Johng
Office hours: Monday/Wednesday from 4:00 to 5:15 in the open lab, ECSS 2.103B1.

Last update: 8/22/2016
Syllabus is on Coursebook Schedule
Textbook: There is no textbook.  This course will be taught from papers which you will be expected to read, and from PowerPoint slides.  A very good book on Android design is Android User Interface Design, second edition, by Ian G. Clifton.
This graduate course is intended to provide an in-depth understanding of the intricacies of user interface design and the user experience, with a special orientation toward mobile devices. Topics include cognitive models, interaction models, screen design for various kinds of user input, evaluation of user interfaces, design of on-screen controls, input from sources other than the keyboard such as speech and touch, and the use of mobile device sensors. On the output side, we will cover various forms of user feedback, including display of information, sound, and haptic feedback. You will be expected to be highly competent in the Java programming language.  A knowledge of C# is also very helpful, since some assignments will be done in that language.  There is a link to Microsoft's tutorial on my start page.  A good understanding of multithreading is also useful.

This course is different from most of your other computer science courses.  I know that it is important to understand data structures, algorithm analysis, object-oriented design, program efficiency, database design, and so on.  Without those things you would not be a computer scientist.  But consider that the most efficient algorithms, the most elegant internal design, are not worth much if the program containing them is difficult to use.  You would not buy someone an expensive present, then wrap it in a trash bag, would you?

Caution: If you are considering this class only to learn Android or mobile apps, look elsewhere, such as one of the workshops.  This course covers topics in cognitive psychology and design principles and is not an exhaustive course in Android programming.  We will not cover such topics as SQLite and other "back-end" Android APIs.  We will discuss Android sensors, drawing, and the touchscreen.  You will also be expected to learn C# if you do not already know it.  Also, as one student remarked anonymously in all caps, "Do not treat this course as an elective."  And indeed, if you are in the Interactive Systems track, this course is very much core, and I teach it that way.  This is not an "easy" course.  Grading is tough and picky, but the course will prepare you well.  You will be expected to read the the material before each class.

Course Topics in Detail

  1. Cognitive Psychology: Understand human perception and how the brain works, including memory and the senses. This includes the use of color, shapes, and sound, both speech and non-speech.
  2. Computer Hardware: We will explore various input devices and how they affect the user experience of programs and devices.  We will also discuss outputs such as haptic feedback.
  3. Design Principles: There are various principles in designing the user experience, most derived from cognitive psychology.  For example, consistency is important within a suite of programs.  Minimizing hand motion and the amount of typing necessary is another principle.
  4. Design Notations: It is important to be able to describe a user interface, at least for some kinds of programs, in formal terms such that others can code from the description.
  5. Evaluation: Not all user interfaces are alike in terms of usability and learnability, so it is important to be able to evaluate a user interface design on the basis of usability and learnability.  This can be both subjective and quantitative. 
  6. Mobile Applications: Mobile devices, with sensors, high-resolution screens, and small keyboards or none at all, pose special challenges to the user experience designer.  We will examine some of these.

Get Google's Android Developer Studio here

Link to Android Developer tutorials.  Take a look at Best Practices for Interaction and Engagement and some of the others below this.

Android Design Tutorials

Exam Rules


In-Class Notes.  These are what I wrote using WordPad during class, if any.