COMPUTER SCIENCE


Course Credits: 3 Units

Prerequisites: CMSC 21, CMSC 57

CMSC 123: Data Structures

Course Description

This course will tackle all about different abstract data types (ADT) and how to implement them using different data structures (such as arrays, lists, trees, etc.). First, we will learn about Linear ADTs where the data follows a certain order. Examples of these are stacks, queues, deques, vectors, linked lists, sequences, and iterators. Next, if there are Linear then there are Non-Linear ADTs where the flow is not straightfoward. Some examples are maps, dictionaries, hash tables, skip lists, binary trees, priority queues, heaps, and binary search trees. Finally, we will tackle some algorithms for pattern matching, sorting searching, selection, and graph applications. We will also be introduced to algorithm analysis, which allows us to compare the performances of different implementations of ADTs.

Course Learning Outcomes

After completion of the course, the student should be able to:

  1. Identify the appropriate abstract data types (ADT) to use for a given problem.
  2. Implement the ADT using different data structures.
  3. Compare the performances of different ADT implementations; and
  4. Apply data structures to real-world problems.
Course Outline

UNIT 1. Introduction to Data Stuctures and Algorithm Analysis

  1. Course Introduction
  2. Introduction to Data Structures
  3. Algorithm Analysis

UNIT 2. Linear ADTs

  1. Arrays and Linked Lists
  2. Stacks and Queues
  3. Vectors, Lists, and Sequences

UNIT 3. Non-Linear ADTs

  1. Maps and Dictionaries
  2. Hash Tables and Skip Lists
  3. Binary Trees
  4. Priority Queues and Heaps
  5. Binary Search Trees

UNIT 4. Algorithms

  1. Pattern Matching Algorithms
  2. Sorting, Searching, and Selection