Credits and Contact Hours
3 credits, 43 hours
Course Instructor Name
Dr. Ameer Mohammed
Textbook
- Data Structures and Algorithms in Java, Michael T. Goodrich and Roberto Tamassia, 6th Edition
- References
- Data Structures and Algorithms in Java by Robert Lafore, 2nd Edition, Sams Publishing 2002.
- Data Structures and Abstractions with Java by Frank Carrano and Timothy Henry, 5th Edition, Pearson 2018.
Catalog Description
Fundamental data structures (stacks; queues; linked lists; hash tables; trees; graphs), Basic algorithmic analysis (asymptotic analysis; identifying differences among best, average, and worst case, empirical measurements of performance; time and space tradeoffs in algorithms), Fundamental computing algorithms, sorting algorithms; hash tables and hashing, heaps, priority queues, binary search trees, balanced binary search trees, AVL trees; representations of graphs and graph traversals, Recursion. The course includes weekly laboratory sessions and a significant programming project with detailed documentation and implementation.
Prerequisite
CpE-201 and CpE-203
Specific Goals for the Course
Upon successful completion of this course, students will be able to:
- Write and debug complex programs using data structures and object-oriented programming techniques. (Student outcomes: 1, 6)
- Design and implement relatively large software. (Student outcomes: 1, 6)
- Solve problems using advanced object-oriented concepts (inheritance, polymorphism, interfaces) and generic programming (templates). (Student outcomes: 1, 6)
- Identify and implement basic data structures (stacks, queues, lists, trees, hash tables) and their applications. (Student outcomes: 1, 6)
- Understand and apply the concept of algorithmic complexity (big-O). (Student outcomes: 1)
- Implement and compare several standard sorting algorithms. (Student outcomes: 1, 6)
- Understand and implement linear and binary search algorithms. (Student outcomes: 1, 6)
- Analyze simple algorithms and discuss tradeoffs among data structures. (Student outcomes: 1, 6)
Topics to Be Covered
Object-Oriented Design | Priority Queues |
Inheritance and Polymorphism, exceptions, and interfaces | The Priority Queue Abstract Data Type |
List ADTs and the Collections Framework | Implementing a Priority Queue with a List |
Arrays, Linked Lists, and Recursion | Heaps |
Using Arrays | Adaptable Priority Queues |
Singly Linked Lists | Maps and Dictionaries |
Doubly Linked Lists | The Map Abstract Data Type |
Recursion | Hash Tables |
Analysis Tools | Search Trees |
The Seven Functions Used in The Book | Binary Search Trees |
Analysis of Algorithms | AVL Trees |
Stacks and Queues | Sorting, Sets, and Selection |
Stacks | Merge-Sort |
Queues | Quick-Sort |
Double-Ended Queues | A Lower Bound on Sorting |
Trees | Bucket-Sort and Radix-Sort |
General Trees | Comparison of Sorting Algorithms |
Tree Traversal Algorithms | Introduction to graphs |
Binary Trees |