About
93
Publications
41,837
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
2,456
Citations
Introduction
Michal Armoni is an associate professor at the Department of Science Teaching, Weizmann Institute of Science. She studies computer science education (CS) at different age levels, regarding a variety of CS topics, from basic to advanced ones. Her research projects exploit the prism of fundamental ideas of CS (e.g., abstraction, non-determinism, and reductive thinking). She characterizes such ideas and examines appropriate teaching frameworks.
Additional affiliations
November 2017 - present
January 1994 - September 2006
April 2009 - present
Publications
Publications (93)
An international overview of how policy makers, curriculum developers, and school practitioners can integrate computational thinking into K–12 curricula.
In today's digital society, computational thinking (CT) is a critical component of all children's education. In Computational Thinking Curricula in K–12, editors Harold Abelson and Siu-Cheung Kong...
Computer science education has been researched in Israel for a few decades, both at the K-12 and the undergraduate levels. The rich variety of the investigated topics addressed from the very beginning issues beyond the introductory course and programming, including the nature of the discipline and its fundamental ideas and concepts, which are stabl...
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 w...
Abstraction is one of the most fundamental ideas in computer science (CS), and as such, according to Bruner, it should be taught spirally, starting as early as possible and revisited at every level of education. However, teaching CS abstraction to novices is a very challenging task, and CS educational research has often demonstrated students’ diffi...
The practice of teaching involves constant learning and professional growth. Professional development (PD) is necessary even for qualified in-service teachers, allowing them to enhance their disciplinary knowledge, acquire and become familiar with new pedagogical approaches, and deepen their content-pedagogical skills. Educators have suggested inco...
Teachers' pedagogical content knowledge (PCK) is an important factor in all that concerns teaching and learning processes. As such, it plays an important role in pre-service teachers' training and in-service teachers' professional development. In line with this, the pedagogical content knowledge of computer science teachers (CS-PCK) receives consid...
This paper describes a study of students' meaningful learning of the engineering design process during their participation in robotics activities. The population consisted of middle-school students (ages 13-15 years) who participated in the FIRST ® LEGO ® League competition. The methodology used was qualitative, including observations and interview...
Journal of Computational Science Education
In a previous study, we investigated a framework for teaching abstraction in computer science (CS) in the context of an introductory CS course for 7th-grade students. The framework was found effective for developing CS abstraction skills. In this paper, we describe a study that investigated teaching abstraction in CS to 7th-grade students through t...
This is the second part of a two-part series that describes a pilot programming course in which high school students majoring in computer science were introduced to the visual, scenario-based programming language of live sequence charts. The main rationale for the course was that computer science students should be exposed to at least two very diff...
This article describes a pilot programming course in which high school students were introduced, through the visual programming language of live sequence charts (LSC), to a new paradigm termed scenario-based programming. The rationale underlying this course was teaching high school students a second, very different programming paradigm. Using LSC f...
ion is one of the most fundamental ideas in computer science (CS), and as such it is highly important to start teaching it as early as possible. However, teaching this soft concept to novices is a very complicated task, as has been emphasized by many CS and mathematics education experts. In this paper, we describe the first year of a study that aim...
Nondeterminism (ND) is a fundamental concept in computer science, and comes in two main flavors. One is the kind of ND that appears in automata theory and formal languages, and is the one that students are usually introduced to. It is known to be hard to teach. We present here a study, in which we introduced students to the second kind of ND, which...
The issue of early computing education is very complex. It has connections with many other -- close and less close -- domains. In this talk I intend to touch some of these connections, to some extent. Obviously, such a light treatment, of some of the connections, and only to a certain extent cannot lead us to well-formed conclusions regarding early...
This work investigates students' attitudes towards and motivation for learning robotics and STEM (Science, Technology, Engineering, and Mathematics). The population consisted of middle-school students (ages 13-15 years) who participated in the FIRST® LEGO® League competition. The methodology used both qualitative and quantitative instruments: quest...
College and high-school students face many difficulties when dealing with physics formulas, such as a lack of understanding of their components or of the physical relationships between the two sides of a formula. To overcome these difficulties some instructors suggest combining simulations' design while learning physics, claiming that the programmi...
Abstraction is one of the most fundamental ideas in computer science (CS). However, teaching this soft concept to novices is a very complicated task. In our research we examine a simple pedagogical strategy for teaching abstraction as part of an introductory CS unit to 7th graders. This unit covers basic ideas of CS through the use of Scratch.
This work investigates students' learning of computer science (CS) as part of a research project on students' learning of and attitudes toward STEM (Science, Technology, Engineering, and Mathematics) subjects during their participation in robotics activities. The population consisted of groups of middle-school students (ages 13-15 years) who partic...
Featured Column: Computing in Schools
Aiming to collect various concepts, approaches, and strategies for improving computer science education in K-12 schools, we edited this second special issue of the ACM TOCE journal. Our intention was to collect a set of case studies from different countries that would describe all relevant aspects of specific implementations of Computer Science Edu...
Computer science (CS) activities for young students are widely used, particularly visual programming environments. We investigated the use of the Scratch environment for teaching CS concepts to middle school students. In a previous article [Meerbaum-Salant et al. 2013], we reported on the extent to which the CS concepts were successfully learned. I...
Recently there has been considerable discussion regarding the importance of computer science education in schools and its absence in today’s basic education in many countries. Code.org and others have tried to change the state of the art by promoting coding, which is one aspect of computer science. In this short paper we present our point of view r...
Abstraction is a fundamental concept in computer-science (CS) and other scientific disciplines. This paper examines the ways CS thinking patterns can contribute to achieving high levels of abstraction in physics. We examined the work of high school students taking a computational science course, where they designed computational models (simulations...
In this article, we discuss the possible connection between the programming language and the paradigm behind it, and programmers'tendency to adopt an external or internal perspective of the system they develop. Based on a qualitative analysis, we found that when working with the visual, interobject language of live sequence charts (LSC), programmer...
The gap between enrollments in higher education computing programs and the high-tech industry’s demands is widely reported, and is especially prominent for women. Increasing the availability of computer science education in high school is one of the strategies suggested in order to address this gap. We look at the connection between exposure to com...
Computational science is a growing scientific field that involves the design of computational models of scientific phenomena. This field combines science, computer-science (CS), and applied mathematics in order to solve complex scientific problems. In the past few years computational science is being taught in secondary schools, leading researchers...
In view of the recent developments in many countries, for example, in the USA and in the UK, it appears that computer science education (CSE) in primary or secondary schools (K-12) has reached a significant turning point, shifting its focus from ICT-oriented to rigorous computer science concepts. The goal of this special issue is to offer a publica...
Featured Column: Computing in Schools
We examine how students work in scenario-based and object-oriented programming (OOP) languages, and qualitatively analyze the use of abstraction through the prism of the differences between the paradigms. The findings indicate that when working in a scenario-based language, programmers think on a higher level of abstraction than when working with O...
Computational science is a growing scientific field that involves the design of computational models of scientific phenomena. This field combines science, computer-science (CS), and applied mathematics in order to solve complex scientific problems. In the past few years computational science has been taught in secondary schools, a fact that led res...
Featured Column: Computing in Schools
Non-determinism (ND) is a fundamental concept in computer science, and comes in two main flavors. One is the kind of ND that appears in automata theory and formal languages. The other, which we term operative, appears in nondeterministic programming languages and in the context of concurrent and distributed systems. We believe that it is important...
Scratch is a visual programming environment that is widely used by young people. We investigated if Scratch can be used to teach concepts of computer science (CS). We developed learning materials for
middle-school students that were designed according to the constructionist philosophy of Scratch and evaluated them in a few schools during two years....
Abstraction is a key concept in CS, one of the most fundamental ideas underlying CS and its practice. However, teaching this soft concept to novices is a very difficult task, as discussed by many CSE experts. This paper discusses this issue, and suggests a general framework for teaching abstraction in CS to novices, a framework that would fit into...
Featured Column: Computing in Schools
Computational science is a field that deals with the construction of computational models. It is characterized by its interdisciplinary nature. Computational science is now being taught in universities and recently even in high-schools. This paper describes research into the learning processes of tenth-grade (16-year-old) students studying a course...
Feature Column: Computing in Schools
In this paper we present qualitative findings on the influence of previous programming experience on the learning of the visual, scenario-based programming language of live sequence charts (LSC). Our findings suggest that previous programming experience leads programmers not only to misunderstand or misinterpret concepts that are new to them, but t...
Featured Column: Computing in Schools
Many students hold incorrect ideas and negative attitudes about computer science (CS). In order to address these difficulties, a series of learning activities called Computer Science Unplugged was developed by Tim Bell and his colleagues. These activities expose young people to central concepts in CS in an entertaining way without requiring a compu...
Featured Column: Computing in Schools
Teaching computer science (CS) in high schools, rather than just programming or even computer literacy, is important as a means of introducing students to the true nature of CS, and enhancing their problem-solving skills. Since teachers are the key to the success of any high school educational initiative, any discussion of high school programs must...
In this paper we present preliminary findings regarding the possible connection between the programming language and the paradigm behind it, and programmers’ tendency to adopt an external or internal perspective of the system they develop. According to the findings, when working with the visual, inter-object language of live sequence charts (LSC),...
Visual programming environments are widely used to introduce young people to computer science and programming; in particular, they encourage learning by exploration. During our research on teaching and learning computer science concepts with Scratch, we discovered that Scratch engenders certain habits of programming: (a) a totally bottom-up develop...
Computer Science (CS) Education research, specifically when focusing on secondary education, faces the difficulty of regionally differing political, legal, or curricular constraints. To date, many different studies exist that document the specific regional situations of teaching CS in secondary schools. This ITiCSE working group report documents th...
Featured Column: Computing in Schools
Featured Column: Computing in Schools
We present a didactical approach to the introductory computer science course in high school, and display a primary study of teachers’ attitudes towards this approach. Our focus is on the presentation of computational elements and algorithm/program design, in a textbook that "zips" both theoretical and practical notions, while aiming for ease of com...
Nondeterminism is a fundamental concept in computer science that appears in various contexts such as automata theory, algorithms and concurrent computation. We present a taxonomy of the different ways that nondeterminism can be defined and used; the categories of the taxonomy are domain, nature, implementation, consistency, execution and semantics....
Many students hold incorrect views of what computer science (CS) is, and they have negative attitudes towards the field. In order to address these difficulties, a series of learning activities called Computer Science Unplugged was developed by Bell et al. [3]. These activities expose young people to central concepts in CS in an entertaining way, wi...
Nondeterminism is a fundamental concept in computer science that appears in various contexts such as automata theory, algorithms and concurrent computation. We present a taxonomy of the different ways that nondeterminism can be defined and used; the categories of the taxonomy are domain, nature, implementation, consistency, execution and semantics....
We describe a synthesis course that provides a hands-on treatment of many hardware and software topics learned in computer science (CS) programs. Using a modular series of twelve projects, we walk the students through the gradual construction of a simple hardware platform and a modern software hierarchy, yielding a basic yet powerful computer syste...
Reduction is a problem-solving strategy, relevant to various areas of computer science, and strongly connected to abstraction: a reductive solution necessitates establishing a connection among problems that may seem totally disconnected at first sight, and abstracts the solution to the reduced-to problem by encapsulating it as a black box. The stud...
Reversing is the notion of thinking or working in reverse. Computer science textbooks and tutors recognize it primarily in the form of recursion. However, recursion is only one form of reversing. Reversing appears in the computer science curriculum in many other forms, at various intellectual levels, in a variety of fundamental courses. As such, it...
The research described in this paper continues a previous, qualitative (mostly interview-based) study that examined the ways undergraduate computer science students perceive, experience, and use reduction as a problem-solving strategy. The current study examines the same issue, but in the context of a larger population, using quantitative analysis...
The research described in this paper continues a previous, qualitative (mostly interview-based) study that examined the ways undergraduate computer science students perceive, experience, and use reduction as a problem-solving strategy. The current study examines the same issue, but in the context of a larger population, using quantitative analysis...
Nondeterminism is a fundamental concept of computer science. However, since it is a very abstract concept, teaching and learning nondeterminism is difficult. In this paper we focus on one aspect of the teaching and learning processes of nondeterminism: the extent to which undergraduate students of computer science perceive that nondeterministic aut...
Non-determinism is one of the most important, yet abstract, recurring concepts of Computer Science. It plays an important role in Computer Science areas such as formal language theory, computability theory, distributed computing, and operating systems. We conducted a series of studies on the perception of non-determinism. In the current research, w...
This paper discusses the role of proofs in a course on design and analysis of algorithms. It argues that correctness proofs should always be considered as an integral part of algorithmic solutions, which should otherwise be considered as incomplete. Proofs and proof strategies should be emphasized in such a course, and active proof production shoul...
This paper discusses the role of reduction in computer science and describes a study on undergraduate students' perception of the concept of reduction. Specifically, based on an analysis of students' answers to questions addressing different computer science topics, we present several findings regarding the ways in which undergraduate students conc...
Non-determinism is an essential concept in mathematics and one of the important concepts in computer science. It is also among the most abstract ones. Thus, many students find it difficult to cope with. In this paper, we describe some didactic considerations which guided the development of a “Computational Models” course for high school students, a...
This paper describes research on the perception of undergraduate students of the concept of reduction. Specifically, based on an analysis of students' answers to questions addressing different CS topics, we present several findings regarding the ways in which undergraduate students conceive of and apply reduction. In addition to the research descri...
Program and proof designs are fundamental in computer science (CS). The designs involve the employment of various heuristics that may be considered rather inherent and natural, such as decomposition. Yet, not all heuristics are natural. One less natural, and rather unintuitive heuristic is that of reversing, in which a task is approached by reasoni...
Abstraction has been the focus of many researches in mathematics education and to some extent in computer science education. Abstract thinking characterizes the theoretical foundations of computer science, where reduction is one important abstract thinking pattern. In a previous work, we discussed the issue of reductive thinking among high school s...
Most college and university undergraduate CS programs have a course dealing with the theory of automata and formal languages. In most institutions, the syllabus of such a course is quite stable, and if one compares the syllabus of different institutions, chances are that no significant differences will be found in the automata and computability sec...
In Proceedings of the 10th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE05, Lisbon, Portugal), p. 362.
Solving problems by reduction is an important issue in mathematics and science education in general (both in high school and in college or university) and particularly in computer science education. Developing reductive think-ing patterns is an important goal in any scientific discipline, yet reduction is not an easy subject to cope with. Still, th...
When dealing with a complex problem, solving it by reduction to simpler problems, or problems for which the solution is already known, is a common method in mathematics and other scientific disciplines, as in computer science and, specifically, in the field of computability. However, when teaching computational models (as part of computability) thi...
One of the units in the relatively new high school CS curriculum which is being implemented in Israel is a theoretical unit on computational models. It includes deterministic and non-deterministic finite automata, regular and non-regular languages, closure properties of regular languages, pushdown automata, closure properties of context free langua...
One of the units in the relatively new high school CS curriculum which is being implemented in Israel is a theoretical unit on computational models. It includes deterministic and non-deterministic finite automata, regular and non-regular languages, closure properties of regular languages, pushdown automata, closure properties of context free langua...