Teaching Abstraction in Mathematics and Computer Science - A Computer-supported Approach with Alloy (original) (raw)
Related papers
A systematic approach to teaching abstraction and mathematical modeling
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education - ITiCSE '12, 2012
Abstraction is the process of developing a conceptual veneer that hides the complexity of internals. It is central to computational thinking, in general, and high quality software development, in particular. Use of mathematical modeling makes the abstraction precise. The need for undergraduate CS students to create and understand such abstractions is clear, yet these skills are rarely taught in a systematic manner, if they are taught at all. This paper presents a systematic approach to teaching abstraction using rigorous mathematical models. The paper contains a series of representative examples with varying levels of sophistication to make it possible to teach the ideas in a variety of courses, such as introductory programming, data structures, and software engineering.
Abstraction in Computer Science Education: An Overview
Informatics in Education, 2021
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.
Proceedings of the 2nd International Conference on Higher Education Advances, 2016
Many technical disciplines require abstraction skills, such as the ability to deduce general rules and principles from sets of examples. These skills are the basis for creating solutions that address a whole class of similar problems, rather than merely focusing a single specific instance. Experience shows that many freshmen students are ill equipped with these skills. Therefore, we developed an intervention that systematically teaches abstraction skills to students, and applied our approach to a cohort of freshmen students in computer science.
Reducing Abstraction in High School Computer Science Education
Journal on Educational Resources in Computing, 2008
The research presented in this article deals with the difficulties and mental processes involved in the definition, implementation, and use of abstract data types encountered by 12 th grade advanced-level computer science students. Research findings are interpreted within the theoretical framework of reducing abstraction [Hazzan 1999]. The article describes the research setting and findings and concludes with some pedagogical implementations.
Teaching the Mathematics of Software Design
Formal Methods in the Teaching Lab, Workshop at FM 2006, 2008
This note summarizes the experience and philosophy of teaching two one-semester courses, Software Design 1, a second year course, and Software Design 2, a third year course, repeatedly in the period from 1999/2000 to 2005/06. These courses had a peak enrollment of 190 students. Many students perceive these two courses as the core courses for their career in software development. The same material was presented in a condensed form in a graduate course in 2005/06. The courses taught students the mathematics of software design, rather than a particular " formal method " tool or language. 1 The Need for Software Design Whereas in the design of a mechanical device breaking design rules would quickly lead to recognizable failure, one can very well break the rules of software design and still get a " sufficiently functional " and marketable product. Qualities of software are not as evident as qualities of physical products; design qualities are even harder to judge than the qualities evident from using a product. Students follow the rules of software design because they are told so and not because they would experience the consequences of not doing so. Students grow up with unreliable software to the extent that they consider such poorly working software to be normal or unavoidable. There is a widespread belief that programming skills are sufficient to write software. All this makes is difficult to convince students that software can be better designed, that it is worth doing so, and that it is worth learning the mathematics for doing so. We report on our experience teaching software design with its mathematical foundation. 2 Uniform Design Notation and Uniform Mathematical Basis Our approach is to integrate mathematics in the presentation of software design, rather than to contrast formal and informal approaches; to teach all core topics in software design rather than a specific topic for which a dedicated formalism or tool exist; and to present the material with minimal notational burden. A uniform textual design notation is used, in order to emphasize the similarities among the concepts and help students interconnect these concepts, rather than making students switch to a new mindset due to the notational differences. Graphical notations like flowcharts, class diagrams, and statecharts are presented as appropriate and defined by translation to the textual notation. A mathematical basis for all design constructs is given. A typed logic using the same type system as a programming language is used. Equational reasoning is used for all proofs because of the familiarity from calculus. • We can subdivide the task of checking correctness assertions by adding intermediate annotations: {x ≥ 0} z, u := 0, x ; {invariant: (z + u · y = x · y) ∧ (u ≥ 0)} while u > 0 do z, u := z + y, u – 1 {z = x · y} z := 0 u := x u > 0 z := z + y u := u – 1 (z + u · y = x · y) ∧ (u ≥ 0) x ≥ 0 z = x · y + – Abstract Programs-21 Algorithmic Abstraction vs. Data Abstraction
Abstract Examining Instruction for Abstraction in K-12 Computer Science
Abstraction is a term that is difficult to navigate as an educator because multiple definitions of abstraction exist. Computer scientists have been working towards a common definition of abstraction; however, the instruction and assessment of abstraction remains categorically under researched. Because abstraction is often cited as a component of computational thinking, abstraction has been summarily likened to a higher order thinking skill. Educators have studied critical thinking more than computational thinking, and overlapping characteristics provide educators with instructional guidance. Interestingly, as Fuller et al. (2007) indicate, students likely have multiple pathways for learning abstraction and critical thinking, just as students have multiple pathways for learning computer science. In this basic qualitative examination of instruction using thematic coding analysis, I will explore the instructional strategies, development of objectives, and assessments K-12 computer science teachers use to teach abstraction. Practical descriptive insights illuminate additional variables to research the instruction of abstraction qualitatively and quantitatively, as well as provide anecdotal instructional successes.
Modelling the Use of Abstraction in Algorithmic Problem Solving
Proceedings of the 27th ACM Conference on on Innovation and Technology in Computer Science Education Vol. 1
ion plays a key role in efficient problem solving: it helps to identify relationships and properties that support moving from basic brute force approaches towards simpler and more efficient solutions. The ability to abstract in problem solving is a difficult skill that should be nurtured by providing both examples and explicit guidance on how to use abstraction. In order to develop teaching materials we should first have a reasonable estimation of the students' current ability to abstract from the problem description as reflected in their solutions. In this study we have identified a simple problem, "EggCartons" which could be used as an exemplar to model abstraction in the classroom, due to its wide solution space. Its algorithmic solutions move up the ladder of abstraction, from brute force towards mathematical modelling. We visually inspected and classified the problem's solutions written by second year students, in order to explore students' current abstraction skills. The classification helped to identify four levels of abstraction that are relevant to other problems. The insights gained from this analysis provide a possible learning trajectory for abstraction in problem solving which could support undergraduate students to gradually increase the abstraction level of their algorithmic solutions. CCS CONCEPTS • Social and professional topics → Computing education.
Reducing Abstraction: The Case of School Mathematics
There is a growing interest in the mathematics education community in the notion of abstraction and its significance in the learning of mathematics. Reducing abstraction is a theoretical framework that examines learners behavior in terms of coping with abstraction level. It refers to situations in which learners are unable to manipulate concepts presented in a given problem; therefore, they unconsciously reduce the level of abstraction of the concepts involved to make these concepts mentally accessible. This framework has been used for explaining students conception in different areas of undergraduate mathematics and computer science. This article extends the applicability scope of this framework from undergraduate mathematics to school mathematics. We draw on recently published research articles and exemplify how students behavior can be described in terms of various interpretations of reducing abstraction level.
Tool-Aided Learning of Code Reasoning with Abstraction in the CS Curriculum
Informatics in Education, 2021
Computer science students often evaluate the behavior of the code they write by running it on specific inputs and studying the outputs, and then apply their comprehension to a more general understanding of the code. While this is a good starting point in the student's career, successful graduates must be able to reason analytically about the code they create or encounter. They must be able to reason about the behavior of the code on arbitrary inputs, without running the code. Abstraction is central for such reasoning. In our quest to help students learn to reason abstractly and develop logically correct code, we have developed tools that rely on a verification engine. Code involves assignment, conditional, and loop statements, along with objects and operations. Reasoning activities involve symbolic reasoning with simple assertions and design-by-contract assertions such as pre-and post-conditions as well as loop invariants with data abstractions. Students progress from tracing and reading code to the design and implementation of code, all relying on abstraction for verification. This paper reports some key results and findings from associated studies spanning several years.