An Analysis of the Errors Made by Novice Programmers in a First Course in Procedural Programming in Java