to be, or not to be: that is the recursive question.
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.