One of the most interesting and ambitious panel discussions at SPLASH 2010 was “Manifesto: a New Educational Programming Language” in which Andrew Black, Kim B. Bruce, and James Noble presented their proposal for a new educational object-oriented programming language called Grace. The idea for Grace came about at ECOOP 2010 in Maribor, Slovenia, when Black, Bruce, Noble, and a set of like-minded computer science teachers grappled with the question, “What are we going to be teaching in CS intro courses in five years?”
The threesome decided to team up with the goal of developing Grace by 2015. Their main motivations involve wanting, in the early part of the CS curriculum, a new language that possesses low overhead for simple programs, language levels, solid generics, static and dynamic typing, high level constructs for concurrency/parallelism, support for immutable objects, and power of functional constructs.
As trio explained during the SPLASH panel discussion, the fundamentals of Grace will include everything is an object, simple method dispatch, single inheritance, language levels for teaching, extensible via libraries (control and data), and readability for Java, C, Python, and Scala programmers. Ideally, they want the features of Grace to include uncluttered code, layout significance, structural typing, local type inference, separate subtyping from inheritance, user-definable operators, sensible generics, lambdas, support for static and dynamic typing, and parallel programming.
Their SPLASH paper, “Designing the Next Educational Programming Language,” is available here.
Black, Bruce, and Noble have set up a Web site, http://gracelang.org/, which will feature material for review, news, and more. Most importantly, they will need a lot of assistance and support, and are seeking programmers, implementers, library and IDE writers, testers, teachers, and others to help with their project.
Interested? If so, here’s their contact info:
Alex Black: [email protected]
Kim B. Bruce: [email protected]
James Noble: [email protected]
Jack Rosenberger is senior editor, news, of Communications of the ACM.
As a professional developer with ~20 years of experiencing, I'm part of the movement that wants to de-emphasize object-oriented programming in favor of functional programming. I say this as someone who was once convinced that OOP is the best modularity approach for software (and I flirted with aspect-oriented programming for a while...). Therefore, I would prefer a teaching language that emphasizes functional programming over object-oriented programming, not the other way around.
Which programming language(s) do they use in the introductory courses they teach now?
Displaying all 2 comments