Course Description:
The course is designed to introduce students to the fundamental concepts of data structures and algorithms using Python Programming Language. The course covers basic data structures in Python including Lists, Dictionaries, Tuples, and Sets. Advanced data structures such as array-based lists, linked lists, stacks, queues, and trees will also be discussed in detail. Students will also learn about searching and sorting algorithms. The students of this course will also learn about designing, managing, and analyzing small to moderate data structures. In addition, using Python language, a variety of algorithm analysis concepts are also covered.

Course Learning Description:
CLO:1 Apply concepts of data structures and algorithms for storage and manipulation of data
CLO:2 Analyze the performance of different algorithms and data structures
CLO:3 Design and implement solutions to real world problems that manipulate and manage data elements using advanced data structures

Course Contents:
1. Overview of Python Programming – Four Lectures
• Python Programming Basics
• Python Control Structures (Selection, Repetition)
• User defined Functions in Python

2. Python Data Structures – Four Lectures
• Lists
• Sets
• Dictionaries
• Tuples

3. User Defined Data Structures – Two Lectures
• User defined Data Structures in Python

4. Linked Lists – Six Lectures
• Singly Linked List
• Doubly Linked List
• Circular Linked List

5. Stack and Queue – Four Lectures
• Array and Linked List based Stack
• Array and Lined List based Queue

6. Trees, Maps and Graphs – Four Lectures
• Binary Trees
• Tree Traversal
• Binary Search Trees
• Shortest path and Adjacency Matrix

7. Searching Algorithms – Four Lectures
• Big O Notation
• Recursion
• Searching
• Linear and Binary Search
• Depth-First
• Breadth-First

8. Sorting Algorithms – Four Lectures
• Sorting
• Bubble
• Insertion & Selection Sort
• Merge & Quick Sort
• Heap
• Hashing