I have been more and more coming to believe that Java is no longer the right programming language for teaching people programming. Java has to be learnt, it is after all one the most important programming languages of the moment. However, I now believe that dynamic programming languages, in particular Python and Groovy, are better languages for the first introduction to programming. Following this you can introduce type, compilation, design patterns and all the good software engineering material as second courses on programming using languages like Java and C++. Of course, everyone interested in programming should also learn languages like Haskell, Erlang, Prolog, but that issue is for another time.
I started thinking about Python as a first programming language for university courses back in 2003. The idea bubbled as a publishing project but didn't really take off until 2005. I was introduced to Sarah Mount and James Shuttleworth (then both at Coventry University, Sarah has now moved to University of Wolverhampton) who were using Python to teach their introductory courses to physicists, economists, art and design students, as well as computer science students. We immediately waded into taking all our material and forming it into a book. The result is _Python for Rookies_ published by Thomson Learning (now called Cengage Learning). This should be in the bookshops next week.
Buy this book, you know you want to :-)
PS It is true that Graham Roberts and I authored the book _Developing Java Software_ as a first programming course using Java (and we'd like you to buy that as well :-). We are however in the process of writing a book using Groovy instead. More on this at a later date.
PPS The _Python for Rookies_ website has only just been started so it doesn't have much on it yet. Over the next few weeks more and more material will be added.