The Book

This book explores the topic of how to build interactive software using principles from human-computer interaction, psychology, and software engineering. The emphasis of the book is on how to build interactive software, not on how to design easy to use systems (design) or how to manage the design process (usability engineering). In that way, this book is a complement to many existing books and fills a void for Computer Science programs and practitioners alike.

Several principles are presented throughout the book from several points of view. The examples presented use many different technologies to illustrate these principles. Java, for example, is used to show how to build model-view-controller architectures from scratch and to show the values of such an approach. Ruby (in particular Ruby on Rails) is used to show how a common application can support multiple interaction styles (web, phone, PDA). HTML+Javascript+PHP are used to show how mashups are changing how we build interactive applications.

The goal of the book is not to be a tutorial on all of these technologies, but instead to highlight the principles of building interactive software using these technologies as the tools for exploration.

This book is the result of teaching this course several times over the last 9 years. The course was first offered at the University of Puerto Rico-Mayaguez, as a senior level technical elective. Since, it has been offered 3 times as a graduate course at Virginia Tech and once as a senior technical elective (this was taught by another colleague using our materials).