Class/Laboratory Schedule: Three 50 minutes lectures, One 180 minutes lab per week (3-3-4)
Designation: Required Course
Course Level: Undergraduate
Prerequisite(s) by Topic:
- Algorithms and Problem-Solving
- Fundamental Computing Algorithms
- Virtual Machines
- Declarations and types
- Abstraction Mechanisms
- Object-Oriented Programming Paradigm
- Using APIs
Review of object-oriented concepts; Introduction to design patterns; Basic algorithms analysis; Fundamental data structures - implementation strategies for stacks, queues and linked lists; Recursion; Implementation strategies for tree and graph algorithms; Hash tables; Applications of data structures (e.g. data compression and memory management).
Data Structures and Algorithms in Java, 2nd Edition, Adam Drozdek, Thomson Learning, 2005
Reference(s) and Other Material:
Data Structures and Algorithms with Object Oriented Design Patterns in Java, Bruno R. Preiss, John Wiley & Sons, Inc., 2000.
- Apply object oriented concepts (inheritance, polymorphism, design patterns, etc.) in software design.
- Implement various data structures and their algorithms, and apply them in implementing simple applications.
- Analyze simple algorithms and determine their efficiency using big-O notation.
- Apply the knowledge of data structures to other application domains like data compression and memory management.
- Review of Object-Oriented Concepts & Introduction to Design Patterns
- Introduction to Algorithm Analysis.
- Linked Lists.
- Stacks & Queues.
- Binary Trees, Binary Search Trees & Tree Traversal Algorithms.
- Binary Heaps.
- AVL Trees, B-Trees, B+-Trees.
- Graphs, Graph Traversal Algorithms & Graph Implementations.
- Graph Algorithms (Connectedness, Cycle detection & Topological sort).
- More Graph Algorithms (Shortest path & Minimum Spanning Trees).
- Hashing Techniques.
- Application of Data Structures: Data Compression.
- Application of Data Structures: Memory Management.