CS 261: Data Structures




POLICIES
SCHEDULE
ASSIGNMENTS
RESOURCES


Course Description
This course covers some of the general-purpose data structures and algorithms, and software development. It is aimed at helping you understand the reasons for choosing structures or algorithms. Topics covered include managing complexity, abstraction, analysis, vectors, lists, queues, trees, heaps, hash tables maps, and graphs.


Official Course Catalog Description
Complexity analysis. Approximation methods. Trees and graphs. File processing. Binary search trees. Hashing. Storage management. Lec/rec. PREREQS: CS 162 and MATH 231.


Prerequisites
CS 162 and MATH 231. Students will be expected to have basic programming skills, and some prior experience with Unix.


Recommended reading
C Pocket Reference, by Peter Prinz and Ulla Kirch-Prinz, O'Reilly Media, Inc., November 2002

Other recommended reading
Additional readings, including lecture notes, are posted on the class website.


Course Learning Objectives
At the completion of the course, students will be able to...
  • Describe the properties, interfaces, and behaviors of basic abstract data types, such as collection, bag, indexed collection, sorted collection, stack, and queue.

  • Read an algorithm or program code segment that contains iterative constructs and analyze the asymptotic time complexity of the algorithm or code segment.

  • State the asymptotic time complexity of the fundamental operations associated with a variety of data structures, such as vector, linked list, tree, and heap.

  • 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.

  • Design and implement general-purpose, reusable data structures that implement one or more abstractions.

  • 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.


Communication
There is a class mailing list cs261-001-sp17@ENGR.ORST.EDU established for this course. I will use this e-mail address to send course announcements to the entire class. You may also use this e-mail address to post your course/homework related comments and questions.


Grading
Your grades will be based on programming assignments, worksheets, mid-term exams, and the final exam. Please see class policies for more details.


Academic Honesty
Each student is expected to practice honorable behavior inside and outside the classroom. Details about academic dishonesty and subsequent disciplinary actions can be found at the official website of Student Conduct & Community Standards at the Oregon State University. Please see class policies for more details.