Data and Algorithms

Course Number: CS 260
Transcript Title: Data and Algorithms
Created: January 26, 2015
Updated: July 10, 2015
Total Credits: 4
Lecture Hours: 40
Lecture / Lab Hours: 0
Lab Hours: 0
Satisfies Cultural Literacy requirement: No
Satisfies General Education requirement: No
Grading options: A-F (default), P-NP, audit
Repeats available for credit: 0

Prerequisites

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

Lecture, laboratory work, in-class and out-of-class assignments, discussion and examination.

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