Grace: A new object-oriented language for novices

Thu 1:30-5:00 pm - Discovery
Kim Bruce, Pomona College, USA
James Noble, Victoria U Wellington, New Zealand
Andrew Black, Portland State U, USA

With increasing frustration with Java and its ilk, instructors are searching for an alternative language for introducing students to object-oriented programming. This alternative should have simple and clear syntax and semantics, provide good support for object-oriented programming, and yet give instructors the flexibility to introduce the material in a variety of ways, including objects-first, objects-late, and functional-first. It should also support both dynamic and static typing.

Grace is a new language that meets these needs. Grace allows the definition of both objects and classes, provides encapsulation and inheritance, and is gradually typed, allowing instructors to start with either dynamic or static typing and to move from one to the other. Moreover, Grace provides a concise syntax for first-class functions providing great flexibility in building new language constructs from the primitive notions of the language.

In order to support good pedagogy, Grace, like Racket, supports dialects, so that students can be introduced first to limited versions of the language, which can then be grown, in a variety of ways, to the full version. A simple, object-based module system supports the use of libraries that can be used as scaffolding for teaching. For example, a Grace version of the Java objectdraw library for graphics is available for use in teaching event-based graphical programming using Grace.

The first 90 minutes of this tutorial will introduce participants to the features of Grace, the motivations that led to the design, and discuss how Grace might be used in introductory courses. Those wanting to experience Grace immediately may stay for a second 90-minute lab in which they can try their hand at Grace programming.


The presenters of this tutorial are the members of the core Grace deign team: Black, Bruce and Noble. All are involved in teaching undergraduate programming, and are looking forward to teaching their introductory courses with a modern, conceptually simple, object-oriented programming language: Grace.

Kim Bruce has been Reuben C. and Eleanor Winslow Professor of Computer Science at Pomona College and the Frederick Latimer Wells Professor of Computer Science emeritus at Williams College, where he taught for 28 years. He received his B.A. from Pomona College and Ph.D. from the University of Wisconsin.

Bruce's research is mainly in the area of programming language design and semantics, with special focus on object-oriented languages. He has also done considerable work in computer science education, including work on the ACM/IEEE CS Curricula '91 committee and on all three of the curricula put forward by the Liberal Arts Computer Science Consortium. He received the ACM SIGCSE award for Outstanding Contributions to Computer Science Education in 2005. Aside from the usual collection of research papers, he has authored two books: Foundations of Object-Oriented Languages: Types and Semantics, published in 2002 by MIT Press, and Java: An Eventful Approach (with Danyluk and Murtagh) in 2005.

James Noble is Professor of Computer Science and Software Engineering at Victoria University of Wellington, New Zealand. James has B.Sc(Hons) and Ph.D. degrees, both from VUW, completed in 1997. After leaving VUW, James worked in Sydney, first at the University of Technology, Sydney, and then at the Microsoft Research Institute, Macquarie University. James returned to VUW as a lecturer in late 1999, just in time to avoid the predicted end of the world.

Noble's research centers around software design. This includes the design of the users' interface, the parts of software that users have to deal with every day, and the programmers' interface, the internal structures and organizations of software that programmers see only when they are designing, building, or modifying software. His research in both of these areas is colored by his longstanding interest in object-oriented approaches to design.

Andrew Black is Professor of Computer Science at Portland State University, and a former head of department at the Oregon Graduate Institute. He has been both teaching programming and designing programming languages since 1977, and holds a doctorate from the University of Oxford, but has also punctuated his academic career with spells in industry.

Black's research aims at making programming easier, and encompasses programming environments and tools as well as languages. He is a co-designer of Emerald, the first object-based distributed programming language, and of the traits mechanism for software reuse, which has been adopted in various forms by several recent languages, including Fortress, Pearl and Scala. He is a co-author of Squeak By Example and Pharo by Example.


Antony Hosking
Patrick Eugster
Purdue U


Cristina V. Lopes
UC Irvine


Robert Hirschfeld


Carl Friedrich Bolz

Sponsored by ACM SIGPLAN


Plaxo Facebook Twitter