Sie sind auf Seite 1von 7

University of Central Punjab

Faculty of Information Technology

PROGRAM (S) TO BE
BSCS
EVALUATED

A. Course Description
(Fill out the following table for each course in your computer science curriculum. A filled out form should
not be more than 2-3 pages.)

Course Code CSAL3233


Course Title Design and Analysis of Algorithms
Credit Hours 3 (3 + 0)
Prerequisites by Data Structures and Algorithms
Course(s) and Topics
Assessment
Instruments with Quiz 15%
Weights (homework, Assignment 10%
quizzes, midterms, final,
programming Midterm 20%
assignments, lab work, Final 35%
etc.)
Semester Spring 2016
Course Instructor Kamran Shabbir
Course Instructor kamran.shabbir@ucp.edu.pk
Email
Course Coordinator Shafiq Ur Rehman
Office Hours Decided and placed
Plagiarism Policy Student must present their original work; plagiarism of any type is not accepted at
all. All plagiarized work will get zero mark on first time, and it will also affect the
other subject instruments on the subsequent submissions.
Current Catalog Algorithms as a technology, Importance of Algorithm Analysis, Mathematical
Description Foundation, Asymptotic Analysis, Efficiency of Algorithms, Best, Average and
Worst Cases for a Problem, Growth Functions, Asymptotic Notation, Recurrences,
Solving Recurrences, The Substitution Method, The Iterative Method, The Master
Method, Analysis of Sorting Algorithms, Insertion Sort Analysis, Selection sort
analysis, Merge Sort and Quick Sort Analysis, Heap Sort, Linear Time Sorting
Algorithms, Count Sort, Radix Sort, Bucket Sort, Difference between Divide and
Conquer and Decrease and Conquer, Dynamic Programming, Greedy Algorithms,
Greedy vs Dynamic Programming, Graph Algorithms, Elementary Graph Theory,
BST, DFS and BFS, Minimum Spanning Tree, Kruskal’s Algorithm, Prim’s
Algorithm, Single Source Shortest Path, Dijkstra’s Algorithm, Bellman-Ford
Algorithm, String Matching Algorithms.
Textbook (or Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L.
Laboratory Manual for Rivest and Clifford Stein, 3rd Edition, MIT Press, 2009.
Laboratory Courses)

Reference Material  Internet, VU material and other universities material related to Algorithm.

1 NCEAC.FORM.001.C
 The Algorithm Design Manual By Steven S. Skiena
 Algorithms By Dasgupta, C. H. Papadimitriou, and U. V. Vazirani
 Algorithms 4th Edition By Robert Sedgewick
 Design and Analysis of Algorithms 2nd Edition By Parag Himanshu Dave

Course Goals Students should achieve the following basic objectives:


 Students will be able to well familiar with some of the classic algorithmic
problems and their solutions
 Students will be familiar with general algorithmic techniques, performance
measures.
 Students will be able understand and appreciate the importance of data
structures and algorithms in the performance of applications
 Students will be able to design new algorithms as well as modify existing
ones for better performance.
 Students will be able to choose best suitable—reliable, efficient and
practical, among several available algorithms for a problem on the basis of
cost benefit analysis.
Topics Covered in the Attached
Course, with Number
of Lectures on Each
Topic (assume 15-week
instruction and one-hour
lectures)
Programming NO
Assignments Done in
the Course
Class Time Spent on Theory Problem Solution Social and Ethical
(in credit hours) Analysis Design Issues

Oral and Written No


Communications

LECTURES Lecture Topics References Instruments


Lec#1: Introduction. Review of previous topics. What is
an Algorithm? Role of Algorithms in Computing.
What is the basic component for an Algorithm?
How to make comparison between different
Complexity classes.
Lec#2: Revisions of some important topics Related to
Data Structures, Basic Programming, and
Statement Analysis. Operation complexity for
each Data Structure (Insert, Delete, Search and
Update)
Lec#3: Selection sort. How we apply selection sort.
What is the basic structure for that Algorithm?
What is cost for finding or selecting one element
from the domain, how that is done? After
selection does that element remain available for
next selection? Complexity for selection sort in
best case, worse case and average case. Does all
three complexities are same or each has different
values. All same values for the complexity for

2 NCEAC.FORM.001.C
that algorithm give us hint to what basic
structure.
Lec#4: Insertion Sort and its line by line
analysis. How insertion sort works. What is
basic structure for that Algorithm? What is cost
for inserting one element from the domain in the
sorted order, how that is done? What is the
Complexity for insertion sort in best case, worse
case and average case? Does all three
complexities are same or each has different
values. Different values for the complexity of
that algorithm give us hint to what basic
structure.
Best, Worst Case Analysis of Insertion sort, how
these complexities are applied to the real world
problems and then its recurrence formation.
Forming the summation for the algorithm to
calculate the time complexity, what are the
constant cost factors, what are the variable cost
factors in time complexity related to any given
algorithm?
Decrease and Conquer.
Lec#5: How to calculate the complexity of the given
code, different cases for the calculation? Growth
of the function, how we determine that on
different polynomial functions. What is the main
basic block in that calculation? Why we consider
a single term for that calculation? Does that
single term solution is true for all the input values
or we have to place some checks on that value.
Asymptotic notation, function and running time.
What is the difference between different
asymptotic notations?
Lec#6: Ω (Big Omega), O (Big Oh), o (Small
Oh), Θ (Theta) and ω (Small Omega).
What is the difference between these notations?
What is the role of constant factor c in calculating
these notations? Does for one function value of Assignment 1
the constant c and the variable no always remain
the same or there is a relation between these two
values. How we can calculate these different
asymptotic notations?
Lec#7: Divide and Conquer Approach: What is
Divide and Conquer approach? How we use that
approach in our daily life. What are the good and
bad for that application in general life? What is
basic structure for that approach? How we
implement that idea in the form of Algorithm.
Does that implementation is recursive or
iterative.
Lec#8: Merge Sort: Analysis of Merge Sort and how
to form its recurrence, how we divide the original
problem in to two parts and the same two part
division is repeated until we reach the base case
condition of size one. Does there any change in
the solution if we increase the size for the base
case more than 1. What is the cost for dividing
the problem domain into smaller parts?
3 NCEAC.FORM.001.C
Lec#9: What is the cost in merging these smaller parts
with each other to form the sorted solution level
by level? Is there a chance that we can change the
division of the problem domain level be level
rather than the two equal parts? We can divide
the problem domain into parts of different sizes
but does the same solution will be generated or
we have to consider some other checks in solving
that problem.
Lec#10: Maximum sub array problem: What is the
basic problem? Where that concept is used. How
to solve that problem. How we can form some
basic solution. Does that basic solution is good.
To design more workable solution on the base of
value, what will be its complexity? To design
more better solution on the basis of change in the
value, does that approach make the problem
easier to understand and solve, or at first
understanding becomes difficult and then we can Quiz 1
realize the change in method and then we can
form a better solution for that problem. In divide
and conquer approach does solution is always in
left part or right part or we have to think out of
the box to understand that may be there is some
overlapping section which can hold the solution.

Discussion of different Divide and Conquer


problems for the general understanding of this
problem domain.
Lec#11: Recursion Tree and Mathematical
recurrences: Solving Recurrences
mathematically and then seeing their pictorial
view that how these two relates with each other.
Does all the recurrences are solvable or we had
to see some basic structure for that recurrence.
Lec#12: Does height of the tree gives any idea for the
solution in pictorial form? Does recurrence cost Quiz 2
only depend upon the depth of the tree or there is
some other factor for that cost.
Lec#13: Master Theorem: Three cases for Master
theorem, what is basic function for Master
theorem, how we deal with the value of a, what
are the limitations on the value of a, how we
deal with the value of b, what are the limitations
on the value of b, how we use a and b in our
solution, how we compare the calculated cost
function with the original cost function given in
the original recurrence, how we decide the
complexity of the function on the basis of that
comparison.
Lec#14: Quick Sort and its analysis: What is the
basic structure for Quick sort? How we use that
structure for the solution. Does selection of
element is always correct? What happens if the Quiz 3
selection divides the problem in to two un equal Assignment 2
parts? What will be the complexity if division is
balance, if division is not balanced and if only
one division comes into play?
4 NCEAC.FORM.001.C
Lec#15: What will be the shape of the recurrence
function in each case? How could we select the
Pivot or the Division element with some more
certainty that at least there will be two
divisions? What will be the best case and worse
case for this algorithm? What is the difference
between the shape of the recurrence in case of
best case or the worst case related to the input?
Lec#16: Heap Sort: What is heap, how we deal with a
heap. How we will use heap for our problem.
Basic structure for Heap. Types of Heaps. How Midterm 1
we Analyze the structure for heap. Heaps are
shown as trees, does these heaps are trees or some
special type of trees. What tree rules are applied
for these heaps? How we name different
elements of these heaps. What are parent and
child?
Lec#17: How these two are related, how we can access
child from a parent and parent from a child. What
rules we had to follow in heaps for the proper
order? Maintaining the heap property for each
element. Heap Sort Algorithm and analysis. How
we sort the elements available in heap structure.
What basic operation we perform for that sorting
and how that change in the heap structure is
balanced.
Priority Queue implemented with the
help of Heap
Lec#18: Lower Bound of Comparison Based
Sorting Algorithms.
Does there a possibility that we can compare n
elements less than the linear time for once.
Assignment 3
Non Comparison-based Sorting Quiz 4
Algorithms.
Counting Sort: Linear time algorithm,
dependent upon the range of the input and the
size of the input, used for the sorting of keys
related to the data set of the same domain.
Lec#19: Radix Sort: Linear time algorithm, uses
counting sort as the building block for the
solution, dependent upon the range of the
input(alphabets or digits), size of each key and
number of keys as input, used for the sorting of
keys related to the data set of the same domain.
Bucket Sort: Linear time algorithm,
dependent upon the distribution of data, data is
in range [0, 1), buckets are formed and we store
elements in these buckets and then sort theses
buckets with the help of any sorting algorithm.
Lec#20: Intro to Graphs What graph is? Edges and
vertices, in degree, out degree, source, sink,
directed and in directed graph, Adjacency
Matrix, adjacency list, transpose of a graph,
weighted and un weighted graph
Lec#21: BFS. How breadth first search works, its
algorithm, its working, what data structure is
used in its working, how it keep track of

5 NCEAC.FORM.001.C
different information, what is the final result of
this algorithm, where we can use this algorithm,
basic condition, limitation, application in
practical domain
Lec#22: DFS. How depth first search works, its
algorithm, its working, what data structure is
used in its working, how it keep track of
different information, what is the final result of Quiz 5
this algorithm, where we can use this algorithm,
basic condition, limitation, application in
practical domain
Lec#23: Topological Sort. How we can use
topological sort, what is the basic step before its
application, which technique helps in its
application, where we can implement that
sorting technique, what results we can achieve
with the help of this sorting technique.
Lec#24: Strongly Connected Components.
Finding SCC in a graph, how we can do that,
it’s working, its steps, its implementation,
complexity, what is the basic block for this SCC
implementation, what benefits can we get from
these SCC’s, its practical application.
Lec#25: Spanning Tree. How an un directed graph
can be seen as a form of a connected tree, means
spanning tree, how different vertices are
connected with each other, where do we use this
algorithm, what benefits and results we get from
this algorithm, its working, complexity,
application.
Minimum Spanning Tree. When in un
directed weighted graph, if we want to find the
minimum possible connection to form a
connection tree, how we will do that, what is its
benefits, it selection procedure, its
implementation.
Prims. A greedy minimum spanning tree
algorithm, works locally greedy, its application
steps, basic data structure for implementation,
its working, final result, complexity, application
and its benefits.
Lec#26: Krushkal. A greedy minimum spanning tree
algorithm, works globally greedy, its application
steps, basic data structure for implementation,
its working, final result, complexity, application
and its benefits.
Lec#27: Single-Source Shortest Paths. Where to
apply path, directed or un directed, what is
called a path, basic definition, formation, how
path is termed as shortest path ( minimum edge
shortest path, minimum weight shortest path),
what is the difference between the two, where
we apply these different divergent of shortest
path, its greedy implementation, complexity,
working, basic data structure, its steps, final
result.
Dijkstra’s. Special case shortest path
algorithm, for only positive edge weights, its
6 NCEAC.FORM.001.C
working, its complexity, its steps, its
application, working of the algorithm,
limitations, checking criteria, basic data
structure, complexity.
Lec#28: Bellman Ford. Generic shortest path
algorithm, for positive and negative edge
weights, its working, its complexity, its steps, its
application, working of the algorithm,
limitations, checking criteria, basic data
structure, complexity.
Lec#29: Dynamic Programming: Definition and
basic structure. What is recursive formulation,
what is memoization? How memoization helps
in reducing time complexity. What is top down
and bottom up approach?
Rod Cutting problem.
Lec#30: Matrix Multiplication Problem.

Lec#31: Matrix Multiplication Problem.

Lec#32: Longest Common Subsequence and its


variants. Final 1
0/1 Knapsack problem and its variants.

7 NCEAC.FORM.001.C

Das könnte Ihnen auch gefallen