Teaching with Grace
We are engaged in the design of a new object-oriented educational programming language called Grace.
Our motivation is frustration with available languages, none of which seems to be suited to our target audience: students in the first two programming courses who are learning to program in an object-oriented style.
Grace aims to be significantly simpler than existing languages, and yet make it possible to write powerful libraries that effectively extend the language. Grace achieves this by using blocks (representing functions) to define all its "built-in" control structures, so each new kind of data object defined in a library can be equipped with the control structures necessary to make it appear "first class".
Grace also supports, but does not require, static type checking. This makes it possible to use Grace as a dynamically typed language, to start with dynamic types and add static types later, or to teach static types from the beginning.
We will discuss the design principles behind Grace, and the current state of the language design, as well as soliciting your feedback. For more information, see http://www.gracelang.org.