The following lessons introduce the topic of data structures by comparing how data is actually stored in a computer with the abstract structures that programmers use. To illustrate this comparison, several basic data structures such as lists, stacks, and queues are described. Each lesson includes a set of review questions which test the important concepts from the lesson and provide practice problems.

By the end of this course, students should be able to:

**LO1. **Design, implement, test and debug a program, based on a given
specification, that uses and implements abstract data types (stacks queues,
priority queues, sets, maps)

**LO2. **Argue strength and weaknesses among multiple implementations for a
problem (i.e., on the aspects of iterative vs. recursive solutions and on the
aspects of abstraction, encapsulation, and information hiding)

**LO3. **Develop
knowledge of basic data structures for storage and retrieval of ordered or
unordered data. Data structures include: arrays, linked lists, binary trees,
heaps, and hash tables.

**LO4. **Develop
knowledge of applications of data structures including the ability to implement
algorithms for the creation, insertion, deletion, searching, and sorting of
each data structure.

**LO5. **Learn to
analyze and compare algorithms for efficiency using Big-O notation.

**LO6. **Implement
projects requiring the implementation of the above data structures.

- Instructor: rommel vidal