Εκπαιδευτική τεχνολογία
Authors: Ξυνόγαλος Στυλιανός 
Published: January 2014

Teaching and learning programming is without doubt difficult. This fact resulted in extended research on the area of Didactics of Informatics and specifically on the area of teaching and learning programming, as well as on the area of Educational Technology and its role in teaching and learning programming. Although many aspects of novice programming have been investigated, the strengths and weaknesses of the various programming paradigms in the context of an introductory programming course have not been studied. Despite this fact, the majority of the educational institutions used, until the very few last years, the imperative programming paradigm. Furthermore, the research that was carried out and the educational tools that were developed refer, mainly, to the imperative programming paradigm. However, papers presented at international conferences about the content of introductory programming courses, the Computer Science Curriculum and the software market dictate the transition to the object-oriented programming paradigm, or at least the need to teach the object-oriented programming paradigm.No matter what programming paradigm is used the main concepts of programming are the same and teaching them poses many difficulties. One of the most important factors that makes programming difficult to learn is the fact that students are taught the principles of programming by the classic approach, which is based on a general purpose programming language, a professional programming environment for the chosen language and a set of problems from the area of number and symbol processing. So teaching object-oriented programming with a professional programming environment and a general purpose programming language, such as C++ and Java, will not have the desired effects. What is needed is a new integrated programming environment for the introduction to object-oriented programming.The conclusions mentioned above motivated this dissertation, which aims at developing an integrated programming environment for an introduction to object-oriented programming that fulfils students’ didactic needs. For the achievement of this goal we considered necessary to review the various approaches to teaching programming that have been proposed and the educational tools that have been developed on their context and the principles for designing novice programming environments. The design of the new educational programming environment was based on the reviewed research and the combination of the various forms of Educational Technology and it:1. Intends to introduce students to the basic concepts of object-oriented programming and control structures and also to prepare them for an easier transition to a general purpose programming language, such as C++ and Java.2. Incorporates a series of lessons for the introduction to object-oriented programming.3. Incorporates the ability to record students’ difficulties during their introduction to object-oriented programming, since the research that has been carried out until now has revealed important facts about teaching programming but very few about object-oriented programming.Another goal of this dissertation was to use and evaluate the programming environment and the series of lessons incorporated in it, in order to: 1. Investigate the support provided to the student by the programming environment and in particular the support provided by the various forms of educational technology that are incorporated in it.2. Use the ability to record students’ actions for the investigation of students’ difficulties, errors and misconceptions.The dissertation consists of 2 parts that are separated in 13 chapters. In the first part that consists of 9 chapters we present the results of the extended research that has been carried out the last decades about novice programmers and in the second part that consists of 4 chapters we describe the programming environment we developed.In the 1st Chapter we review the difficulties, errors and misconceptions of students during their introduction to programming. In chapters 2 to 8 we present a taxonomy of the various approaches to teaching programming and the educational tools that have been developed in the context of each approach. In the 2nd Chapter we present the classic approach to teaching programming and the main didactic problems associated with it and we give a brief description of the alternative teaching approaches. In the 3rd Chapter we describe in detail the microworld – mini-language approach to teaching programming and in the 4th Chapter the teaching approach that is based on improving the diagnostic abilities of compilers. In the 5th Chapter we present structure editors and iconic programming languages. In the 6th Chapter we describe software visualization concepts and program animators. In the 7th Chapter we refer to the use of algorithm animation techniques and in the 8th Chapter to program auralisation. In the 9th Chapter we review the most important design principles of integrated programming environments for novices.In the 10th Chapter we present the didactic and research rationale that guides the design of the programming environment and we analyze the pedagogical value of its features. In the 11th Chapter we describe the architecture of the software that we developed. In the 12th Chapter we present in detail the design and the results of the pilot use and evaluation of the programming environment. In the 13th Chapter we review the conclusions of this dissertation and we make proposals for improving the programming environment and using it for further research on teaching and learning object-oriented programming.Finally, we present the bibliography and in the appendix the source code of the software that we developed.