Oman College of Management & Technology Department of Computer Science Baraka, Oman Tel. (968) 26893366, Fax (968) 26893068 502203/ Algorithms Analysis & Design Course Code: Academic Year: Credit Hours: Instructor: Website: 502203 2015/2016 3 Dr. Jai Arul Jose G. www.omancollege.edu.om/ Course Title: Semester: Prerequisite: Email: Phone: Algorithms Analysis & Design First 502202 g.jai.areul@omancollege.edu.om (968) 26893366/ ex. 102 Sections and Timings: Section 1. Days Mon, Wed Time 10:00 to 11.30 Room # 231 Office Hours Days Sun to Thu Time 08.00 am to 3.00 pm Objectives: The purpose of this course is to understand what is meant by an algorithm and its analysis, how to solve recurrences, different algorithm design techniques, More detail about sorting and graph algorithms and basics of hashing and text compression. Course Description: Complexity analysis of algorithms, design and analysis of computer algorithms such as; divide and conquer, greedy method tree graph, dynamic programming, backtracking and branch and bound. Lower bound theory, NP-complete problems. Learning Outcomes: Upon completion of this course, the students must be able to: 1.Understand basic techniques for designing algorithms, including the techniques of recursion, divide-and-conquer, and greedy. 2.Understand advanced techniques for designing algorithms, including dynamic programming, network flow and problem reduction. 3.Understand the techniques of proof by contradiction, mathematical induction and recurrence relation, and apply them to prove the correctness and to analyze the running time of algorithms. 4.Understand the mathematical criterion for deciding whether an algorithm is efficient, and know many practically important problems that do not admit any efficient algorithms. 5.Able to apply the algorithm design techniques to design efficient algorithms for different kinds of problems Textbook: Cormen. T. et al (1997). Introduction to Algorithms. MIT press, USA Course Topics: WEEK 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Topics 1) Introduction 1.1) What is an algorithm? 1.2) Analyzing Algorithms 1.3) Designing Algorithms 1.3.1) Incremental Approach 1.3.2) Divide and Conquer Approach 2) Mathematical Background 2.1) Growth of Functions and Asymptotic Notation 2.2) Summations Review 2.3) Recurrences 2.3.1) Substitution Method 2.3.2) Iteration Method 2.3.3) Master Method 3) Sorting Algorithms 3.1) Incremental: Bubble, Insertion and Selection Sort. 3.2) Divide and Conquer: Merge and Quick-Sort Review Lecture + First Exam 3.3) Linear Time: Counting and Bucket Sort 4) Searching Algorithms 4.1) Sequential search (Unsorted and Sorted lists) 4.2) Binary Search and Operations on Binary search tree. 4.3) Text Search (Brute-Force method) 5) Graph and Greedy Algorithms 5.1) Graph representation 5.2) Traversal (Breadth and Depth-First) 5.3) Minimum Spanning Trees (MSTs) (Kruskal’s and Prim’s Algorithms) 5.4) Single Source Shortest Path (SSSP) (Dijkstra’s Algorithm) Review Lecture + Second Exam 6) Hashing & Text Compression 6.1) Hashing 6.2) Text Compression (e.g. Hoffman Code) Notes: Attendance Lectures attendance is mandatory. Students are allowed maximally of 15% absentia of the total module hours. Assignments are required to be solved independently to assist students in gaining programming skills and helping them to prepare to the practical exam. Any given assignment must be worked out by the student himself. Cheating is a religious and ethical crime and any case of cheating will be treated according to the university rules. Evaluation Plan: Modes of Assessment First Exam Second Exam Assignments Final Exam Score 20% 20% 10% 50%