Dec 26, 2024  
BC3 Academic Catalog: 2024-2025 
    
BC3 Academic Catalog: 2024-2025

COMP 233 - Data Structures and Algorithms

3 Credits: (3 lecture)

Course Description
This third-level programming course covers the analysis of data structures (arrays, linked lists, stacks, queues, hash tables, trees, and graphs) and their algorithms. The analysis of the time and space requirements will provide a rational basis for the selection of the appropriate data structures and algorithms for programming applications.  

Note Fall semester only.

Prerequisite COMP 238 and MATH 100 or permission of the instructor.


Text
Deitel, P. J. & Deitel, H. (2018).  Java: How to program, early objects (11th ed.).  New York City, NY: Pearson. 

Objectives
The student will be able to: 

A. Explain the use of big O, little o, omega and theta notation to describe the amount of work done by an algorithm. 

B. Analyze an algorithm and determine its time and space complexity. 

C. Describe the advantages and disadvantages of different algorithmic strategies. 

D. Select appropriate searching or sorting algorithms. 

E. Implement stacks and queue using both arrays and linked lists. 

F. Compare various collision-resolution strategies for hash table design. 

G. Implement a balanced search tree. 

H. Solve problems using fundamental graph algorithms including depth-first and breadth-first search. 

Content
A. Asymptotic analysis of upper and average complexity bounds 

B. Big O, little o, omega, & theta notation 

C. Algorithmic strategies (brute force, greedy, divide-and-conquer, etc.) 

D. Analysis of searching and sorting algorithms 

E. Stacks, queues and linked lists 

F. Hash tables including hashing functions and collision-resolution strategies 

G. Trees including balanced search trees 

H. Graphs and graph algorithms 

Student Evaluation
Objectives A, B, C, D, and F will be measured/assessed by tests and or quizzes. 

Objectives D, E, G, and H will be measured/assessed by programming assignments.