Teaching Scheme (and ML and Haskell) as the first programming language produces better programmers than conventional approaches. The advantages of a Scheme-first approach are threefold. First, the syntax and the semantics of the language are simple and easily conveyed. Second, with a suitable programming environment, an instructor can present the language as a series of increasingly complex sub-languages such that constructs of larger subsets do not interfere with programming in smaller ones. This is critical for providing beginner-friendly error messages. Finally, and most importantly, based on a simple notation and a hierarchical language presentation, an instructor can focus on the systematic design of programs, using reasoning about classes of values. From there, it is natural to switch to the currently fashionable object-oriented language.
In this talk, I will explain PLT's curriculum, programming languages, and support tools. I will also present a summary of the team's ten-year experience. Finally, I will speculate on how the concepts apply to languages such as Haskell.