|
Dec 01, 2024
|
|
|
|
CSC 3310 - Algorithms and Advanced Data Structures3 lecture hours 0 lab hours 3 credits Course Description This course extends the study of algorithms introduced in CSC 1120. Common algorithms, algorithmic paradigms, data structures, and techniques for modeling performance used in the design and analysis of algorithms are covered. The course emphasizes the relationship between algorithms and programming and includes multiple formal techniques for analyzing computational complexity. Students will identify or state a non-trivial computational problem, design and/or select an algorithm that solves the problem, choose among competing algorithms, and justify their decision based on computational complexity. Laboratory activities include the implementation and comparison of problem specific algorithms. (prereq: CSC 1120 , MTH 2310 ) (quarter system prereq: CS 2852, MA 2310) Course Learning Outcomes Upon successful completion of this course, the student will be able to:
- Determine and justify time and space complexity of a variety of algorithms (both recursive and non-recursive)
- Identify differences between best, expected, and worst-case runtimes
- Identify and apply strategies such as brute force, greedy, recursive backtracking, divide and conquer, and dynamic programming in algorithm analysis and design
- Describe, implement, analyze, and apply data structures such as self-balancing trees and heaps
- Demonstrate applications of graph algorithms including breadth-first search, depth-first search, and topological sort
- Describe applications, tradeoffs, and requirements for appropriate use of cryptographic and hash-based algorithms
- Identify NP-complete problems
- Execute empirical methods for analyzing and comparing data structures and algorithms
Prerequisites by Topic
- Big-O notation
- Java programming
- Set theory
- Recursion
- Methods of proof
- Graphs
- Trees
Coordinator Dr. RJ Nowling
Add to Portfolio (opens a new window)
|
|