ICS 202: Data Structures

ICS 202: Data Structures

 
Course Information
Class/Laboratory Schedule: 

Class/Laboratory Schedule: Three 50 minutes lectures, One 180 minutes lab per week (3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Algorithms and Problem-Solving
  • Recursion
  • Fundamental Computing Algorithms
  • Virtual Machines
  • Declarations and types
  • Abstraction Mechanisms
  • Object-Oriented Programming Paradigm
  • Using APIs
Catalog Description: 

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).

Textbook(s): 

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.

Course Outcomes: 
  • 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.
Topics Covered: 
  • Review of Object-Oriented Concepts & Introduction to Design Patterns
  • Introduction to Algorithm Analysis.
  • Linked Lists.
  • Stacks & Queues.
  • Recursion.
  • 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.​