Programming Paradigms, Turing Completeness and Computational Thinking The notion of programming paradigms, with associated programming languages and methodologies, is a well established tenet of Computer Science pedagogy, enshrined in international curricula. However, this notion sits ill with Kuhnu0027s classic conceptualisation of a scientific paradigm as a dominant world view, which supersedes its predecessors through superior explanatory power. Furthermore, it is not at all clear how programming paradigms are to be characterised and differentiated. Indeed, on closer inspection, apparently disparate programming paradigms are very strongly connected. Rather, they should be viewed as different traditions of a unitary Computer Science paradigm of Turing complete computation complemented by Computational Thinking.

A flexible and systematic teaching framework to develop cognitive skills through programming courses Computer programming has become an increasingly crosscutting theme and is no longer considered just a specialized subject. In some countries, the inclusion of this subject in the curricula of the basic cycles of their educational systems has been provided for, because it is recognized that programming promotes computational thinking which allows cognitive development of students. In Chile, the Universidad de La Frontera established that an initial programming course is given to all the Engineering degrees. Unfortunately, studies have shown that students are not achieving the competencies defined by the computational thinking approach. This research paper presents a flexible and systematic teaching framework for developing cognitive skills in programming courses. This framework considers the use of a systematic methodology of teaching programming, which focuses on the process of building solutions over the product; using electronic programmable devices; and sets of predefined exercises appropriate to various domains of the engineering area.