Mama Educational Principles
Mama was designed to target teaching educational principles in computer science. The skills gained while working with Mama may be separated into two groups: general mental skills, and a more specific group - computer science skills.
General Mental skills
As an educational programming language, Mama was designed to improve students' analytical and logical skills, while creating 3D animations and games. The Visualized parts of Mama support better understanding of concepts such as objects, methods, running-time, etc. Programming with Mama improves the following student's skills:
- Imagination/creativity. In creating animations the student uses and trains much of his imagination and creativity capabilities in both setting the 3D stage interactively and programmatically.
- 3D Thinking/Perception. Majority of Mama programs are 3D instructions such as move and turn, which require 3D orientation and 3D thinking.
- Problem solving. Programming with Mama requires translation of a given problem into an algorithmic solution, decomposing it into sub missions.
- Logic and Reasoning. As any other programming language, logic is an important basic capability, developed and improved while writing computer programs.
Computer science skills
In addition to the above general skills gained while using Mama, it is a tool designed for teaching computer science principles:
- Algorithm design - decomposing a general mission into a precise step-by-step process.
- Abstract Data Types - objects in Mama represent compound entities, often composed of other objects, providing standard Mama services such as 'move' and 'turn'.
- Encapsulation. Mama objects may contain methods and data, encapsulated together for a better modular representation.
- Correctness. As opposed to compile time errors, which are almost totally eliminated in Mama's drag & drop based programming, correctness is the verification that the program runs according to the specification. The visual 3D programming style makes it obvious to identify errors and understand their source.
- Efficiency. That is an important engineering concept, containing two critical measures of the program: time and space.
- Testing, Debugging. These are important final steps for every program - Mama provides the assert keyword for further supporting testing and debugging of the application.