TITLE: Programming as Program Transformation AUTHOR: Eugene Wallingford DATE: June 18, 2006 10:20 AM DESC: ----- BODY: I see that Ralph Johnson is giving the Friday keynote talk at ECOOP 2006 this year. His talk is called "The Closing of the Frontier", and the abstract shows that it will relate to an idea that Ralph has blogged about before: software development is program transformation. This is a powerful idea that has emerged in our industry over the last decade or so, and I think that there are a lot of computer scientists who have to learn it yet. I have CS colleagues who argue that most programs are developed essentially from scratch, or at least that the skills our students most need to learn most closely relate to the ability to develop from scratch. I'm a big believer in learning "basic" programming skills (most recently discussed here), but I'd like for my students to learn many different ways to think about problems and solutions. It's essential they learn that, in a great many contexts, "Although user requirements are important, version N+1 depends more on version N than it does on the latest requests from the users." Seeing Ralph's abstract brought to mind a paper I read and blogged about a few months back, Rich Pattis's "A Philosophy and Example of CS-1 Programming Projects". That paper suggested that we teach students to reduce program specs to a minimum and then evolve successive versions of a program which converges on the program that satisfies all of the requirements. Agile programming for CS1 back in 1990 -- and a great implementation of the notion that software development is program transformation. I hope to make this idea a cornerstone of my CS1 course this fall, with as little jargon and philosophizing as possible. If I can help students to develop good habits of programming, then their thoughts and minds will follow. And this mindset helps prepare students for a host of powerful ideas that they will encounter in later courses, including programming languages, compilers, theory, and software verification and validation. I also wish that I could attend ECOOP this year! -----