This course is an introductory course to the design, implementation and analysis of computer algorithms. Topics covered include the growth of functions, the time complexity of algorithms, recurrence relations and their solutions, the design and analysis of various sorting algorithms (insertion, merge, quick, and heap sort), graph searching algorithms (breadth-first and depth-first search), and spanning trees. Programming projects.