Problem-solving and critical thinking are associated with 21st century skills and have gained popularity as computational thinking skills in recent decades. Having such skills has become a must for all ages/grade levels. This study was conducted to examine the effects of grade level, gender, chronotype, and time on computational thinking skills. To this end, the study was designed to follow a longitudinal research model. Participants were 436 secondary school students. Computational thinking test scores were collected from the students at certain time intervals. Results indicate that computational thinking skills are independent of gender, time, and chronotype but differ significantly depending on grade level. The interaction between grade level and time of testing also has a significant impact on computational thinking skills. The difference in grade level can be interpreted as taking an information technologies course increases computational thinking. The results suggest that such courses should be promoted to children at a young age. The joint effect of gender, grade level, and chronotype were not statistically significant and it is recommended to conduct future studies to investigate this result.
The new Croatian Informatics curriculum, which introduces computational thinking concepts into learning outcomes has been put into practice. A computational thinking assessment model reflecting the learning outcomes of the Croatian curriculum was created using an evidence-centered design approach. The possibility of assessing the computational thinking concepts, abstraction, decomposition, and algorithmic thinking, in an actual classroom situation and examples of such assessment is increasingly coming to the forefront of computer science educational research. Precisely for that purpose, the research was conducted. Research data are collected through the test and questionnaire of 407 pupils (10 middle schools, age 12), analysed by exploratory factor analysis and non-parametric tests. Results showed that the presented model was suitable to assess the understanding of the concepts of abstraction and algorithmic thinking, independently of the previous experience with programming languages and pupil's gender, while assessment of decomposition needs more work and improvement, some recommendations are provided. Also, it received positive feedback from pupils and teachers what implicated that such an assessment model could help teachers in building a real-time measurement instrument.
User-centricity and usability are a premise of digitalization, a current trend for business model innovation based on advanced digital technologies. The article addresses a gap in the literature, in which descriptions of the cases of updating university curricula in usability are lacking. This gap also exists in the practice. The study uses the example of a project for revising the content of usability courses at the University of Turku as a case. The research objective is to explore an integrative approach to usability education. For this, we consider the data collected via interviews with the faculty teaching usability subjects. Thematic analysis is applied to examine the interview outcomes. Recommendations as to updating usability curricula are provided.
Prior programming knowledge of students has a major impact on introductory programming courses. Those with prior experience often seem to breeze through the course. Those without prior experience see others breeze through the course and disengage from the material or drop out. The purpose of this study is to demonstrate that novice student programming behavior can be modeled as a Markov process. The resulting transition matrix can then be used in machine learning algorithms to create clusters of similarly behaving students. We describe in detail the state machine used in the Markov process and how to compute the transition matrix. We compute the transition matrix for 665 students and cluster them using the k-means clustering algorithm. We choose the number of cluster to be three based on analysis of the dataset. We show that the created clusters have statistically different means for student prior knowledge in programming, when measured on a Likert scale of 1-5.
In a previous publication we examined the connections between high-school computer science (CS) and computing higher education. The results were promising—students who were exposed to computing in high school were more likely to take one of the computing disciplines. However, these correlations were not necessarily causal. Possibly those students who took CS courses, and especially high-level CS courses in high school, were already a priori inclined to pursue computing education. This uncertainty led us to pursue the current research. We aimed at finding those factors that induced students to choose CS at high school and later at higher-education institutes. We present quantitative findings obtained from analyzing freshmen computing students' responses to a designated questionnaire. The findings show that not only did high-school CS studies have a major impact on students’ choice whether to study computing in higher education—it may have also improved their view of the discipline.
This paper focuses on the analysis of Bebras Challenge tasks to find Informatics tasks that develop abstract thinking. Our study seeks to find which Bebras tasks develop abstraction and in what way. We analysed hundreds of tasks from the Czech contest to identify those tasks requiring participants to abstract directly or use abstract structures. Results show that an agreement among experts on stating which task is focused on abstraction is at a moderate level. We discovered that tasks focused on abstraction occur four to five times less frequently in sets of contest tasks than algorithmic tasks. Our findings proved that abstract tasks results compared with algorithmic ones did not differ in neither age nor gender group of contestants.
Concurrency is often perceived as difficult by students. One reason for this may be due to the fact that abstractions used in concurrent programs leave more situations undefined compared to sequential programs (e.g., in what order statements are executed), which makes it harder to create a proper mental model of the execution environment. Students who aim to explore the abstractions through testing are further hindered by the non-determinism of concurrent programs since even incorrect programs may seem to work properly most of the time. In this paper we aim to explore how students’ understanding these abstractions by examining 137 solutions to two concurrency questions given on the final exam in two years of an introductory concurrency course. To highlight problematic areas of these abstractions, we present alternative abstractions under which each incorrect solution would be correct.
Introductory programming courses (CS1) are difficult for novices. Inspired by Problem solving followed by instruction and Productive Failure approaches, we define an original “necessity-driven” learning design. Students are put in an apparently well-known situation, but this time they miss an essential ingredient (the target concept) to solve the problem. Then, struggling to solve it, they experience the necessity of that concept. A direct instruction phase follows. Finally, students return to the problem with the necessary knowledge to solve it. In a typical CS1 learning path, we recognise a challenging “rollercoaster of abstraction”. We provide examples of learning sequences designed with our approach to support students when the abstraction changes (both upward and downward) inside the programming language, for example, when a new construct (and the related syntactical, conceptual, and strategic knowledge) is introduced. Also, we discuss the benefits of our design in light of Informatics education literature.
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.
Controlling complexity through the use of abstractions is a critical part of problem solving in programming. Thus, becoming proficient with procedural and data abstraction through the use of user-defined functions is important. Properly using functions for abstraction involves a number of other core concepts, such as parameter passing, scope and references, which are known to be difficult. Therefore, this paper aims to study students’ proficiency with these core concepts, and students’ ability to apply procedural and data abstraction to solve problems. We collected data from two years of an introductory Python course, both from a questionnaire and from two lab assignments. The data shows that students had difficulties with the core concepts, and a number of issues solving problems with abstraction. We also investigate the impact of using a visualization tool when teaching the core concepts.