Data Structures and Algorithms
Overview
- An overview of object-oriented design and implementation principles, including encapsulation, inheritance, polymorphism, operator overloading, and templates
- Abstract Data Types (ADTs)
- An introduction to efficiency analysis of algorithms and related mathematical notations: Big-O, Small-O, Omega, and Theta
- Divide and Conquer problem-solving technique and recursion
- Sorting and searching algorithms
- Representing a data structure in memory: contiguous vs. linked representation
- The Stack ADT
- Queues and priority queues
- Linked lists and their variations
- Implementing and using iterators
- Hashing: hash maps and hash sets
- C++ Standard Template Library (STL): use of STL containers, algorithms, and iterators for application development
The methods of instruction for this course include lectures, labs, and self-directed learning (programming assignments).
Evaluation will be carried out in accordance with the Douglas College Evaluation Policy. The instructor will present a written course outline with specific evaluation criteria at the beginning of the semester. Evaluation will be based on the following:
Labs | 10% - 20% |
Assignments | 10% - 30% |
Quizzes* | 0% - 15% |
Term tests* | 20% - 35% |
Final examination* |
25% - 40% |
Total |
100% |
* In order to pass the course, in addition to receiving an overall course grade of 50%, students must achieve a grade of at least 50% on the combined weighted examination components (including quizzes, term tests, and final examinations.)
Upon the completion of this course, successful students will be able to:
- define the concept of Abstract Data Types (ADTs);
- evaluate the time and space complexity of algorithms using an experimental analysis;
- differentiate and compare an ADT's contiguous implementation versus its linked implementation;
- define and implement fundamental data structures such as stacks, queues, lists, trees, sets, hash tables, and graphs as ADTs;
- apply object-oriented principles to implement an ADT;
- utilize static and dynamic memory allocation in implementing a data structure;
- select appropriate data structures and algorithms for a specific application;
- utilize the Divide and Conquer technique to solve a problem recursively;
- analyze the efficiency of a recursive function and compare it with an equivalent iterative implementation;
- identify, implement, analyze, and compare different sorting and searching algorithms;
- implement and utilize iterators and;
- identify different components of the C++ Standard Template Library (STL) and apply STL containers, algorithms, and iterators to develop applications.
Consult the Douglas College Bookstore for the latest required textbooks and materials.
Sample text:
Data Abstraction & Problem Solving with C++: Walls and Mirrors (latest edition), Frank M. Carrano and Timothy Henry, Pearson, ISBN: 978-0134463971
Requisites
Course Guidelines
Course Guidelines for previous years are viewable by selecting the version desired. If you took this course and do not see a listing for the starting semester / year of the course, consider the previous version as the applicable version.
Course Transfers to Other Institutions
Below are current transfer agreements from Douglas College to other institutions for the current course guidelines only. For a full list of transfer details and archived courses, please see the BC Transfer Guide.
Institution | Transfer details for CMPT 2300 |
---|---|
College of the Rockies (COTR) | COTR COMP 2XX (3) |
Kwantlen Polytechnic University (KPU) | KPU INFO 2315 (3) |
North Island College (NIC) | NIC CPS 101 (3) |
Okanagan College (OC) | OC COSC 222 (3) |
Simon Fraser University (SFU) | SFU CMPT 225 (3) |
Thompson Rivers University (TRU) | TRU COMP 2230 (3) |
University Canada West (UCW) | UCW CPSC 2XX (3) |
University of British Columbia - Okanagan (UBCO) | UBCO COSC_O 121 (3) |
University of British Columbia - Vancouver (UBCV) | UBCV CPSC_V 2nd (3) |
University of Northern BC (UNBC) | UNBC CPSC 2XX (3) |
University of the Fraser Valley (UFV) | UFV COMP 251 (4) |
University of Victoria (UVIC) | UVIC CSC 115 (1.5) |
Vancouver Island University (VIU) | VIU CSCI 161 (4) |
Course Offerings
Fall 2025
CRN | Days | Instructor | Status | More details |
---|---|---|---|---|
CRN
36281
|
Tue Thu | Instructor last name
Li
Instructor first name
Link
|
Course status
Waitlist
|
CRN | Days | Instructor | Status | More details |
---|---|---|---|---|
CRN
37208
|
Wed Fri | Instructor last name
Li
Instructor first name
Link
|
Course status
Waitlist
|