Design, implementation, and evaluation of an approach for determining when programmers are having difficulty