The aim of this course is to provide students with knowledge to introduce well-known algorithmic design techniques and well-known algorithms, to analyze sequential and recursive algorithms, to utilize well-known algorithms for similar problems, and to introduce theory of NP.
Concepts of designing algorithms and complexity analysis of algorithms, solving recurrence equations and formal proofs, an intuitive and formal introduction to the concept of order and growth, brute force approach, divide and conquer approach, dynamic programming, greedy approach, graph algorithms, theory of NP.
1: Lecture, 2: Question-Answer, 3: Lab, 4: Case-study
Course Evaluation Methods:
A: Testing, B: Experiment, C: Homework, D: Project