CS6326 Human-Computer Interactions

Instructor: John Cole
Section 001: Tuesday/Thursday from 8:30 to 9:45 AM
Office and Hours  Room: ECSS 2.311

Teaching Assistant: Erick Skorupa Parolin in ECSS 2.104A1 on Mon/Wed 10:30 - 11:30 AM

Last update: 1/29/2018
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.  Another secondary text is Evil by Design by Chris Nodder.  Another good book for cognitive psychology is Human-Computer Interaction by Dix, Finlay, Abowd, and Beale, although some of their material on dialogs and measurement is pretty dated.  We will be using material from all of these sources as well as others, and some original material.

Good books on Android programming are: Professional Android 4 Application Development by Reto Meier. The problem with this one is that it is a little dated and things have changed from version 4 to version 7.  Android Programming: The Big Nerd Ranch Guide by Phillips, Stewart, and Marsicano is more up to date but does not discuss sensors.  Both include extensive sample code.

Here is the link to the UTD online library copy of the Big Nerd Ranch 3rd Ed. Android Programming book: http://proquest.safaribooksonline.com/book/programming/android/9780134706061.  You can also go to the library site and search for books on Android.  This book doesn't cover sensors, but you can find information on them online.

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 main  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?  At the same time, go for the minimal design needed to accomplish the task.  For example, color can be distracting.  Having too many fonts, or providing too much configurability, can be confusing.  So go for minimalist design when possible.  Such as this Web page, which is simple HTML.

Caution: If you are considering this class only to learn Android or mobile apps, look elsewhere, such as one of the Outreach 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.  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: Understanding 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 these and other attributes.  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
using Visual Studio and C# on a Mac

Exam Rules