COVID-19 information and resources
back to search

# Data Structures and Algorithms

Course Code: CMPT 2300
Faculty: Science & Technology
Department: Computing Science
Credits: 3.0
Semester: 15
Learning Format: Lecture, Lab
course overview

This course introduces students to data structures and algorithms, including their design, analysis and implementation. Topics include: object-oriented design and object-oriented programming with a study of inheritance, encapsulation and polymorphism, techniques for searching and sorting, time and space efficiency of algorithms, and practical data structures, including arrays, lists, stacks, queues, trees, heaps, sets, hash tables and graphs. Programs are written in C++.

### Course Content

- Object-oriented design principles (polymorphism, encapsulation, and inheritance)
- Arrays and dynamic memory management
- Lists, stacks, and queues
- Recursion
- Sort algorithms
- Search algorithms
- Algorithm efficiency
- Data structures such as hash tables, trees, graphs and sets

### Methods of Instruction

Lectures, labs, and self-directed learning (programming assignments)

### Means of Assessment

Evaluation will be carried out in accordance with Douglas College policies. The instructor will present a written course outline with specific evaluation criteria at the beginning of semester. Evaluation will be based on the following:

Labs                       10% - 25%

Assignments           10% - 20%

Quizzes                   0% - 10%

Midterm exam         20% - 35%

Final examination    25% - 40%

Class participation    0%  -  5%

### Learning Outcomes

Upon completion of this course, students will be able to:

- Identify fundamental data structures and algorithms
- Implement dynamic memory management in C++
- Apply object-oriented design principles with focus on data abstraction and information hiding
- Design and develop object-oriented software
- Implement basic data structures in C++
- Analyze the complexity of algorithms
- Choose appropriate data structures and algorithms for specified applications
- Convert recursive solutions to iterative solutions, and vice versa
- Demonstrate skills in tracing and designing recursive algorithms
- Select appropriate abstract data types for a small but realistic problem
- Write programs using linked lists
- Implement different types of sorting algorithms
- Write programs for different types of searching algorithms
- Write programs using array-based lists and linked lists
- Develop programs using data structures such as stacks, queues, hash tables, heaps, trees, and graphs

course prerequisites

CMPT 1110 or CSIS 1275 with a minimum grade of C

### Corequisites

MATH 1130 (must be taken prior to or concurrently with CMPT 2300).

curriculum 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 schedule and availability
course transferability

Below shows how this course and its credits transfer within the BC transfer system.

A course is considered university-transferable (UT) if it transfers to at least one of the five research universities in British Columbia: University of British Columbia; University of British Columbia-Okanagan; Simon Fraser University; University of Victoria; and the University of Northern British Columbia.

For more information on transfer visit the BC Transfer Guide and BCCAT websites.

assessments