COMP 2002: Data Structures and Algorithms

This course is required for all computer science  MAJ   majors.

Lab In addition to classes, this course has one structured laboratory session per week.
Registration for this course is restricted to CS Major, CS Minor, Data Science  and Computational Chemistry students only.

Prerequisites:  COMP 1001COMP 1002 or Mathematics 2320,  COMP 1003  and Mathematics 1000; minimum of 65% in COMP 1001 and in whichever of COMP 1002 or MATH 2320 has been completed.

Availability: This course is usually in Fall and Winter semesters.

Course Objectives

The objective of this course is to teach problem solving techniques via fundamental algorithms and data structures, basic design techniques and analysis. The course will be taught primarily in a language-neutral manner, with material presented mainly in pseudocode; however, it will incorporate a significant programming (implementation) component through its assignments and labs.

Representative Workload
  • Assignments 30%
  • Lab Quizzes 15%
  • Tests 20%
  • Final Exam 35%
Representative Course Outline
  • Algorithm analysis (5 hours)
  • Algorithm design techniques (5 hours):
    • brute-force
    • greedy
    • divide-and-conquer
    • backtracking,
    • dynamic programming
  • Data structures (6 hours):
    • stacks
    • queues
    • binary search trees
    • hash tables
    • graphs
  • Fundamental algorithms (12 hours):
    • sorting
    • searching
    • BFS/DFS
    • MST
    • shortest path
Notes
  • Credit cannot be obtained for both Computer Science 2002 and the former Computer Science 2711.
  • This course requires programming in Python.