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 to choose from. Although a programming task may be achievable by more than one structure or algorithm (or specific implementations of them), choosing the right 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
- Linked Lists
- Circular Linked Lists
- Double Linked Lists
- 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
- Abstract Data Types (ADTs)
- 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 a great starting point. 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, 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.
To fulfill our mission of educating students, our online tutoring centers are standing by 24/7, ready to assist students who need help with data structures and algorithms.