Teaching programming on a personal computer: design and system overview