Computer Science 331 — Data Structures, Algorithms, and Their Analysis

CPSC 331

CPSC 331: Data Structures, Algorithms, and Their Analysis

General Course Information

Computer Science 331 is a second-year undergraduate course in data structures and algorithms offered by the Department of Computer Science at the University of Calgary. It is a required course for students majoring in Computer Science.

This course will have a D2L course site which will be used for course communication and reporting of grades. All material, supplied to students for course work, will be made available on the D2L site. The page that you are reading now (and other pages linked to it) includes a subset of this material that can also be accessed by people outside this course. They pages are certainly “under construction” at this point, and they describe the course as it will be offered in Fall 2022.

Note for Late Registrants: Please attend all lectures, starting from the beginning. Contact the instructor as soon as you can, if you are waiting to register, to make sure that you can be included in an assignment group for Assignments #1 and #2.

Course Outline

Recommended References

I have taught many versions of this course using several textbooks and supplemental references. Lectures will not closely follow any of these. Instead, they will be based on lecture notes that have been influenced by lots of this reference material and that are availabe online, at this course web site.

The following material, and other reference material that you might find, cannot replace the lecture notes. They are provided to supplement these notes, in case a different explanation of information would be helpful.

Review: Discrete Mathematics

The first of these books has been used as a textbook or recommended reference for MATH 271 for several years, while the second has been used in CPSC 251, so that students might be have access to one or another, depending on the prerequisite they completed. Neither is required for this course, but each includes all the material in discrete mathematics — as wll as probability and statistics — that will be used in this course.

Algorithms and Data Structures

The third edition of this book (2009) is available as an ebook, and this sentence is a link to that ebook. It is sufficient as a supplemental reference for almost all of the non-programming material in this course. A fourth edition was published in 2022 and is being used to update material on one topic — hash tables. Information about the availability of the fourth edition of this book will be made available on this web site as it becomes available.

Java Programming

Head First Java is recommended for students who have completed a course introducing introducing object-oriented programming that did not use Java as the programming language. The third edition of this book (2022) is available as an ebook, and this sentence is a link to that ebook. It discussed the version of Java that is currently available at the University of Calgary.

Additional Information

Additional information about learning goals and course administration are included in the first lecture for this course.

Lectures and Tutorials

  1. Introduction and Mathematics Review
  2. Introduction to the Analysis of Algorithms
  3. Basic Data Structures and Abstract Data Types
  4. Search Trees
  5. Hash Tables
  6. Searching and Sorting
  7. Graph Problems and Algorithms

Other Resources


University of Calgary Extension of Logo
Department of Computer Science

cpsc 331 computer science faculty of science u of c

cpsc 331 introduction and math review analysis of algorithms basic data structures and adts search trees hash tables searching and sorting graph problems and algorithms assignments tests java development exercises