Identifying base competencies as prerequisites for software engineering education

Over the recent years, we experienced that a significant percentage of first-year students shows difficulties in acquiring even introductory software development knowledge, as well as in coping with the study process itself. In most cases, the core problem is not a lack of general intellectual capacity, but rather significant deficiencies in certain base competencies (i.e. self-, practical and cognitive as well as social competencies). We imply that these base competencies are crucial for successfully studying computer science or related topics. In order to identify these base competencies, we collected a superset of competencies from literature, structured this set, and performed filtering and clustering steps, resulting in almost 100 remaining base competencies that are relevant in our teaching context. As it is impossible for any lecturer to develop all these competencies in a single effort, we finally boiled this set down to a selection of those competencies that we deem to be most relevant for successfully studying software related topics at university level. Towards this end, for each competence, we defined what we the lecturers expect from our incoming freshmen students. In addition, we specified the skill level expected by the job market. Furthermore, we assessed the skill level of those 70% of our students that have obvious difficulties in coping with study requirements. Finally, we selected those competencies with a large difference between what is expected from our graduates and what we find in our incoming cohort. This analysis resulted in a selection of 27 competencies that we deem to be highly essential prerequisites for software engineering education, and which are not sufficiently well developed in the vast majority of freshmen students. For each of these base competencies we provide definitions and denote reasons for their selection.