Ronald Metoyer, Ph.D.
Office: 2115 Kelley Engr. Center
Office Hours: M:9-11, Th:3-5
Location: In my office, unless
otherwise posted on the door.


M,W,F 12:00-1:00pm

Discussion Forum and Mail Lists

CS 261 Piazza Home


Todd Kulesza
Rec: Th:8:00, W:3:00

Ishneet Dua
Rec: T: 3:00

Zhangxiang Hu
Rec: Th: 6pm

Jose Picado
Rec: T:6:00, W: 6:00

Lab Hours

Mon: 5-7pm (Jose)
Tues: 10-12pm (Todd)
Tues: 12-2pm (Ishneet)
Wed: 1-3pm (Ishneet)
Wed: 5-7pm (Todd)
Thurs: 3-5pm (Jose)
Fri: 3-5pm (Zhangziang)

(All lab hours held in KEC 1130 Computer Lab)


There is no textbook for this class. Instead, we will use a set of class notes provided electronically and for purchase in printed form in the bookstore.

Required Reference The C Programming Language, Kernighan and Ritchie

Official Course Catalog Description

Complexity analysis. Approximation methods. Trees and graphs. File processing. Binary search trees. Hashing. Storage management. ENFORCED PREREQS: CS 162 OTHER PREREQS: MTH 231.

Extended Description

This course covers some of the general-purpose data structures and algorithms. You will implement them as well as understand how to make informed decisions when choosing data structures for your algorithms. Topics covered include managing complexity, abstraction, analysis, vectors, lists, queues, trees, heaps, hash tables maps, and graphs.

Course Learning Objectives

At the completion of this course, students will be able to ...
  1. describe the properties, interfaces, and behaviors of basic abstract data types, such as collection, bag, indexed collection, sorted collection, stack, and queue.
  2. read an algorithm or program code segment that contains iterative constructs and analyze the asymptotic time complexity of the algorithm or code segment.
  3. state the asymptotic time complexity of the fundamental operations associated with a variety of data structures, such as vector, linked list, tree, and heap.
  4. recall the space utilization of common data structures in terms of the long-term storage needed to maintain the structure, as well as the short-term memory requirements of fundamental operations, such as sorting.
  5. design and implement general-purpose, reusable data structures that implement one or more abstractions.
  6. compare and contrast the operation of common data structures (such as linear structures, priority queues, tree structures, hash tables, maps, and graphs) in terms of time complexity, space utilization, and the abstract data types they implement .