When we “think like a computer scientist,” we are able to systematically solve problems in different fields, create software applications that support various needs, and design artefacts that model complex systems. Abstraction is a soft skill embedded in all those endeavours, being a main cornerstone of computational thinking. Our overview of abstraction is intended to be not so much systematic as thought provoking, inviting the reader to (re)think abstraction from different – and perhaps unusual – perspectives. After presenting a range of its characterisations, we will explore abstraction from a cognitive point of view. Then we will discuss the role of abstraction in a range of computer science areas, including whether and how abstraction is taught. Although it is impossible to capture the essence of abstraction in one sentence, one section or a single paper, we hope our insights into abstraction may help computer science educators to better understand, model and even dare to teach abstraction skills.
The topic of 2021’s special issue is The Role(s) of Abstraction in CS Education. Abstraction is a pillar of computational thinking and plays a key role in many CS related areas. In computational thinking abstraction is used to understand a problem, manage its complexity and select an appropriate level of detail and degree of generality when solving it. Procedural and data abstractions allow algorithms to be used without knowledge of their details. Besides, the ability to abstract facilitates generalization and knowledge transfer.
Abstraction has been considered, either implicitly or explicitly, in the literature that covers top-down design of programs, system modelling and problem solving. However, teaching students to abstract when reading, designing or implementing code remains a challenge at both k-12 and tertiary level. Hence, our goal when proposing this special issue was to provide a range of papers that could help instructors to understand abstraction in more depth and to find approaches or insights on how to foster abstraction in the classroom. We have achieved that goal by collating eight papers that describe the multiple roles of abstraction in CS education.
Three papers focus on programming skills, as teaching them is a core and challenging task for educators. Fowler et al. explore the abstraction skills needed to reason analytically about source code. Haglund, Strömbäck and Mannila focus on the challenges posed to students by functional abstraction, while Sbaraglia, Lodi and Martini discuss the abstraction mechanisms of programming languages and the rollercoaster of abstraction that students face at introductory level.
Four papers present different perspectives of abstraction in specific CS fields. Dorodchi et al. discuss abstraction in modelling and its role in teaching software engineering; Strömbäck, Mannila and Kamkar investigate how students abstract the behaviour of concurrent programs; Ginat illustrates the use of abstraction to solve algorithmic tasks, and Vaníček, Šimandl and Klofáč identify computational tasks from the Bebras Challenge that would help to develop abstract thinking. Finally, Mirolo et al. provide an overview of abstraction in CS education literature that binds the different perspectives within computer science and computational thinking.
We are thankful to the authors of this special issue for sharing their perspectives and their experiences on the use of abstraction in their fields.
Although there is no universal agreement that students should learn programming, many countries have reached a consensus on the need to expose K-12 students to Computational Thinking (CT). When, what and how to teach CT in schools are open questions and we attempt to address them by examining how well students around the world solved problems in recent Bebras challenges. We collected and analyzed performance data on Bebras tasks from 115,400 students in grades 3-12 in seven countries. Our study provides further insight into a range of questions addressed in smaller-scale inquiries, in particular about the possible impact of schools systems and gender on students' success rate.
In addition to analyzing performance data of a large population, we have classified the considered tasks in terms of CT categories, which should account for the learning implications of the challenge. Algorithms and data representation dominate the challenge, accounting for 75-90% of the tasks, while other categories such as abstraction, parallelization and problem decomposition are sometimes represented by one or two questions at various age groups. This classification can be a starting point for using online Bebras tasks to support the effective learning of CT concepts in the classroom.