CS502 Handouts, Assignments, Mid & Final Term Past Papers are given below. The goal of this course is to help students grasp the concepts and methods underlying algorithm design and analysis. Programming is not required for this mostly theoretical course, although comprehending the idea of a mathematical proof and a basic comprehension of discrete mathematics are. We will discuss and examine a number of data structures and algorithms that have been picked for their significance and their ability to illustrate key ideas. We will concentrate on analyzing the worstcase running time of an algorithm as a function of input size.
Algorithms History  CS502 Handouts
We will also take some time to look at the boundary between feasible and infeasible computations, assuming that viable calculations are those that can be finished in polynomial time. The word algorithm comes from the name of the Muslim writer Abu Jaffar Mohammad ibn Musa alKhwarizmi. He was born in the eighth century in the Khwarazm (Keva) province of modernday Uzbekistan, which is located south of the Oxus River. Since more than a thousand years ago, Uzbekistan has been a Muslim nation. In 1873, the Russians seized control.
CS502 Handouts, Assignments, Mid & Final Term Past Papers
His precise birth year is unknown. AlKhwarizmi moved with his parents when he was a little boy to an area south of Baghdad. His contributions have demonstrated that he flourished in Baghdad from 813 to 833 CE under Khalifa AlMamun. Around 840 C.E., AlKhwarizmi passed away. AlKhwarizmi created a great deal of work, which was included in the Compendious Book on Calculation by Completion and Balancing (al Kitab almukhatasar fi hisab aljabr wa’lmuqabalah). The words algebra and algorithm are taken from the titles of these books and his name. AlKhwarizmi is recognized as the most accomplished mathematician of all time as a result of his work.
Any clearly defined computing process that accepts a value or set of values as input and outputs a value or set of values is referred to as an algorithm. Therefore, an algorithm is a set of calculations that results in an output. Why do algorithm design studies? A good program’s design has numerous components. One (and a crucial one) of them is good algorithm design. A genuinely complete algorithm designer should understand programming challenges as well as machine challenges. There are two main categories of problems in every significant programming project: macro difficulties and micro issues.
The coordination of numerous programmers working on a single piece of software and how to verify that a complicated programming system fits its many needs are two examples of macro problems. These macro issues are the primary emphasis of software engineering courses. The majority of the effort put into complex software systems is focused on fairly regular tasks like input and output, data conversion, error checking, and report generating. However, there is frequently a small, crucial section of the software that requires only a few tens to hundreds of lines of code but consumes the vast bulk of the processing time.
Lesson Learning Objectives  CS502 Handouts
Upon finishing this course, you should be capable of:
 Examine the relationship between the size of the input and the worstcase execution time of an algorithm.
 Recurrence connections puzzle

Acknowledge and apply the Divide and Conquer strategy.
 Recognize the principles of dynamic programming.
 Recognize the principles of the greedy algorithm.
 Recognize the fundamentals of graph traversing.
 Identify and elucidate the basics of complexity theory.
We will attempt to explore algorithms as purely mathematical objects in this course, ignoring factors like the programming language, computer, and operating system. This has the benefit of eliminating the confusing details that have an impact on implementation. But these specifics can be crucial. For instance, a crucial component of contemporary CPU technology is the locality of reference. Registers and cache memory can be used to store frequently accessed data. These issues are typically disregarded in our mathematical analysis. However, an effective algorithm designer can operate inside the field of mathematics while still maintaining.
Keep an open mind about future implementation difficulties that are crucial for successful implementation. For example, this semester we will study the fast sorting algorithms, heapsort, mergesort, and quicksort. All have equal running times, according to our mathematical research. Quick sort is the fastest of the three on practically all modern machines (assuming no additional considerations). Why? From the standpoint of the location of reference, it is the best. However, the difference is often negligible (the running time difference may be between 10% and 20%).
Conclusion
“The success of a programming project depends on the optimization of critical code sections. Yet, a common approach is to start with inefficient algorithms and then try to enhance performance using clever coding or expensive hardware. However, without addressing flawed basic designs, finetuning often yields little improvement.”
A worth reading article is here
CS502 Handouts:
There are handouts on the linked page “CS502 Handouts“.
CS502 Past Papers:
CS502 Midterm Past Papers:
There are Midterm Past Papers on the linked page “CS502 Mid Papers“.
CS502 Final Term Past Papers:
There are Final Term Past Papers on the linked page “CS502 Final Papers“.
CS502 Assignments:
There are assignments the linked page “CS502 Assignments”.