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
These are for current course guidelines only. For a full list of archived courses please see https://www.bctransferguide.ca
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
Winter 2025
CRN | Days | Instructor | Status | More details |
---|---|---|---|---|
CRN
16022
|
Tue Thu | Instructor Last Name
Janzen
Instructor First Name
Izabelle
|
Course Status
Waitlist
|
CRN | Days | Instructor | Status | More details |
---|---|---|---|---|
CRN
17493
|
Tue Thu | Instructor Last Name
Shadgar
Instructor First Name
Bita
|
Course Status
Open
|