View programs
The course introduces students to the theory and practice of designing and analyzing algorithms for solving typical real-world problems and the data structures for processing and manipulating data in computer programs. The course covers sorting, searching, divide and conquer, greedy, graph-based, and other types of algorithms as well the methods for evaluating their complexity. Students will learn many types of data structures used in today's software systems (including lists, trees, queues, stacks, etc.) and algorithms for their efficient manipulation. Upon completing this course students will be able to determine the best data structures to use for solving particular problems.