**Why Data Structures & Algorithms?**

The primary goal of this course is to improve the overall efficiency of a computer program. Data structures are required to organize data in order to develop more efficient programs.

According to Prof. Shaffer, Virginia Tech University, Writer of A Practical Introduction to Data Structures and Algorithm Analysis: "The choice of data structure and algorithm can make the difference between a program running in a few seconds or many days."

A solution is said to be efficient if it solves the problem within its resource constraints; **Space & Time**. The cost of a solution is the amount of resources that the solution consumes.

There are often many techniques (**algorithms**) to solve a problem. How do we choose between them?

To develop a computer program, It is necessary to set the following two goals:

1) To design an algorithm that is easy to understand, code, debug.

2) To design an algorithm that makes efficient use of the computerâ€™s resources.

## Virtual Library of Data Structures and Algorithms |

## Research & Reference Materials |

## Algorithms Courses Online |

## David Eppstein's Course on Algorithms |

- Lecture 1: Introduction to Data Structures & Algorithms
- Lecture 2: Linked List
__Class Demo: Programs(SLL and DLL)__- Lecture 3: Stacks & Queues
- Lecture 4: Binary Trees
- Lecture 5: General Tress
__MOC Test, SET-A to SET-G__- Lecture 6: K-Ary Tree
- Lecture 7: Sorting Techniques
__Sorting Programs__- Lecture 8: Searching
- Lecture 9: Graphs
- Lecture 10: Revision