Dec 02, 2024  
Catalog 2019-2020 
    
Catalog 2019-2020 [ARCHIVED CATALOG]

CSD 335 Algorithms and Data Structures

5 credits
Students study data structures such as stacks, queues, hash tables, heaps, trees, and graphs, and use different algorithmic approaches to problem solving, such as simple recursion, backtracking, divide and conquer, greedy and brute force algorithms, and dynamic programming. Students analyze algorithm efficiency in terms of memory use and speed, using Big O notation for run-time performance estimation.

Prerequisites: CS 143  and admission to the BAS IT:CSD program

Course Outcomes
Upon successful completion of this course students will be able to: 

  • Explain the basic principles of algorithm analysis and Big O notation
  • Implement elementary data structures such as arrays, linked lists, and strings
  • Explain and implement stack and queue data structures using different underlying data structures
  • Explain the differences in approach and efficiency of recursive algorithms, divide and conquer algorithms, and dynamic programming
  • Implement tree data structures, including binary search trees
  • Use different tree traversal techniques
  • Implement, analyze, and compare efficiency of different elementary searching algorithms such as selection, insertion, and shell sorts 
  • Sort linked lists
  • Describe, implement, and analyze efficiency of quicksort and merge sort algorithms
  • Explain and implement priority queue and heap data structures
  • Analyze and implement algorithms associated with priority queue and heap data structures, including heapsort
  • Explain, compare, and implement different search algorithms and search data structures, including varieties of binary search trees and hash tables
  • Explain graph properties and types, and implement different graph representations
  • Describe different graph search algorithms
  • Explain, implement, and analyze minimum spanning trees algorithms

Program Outcomes
This course teaches to the following program outcomes:

  • demonstrate competency in software engineering, software testing principles, and quality assurance techniques
  • identify, evaluate, and apply efficient algorithms and technologies required for developing software system
  • be prepared to obtain an entry-level position at a software development company

Global Outcomes
This course teaches to the global outcome of critical thinking.

Total Hours: 60 Lecture Hours: 40 Lab or Clinical Hours: 20