3.00 Credits
Required of students pursuing a Computer Science, Software Engineering, and others within the Computing department. Open to any student with a strong interest in computer programming. Covers the design and use of common data structures, lists, stacks, queues, trees, hash tables, and graphs through completion of several challenging programming projects. Introduces computational complexity, algorithm analysis, and NP-Complete using the context of several algorithms including sorting, searching, SAT, Traveling Salesperson, factoring, etc. **COURSE LEARNING OUTCOMES (CLOs) At the successful conclusion of this course, students will be able to: 1. Discuss the basic principles of many software data structures, including efficiencies and tradeoffs. 2. Implement and use several data structures, including Binary Search Trees, Hash Tables, Graphs, and more. 3. Demonstrate a working knowledge of Big-O complexity and Algorithm Analysis. 4. Implement several recursive algorithms. 5. Implement and analyze several sorting algorithms. Course fee required. Prerequisites: CS 1410 (Grade C or higher). FA, SP