title: Test First? Before Programming? Seriously? - Integrating software engineering practices in non-software engineering degrees.
keywords: Testing, education, software development
topics: Case studies and Applications , Software Technology , Testing
committee: Ansgar Fehnker


Programming education often starts by teaching individual students basic concepts, how to use them building solutions, and then test this solution. This approach implicitly teaches the students a waterfall approach to software development. In software engineering degrees students will be explicitly taught how to develop software collaboratively, that tests are an essential resource and the value of automated processes.  In degree programs that are not software engineering or computer science, these aspects are barely covered if at all.

The aim of this project is to investigate how to integrate common practices from software engineering from the beginning in degrees that do not teach software engineering explicitly. This entails how to introduce the idea of testing from the very moment student start programming, how to test other students in pairs, how to use tools to assure quality. And this in programming languages that may be simplified or are application specific, and do not offer the rich environment of general purpose languages such as Java. And this while it should not add significantly to the limited time and space that programming has in the curriculum.

An important aspect of this project will be to build prototypes that support student assistants and lecturers. Experience with developing web applications is an advantage.



  1. SPINOZA: In-class Python Problem Solving with Classroom Orchestration (Digital version available here)
  2. The effects of "pair-pressure" and "pair-learning" on software engineering education (Digital version available here)
  3. Use of Agile Methods in Software Engineering Education (Digital version available here)