Teaching software quality assurance by encouraging student contributions to an open source web-based system for the assessment of programming assignments