Skip to Content

University of Colorado Boulder
Search

Search

Computer Science
College of Engineering and Applied Science
Computer Science

Main menu

  • Home
  • Academics
  • Research
  • People
  • News & Events
  • Admissions

Secondary Menu

  • Students
  • Engage
  • Faculty/Staff Resources

Mobile menu

  • Home
  • Academics
  • Research
  • People
  • News & Events
  • Admissions
  • Students
  • Engage
  • Faculty/Staff Resources
  • About
  • Admissions
  • Contact Us
  • Jobs
  • Funding Opportunities

CSPB 2270 - Computer Science 2: Data Structures

Course Details

*Note: This course description is only applicable for the Computer Science Post-Baccalaureate program. Additionally, students must always refer to course syllabus for the most up to date information. 

  • Credits: 4.0
  • Prerequisites:  CSPB or CSCI 1300 Computer Science 1: Starting Computing with minimum grade C-. This course assumes students have a basic understanding of the C or C++ programming language including an introduction to the use of pointers as well as ability to develop 50-200 line programs.
  • Minimum Passing Grade: C-
  • Textbook: There is no required physical textbook for this course at this time. However, the instructor may refer students to additional materials. 

Brief Description of Course Content

Studies data abstractions (e.g., stacks, queues, lists, trees) and their representation techniques (e.g., linking, arrays). Introduces concepts used in algorithm design and analysis including criteria for selecting data structures to fit their applications.

Topics include data and program representations, computer organization effect on performance and mechanisms used for program isolation and memory management.  

Specific Goals for the Course

Specific Outcomes of Instruction
  • Document code including precondition/postcondition contracts for functions and invariants for classes.
  • Determine quadratic, linear and logarithmic running time behavior in simple algorithms, write big-O expressions to describe this behavior, and state the running time behaviors for all basic operations on the data structures presented in the course.
  • Create and recognize appropriate test data for simple problems, including testing boundary conditions and creating/running test cases, and writing simple interactive test programs to test any newly implemented class.
  • Define basic data types (vector, stack, queue, priority queue, map, list).
  • Specify, design and test new classes using the principle of information hiding for the following data structures: array-based collections (including dynamic arrays), list-based collections (singly-linked lists, doubly-linked lists, circular-linked lists), stacks, queues, priority queues, binary search trees, heaps, hash tables, graphs (e.g. for depth-first and breadth-first search), and at least one balanced search tree.
  • Be able to describe how basic data types are stored in memory (sequential or distributed), predict what may happen when they exceed those bounds.
  • Correctly use and manipulate pointer variables to change variables and build dynamic data structures.
  • Determine an appropriate data structure for given problems.
  • Follow, explain, trace, and be able to implement standard computer science algorithms using standard data types, such as a stack-based evaluation of arithmetic expressions or a traversal of a graph.
  • Recognize situations in which a subtask is nothing more than a simpler version of the larger problem and design recursive solutions for these problems.
  • Follow, explain, trace, and be able to implement binary search and a variety of quadratic sorting algorithms including mergesort, quicksort and heapsort.

Brief List of Topics to be Covered
  • Cost of algorithms and Big O notation.
  • Memory and pointers, structs, and dynamic memory allocation.
  • Linked lists, stacks and queues.
  • Trees: Binary trees, binary search trees, tree traversal, recursion.
  • Tree balancing: red-black trees.
  • Graphs: graph traversal algorithms, depth-first and breadth-first search.
  • Hash tables, hash functions, collision resolution algorithms
  • Algorithms for sorting, such as insertion sort, bubble sort, quick sort, and merge sort.

Mathematical Concepts Used in Course
Logarithms, Big O, Recursion, Trees, Graphs

Return to Course List

  • Facebook
  • Twitter
  • LinkedIn
  • Instagram
  • YouTube

Apply  Visit  Give

Departments

  • Ann and H.J. Smead Aerospace Engineering Sciences
  • Chemical & Biological Engineering
  • Civil, Environmental & Architectural Engineering
  • Computer Science
  • Electrical, Computer & Energy Engineering
  • Paul M. Rady Mechanical Engineering

Programs

  • Applied Mathematics
  • Biomedical Engineering
  • Creative Technology & Design
  • Engineering Management
  • Engineering Physics
  • Engineering Plus
  • Environmental Engineering
  • Materials Science & Engineering

Affiliates & Partners

  • ATLAS Institute
  • BOLD Center
  • Colorado Mesa University
  • Colorado Space Grant Consortium
  • Discovery Learning
  • Engineering Honors
  • Engineering Leadership
  • Entrepreneurship

 

  • Herbst Program for Engineering, Ethics & Society
  • Idea Forge
  • Integrated Teaching and Learning
  • Global Engineering
  • Mortenson Center for Global Engineering
  • National Center for Women & Information Technology
  • Western Colorado University

Footer menu

  • About
  • Admissions
  • Contact Us
  • Jobs
  • Funding Opportunities

Computer Science

1111 Engineering Drive
ECOT 717, 430 UCB
Boulder, CO 80309-0430 USA
Phone: 303-492-7514
Contact Us by Email
Fax: 303-492-2844   
GPS Coordinates 40.006387, -105.261582

College of Engineering & Applied Science
Phone: 303-492-5071
Email: cueng@colorado.edu

Connect with CU Engineering

  • Facebook
  • Twitter
  • YouTube
  • LinkedIn
  • Instagram

University of Colorado Boulder

University of Colorado Boulder
© Regents of the University of Colorado
Privacy • Legal & Trademarks • Campus Map

Return to the top of the page