Algorithms

General Information Algorithms are the mainstay of modern computer programming. Some algorithms--such as specific methods for sorting data, encrypting information, or creating sorted lists of information--are taught to students in computer science courses, and are considered common knowledge amongst computer programmers. Other algorithms--like the methods used by the Federal Government to encrypt and protect government secrets--are proprietary information created by programmers to solve specific problems. Follow the links below to learn more about algorithms.

Specific algorithms John Horton Conway designed an algorithm he calls "Doomsday", which predicts the day of the week for any date. Read about it at Rudy Limeback's Web site, http://rudy.ca/doomsday.html. Computer algorithms are frequently employed for sorting and searching. Thomas Niemann provides an intuitive approach to these algorithms in his sorting and searching algorithm "cookbook" at this website. A computer can also use algorithms to explore scientific questions.  Find out how algorithms are being applied to the fields of evolution and genetic research at http://www.obitko.com/tutorials/genetic-algorithms/. You might want to visit the Stony Brook Algorithm Repository where you will find a collection of algorithms for more than 70 fundamental problems. A good resource for exploring specific algorithm questions is the Dictionary of Algorithms and Data Structures. This dictionary is found at the National Institute of Standards and Technology website.

Books The classic text on algorithms is Donald Knuth's Art of Computer Programming (Addison-Wesley, 1998), now in its third edition (originally published in the 1970s). So far there are three volumes in this set, but Knuth is working on volumes four and five. For a progress update, you can connect to Knuth's home page at www-cs-staff.stanford.edu/~knuth/taocp.html. A good book about integrating algorithms using an object-oriented methodology is Design Patterns. You can take a look at it at here.

Additional Links http://math.ucsd.edu/~fan/math188/bonus/park/top5.html Viewing animations of algorithms can be an effective way to learn and understand algorithms. At this web site, you can find links to animations of basic algorithms, such as sorting, tree, geometric, graph, parallel, and data structure algorithms.