This tutorial, Algorithms in Java, Parts 1-4, contains 16 chapters grouped into four major parts: fundamentals, data structures, sorting, and searching. The descriptions here are intended to give readers an understanding of the basic properties of as broad a range of fundamental algorithms as possible. The algorithms described here have found widespread use for years, and represent an essential body of knowledge for both the practicing programmer and the computer-science student. The second volume is devoted to graph algorithms, and the third consists of four additional parts that cover strings, geometry, and advanced topics. My primary goal in developing these tutorials has been to bring together fundamental methods from these areas, to provide access to the best methods known for solving problems by computer.
You will most appreciate the material here if you have had one or two previous courses in computer science or have had equivalent coding experience: one course in coding in a high-level language such as Java, C, or C++, and perhaps another course that teaches fundamental concepts of coding systems. This tutorial is thus intended for anyone conversant with a modern coding language and with the basic features of modern computer systems. References that might help to fill in gaps in your background are suggested in the text.
Most of the mathematical material supporting the analytic results is self-contained (or is labeled as beyond the scope of this tutorial), so little specific preparation in mathematics is required for the bulk of the tutorial, although mathematical maturity is definitely helpful.