To operate the Blended Learning Center(BLC) at optimal level, maintenance will be performed every day at 8:30 AM and at 5:00 PM regularly which can take up to 30 minutes. Please consider scheduling your activity in the BLC platform accordingly.
Topic outline
- Welcome to the world of Algorithm Lab
Welcome to the world of Algorithm Lab
Welcome Note
Hello Students!
Welcome to the course "Algorithm Lab (CSE215)" in Summer 2021. In this course, you are going to learn the fundamental concepts of Algorithms. You will get to know some of the searchings, sorting algorithms and implement them for problem-solving. We are going to study in an approach that you will get all the support in this online platform. The course is designed with plenty of tutorials and resources. You will find course contents, reference books, course delivery plans, all kinds of announcements, and contact information here.
So, Let's start our journey and make this journey a great and remarkable one.
Instructor's Information:
Instructor Name:
Nadira Anjum Nipa
Designation: Lecturer
Office Address: CSE Faculty room, Level
-6, House Building, Uttara Campus, Dhaka – 1230
Course Rationale
Algorithms deal with efficient ways to solve different mathematical and real-life problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve computational problems. This course emphasizes the relationship
between algorithms and programming and explores algorithms from the programmer’s perspective for solving problems efficiently using various programming languages.
Course Objective
This course introduces students to the analysis and design of computer algorithms. Upon completion of this course, students will be able to do the following:
- Analyze the asymptotic performance of algorithms.
- Demonstrate familiarity with major algorithms and data
structures.
- Apply important algorithmic design paradigms and methods of
analysis.
- Synthesize efficient algorithms in common engineering design situations.
Course Outcomes
(CO’s)
CO1: Analyze and calculate time complexity and space complexity
of various algorithms or any written code using mathematical formula and
comparison of algorithms.
CO2: Generate and
interpret the output of iterative and recursive codes with the analysis of the
problem definition.
CO3: Identify which
algorithm listed under which algorithmic paradigm. Compare among various
algorithms/implemented codes and choose the efficient one.
CO4: Break down
and describe the simulation of various algorithms for different input values.
CO5: Design and
apply appropriate algorithms to solve real-life problems.
Grading Scheme
Attendance: 10
Lab problem Solving: 25
Lab Report Submission: 25
Lab Final : 40
--------------------------------------
Total : 100
Course Outline, Books, and Web Links
OBE Course Outline [View]
Text Book:
- Introduction to Algorithms, (3rd Edition, MIT Press,
2009) ISBN: 9780262033848. Authors: Thomas H. Cormen, Charles E. Leiserson,
Ronald L. Rivest, and Clifford Stein
Reference Book:
- "Algorithms" (4th Edition) By Robert Sedgewick and
Kevin Wayne
- "Algorithm Design" By Jon Kleinberg, Eva Tardos
- "Data Structures And Algorithms Made Easy In
JAVA" by Narasimha Karumanchi
Useful Web Links:
Lab Class Schedule
Google Classroom code: c7l245y
Google Meet Link:
Telegram Link:
- Week-01 Preparing Background
Week-01 Preparing Background
Topics of discussion
- Introduction and importance of Algorithm and its application
- Discussion on Array, Loop, Control Statements etc.
Expected Learning Outcome
- Gain knowledge about the importance of algorithm
- Perform exercise on the array, string, and Control Statements etc.
Learning Resources
- Week-02 Notation and Complexity Analysis
Week-02 Notation and Complexity Analysis
Topics of Discussion
- Introduction and importance of Functions and it's applications.
- Function and Recursion, Euclid's Greatest Common Divisor (GCD) Algorithm.
Expected Learning Outcome
- Gain knowledge about the importance of Functions, Euclid’s Greatest Common Divisor(GCD) Algorithm.
- Perform exercise on the Function, Recursive Functions, and Array.
Learning Resources
- Week-03 Searching and Sorting Algorithm
Week-03 Searching and Sorting Algorithm
Topics of Discussion
- Introduction to the searching Algorithm.
- Discussion on the Complexity of Algorithms.
Expected Learning Outcome
- Understand and Implementation of Binary and Linear search-related problems.
- Find out the complexity of any code or algorithm.
Learning Resources
- Week-04 Sorting Algorithm Based on Brute Force Approach
Week-04 Sorting Algorithm Based on Brute Force Approach
Topics of Discussion
- Introduction to the Brute Force Approach.
- Introduction to the Sorting Algorithm based on Divide and Conquer Approach.
Expected Learning Outcome
- Knowledge about the Bubble sort algorithm and its complexity
- Knowledge about the Insertion sort algorithm and its complexity
- Exercise the Sorting Algorithm with some additional problems.
Learning Resources
- Week-05 Sorting Algorithm Based on Divide and Conquer Approach
Week-05 Sorting Algorithm Based on Divide and Conquer Approach
Topics of Discussion
- Introduction to the Divide and Conquer Approach.
- Introduction to the Sorting Algorithm based on Divide and Conquer Approach.
Expected Learning Outcome
- Knowledge about the Merge sort algorithm and its complexity
- Knowledge about the Quicksort algorithm and its complexity
- Exercise the Sorting Algorithm with some additional problems.
Learning Resources
- Week-06 Introduction to Greedy Approach
Week-06 Introduction to Greedy Approach
Topics of discussion
- Introduction to Greedy Programming
- Discussion on Coin Change Problem
- Discussion on Knapsack Problem
Expected Learning Outcome
- Solve the Coin Change Problem based on Greedy Approach
- Solve the Knapsack Problem based on Greedy Approach
- Exercise the Bin-packing Algorithm with some additional problems in the Lab.
Learning Resources
- Week-07 Mid-Term Examination
Week-07 Mid-Term Examination
No Lab. There will be a post-midterm Lab Test and Assignment for the lab.
- Week-08: Lab Performance Test
Week-08: Lab Performance Test
Dear Students,
A Lab Test will be held online on the BLC platform. You have to solve programming problems and then have to show me by explaining your work.
Syllabus:
- Searching Algorithm (Binary and Linear Search)
- Sorting Algorithm (Selection Sort, Insertion Sort, Bubble Sort, Merge Sort, Quick Sort)
For details check google classroom.
LAB PERFORMANCE TEST
--------------------------------------------------------------------------------------------------------------------------------------------
Dear Students,
Read the attached question very carefully. Solve the programming problems and submit those files here within the time given. After your submission, I will check your code one by one and will ask you some questions regarding your program. This section will be started at 12:00 pm. So join google meet at 12:00 pm.
- Week-09 Introduction to Dynamic Programming
Week-09 Introduction to Dynamic Programming
Topics of discussion
- Introduction to Dynamic Programming
- Discussion on Coin Change Problem
- Discussion on Knapsack Problem
Expected Learning Outcome
- Solve the Coin Change Problem based on Dynamic Approach.
- Solve the Knapsack Problem based on Dynamic Approach.
- Solve the Fibonacci Problem based on Dynamic Approach.
Learning Resources
- Week-10 Final Presentation and Lab Final
Week-10 Final Presentation and Lab Final
Project Presentation
Upload your report to the following google drive within three days after your presentation. Each team will upload one report in the format given in Project Guideline and upload your report in pdf. Rename the file by
your Group name and Title before uploading.
- Week-11 Final Presentation and Lab Final (Continuation)
Week-11 Final Presentation and Lab Final (Continuation)
Project Presentation
Upload your report to the following google drive within three days after your presentation. Each team will upload one report in the format given in Project Guideline and upload your report in pdf. Rename the file by your Group name and Title before uploading.