Available courses

This course focuses on the:

  • fundamentals of computer algorithms, 
  • emphasizing methods useful in practice. 
  • We look into the algorithm analysis as a way to understand behavior of computer programs as a function of its input size. 
  • Using the big-O notation, we classify algorithms by their efficiency. 
  • We look into basic algorithm strategies and approaches to problem solving. 
  • Some of these approaches include the divide and conquer method, dynamic programming, and greedy programming paradigms. 
  • Sorting and searching algorithms are discussed in detail as they form part of a solution to a large number of problems solved using computers. 
  • We also provide an introduction to the graph theory and graph algorithms as they are also used in many computer-based applications today. 
  • We conclude the course with a look into a special class of problems called the NP-complete problems.