Design and Analysis of Algorithms (DAA) Lab Manual
Course Overview:
Department: Computer Science & Engineering
Course: B.Tech, 3rd Year
Lab Focus: Implementing classic algorithms across paradigms – Divide & Conquer, Greedy, Dynamic Programming, and Graph Theory
Language Used: Python (preferred for readability and interview relevance)
Important Links
Why should you care?
-
DAA is the foundation of solving real-world computational problems efficiently.
-
It trains you to:
- Analyze time and space complexity.
- Recognize algorithmic patterns.
- Solve problems with optimal methods (not just brute force).
-
DAA is a core subject in interviews for roles such as SDE, Research Intern, Data Analyst, etc.
What will you learn?
- Lab 00: Fundamental Algorithms (Interview Basics)
- Lab 01: Recursive vs Non-Recursive Algorithms
- Lab 02: Merge Sort (Divide and Conquer)
- Lab 03: Binary Search (Iterative & Recursive)
- Lab 04: Greedy Knapsack Problem (Fractional)
- Lab 05: Prim’s Algorithm for Minimum Spanning Tree
- Lab 06: Kruskal’s Algorithm for Minimum Spanning Tree
- Lab 07: Single Source Shortest Path (Multistage Graph)
- Lab 08: All-Pairs Shortest Paths (Multistage Graph)
- Lab 09: Huffman Coding (Greedy Tree Construction)
- Lab 10: Combinatorial Problems (Knapsack / 8 Queens / Flow Shop)
How to get involved?
Before diving into the labs, it’s essential to set up your online presence and tools. This will not only help you in the labs but also prepare you for internships and job applications.
Ensure Account @ GitHub
… for code sharing and version control
If you don’t have a GitHub account, follow these steps:
- Head to https://github.com
- Click Sign Up, enter email, and choose a unique username.
Username Guidelines:
Usernames should be professional, ideally
your name or a variation. Don’t use numbers or special characters unless
necessary. Remember, consistency is the key in professional branding. Use
same username across platforms like GitHub, LinkedIn, etc.
- Do the remaining steps to complete your profile
You can always change your username later, but it may affect links to your repositories. Setup your profile with a professional touch, like: @s-m-quadri 😊
- Done! 🎉
Ensure Account @ LinkedIn
… for professional networking and branding
If you don’t have a LinkedIn account, follow these steps:
- Head to https://linkedin.com
- Click Join now and sign up with your personal and/or academic email.
- Proceed to fill out your profile with relevant information.
Profile URL:
Ensure your LinkedIn profile URL is professional and easy to share. It should include
your name and be free of numbers or special characters. For example, linkedin.com/in/s-m-quadri
is better than linkedin.com/in/s-m-quadri12345
. This helps recruiters find you
easily and gives a good first impression.
- And Done! 🎉
Ensure Account @ LeetCode
… for practicing algorithmic problems
If you don’t have a LeetCode account, follow these steps:
- Head to https://leetcode.com
- Click Register using your GitHub account or email.
Note:
In the upcoming labs, you will be required to practice problems on LeetCode.
- Excellent! You’re all set! 🎉
Resources
Will be updated as we progress through the labs