3 Credit hours (3 h lectures). The course offers advanced concepts in: Strategies of algorithms synthesis and analysis. Design methodologies of classical algorithm categories such as: divide-and-conquer, greedy method, dynamic programming, search and traversal, backtracking, and branch-and-bound. Computational complexity and important theoretical results from lower-and upper-bound studies, Evolutionary algorithms, NP-hard, and NP-complete problems. The research component is a core part of this course.