Kara provides a simplified environment for teaching the formalism of programming.
Article: Theory of Computation as a Vehicle for Teaching Fundamental Concepts of Computer Science
"The first approach to teaching programming is to introduce languages such as Java or C# in a step-by-step fashion, where each step covers one construct of the language. Most introductory programming textbooks proceed in this manner. However, there are three objections to this approach. First, these languages are made for the professional programmer and are not tailored to the needs of introductory programming. They are complex and typically object-oriented, posing an additional challenge for the teacher: whereas object-orientation is relevant to “programming in the large”, it is a non-trivial additional hurdle for beginners. Second, this approach emphasizes the structure and syntax of a particular language instead of the design of solutions. Third, the tools used in development are professional programming environments with project-management and debugging facilities. They are complicated to handle and not suited for an introduction to programming."
"The second approach to teaching programming is to use a mini-language to provide a more functionally oriented introduction to programming. Mini-environments provide students with practical, hands-on experience in environments tailored to their capabilities and needs. The problem with using mini-languages based on real-world languages is that they are inherently complex. It is unfortunate that much of the inherent conceptual complexity of the underlying programming language is carried over to the resulting mini-languages. Another problem is that real-world languages evolve constantly, that new languages are created every few years. Mini-environments based on real-world languages must therefore evolve as well."
"The theory of computation offers a way out of the problems of complexity and constant evolution of the above approaches to teaching programming. We propose to use computational models as the models of programming in mini-environments. These models have properties which are highly desirable in introductory programming models. In education, we should strive for utmost conceptual simplicity. Theoretical models of computation are designed to be as simple as possible. They contain only a small number of semantically simple operations. For real life objectives, this may pose a formidable stumbling block and make many tasks difficult beyond practicality. However, in an educational setting, the problems to be solved can be chosen so as to be easily solved within the formal system."
Compared with full-scale programming languages like Java and C#, Kara is:
| Kara Home Page | Finite State Machine | Automata Theory |
| Finite State Kara | Turing Kara | Java Kara |