I am Dr. Adam Brooks Webber, an associate researcher and instructor in the Department of Electrical Engineering and Computer Science at the University of Wisconsin - Milwaukee. Here are the highlights, in a short question-and-answer style, of my new book, Modern Programming Languages, A Practical Introduction.
The course for which I developed the book is called Programming Languages Concepts. It is a required course for undergraduate computer science majors at the University of Wisconsin - Milwaukee. The only prerequisite is the successful completion of CS2. The course can also be taken by graduate students (who are required to do additional work) for graduate credit.
The book assumes that students already know at least one language well: at the level usually achieved by undergraduates after two semesters of study. It does not matter what language that is. There are no other prerequisites.
My course is based on a series of tutorials in three very different programming languages: ML, Java, and Prolog. Interleaved with the tutorial chapters are abstract chapters that introduce the important concepts of programming languages where they fit naturally with the programming exercises the students are doing.
People often ask, is the book concept-driven or paradigm-driven? Neither of those classifications applies well to my book. I have not tried to organize information about programming languages in any kind of encyclopedic hierarchy. Instead, I have introduced abstract topics when they fit best with the ongoing tutorials. The result is a very narrative kind of book. One of our reviewers said that it "almost teaches itself." That was my goal.
Most of my students are bright people whose primary interest in computing is practical. They like programming and have some aptitude for it. They have little interest in mathematical abstractions. They hope to find jobs in the computing industry. They think (sometimes incorrectly) that they are not going to do graduate work on the academic side of computer science.
In general, my students do not thrive on a diet of unmotivated abstractions. The book tries to lead them gently into some of the more abstract concepts of programming languages, by starting from exercises in actual programming. For example, Chapter 23 deals with formal semantics--a highly abstract topic--by starting with simple interpreters written in Prolog. These interpreters lead naturally to language definitions using big-step operational semantics. That is why formal semantics occurs so late in the book: only at the end of the Prolog tutorial are students ready to be led from Prolog exercises to this related, abstract topic.
This is the table of contents. For more details, you can look at the PowerPoint lectures.
They are easy to get. All three languages have excellent free implementations available on a variety of platforms, including Windows, Unix, and Macintosh. The web site for the book includes links to them.
If your students already know one of these languages, so much the better: you will be able to skip or skim two or three chapters, leaving time for more in-depth coverage of the others, or for introducing your own additional material. On the other hand, if your students already know two or more of them, my guess is that they will find this book too elementary.
The web site for the book provides a full set of PowerPoint lecture notes for each chapter. All the larger code examples from the text and exercises are there too. Additional instructors-only materials, including test questions and sample solutions to the exercises, are available from the publisher.
I can only say for sure that it works for me. The first semester that I used the new book, the students in the College of Engineering and Applied Science at the University of Wisconsin - Milwaukee voted me the best teacher of the semester. But my feeling is that there is no one best approach, no single solution that will fit all teachers and all students. As you know, if there is a magic ingredient in any successful course, it is the teacher's enthusiasm. Of course, that may be why the book works well for me: I wrote it, so naturally I am enthusiastic about it, and that enthusiasm does more for students than any book ever could. But if your students are at all like mine, I think there is a good chance this book will suit them, and you.
The book is published by Franklin, Beedle & Associates. You can go to their Web site and complete the online review copy request form (http://www.fbeedle.com/review.html) to obtain the book. If accessing the Web is not convenient, you may call them toll free in the USA. Their phone number is 1-800-322-2665. Should you be calling outside the USA, the number is 1-503-682-7668. The company’s address is:
Franklin Beedle & Associates
8536 SW St Helens Drive, Suite D
Wilsonville, Oregon 97070