Programming and software engineering courses in computer science curricula
typically focus on both providing theoretical knowledge of programming
languages and best-practices, and developing practical development skills. In a
massive course - several hundred students - the teachers are not able to
adequately attend to the practical part, therefore process automation and
incentives to students must be used to drive the students in the right
direction. Our goals was to design an automated programming assignment
infrastructure capable of supporting massive courses. The infrastructure should
encourage students to apply the key software engineering (SE) practices -
automated testing, con guration management, and Integrated Development
Environment (IDE) - and acquire the basic skills for using the corresponding
tools. We selected a few widely adopted development tools used to support the
key software engineering practices and mapped them to the basic activities in
our exam assignment management process. This experience report describes the
results from the past academic year. The infrastructure we built has been used
for a full academic year and supported four exam sessions for a total of over a
thousand students. The satisfaction level reported by the students is generally
high.Comment: Accepted for SEEM 2018 - Software Engineering Education for
Millennials, colocated with ICSE 201