Improving the Implementation of a First-Semester Programming Course