Faculty Of Engıneerıng
Computer And Software Engıneerıng

Course Information

ANALYSIS OF ALGORITHMS
Code Semester Theoretical Practice National Credit ECTS Credit
Hour / Week
CSE214 Spring 3 0 3 4

Prerequisites and co-requisites
Language of instruction English
Type Elective
Level of Course Bachelor's
Lecturer Asst. Prof. Dr. Omid Sharifi
Mode of Delivery Face to Face
Suggested Subject
Professional practise ( internship ) None
Objectives of the Course To gain broad knowledge on the algorithm classes in various domains, and techniques for designing and evaluating efficient algorithms.
Contents of the Course Definition and properties of Algorithms. Design, analysis, and representation of Algorithms. Data abstraction. Pseudo code conventions. Models of computation. Mathematical Foundations: Growth of functions, asymptotic notations. Study of recursive algorithms and associated recurrence relations (substitution method, iteration method, master method, recursion trees). Design paradigms for algorithms: Brute-Force (Exhaustive Search), Divide-and-Conquer (Merge Sort, Binary Search Tree) Dynamic Programming (Matrix-Chain multiplication, LCS-length, 01-Knapsack Problem). Greedy algorithms (Greedy Activity Selector, Fractional Knapsack Problem). Graph Algorithms: Representation of sets and graphs. Breadth-first search, depth-first search.

Learning Outcomes of Course

# Learning Outcomes
1 possess the mathematical knowledge and skills necessary to the analysis of algorithms: Reinforce mathematical fundamentals including techniques for solving summations and recurrences and the asymptotic growth rate of functions.
2 gain insight into algorithmic design and how it is affected by and/or affects algorithmic logic, structure, and performance: Apply proof techniques and mathematical concepts to demonstrate the correctness and assess the performance of standard algorithms.
3 demonstrate their ability to carry out a complete algorithmic design process (design, analysis, implementation, results): Address problems involving algorithmic design, analysis, and implementation.
4 gain an understanding of certain classes of algorithms, along with models for future algorithmic work: Introduce a number of standard algorithms, both classical and modern, as objects for algorithmic analysis.

Course Syllabus

# Subjects Teaching Methods and Technics
1 Definition and properties of Algorithms. Design, analysis, and representation of Algorithms. Lecture, discussion, presentation
2 Data abstraction. Pseudo code conventions. Models of computation. Lecture, discussion, presentation
3 Mathematical Foundations: Growth of functions, asymptotic notations. Lecture, discussion, presentation
4 Study of recursive algorithms and associated recurrence relations (substitution method, iteration method). Lecture, discussion, presentation
5 Study of recursive algorithms and associated recurrence relations (master method). Lecture, discussion, presentation
6 Study of recursive algorithms and associated recurrence relations (recursion trees). Lecture, discussion, presentation
7 Midterm
8 Brute-Force (Exhaustive Search), Divide-and-Conquer (Merge Sort, Binary Search Tree). Lecture, discussion, presentation
9 Dynamic Programming (Matrix-Chain Multiplication, LCS-length, 0-1 Knapsack Problem). Lecture, discussion, presentation
10 Greedy algorithms (Greedy Activity Selector) Lecture, discussion, presentation
11 Fractional Knapsack Problem. Lecture, discussion, presentation
12 Graph Algorithms: Representation of sets and graphs. Lecture, discussion, presentation
13 Breadth-first search, depth-first search. Lecture, discussion, presentation
14 Final
15
16 Final Exam

Course Syllabus

# Material / Resources Information About Resources Reference / Recommended Resources
1 Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, "Introduction to ALGORITHMS", MIT Press.
2 Anany Levitin "Introduction to Design and Analysis of Algorithms", Addvison Wesley, 2003

Method of Assessment

# Weight Work Type Work Title
1 40% Mid-Term Exam Mid-Term Exam
2 60% Final Exam Final Exam

Relationship between Learning Outcomes of Course and Program Outcomes

# Learning Outcomes Program Outcomes Method of Assessment
1 possess the mathematical knowledge and skills necessary to the analysis of algorithms: Reinforce mathematical fundamentals including techniques for solving summations and recurrences and the asymptotic growth rate of functions. 1͵2͵3͵4 1͵2
2 gain insight into algorithmic design and how it is affected by and/or affects algorithmic logic, structure, and performance: Apply proof techniques and mathematical concepts to demonstrate the correctness and assess the performance of standard algorithms. 1͵2͵3͵4 1͵2
3 demonstrate their ability to carry out a complete algorithmic design process (design, analysis, implementation, results): Address problems involving algorithmic design, analysis, and implementation. 1͵2͵3͵4 1͵2
4 gain an understanding of certain classes of algorithms, along with models for future algorithmic work: Introduce a number of standard algorithms, both classical and modern, as objects for algorithmic analysis. 1͵2͵3͵4 1͵2
PS. The numbers, which are shown in the column Method of Assessment, presents the methods shown in the previous table, titled as Method of Assessment.

Work Load Details

# Type of Work Quantity Time (Hour) Work Load
1 Course Duration 14 3 42
2 Course Duration Except Class (Preliminary Study, Enhancement) 14 2 28
3 Presentation and Seminar Preparation 0 0 0
4 Web Research, Library and Archival Work 0 0 0
5 Document/Information Listing 0 0 0
6 Workshop 0 0 0
7 Preparation for Midterm Exam 1 6 6
8 Midterm Exam 1 2 2
9 Quiz 0 0 0
10 Homework 4 1 4
11 Midterm Project 0 0 0
12 Midterm Exercise 0 0 0
13 Final Project 0 0 0
14 Final Exercise 0 0 0
15 Preparation for Final Exam 1 6 6
16 Final Exam 1 2 2
  90