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.
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).