Semi-automated assessment of programming languages for novice programmers