What about HCI?

One topic that came up in the CAS roundup yesterday, and again on twitter today, is the possibility of teaching more Human-Computer Interaction (HCI) at school. This post will argue for several advantages that HCI has as a topic to cover in computing.

What is HCI?

Here’s a brief summary of the type of HCI I mean, with a particular focus on interface design (based on Michael Kölling’s course here at Kent):

  • Study of core principles in HCI: e.g. consistency, error prevention.
  • Analysis and critique of existing interfaces, with reference to these principles.
  • Prototyping, especially lo-fi: interfaces drawn by hand and cut out of paper and card.
  • User-testing: doing tests of prototypes (even the paper lo-fi prototypes) with prospective users — crucially, not by testing on the designers!

Why HCI?

One of the reasons that HCI is interesting as a topic is because it does not have to feature any programming. For students in school or university who are not keen on coding, it’s an alternative that allows them a relief from struggling with programming — and for students who do like coding, it provides a useful new perspective and an opportunity to broaden their skill-set. HCI does not even have to feature any computers at all (especially during design and lo-fi prototyping), allowing for a welcome change from being fixed at the computers every lesson. Lo-fi prototyping has a physical, tangible element that is missing from a lot of computing (although see CS unplugged). Our (university-level) students really do make paper prototypes and turn up to their user tests with bags of small paper pieces that would not be out of place in a primary-school class.

An example lo-fi prototype, taken from here.

This lack of coding also lowers the barrier to entry. It’s accessible to those without programming knowledge, and tends to start everyone out on a fairly equal footing. It was interesting to go to the Young Rewired State (YRS) workshop at last week’s Computing At Schools conference. There the organisers of YRS spoke about having a mix of programming ability on the teams involved, but that even those who could not program could still make a useful contribution to the overall design and the interface design.

User interface design is an aspect that is immediately relevant to anyone who uses a computer, with obvious practical benefit to having better interfaces. Bad interfaces are easy to find, and pointing out the flaws in Facebook or the latest iPhone can help drive home to students that this is a useful area of computing that affects their daily life.

@CodeBoom suggested on twitter that HCI may be more appealing to girls. Ah, the gender issue! I’m a little wary of pushing HCI for women too hard, because I think there has been a tendency in the past to pigeon-hole women into the non-coding side of computing, with an implicit assumption that since they won’t do so well at programming, they’d better find other aspects to excel at. But I will offer this anecdote: the class I taught this year (where HCI was an optional module choice alongside many other modules) was 50% women. In a subject that typically has 5%-15% women on university courses, it was therefore a noticeable outlier in terms of gender balance.

And lest you think otherwise, HCI does have rigour and principles. There is a core tension in HCI between creativity and convention. At first, the students tend to use the bog-standard UI elements they are familiar with. As they learn to be more creative (and prolific) in their thinking, they often swing to the other end of the scale, creating new UI widgets or representations that are too adventurous. User-testing of their prototypes keeps them honest, as they watch other students completely fail to understand their creations. It’s a real engineering process: design, create, test, iterate.

There is a lot of skill in creating smooth interfaces, and in getting small details like organisation and hints correct. One of my groups created a map interface to show places to eat on campus, with markers on a satellite-image of the university campus. This immediately came unstuck during their first test when a test-user pointed out that he could not identify the university buildings easily just from a plain satellite view: the lack of labels on the buildings derailed their test. Next iteration, this was solved.

When could we teach HCI?

I don’t have any experience or data as to when would be a suitable time to introduce HCI, but my feeling is that the core process and lo-fi prototyping can probably be used during Key Stage 3 (that’s ages 11-14) or later. Not all students will go on to study computing further, but interface design is one area that can help students to be better and more demanding users of software in the future.

Advertisements

2 thoughts on “What about HCI?

  1. This is a nice idea. I think that Harold Thimbleby’s Press On is a good match for the approach of introducing computer science concepts via HCI, though the book seems to be aimed at students older than 11 to 14. For example, Thimbleby explains communication codes, state machines, trees and graphs, and other core concepts by casting them as solutions to problems that typically come up in interaction design, such as managing complexity and making common things easy to do.

    I’ve taught HCI only to computer science students at the university level, but of course it’s important there as well. I tell my students, “One of the hardest lessons you’ll learn in this course is how to think about users who aren’t you.” Basic interaction design and development techniques are pretty straightforward, though; I’d expect younger students to be able to handle them.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s