# Data Structures and Algorithms

Data structures and algorithms (DS&A) is an integral part of computer science. All written software stores and manipulates information (data) in one form or another. Data structures are standardized, efficient, and robust ways of temporarily storing information in memory. An algorithm, defined as a sequence of precise programming steps, allows us to further manipulate stored data in order to achieve meaningful results. Sorting, searching, and merging are just some of the algorithms commonly used nowadays, bundled into readily available development platforms. Similarly, the developer's toolset features a huge variety of data structures from which to choose. Although a programming task may be achievable by more than one structure or algorithm (or specific implementations of them), choosing the correct one may have a tremendous impact on efficacy, efficiency and scalability.

A typical data structures and algorithms course may involve any combination of the following topics:

• Arrays and lookup tables
• Stacks
• Queues
• Priority queues
• Hash tables (dictionaries), maps, and graphs
• Binary trees and heaps
• Advanced data structures, collections, and generics
• Fixed (immutable) and variable (dynamic) size implementation of data structures
• Implementation of data structures in various programming languages, with C/C++ and Java being the most common.
• Pointers and pointer arithmetic
• Detailed comparison of available data structures
• Sort algorithm implementation and comparison, such as quick sort, bubble sort, and insertion sort
• Search algorithms and techniques such as linear search, binary search tree, brute force search, and heuristics
• Algorithm analysis (performance, complexity)
• Big O notation (e.g. O(n) and O(n log n))
• Algorithmic thinking and algorithm design

Most recent books on data structures and algorithms tend to be platform and language-specific. For a general introduction to DS&A concepts, read Aho's Data Structures and Algorithms. For a Java-oriented introduction, both Lafore's Data Structures and Algorithms in Java and Carrano's Data Abstraction and Problem Solving With Java are great starting points. For C/C++, Weiss' Data Structures and Algorithm - Analysis in C++ is an excellent choice. Donald Knuth has contributed significantly to the development of the field with his findings, and analyses and ideas published in the various volumes and fascicles of the computer science masterpiece The Art of Computing Programming. You can find academic resources on the topic by searching into conference proceedings and journals published by the ACM, IEEE, Springer, Elsevier, or papers indexed publicly by Google Scholar.

In some fields of knowledge there is a seminal work against which all other effort is compared, and that happens to be the case here. The title of the work, The Art of Computer Programming, is the masterpiece of Donald E. Knuth, professor emeritus at Stanford University. The intended seven-volume set, a work in progress, is so famous that it has its own acronym, TAOCP.

The history of the development of The Art of Computer Programming is as interesting as the work itself. Knuth, an expert in compilers, began writing a book on compiler design in 1962, and when the first draft was finished in June of 1965, the hand-written manuscript was 3,000 pages. The original plan for a single volume of 12 chapters was quickly abandoned and replaced with a new plan for seven volumes, each with just one or two chapters. The first three volumes were published in 1968, 1969, and 1973. The work seemed to have a life of its own, however, and grew at such a pace that the fourth volume demanded further subdivision into what will be at least four separate subvolumes. The first installment of Volume 4 was not published until February 2005.

As early as 1976, Knuth was already going back to produce a second edition of Volume 2, and with the creation of more recent editions of existing volumes and the incomplete work that remained, The Art of Computer Programming became his lifelong endeavor. To date, only preliminary work has been completed on Volume 5. If you visit Donald Knuth's website, you will see statements about the present plans to publish Volume 4 as at least four separate subvolumes, the estimated arrival time of Volume 5 in 2015, and perhaps the most interesting of all: "As I write Volumes 4 and 5, I'll need to refer to topics that belong logically in Volumes 1, 2, and 3 but weren't invented yet when I wrote those books. Instead of putting such material artificially into Volumes 4 or 5, I'll put it into fascicle form."

Despite the length of time that's passed since Knuth began work on The Art of Computer Programming, the material remains authoritative. After reading the comments on his website, one can very much appreciate the term "life's work." Knuth is now 72, and the world can collectively hope that he is around long enough to complete all seven volumes.

#### To fulfill our tutoring mission of online education, our college homework help and online tutoring centers are standing by 24/7, ready to assist college students who need homework help with all aspects of data structures and algorithms . Our computer science tutors can help with all your projects, large or small, and we challenge you to find better online data structures and algorithms tutoring anywhere.

Get College Homework Help.

Are you sure you don't want to upload any files?

Fast tutor response requires as much info as possible.

We couldn't find that subject.
Please select the best match from the list below.
For faster response, you may skip assigning directly to a tutor to receive the first tutor available.
That tutor may not be available for several hours. Please try another tutor if you're in a hurry.

We'll send you an email right away. If it's not in your inbox, check your spam folder.

• 1
• 2
• 3