CS354 - Spring 2016: References

If you ever come across a resource not on these lists that you find useful, please let me know so I can make this page more useful for others as well. Thanks!

Textbooks

There are several algorithms textbooks freely available online. It is well worth researching a given topic in multiple sources, because each can provide a perspective or explanation that adds something the others do not. These are roughly ordered by decreasing quality and ease of use.

The information is out there. We live in an age where access to information isn't the problem, and the ability to sift through and recognize the most valuable bits is increasingly important.

Specific Topics / Tools

Each of these sites is a great resource for a specific topic or provides a useful tool for learning about algorithms.

General References

These are some more general references for looking up concepts. You are familiar with some already, but I've tried to describe exactly how each can be useful.

With these resources, a motivated student can learn all of the material in this class on his or her own. I, however, can provide one-on-one interaction tailored to your particular understanding. Use these materials to learn broadly, and come to me for help with specific questions. The less time I spend replicating broad resources like these, the more time I can spend helping individuals.

Java

For learning Java, I recommend the following tutorials, practice problems, and references. (Many of these resources are for Java 6 or 7, while our lab machines have Java 5 installed, but there should be no important differences in the parts that concern us in this class.) Start with a tutorial to get up and running with the basics of writing, compiling, and writing programs. Then, you should use the tutorials and reference to look up specific topics as needed and briefly practice each on one of the practice sites to be sure you understand it before applying it in your own code.

Unix and the Command Line

We will be working in a Unix environment in this class. These resources can be used to refresh your memory or quickly look up a command. There are many "flavors" of Unix. OS X is one; Linux (like on sun.iwu.edu) is another. They all share common commands and utilities, though, so a tutorial written for one is often applicable to the others.