Tools for programming education
Tools for programming education
Programming is one of the basic skills that every computer scientist should master. But programming also plays an important role in general education, because programming trains skills such as developing solutions to problems or organizing thoughts. Within the scope of this project, tools are developed that support the learning of programming. Characteristic of all these tools is a visualization of the program creation and/or the execution of the programs developed by the programming beginners. With this the programming beginners can understand their programs better and they are shown immediately which effects the used programming concepts have.
The hamster model is a special didactic model for learning programming through play. Beginning programmers write programs to control virtual hamsters through a virtual landscape and to solve given tasks. The so-called hamster simulator, a deliberately simple program development environment, is used to develop, execute and test the programs. For the creation of so-called "hamster programs" a variety of textual and visual programming languages and notations are currently supported.
Like "Karel the Robot" or "Kara the Ladybird", the hamster model belongs to the so-called mini-programming worlds or mini-worlds for short. Mini-worlds are characterized by the fact that they try to reduce the abstraction and complexity of programming concepts and support their learning by visualizing the execution of programs. Beginners in programming do not start with the calculation of mathematical formulas but have to control hamsters, ladybugs or robots through virtual worlds with a reduced instruction set in a program development environment provided in each case. In order to make the use of mini worlds for learning programming more varied, we have developed a generator for mini worlds. Based on a simple but powerful class library, a teacher can develop a new mini-world within a short time, then automatically generate a program development environment for this mini-world and make it available to his students.
Due to modern multi-core technologies, parallel programming, i.e. the development of concurrent applications, will become much more important in the near future than it is today. The problem is that parallel programming and its learning are far more complex than traditional sequential programming. We try to take this problem into account by developing Threadnocchio, a simple program development environment that supports the learning of parallel programming with Java threads through playful and visualizing elements. In Threadnocchio the programmer can write parallel programs based on a provided class library and assign icons to the threads. During the execution of the program, the threads visualized by the icons act like independent puppets ("Pinocchios") on a stage. This makes it easy to understand the execution of the parallel programs and to demonstrate the effects of e.g. communication and synchronization mechanisms to the programmer.
Logical or logic-oriented programming is a programming paradigm based on mathematical logic. Here programs do not consist of a sequence of statements, as in imperative programming, but of a data base, which consists of facts and rules. Users of logical programs can make requests to the system. The system then tries to answer the request based on the database. The main field of application of logical programming is artificial intelligence. The best known logical programming language is Prolog. Blockly-Prolog is a system based on Google-Blockly, which makes it possible to develop Prolog programs interactively using graphical blocks.