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.
The Bebras challenge offers pupils and teachers an engaging opportunity to discover informatics, by solving small tasks that aim at promoting computational thinking. Explanations and comments that reveal the computing concepts underlying the tasks are published after the contest, and teachers are encouraged to use this material in their school practice. In this paper we present an exploratory study aimed at investigating how teachers can make use of Bebras material; in particular our interest is understanding whether teachers are able to identify, comprehend, and apply the computing concepts implied by Bebras tasks, and how they can integrate them into their teaching practice. We qualitatively analyzed teaching projects developed by Italian teachers during a workshop on computing education and based on Bebras tasks; the analysis shows that teachers are in general able to build upon the tasks soundly, but it also raises some critical issues.