Data Structure and Algorithms Analysis

Foundations of data structures, algorithm design, and complexity analysis

Course Description

This course covers fundamental data structures, common algorithms in computer science, and the analytical techniques used to evaluate algorithm performance. Students learn how data structures serve as tools for designing efficient programs capable of solving real-world computational problems.

Topics include array-based lists, linked lists, skiplists, hash tables, recursion, binary trees, scapegoat trees, red–black trees, heaps, sorting algorithms, graphs, and binary tries. The course emphasizes both theoretical foundations and practical implementation.


Course Objectives

By the end of this course, students will be able to:

  • Understand the most common data structures such as linked lists, stacks, queues, trees, and graphs
  • Explore alternative techniques for organizing and representing data
  • Apply concepts from Data Structures and Algorithms to solve real-world problems
  • Practice implementing sorting and searching algorithms across different structures
  • Implement core data structures using a chosen programming language
  • Analyze algorithms using asymptotic notation and formal reasoning
  • Determine the running cost and resource usage of algorithms

Learning Outcomes

Upon completion of this course, students should be able to demonstrate:

A. Knowledge and Understanding

  • Explain the fundamental theory of algorithms and data structures
  • Describe qualitative and quantitative methods used in computer science problem-solving

B. Skills and Abilities

  • Apply algorithmic and data-structural concepts to practical scenarios
  • Seek, gather, and critically interpret information to address issues in algorithm theory
  • Communicate technical understanding clearly to diverse student groups
  • Work independently as well as collaboratively
  • Formulate research questions in data structures and algorithm theory

C. Judgement and Approach

  • Reflect on algorithmic solutions and justify methodological choices
  • Motivate and argue for approaches rooted in algorithm theory and data-structural principles

Reference Texts

  • Robert Lafore, Data Structures and Algorithms in Java (2nd Edition), Sams Publishing
  • Jean Paul Tremblay & Paul G. Sorenson, An Introduction to Data Structures with Applications, McGraw-Hill
  • Ellis Horowitz, Sartaj Sahni, Dinesh Mehta, Fundamentals of Data Structures in C++, W.H. Freeman
  • Sanjay Pahuja, A Practical Approach to Data Structures and Algorithms, New Age International Publishers (2008)