# Data and Algorithms

## Course Description

Surveys the representation of data such as lists, sets, queues, stacks, directed and undirected graphs, and dictionaries. Surveys algorithms for manipulating that data, and strategies such as brute force, greedy algorithms, divide-and-conquer, decrease-and-conquer, transform-and-conquer, and dynamic programming.  Examines the analysis of algorithm complexity, and how to navigate the trade-offs between different data structures and algorithms. Prerequisite: CS 163. Audit available.

## Intended Outcomes

Upon successful completion of this course, students will be able to:

1. Design solutions to problems requiring complex data structures (combinations of lists, stacks, queues, hash tables, and trees).
2. Evaluate the engineering properties of various tree representations, including binary search trees, 2-3 trees, red-black trees, B-trees, and AVL trees.
3. Build and traverse data structures to manage undirected and directed graphs.
4. Apply recursion as a problem solving technique.
5. Develop programs using Java. Compare and contrast programs in Java and C++.
6. Find closed form solutions for simple recurrences using the techniques of substitution, cancellation, and generating functions.

## Outcome Assessment Strategies

Homework, observation, class discussion, examination.

## Course Activities and Design

The determination of teaching strategies used in the delivery of outcomes is generally left to the discretion of the instructor. Here are some strategies that you might consider when designing your course: lecture, small group/forum discussion, flipped classroom, dyads, oral presentation, role play, simulation scenarios, group projects, service learning projects, hands-on lab, peer review/workshops, cooperative learning (jigsaw, fishbowl), inquiry based instruction, differentiated instruction (learning centers), graphic organizers, etc.

## Course Content (Themes, Concepts, Issues and Skills)

• data structures
• list
• stack
• queue
• hash table
• tree
• tree representations
• binary
• 2-3
• red-black
• B
• AVL
• graph representations
• recursion
•  programming language comparison
• recurrence