CSC-201 Data Structures
Credit Hours: 4(3-3) Prerequisites: (CSC-102)
Teacher:
Course Introduction:
The course is designed to teach students structures and schemes, which allow them to write
programmer to efficiently manipulate, store, and retrieve data. Students are exposed to the concepts of
time and space complexity of computer programs.
Course content:
Abstract data types, complexity analysis, Big O notation, Stacks (linked lists and array
implementations), Recursion and analyzing recursive algorithms, divide and conquer algorithms,
Sorting algorithms (selection, insertion, merge, quick, bubble, heap, shell, radix, bucket), queue,
dequeuer, priority queues (linked and array implementations of queues), linked list & its various types,
sorted linked list, searching an unsorted array, binary search for sorted arrays, hashing and indexing,
open addressing and chaining, trees and tree traversals, binary search trees, heaps, M-way tress,
balanced trees, graphs, breadth-first and depth-first traversal, topological order, shortest path,
adjacency matrix and adjacency list implementations, memory management and garbage collection.
Course Objective:
This course aims at teaching the students to write programs that not only are correct but also
computation and space efficient and optimized for the intended use through appropriate
structuring/organization of the related data. Students will learn the standard data structures such as
linked lists, stacks, queues, trees, and graphs and the algorithms that manipulate them. Students will
also be introduced to the concept of algorithm complexity analysis in order to make them realize the
cost of the operations they perform on their data structures.
Teaching Methodology:
Lectures, Written Assignments, Practical labs, Semester Project, Presentations
Courses Assessment:
Mid Exam, Home Assignments, Quizzes, Project, Presentations, Final Exam
Reference Materials:
Advanced Algorithms and Data Structures by Marcello La Rocca, 2021.
Data Structures and Algorithms Thinking Made Easy 5th Edition by Narasimha Karumanchi, 2017.
Data Structures and Abstractions with Java by Frank M. Carrano & Timothy M. Henry
Data Structures and Algorithms Thinking with Python by Narasimha Karumanchi, 2016.
Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles 5th ed.
Edition,2016.
Data Structures and Algorithms in C++ by Adam Drozdek , 4th edition, 2012
Data Structures and Algorithm Analysis in C++ by Mark Allen Weiss, 4th edition, 2013.
C++ plus data structures, 6th edition by Dale 2018.
Data Structures and Algorithms in C++ by Michael T. Goodrich 2nd Edition, 2011.
Introduction to Algorithms, Thomas H. Cormen et al, MIT Press, 3rd edition, 2009.
A Common-Sense Guide to Data Structures and Algorithms, Second Edition: Level Up Your Core
Programming Skills 2nd Edition, 2020
Course Learning Outcomes (CLOs):
At the end of the course the students will be able to: Domain BT Level* PLOs
1. Implement various data structures and their algorithms,
C 3 3
and apply them in implementing simple applications
2. Analyze simple algorithms and determine their
C 5 2
complexities
3. Apply the knowledge of data structures to other
C 3 1
application domains
4. Design new data structures and algorithms to solve
C 6 4
problems
* BT= Bloom’s Taxonomy, C=Cognitive domain, P=Psychomotor domain, A= Affective domain
Week/Lecture # Theory/Practical
Introduction:
Lec-I
Introduction to Data Structures- Need and Significance
Lec-II Review of the Pre-requisite Knowledge
Abstract Data Types:
Arrays, Structures and Classes
Week 1 Lec-III Abstraction
Concrete and Abstract Data Types
Class invariants and pre-and post-conditions.
Practical-I Fundamental OO Design and Implementation Practice
Practical-II Fundamental OO Design and Implementation Practice
Practical-III Fundamental OO Design and Implementation Practice
Complexity Analysis:
Complexity Analysis
Lecture-I
Time and Space Complexity
Big O notation
Searching Algorithms:
Arrays (basic and Object types)
Lec-II
Week 2 Algorithms on arrays.
Recursion and analyzing recursive algorithms.
Linear Search
Lec-III
Binary Search
Practical-I Pseudocode and Implementation of linear search.
Practical-II Comparison of searching algorithms
Practical-III Comparison of searching algorithms
Sorting Algorithms:
Selection Sort
Lec-I
Bubble Sort
Insertion Sort
Sorting Algorithms:
Week 3 Lec-II Divide and conquer algorithms
Merge Sort
Lec-III Quick Sort
Practical-I Implementation and Comparison of sorting algorithm
Practical-II Implementation and Comparison of sorting algorithm
Practical-III Implementation and Comparison of sorting algorithm
Week 4 Lec-I Stack Array Implementation:
Stack: Basic/primitive functions
Stack supporting functions
Stack Array Implementation:
Lec-II Stack Applications – Arithmetic Expression,
Infix, post-fix and pre-fix notations.
Lec-III In-to post transformation and post-fix evaluation using algorithm
Practical-I Implementation of Static Stack.
Practical-II Infix to Post fix Conversion
Practical-III Post fix Evaluation
Stack Array Implementation:
Lec-I
Parenthesis validation in mathematical expression using stack.
Lec-II Multiple brackets validation using stack.
Week 5 Lec-III Any other example of validation using stack.
Practical-I Parenthesis matching validation implementation
Practical-II Multiple brackets matching validation implementation
Practical-III Multiple brackets matching validation implementation
Queue Array Implementation:
Lec-I Queue: Basic/primitive functions
Queue supporting functions
Lec-II Circular queue
Week 6
Lec-III Priority queue
Practical-I Implementation of queue operations
Practical-II Implementation of circular queue operations
Practical-III Implementation of priority queue operations, SJF
Queue Array Implementation:
Double ended queue
Lec-I
Deiqueue
Deoqueue
Link List:
Week 7 Lec-II Introduction of Link List
Creating Different types of Link List.
Lec-III Linked List – Operations and Representations
Practical-I Queue Applications – OS process and Message queues
Practical-II Implementation of double ended queue.
Practical-III Linklist implementation using primitive functions.
Stack Link List Implementation:
Dynamic Implementation of Stack
Lec-I
Recursion using Linklist
Linklist operations on Stack
Lec-II Sorted linked list
Week 8
Lec-III Searching an unsorted linklist,
Stack Link list implementation using primitive and supporting
Practical-I
functions.
Practical-II Sorted Link list implementation.
Practical-III Searching Link list implementation.
Mid Term Exam
Queue Linklist Implementation:
Lec-I
Linklist implementation of queue
Lec-II Linklist based Circular queue
Week 9 Lec-III Linklist based Variations: deQueue, priority Queue.
Practical-I Dynamic Queue Implementation
Practical-II Circular queue implementation
Practical-III Priority queue implementation
Queue Linklist Implementation:
Lec-I
Linklist base Variations: doubly linklist.
Hashing:
Lec-II
Hashing and indexing
Week
Hashing:
10 Lec-III
Open addressing and chaining
Practical-I Implementation of doubly linklist
Practical-II Implementation of circular doubly linklist
Practical-III Implementation of hashing
Trees and Traversals:
Introduction and terminology,
Lec-I Binary trees and types,
Tree traversals
Binary Tree representation, basic operations
Week
Binary Search Tree:
11 Lec-II
Binary Search trees and Representation and operations
Lec-III M-Way tree
Practical-I Tree implementation
Practical-II Tree implementation
Practical-III BST implementation
Balanced Tree and Heaps:
AVL tree
Lec-I
Heap (max and min)
Heaps and Associated Algorithms
Week Huffman Codes:
Lec-II
12 Huffman Algorithm
Lec-III Huffman Algorithm (cont..)
Practical-I Heap implementation
Practical-II Max and Min Heap implementation
Practical-III Heap Sort Implementation
Week Graphs:
13 Lec-I Terminology, operations and representation
Graph traversals and searching algorithms (BFS-DFS)
Weighted Graphs
Lec-II
Dijkstra’s Algorithms
Lec-III Kruskal’s Algorithm
Practical-I Graph implementation using Adjacency List
Practical-II Graph implementation using Adjacency Matrix
Practical-III DFS and BFS implementation
Shortest Path:
Lec-I Topological order
Shortest path
Shortest Path:
Lec-II
Week Using Adjacency matrix
14 Shortest Path:
Lec-III
Adjacency list implementations
Practical-I Implementation of shortest path algorithms.
Practical-II Implementation of shortest path algorithms.
Practical-III Implementation of shortest path algorithms.
Shortest Path:
Lec-I Unweighted graph
Weighted graph
Shortest Path:
Lec-II
Warshal Floyd’s Algorithm
Week
Memory management:
15
Lec-III Memory Management
Garbage collection.
Practical-I Implementation of Warshal Floyd’s algorithm
Practical-II Implementation of Warshal Floyd’s algorithm
Practical-III Implementation of memory management
Project Demos:
Lec-I
Project Demos
Lec-II Project Demos
Week
Lec-III Final Course Revision:
16
Practical-I Revision of programming exercises
Practical-II Revision of programming exercises
Practical-III Revision of programming exercises
Final Term Exam