This is the first comprehensive textbook for students of human-computer interaction. The book revises and synthesizes topics including design, engineering, empirical methods, and technology. It acknowledges the many challenges that practitioners face and identifies the solution principles that can be used to tackle them.