Data Structures and Algorithms

Curriculum guideline

Effective Date:
Course
Discontinued
No
Course code
CMPT 2300
Descriptive
Data Structures and Algorithms
Department
Computing Science
Faculty
Science & Technology
Credits
3.00
Start date
End term
Not Specified
PLAR
No
Semester length
15
Max class size
35
Contact hours

Lecture: 2 hours/week
Lab: 2 hours/week

Method(s) of instruction
Lecture
Lab
Learning activities

The methods of instruction for this course include lectures, labs, and self-directed learning (programming assignments).

Course description
This course introduces students to a variety of fundamental data structures and their related algorithms. Topics include: abstract data types, data structures implementation and analytical evaluation methods, problem solving using divide and conquer, sorting and searching algorithms, complexity analysis of algorithms, iterators, hashing, and C++ Standard Template Library (STL). Students will apply object-oriented programming techniques to implement important linear and non-linear data structures such as stacks, queues, priority queues, lists, trees (including binary search trees and binary heaps), sets, and graphs.
Course content
  • 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
Learning outcomes

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.
Means of assessment

Evaluation will be carried out in accordance with the ÌÇÐÄvlog´«Ã½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.)

Textbook materials

Consult the ÌÇÐÄvlog´«Ã½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

Prerequisites

CMPT 1209 or CSIS 1275 or CSIS 2175 with a minimum grade of C

Corequisites
Which prerequisite

None