To Be, or Not To Be: That is the Recursive Question
Francisco Fernández de Vega
Abstract
Francisco Fernández de Vega
Abstract
This paper discusses the opportunity of Functional Programming for making students aware about data dependencies and their implications when using parallel and distributed computing infrastructures. Although other programming methodologies, such as Object Oriented Programming (OOP) are usually preferred to be taught at computer science degrees, the problem is that the sequential programming approach is inherent to the model, and once students have entered the framework, it is not easy for them to learn modern parallel programming models. Thus, the methodology learned may act as a straitjacket, preventing students from taking advantage of the parallel architectures widely available. The idea presented here relies on choosing Functional Programming as the methodology to be learned first. Moreover, when any selected language that embodies the functional model is shown to students, we propose to forbid loops, similarly as how go-to sentences are classically forbidden in high level programming languages, or global variables are forbidden to avoid side effects. Students must thus resort instead to recursive functions if data dependencies are present and a sequential order of operations is required, or to map functions when no dependencies exist. This way, students naturally develop the skill to automatically write parallel code within the functional programming context, and then the map/reduce model can be easily exploited in any context when parallel and distributed infrastructures are available. We describe preliminary results obtained when the model has been successfully tested with a group of middle school students.
OpenAlex reports 4 citations for this work. Citation counts describe recorded attention and do not establish research quality.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
This paper discusses the opportunity of Functional Programming for making students aware about data dependencies and their implications when using parallel and distributed computing infrastructures. Although other programming methodologies, such as Object Oriented Programming (OOP) are usually preferred to be taught at computer science degrees, the problem is that the sequential programming approach is inherent to the model, and once students have entered the framework, it is not easy for them to learn modern parallel programming models. Thus, the methodology learned may act as a straitjacket, preventing students from taking advantage of the parallel architectures widely available. The idea presented here relies on choosing Functional Programming as the methodology to be learned first. Moreover, when any selected language that embodies the functional model is shown to students, we propose to forbid loops, similarly as how go-to sentences are classically forbidden in high level programming languages, or global variables are forbidden to avoid side effects. Students must thus resort instead to recursive functions if data dependencies are present and a sequential order of operations is required, or to map functions when no dependencies exist. This way, students naturally develop the skill to automatically write parallel code within the functional programming context, and then the map/reduce model can be easily exploited in any context when parallel and distributed infrastructures are available. We describe preliminary results obtained when the model has been successfully tested with a group of middle school students.
Key concepts: Computer science, Programming paradigm, Context (archaeology), Programming language, Functional programming, Reactive programming, Object-oriented programming, Parallel programming model