Frequently Asked Questions

This document contains answers to some frequently asked questions.

How does the 4th edition differ from the 3rd edition? The material has being substantially updated, rearranged, and rewritten, not just abridged. The updates reflect a solid modern programming model, emphasize applications to science and industry, and communicate the message in a more engaging and informal style. It also includes different topics (e.g., strings) and uses newer Java features (e.g., generics and iterables).

Why Java? Why not C or C++ or C# or Python? The programs that we write are very similar to their counterparts in several other languages, so our choice of language is not crucial. We use Java because it is widely available, widely used, embraces a full set of modern abstractions, and has a variety of automatic checks for mistakes in programs, so it works well for students learning to program. There is no perfect language and you certainly will find yourself programming in other languages in the future.

How does Java compare in terms of speed to C or C++ or C# or Python? The answer depends greatly on the type of application you're running. No benchmark is perfect, but The Computer Language Benchmarks Game is a good starting point.

Do I need previous programming experience? Yes, this book is intended for use in a CS2 course. We expect students to have a solid CS1 course (or equivalent) such as Introduction to Programming in Java: An Interdisciplinary Approach. Sections 1.1 and 1.2 summarize of the Java language features we use in the text; this serves either as review (for Java programmers) or as a fast-paced introduction to Java (for C, C++, and Python programmers).

Do I need any special mathematical background? No, we assume only a basic high school background.

I discovered what I think is a typo or error. Whom should I contact? Please check the errata list and fill out a bug submission form. We appreciate your feedback.

I'm an instructor. Can I use your material in my class? Please email the authors for permission. In general, we are very happy to see our material used at other schools, but we do ask that you make appropriate attributions.

I'm a programmer. Can I use your code in my project? Our algs4.jar library is released under the GNU General Public License, version 3 (GPLv3). If you wish to license the code under different terms, please contact our publisher to discuss.

Are there versions of the source code in other languages? We are aware of the following projects to do so:

How can I contact the authors? Email Kevin Wayne or Bob Sedgewick.