Use the links at the bottom to navigate.



 

Rick and Stu's Books



 

Over the past eight years we've written between six and twenty-four books, depending on how you count. There have been six major titles, but each has a collection of instructor's manuals (which are given away, in spite of all the time it takes us to write them), lab manuals, and disks, which bring the total to at least twenty-four, if one wants to inflate one's publication list by counting all the different ISBNs. By the way, our average ISBN is 0-534-42355-3.
All of the books below are published by Brooks/Cole Publishing Co., a division of International Thomson Publishing Company. The Brooks/Cole folks are just about as nice a bunch as one can find, in or out of the publishing biz. If you have any questions, coments, suggestions, or complaints about anything we've written, please don't hesitate to let us know, or you can go over our heads and talk to Kallie Swanson, our editor. If you want to communicate with us electronically, here's how:

Rick Decker: rdecker@hamilton.edu

Stuart Hirshfield: shirshfi@hamilton.edu

Kallie Swanson: Kallie.Swanson@BrooksCole.com

Our books cover all of our CS curriculum for the first two years. This is less from a desire on our parts to keep our students from seeing texts by anyone else than it is from our continuing search to find just the right text for the courses we teach. More often than not, we simply haven't found a text that suited us perfectly and so decided to write our own.
Below, we present a chronological list of our books (at least the ones that are still in print--don't get us started on that subject!)


programming.java |  The Analytical Engine Online |  Working Classes |  The Object Concept

Coming Soon!

programming.java

 

C++ is steadily gaining popularity in high schools, colleges, and universities, matching the increasing demand we see outside of academia. If the truth be told, though, C++ is not everyone's cup of tea. Without doubt, C++ is a big, complicated, and potentially dangerous language, requiring a considerable amount of care to teach well.
Java is a brand-new language, designed for producing "applets"--programs that run within suitable Web browsers. While Java is very similar to C++ in many respects (it's an object-oriented language with much of its syntax in common with C++), it has the advantage of being much simpler than its "big brother." For instructors who find C++ is too large a pill to swallow in CS 1, we provide a CS 1 text in a "kindler, gentler" language. Used in a stand-alone Introductory Programming course or as a prerequisite to a CS 2 course in C++, programming.java  will introduce students to good programming practices and give them the ability to make Web pages come alive.

Contents

  1. Background
  2. Applets
  3. Widgets
  4. Visual Design
  5. Java Language Basics
  6. Events and Actions
  7. Methodical Programming
  8. Collections
  9. Exceptions
  10. Input/Output
  11. Threads
  12. Applets in Cyberspace

The Analytical Engine Online

 

In the brief period since the release of the second edition of The Analytical Engine we experienced the explosive growth of the Internet, along with its associated application programs and ever-increasing effects on society. The latest version of the text includes substantial additions to introduce students to the Net, to get them started designing their own Worldwide Web pages, and to think about issues of censorship versus free speech, intellectual property, the society of cyberspace and many of the other issues that accompany this new and growing aspect of computers.
The most exciting part of this new text, though, doesn't even appear between its covers. We've built a complete collection of new and updated labs which are available on our Web server, to be downloaded and run through any Java-aware web browser. To whet your appetite, take a look at our lab site.

Contents

  1. Social and Technological History
  2. Local Applications
  3. Global Applications
  4. Designing for Use
  5. Programming
  6. Program Translation
  7. Hardware
  8. Theory of Computation
  9. Artificial Intelligence
  10. Computers and Society

Working Classes

 

The CS 1 and CS 2 curricula are so closely related that it would be appropriate to think of them as a single year-long course. With this in mind, we knew that The Object Concept would need a companion text for CS 2. Whatever questions CS educators may have had about the appropriateness of OOP in CS 1, there was almost no argument with the thesis that

An object-oriented approach is a natural for a data structures course.

This text covers the "canonical" data structures and the algorithms associated with them. We make heavy use throughout of templates, believing that this feature is one of the most powerful and useful aspects of C++.

Contents

  1. Preliminaries: ADTs and Verification
  2. Lists
  3. Strings
  4. Other Linear Structures: Stacks and Queues
  5. Recursion
  6. Trees
  7. Specialized Trees
  8. Graphs and Digraphs
  9. Unordered Collections: Sets,Dictionaries, and Hashing
  10. Travesty: Putting it All Together

The Object Concept

 

Pascal was designed from the start to be a teaching language. It was simple, elegant, and powerful. In 1992 it was also nearly twenty years old and we had learned quite a lot about how to program efficiently in that time.
Object-oriented programming had been around about as long as Pascal and there was a growing consensus that OOP was an efficient paradigm for designing large programs. At the time, most schools that taught OOP began with an imperative language like C or Pascal and waited until the second or third year to introduce object-oriented programming in Smalltalk or C++. We thought that for a novice, every program was a large program and so decided

Object-oriented programming is an appropriate paradigm for a first programming course

We settled on C++ as our vehicle and produced a lab-based introduction to programming, introducing classes from the very beginning.

Contents

  1. Designing With Classes
  2. The Ingredients of Classes
  3. Class Actions I: Selection Statements
  4. Class Actions II: Repetition Statements
  5. Compound Data
  6. Pointers and References
  7. Process I: Organizing and Controlling Classes
  8. Inheritance
  9. Process II; Working With Classes
  10. Class Actions III: Algorithms
  11. Classes in the Abstract

Coming Soon!

 

Writing texts, especially in an area that changes as fast as computer science, is a lot like having children: the real work only starts once they arrive. Our own experiences in class and the comments of our colleagues point the way to a seemingly endless string of modifications and new ideas.

programming.java2

In writing programming.java, we were the victims of timing, since version 1.1 of Java came out just as we were finishing. The result wasn't a disaster, since the original version of the language was supposed to be "upward compatible" with v1.1--in other words, a 1.0 program should run just fine in a 1.1 environment.
The problem was that there were some features of v1.1 (and, now, Java 2) that were just too useful to leave out, forcing us to make brief mention of the new features in what was largely a 1.0 text. To remedy this, we're in the process of preparing a second edition of p.j. Until that project is completed, we've tried to satisfy readers hungry for the latest version of Java by providing a suite of online labs, completely revised and up-to-the-minute. Watch this space for details on when p.j2 will be released (probably available in December 1999).


programming.java |  The Analytical Engine Online |  Working Classes |  The Object Concept

Hamilton Home |  Computer Science |  Rick's FAQ |  Schedule