Is it really an algorithm
A pragmatic HCI approach
Testing first
A study of the difficulties of novice programmers.