Graceful Programming --- Teaching Introductory Programming
What if you could teach novices programming with a language that was explicitly designed to help students understand how to do object-oriented programming without saddling them with obscure and complicated syntax and convoluted constructs? We’ve constructed such a language that can be used to teach novices using the features of modern programming languages, but without all the overhead of existing industrial strength languages. It it object-based (but with classes), supports first-class closures (anonymous functions), is gradually typed, and is designed to be simple, both syntactically and semantically. Dialects can be used to introduce new features (e.g. graphics) or to restrict the language (eliminating constructs, requiring type annotations, etc.) We taught an introductory course using Grace this fall and found it to be both effective and a pleasure to teach (and learn). In this tutorial we will give a quick overview of the language, explain how we taught it, discuss student feedback on the use of Grace, and provide comparisons with the use of languages like Java and Python for teaching novices. A draft introductory textbook using Grace is available on-line at http://www.cs.pomona.edu/~kim/ProgrammingWithGrace/bookmain.pdf, and the course materials (including lectures, sample code, etc.) from this first offering are on the web at http://www.cs.pomona.edu/~kim/CSC051GF14/. A Grace compiler and editor runs on the web (no installation needed) and is available at http://www.cs.pomona.edu/~kim/minigrace/.
Track: ECOOP Summer School
Kim B. Bruce has been Reuben C. and Eleanor Winslow Professor of Computer Science at Pomona College since the summer of 2005. He is the Frederick Latimer Wells Professor of Computer Science emeritus at Williams College, where he taught for 28 years. His first position out of graduate school was as an instructor in Mathematics at Princeton University from 1975 to 1977. His research program was originally in the model theory of languages with generalized quantifiers, but his interests turned to programming languages after his stay at M.I.T. His research focus evolved from models of the polymorphic lambda calculus to the study of semantics and type theory. This led to his continuing work in the design of object-oriented languages. His most recent research project involves the design of a new language, Grace, designed for use in the first two years of Computer Science education.