DSA_Course Syllabus
DSA_Course Syllabus
Lecture Topics
Importance of Data Structures in Programming.
Algorithm complexity: Time and Space.
Big-O notation: Introduction and examples.
Learning Objectives
Explain the role of data structures in solving computational problems.
Analyze simple algorithms using Big-O notation.
Lecture Activities
Instructor-led discussion: Examples of algorithm performance.
Group activity: Compare the efficiency of different sorting methods (e.g.,
bubble sort vs insertion sort).
Laboratory Activity
Install Python and set up a coding environment (e.g., Jupyter Notebook/IDLE).
Write Python scripts to calculate factorial iteratively and recursively.
Measure the runtime of both approaches using Python’s time module.
Learning Objectives
Implement basic operations on arrays and strings.
Solve computational problems using arrays and strings.
Lecture Activities
Solve examples of array-based problems like finding the largest element or
reversing an array.
Interactive coding demonstration: Manipulating strings in Python.
Laboratory Activity
Write Python programs to:
Find the largest and smallest elements in an array.
Count occurrences of a specific character in a string.
Check if a string is a palindrome.
Learning Objectives
Construct linked list data structures in Python.
Perform basic linked list operations.
Lecture Activities
Create a diagram of a linked list.
Walkthrough: Python implementation of a singly linked list.
Laboratory Activity
Implement a singly linked list class in Python with methods for insertion,
deletion, and traversal.
Enhance the class to create a doubly linked list.
Week 4: Stacks
Lecture Topics
Definition and applications: Balancing parentheses, undo functionality.
Stack implementation using arrays and linked lists.
Learning Objectives
Construct stack data structures in Python.
Apply stacks to solve computational problems.
Lecture Activities
Discuss real-world applications of stacks.
Code a stack implementation using lists in Python.
Laboratory Activity
Implement a stack using both arrays (Python lists) and linked lists.
Solve a problem to validate balanced parentheses using a stack.
Week 5: Queues
Lecture Topics
Types: Simple queue, circular queue, and deque.
Queue implementation using arrays and linked lists.
Learning Objectives
Construct queue data structures in Python.
Use queues in real-world problem-solving.
Lecture Activities
Discuss real-world queue applications (e.g., scheduling systems).
Implement a queue using Python lists.
Laboratory Activity
Implement a circular queue using Python.
Simulate a simple ticketing system using a queue.
Week 6: Recursion
Lecture Topics
Concept of recursion.
Recursive algorithms: Factorial, Fibonacci, Towers of Hanoi.
Learning Objectives
Write and debug recursive Python programs.
Understand and solve problems using recursive algorithms.
Lecture Activities
Solve the Fibonacci sequence recursively.
Discuss the stack behavior during recursion.
Laboratory Activity
Write Python programs for:
Fibonacci sequence generation.
Towers of Hanoi simulation.
Week 7: Trees
Lecture Topics
Binary trees: Representation and traversal.
Binary Search Trees (BST): Insertion, deletion, search.
Learning Objectives
Construct and traverse binary trees in Python.
Solve problems using binary search trees.
Lecture Activities
Code walkthrough: Binary tree class implementation in Python.
Discuss traversal techniques (preorder, inorder, postorder).
Laboratory Activity
Write Python code to:
Build a binary tree and perform traversals.
Create a BST and search for an element.
Learning Objectives
Implement and compare sorting algorithms in Python.
Analyze the time complexity of sorting algorithms.
Laboratory Activity
Write Python programs to:
Implement sorting algorithms.
Compare their performance on different datasets.
Learning Objectives
Implement searching algorithms in Python.
Analyze their time complexity.
Laboratory Activity
Implement linear and binary search algorithms in Python.
Solve a problem to find elements in a large dataset.
Learning Objectives
Implement graph structures in Python.
Traverse graphs using BFS and DFS.
Laboratory Activity
Implement BFS and DFS in Python.
Solve a graph traversal problem (e.g., shortest path).
Learning Objectives
Solve optimization problems using dynamic programming.
Laboratory Activity
Solve the knapsack problem using Python.
Write a program to find the longest common subsequence of two strings.
Output: Python solutions for dynamic programming problems.