## Data Structures

Mark all (un-)played

## Manage series 1412012

Discovered by Player FM and our community — copyright is owned by the publisher, not Player FM, and audio streamed directly from their servers.

**REVISED**: This course was updated during the fall, 2016 semester. New data structures includes left-leaning red-black trees and the Nguyen-Wong implementation of B-trees, both containing complete algorithms for insertion and removal.

**Catalog description**

Data structures and design patterns with the C++ language. Analysis of algorithms. Sorting algorithms—insertion sort, merge sort, heapsort, quicksort. Linear data structures—stacks, queues, linked lists. Dictionaries. Hash tables. Trees—binary search trees, red-black trees, B-trees. Graphs—search algorithms. Design patterns—iterator, composite, state, visitor.

**Objective**

The goal of this course is threefold:

- To teach the data structures central to computer science
- To teach object-oriented design patterns
- To teach C++ programming

The course is unique because it combines the first two goals into one unified approach in a novel way. Object-oriented design patterns are usually applied to programming in the large. Consequently, teaching OO design patterns is traditionally postponed until later in the curriculum, when they can be applied to large software projects in software engineering or capstone courses. One problem with this approach is that students learn OO design patterns late in their academic careers and so have less time to assimilate them. Another problem is that the sheer amount of code in such large projects can obscure the salient features of the OO design patterns.

This course applies OO design patterns to programming in the small. That is, the classic data structures are presented in their traditional implementations, but then are re-implemented using the patterns of the “Gang of Four” (Gamma, Helm, Johnson, and Vlissides,

*Design Patterns*, Second edition, Addison Wesley, 1995). Hence, students learn OO design patterns early in their academic careers, and the salient features of the patterns are not obscured by large amounts of code.The course is based on an incomplete manuscript titled

*Design Patterns for Data Structures*(dp4ds), by Dung X. Nguyen and J. Stanley Warford, available for download with the course. Student assignments are from an extensive suite of C++ software called the dp4ds Distribution, also available for download.55 episodes available. A new episode about every 12 days .