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 Majors and Minors only.

Prerequisites:  COMP 1001COMP 1002 or Mathematics 2320,  COMP 1003  and Mathematics 1000

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.