Students will learn the basics needed to understand and implement algorithms, which is the fundamental thinking process and methodology for learning computer science. This is a fundamental requirement for the USA Computing Olympiad.  It builds the foundation for studying and excel in the AP computer science courses.  Standard measures of efficiency (for example time and space complexity) will be introduced, and popular algorithms for sorting and searching will be explored in greater detail. Algorithms will be presented in pseudo-code, and implementations in Python and other popular languages will be covered. More specialized algorithms, such as primality testing, string matching, shortest path, or RSA-encryption will be covered based on teacher specialization.

Students will learn more advanced methods in algorithms and see how these algorithms apply in computer science as well as in everyday life. Algorithmic thinking is a fundamental requirement for the USA Computing Olympiad. It builds the foundation for studying and excel in the AP computer science courses. Algorithms will be presented in pseudo-code, and implementations in Python or other popular languages will be covered. Topics will include algorithms on graphs, dynamic programming, greedy algorithms, and algorithms in number theory. Other topics may be covered based on teacher specialization. This course is a natural continuation from Introduction to Algorithms, but it is not necessary to have taken Introduction to Algorithms before taking this course.

Students will learn the basics needed to understand and implement algorithms, which is the fundamental thinking process and methodology for learning computer science. This is a fundamental requirement for the USA Computing Olympiad. It builds the foundation for studying and excel in the AP computer science courses. Standard measures of efficiency (for example time and space complexity) will be introduced, and popular algorithms for sorting and searching will be explored in greater detail. Algorithms will be presented in pseudo-code, and implementations in Python and other popular languages will be covered. More specialized algorithms, such as primality testing, string matching, shortest path, or RSA-encryption will be covered based on teacher specialization.