Education is about supporting humans in their growth, with a special focus on exploring their intellectual potential. Learning to act following a given (even complex) pattern is losing its educational value very fast, because all well described activities can be automated. Education therefore should focus on developing those cognitive process dimensions of pupils where technology cannot compete with humans (Dagienė et al. (2020), Hromkovič and Lacher (2017), Hromkovič et al. (2020)). The contribution of this paper is conceptual. In the paper we show that starting with the algorithmic view on the historical development of number representations and calculations offers a natural, more understandable way for teaching mathematics in primary schools. We show that going consequently from concrete to abstract empowers pupils to be able to design own representations of numbers, rediscover the execution of arithmetic operations on their own, and even develop elementary calculations in own designed number systems. We show here how a successful process of rediscovery of arithmetic algorithms can be designed by using classical algorithm design methods as “induction” and “divide and conquer”. We show how that algorithmic thinking can essentially contribute to improving education in mathematics.
The design of algorithms is one of the hardest topics of high school computer science. This is mainly due to the universality of algorithms as solution methods that guarantee the calculation of a correct solution for all potentially infinitely many instances of an algorithmic problem. The goal of this paper is to present a comprehensible and robust algorithms design strategy called “constructive induction” that enables high school students to discover solution methods for a large variety of algorithmic problems. The concept of constructive induction is based on searching for a universal method for solving any instance of an algorithmic problem when solutions of smaller problem instances are available.
In general, our approach strengthens learners in problem solving and their ability to use and develop abstract representations. Here we present a large collection of tasks that can be solved by constructive induction and show how to use this method to teach algorithm design. For some representative algorithmic tasks, we offer a detailed design of lessons in high school classes. We explain how our implementation of teaching in classrooms supports critical thinking, sustainability of acquired knowledge, problem solving, and the ability to abstract, and so contributes to reaching deep competences in algorithmic thinking.