University of Management and Technology
Course Outline
Course code: SE310, CS3044, X1511
Course title: Analysis of Algorithms/Fundamental of algorithms
Program BSSE, BSCS, MCS
Credit Hours 3
Duration 3 hours
Prerequisites Data Structures and Algorithm
Resource Person Muhammad Junaid
Counseling Timing Monday - Friday (10:00AM – 01:00PM), Room# 18
(Room# )
Contact 03446235552
Chairman/Director signature………………………………….
Dean’s signature…………………………… Date………………………………………….
Learning Objective:
Course Outline Page 1
This course presents design techniques for developing efficient algorithms. Students will
explore several classes of algorithms with respect to the underlying data structures, the
design method, and application orientation. The course will end by making the students
knowledgeable in techniques of developing efficient algorithms.
At the end of the course the students will be able to:
1. Explain what is meant by “best”, “expected”, and “worst” case behavior of an
algorithm
2. Identify the characteristics of data and/or other conditions or assumptions that lead
to different behaviors.
3. Determine informally the time and space complexity of simple algorithms
4. List and contrast standard complexity classes
5. Use big O, Omega, Theta notation formally to give asymptotic upper bounds on time
and space complexity of algorithms
6. Use of the strategies (brute-force, greedy, divide-and conquer, and dynamic
programming) to solve an appropriate problem
7. Solve problems using graph algorithms, including single source and all-pairs
shortest paths, and at least one minimum spanning tree algorithm
8. Trace and/or implement a string-matching algorithm
Learning Methodology:
Lecturing, Written Assignments, Project, Report Writing.
Moreover, learning objectives will be accomplished through theoretical and practical tasks
during the class. However, students are encouraged for maximum class participation.
Grade Evaluation Criteria
Course Outline Page 2
Following is the criteria for the distribution of marks to evaluate final grade in
a semester.
Marks Evaluation Marks in
percentage
Quizzes 10%
Assignments 10%
Mid Term 25%
Attendance & Class Participation 5%
Term Project 10%
Presentations 5%
Final exam 35%
Total 100%
Recommended Text Books:
1. Introduction to Algorithms by Thomas H. Cormen, 3rd Edition
Reference Books:
1. Introduction to the Design and Analysis of Algorithm by Anany V. Levitin
2. Algorithm Design by Jon Kleinberg, Eva Tardos, 1st Edition
Calendar of Course contents to be covered during semester
Course Outline Page 3
Course code: SE310, CS3044, X1511
Course title: Analysis of Algorithms/Fundamental of algorithms
Week Course Contents Reference Chapter(s)
What is an algorithm? Chapter 1
Why study algorithm?
Role of algorithms in computing
1 Implementation of algorithms and technology
Expressing an algorithm
Pseudocode conventions
Complexity of an Algorithms
What is analysis of an algorithm? Chapter 3
Factors affecting analysis
What is Worst/Average/Best cases of an algorithm
Asymptotic analysis
2 Big-O, Theta and Omega notations and definitions
Asymptotic trends illustrated with graphs
How to find the time complexity of the algorithm?
3-4 examples
Sorting algorithms and their analysis Chapter 2
• Selection Sort
3 • Bubble sort
• Insertion sort
What is loop invariant? Chapter 2
3-4 examples
What is recursion?
Recurrences and their relation to Divide and Conquer
4 algorithms
Solving recurrence relation (decreasing functions)
• 2-3 examples
Solving recurrence relation (dividing functions)
2-3 examples
Preparing for Quick Sort: Concept of a Pivot and Partition Chapter 4,7
Quick Sort algorithm
5 Best, Worst and Average cases of Quick Sort
Merge sort algorithm
Working of merge sort
Best, Worst and Average cases of Merge Sort
Shifting the approach: Linear Time Sorting Chapter 8
• Counting Sort and analysis
6 • Bucket Sort and analysis
• Radix Sort and analysis
Shifting the approach: Greedy algorithms Chapter 16
Example: Fractional Knapsack problem and solution
7 Example: Shortest job first problem
Example: Huffman codes
Course Outline Page 4
8 Revision
Shifting the approach: Dynamic Programming Chapter 15
• Rod cutting
9 • Matrix-chain multiplication
Elements of dynamic programming
What is Tree? Chapter 12, 23
Types of tree
What is a binary Search Tree (BST)?
Querying a BST
10 Insertion and deletion in a BST
Randomly built binary search trees
Growing a minimum spanning tree
The algorithms of Kruskal and Prim
What is Heap Chapter 6, 11
Maintaining the heap property
11 Building a heap
The heapsort algorithm
Hash tables
Hash functions
Graphs Chapter 22
Representing graphs
Common types of graphs
• Simple/Multi/Pseudo
12 • Directed/Undirected
• Weighted/Unweighted
Breadth-First Search
Depth-first Search
Single-Source Shortest Paths Chapter 24, 25
The Bellman-Ford algorithm
13 Dijkstra’s algorithm
Shortest paths and matrix multiplication
The Floyd-Warshall algorithm
Johnson’s algorithm for sparse graphs
String matching Chapter 32
The naive string-matching algorithm
14 The Rabin-Karp algorithm
String matching with finite automata
The Knuth-Morris-Pratt algorithm
Introduction to complexity classes Chapter 34
Polynomial time
15 Polynomial-time verification
NP-completeness and reducibility
NP-complete problems
Revision
Course Outline Page 5