CST 370 - Design and Analysis of Algorithms
Students learn important data structures in computer science and acquire fundamental algorithm design techniques to get the efficient solutions to several computing problems from various disciplines. Topics include the analysis of algorithm efficiency, hash, heap, graph, tree, sorting and searching, brute force, divide-and-conquer, decrease-and-conquer, transform-and-conquer, dynamic programming, and greedy programming.
Class Outcomes
The class focused on the theory and application of algorithms as applied to Computer Science. Through the term, we studied, and explored the different techniques used in Computer Science to solve problems, such as Brute Force, Recursive Algorithms, Decrease by Constant Factors, Divide and Conquer, Greedy Algorithms, etc.
For each technique, we learned to analyze the algorithm using big O as well as big Θ notations. This allowed us to better understand the underlying benefits as well as drawbacks for specific problem sets such as the time and computational costs of time, and memory for the given solution.
Additionally, we learned to build, use and balance binary trees, and b-tree and their variants on heap trees which were then applied to priority queue algorithms and sorting heap algorithms.
Algorithms Covered
Language:
For each technique, we learned to analyze the algorithm using big O as well as big Θ notations. This allowed us to better understand the underlying benefits as well as drawbacks for specific problem sets such as the time and computational costs of time, and memory for the given solution.
Additionally, we learned to build, use and balance binary trees, and b-tree and their variants on heap trees which were then applied to priority queue algorithms and sorting heap algorithms.
Algorithms Covered
- Quick Sort
- Bubble Sort
- Merge Sort
- Selection Sort
- Heap Sort
- Insertion Sort
- Binary Search
- Binary Trees
- B-Trees
- Priority Queues
Language:
- C++