Greetings to Instructors

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.

What kind of course is the book designed for?

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.

What makes this book different?

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.

What kind of students take the course?

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.

What exactly is covered in the book?

This is the table of contents. For more details, you can look at the PowerPoint lectures.

  1. Programming Languages
  2. Defining Program Syntax
  3. Where Syntax Meets Semantics
  4. Language Systems
  5. A First Look at ML
  6. Types
  7. A Second Look at ML
  8. Polymorphism
  9. A Third Look at ML
  10. Scope
  11. A Fourth Look at ML
  12. Memory Locations for Variables
  13. A First Look at Java
  14. Memory Management
  15. A Second Look at Java
  16. Object Orientation
  17. A Third Look at Java
  18. Parameters
  19. A First Look at Prolog
  20. A Second Look at Prolog
  21. Cost Models
  22. A Third Look at Prolog
  23. Formal Semantics
  24. The History of Programming Languages

What if I don't have access to those three languages?

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.

What if my students already know Java (or ML, or Prolog)?

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.

What supplementary materials are there?

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.

Will this book work for me?

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.

Where can I get the book?

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