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++.
- Object-oriented design principles (polymorphism, encapsulation, and inheritance)
- Arrays and dynamic memory management
- Lists, stacks, and queues
- 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%
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
CMPT 1110 or CSIS 1275 with a minimum grade of C
MATH 1130 (must be taken prior to or concurrently with CMPT 2300).
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.
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.
If your course prerequisites indicate that you need an assessment, please see our Assessment page for more information.