An algorithm is a set of instructions that, when followed, solve a
specific problem. Programs are implementations of algorithms that
are executed by computers. The computer science goals of this
course are to study classic data structures and algorithms that solve
common problems and to learn standard approaches to solving new
problems. A rigorous approach to the analysis and comparison of
algorithms will be followed that includes asymptotic notation and
proofs of correctness. Discrete mathematics, which forms the
foundation for rigorous analysis, will be covered as needed. The
course will involve substantial programming and written assignments.
A broader set of objectives for this course is to teach critical
thinking, how to learn, and how to communicate technical concepts.
These objectives will be met through lectures, challenging team
assignments, regular quizzes, and a final examination.
The following topics will be covered: