Back to search

Quality-focussed Programming Education

2020-1-NL01-KA203-0646262020Strategic Partnerships for higher educationfinalizedGood practice
Countries: NL|ES|DE · Grant: €415,317.2
Cooperation between educational institutions and businessOpen and distance learningNew innovative curricula/educational methods/development of training courses

Project summary

Our society heavily depends on software in almost every area of life, ranging e.g. from social-media apps installed on millions of mobile devices up to life-critical software in the automotive or avionic sector. Because we are so dependent on software, it is important that it functions correctly, can be maintained and, because it is used in many different contexts and operated by humans, is robust. Unfortunately, this is not the reality. Although tools and techniques exist which are well known to improve software quality, today's programmers seem reluctant to use them. One reason for this mismatch is that techniques for quality assurance and, in particular, software testing are often isolated topics, placed late in the curriculum for software engineering or general computer science studies. For example, students often do not test their code, hardly formulate specifications, leave out documentation and ignore style conventions. Consequently, students do not practice to write high-quality code. To counter this, the objective of the QPED project is to demand proper tests as early in the education as possible, to foster a quality-awareness in students that goes beyond functional correctness as demonstrated by testing; they will also start thinking about better readable and more robust code. To ensure that testing and paying attention to code quality is not only taught early, but also performed by students from the beginning, we will provide support to students in the form of procedural guidance and a feedback toolkit. The feedback toolkit can also ensure that only code meeting minimal quality standards is allowed to be submitted as a solution to further stipulate the quality-awareness. Changing software engineering education with respect to an emphasis on testing, procedures and feedback for code-quality-related topics, intends to stipulate a quality mindset from the beginning in the future software engineers' education. They will be fully aware of the relevance of quality aspects of software and they will habitually apply them. This will result in a noticeable increase in software quality within Europe. To avoid putting an additional burden on lecturers for changing their course design and providing the necessary support to students, we will develop open teaching and learning material as well as an openly accessible feedback toolkit. These will be ready-to-use for students and lecturers with a focus on making them configurable to meet the needs of a wide variety of teaching contexts. For example, our material and toolkit will not make a strict choice of a programming language to be used in the courses, but we will support the most common object-oriented and imperative programming languages, such as Java, Python or C. Different teaching methods will also be supported, for instance traditional as well as distance teaching universities will be considered. To reach these goals, the QPED project will concretely develop the following intellectual outputs: Course design blueprint: A course design blueprint will be developed to help adapting existing first-year software-engineering courses to incorporate testing earlier and more pervasively. This will be underpinned by ready-to-use educational material such as lecture notes, slides, elaborated examples, exercises and lab sessions. Procedural guidance: Stepwise guides will be developed for a wide range of complex development tasks focusing on code quality. Examples will be provided for teaching material to introduce these guides. Feedback toolkit: A toolkit will be developed to provide uniform access to a variety of quality checks. The feedback from multiple checks will be presented comprehensibly and uniformly to students. Lecturers will be able to easily configure the toolkit to their needs and quality requirements. Pilot studies: We will evaluate the success of our approach in pilot studies carried out in a first-year software-engineering course at four universities.

Objectives

What we wanted to achieve is an enrichment of current software engineering education so that students are aware of the importance of quality and find it normal to think about quality at every step during software development and to pursue a sufficient level of quality. In concrete terms, this means that we have: 1) A didactics and educational materials (exercises) with which teachers can enrich their current education relatively easily, making testing a permanent part of programming education. We call the didactics TILE (Test Informed Learning with Examples). 2) Procedural guidance and educational materials (exercises) that help students to design, specify, and implement functional code and corresponding tests of high quality. 3) A toolset with which students can easily check their developed programs including tests, for several kinds of quality requirements such as correctness, completeness and programming style. In addition to developing all this material, we want to use it in our education and gain clarity to what extent and how it helps students in developing high-quality software products.

Background

Our society heavily depends on software. Because we are so dependent on software, it is important that it functions correctly, can be maintained and is robust. Unfortunately, this is not the reality. Although tools and techniques exist which are well known to improve software quality, today's programmers seem reluctant to use them. As a result, students often do not test their code, hardly formulate specifications, leave out documentation and ignore style conventions. One reason for this mismatch is that techniques for quality assurance are often isolated topics and are placed late in the curricula of computer science studies. Students, then, start learning to program without thinking about quality and without using these quality improvement techniques. Because students’ primary focus is on producing code and functionality, learning these quality techniques and unlearning bad habits later is difficult. Another reason is that learning techniques for quality assurance requires experiences in how to apply them. Software engineering education must therefore be enriched with many assignments from the beginning in which students can practice with these techniques and be scaffolded by tools and procedures.

Project partners (5)