|
An algorithm is a set of instructions that, when followed, solve a
specific problem. Programs are implementations of algorithms that are
executed by computers. A data structure is a way of storing data in a
computer so that it can be retrived efficiently when required.
Algorithms for problems such as sorting and graph reachability are at
the heart of many real-life computer applications. The
efficiency/correctness of these algorithms directly influence the
efficiency/corretness of the applications. Often a well-designed data
structure is critical for designing ultra-fast algorithms.
The 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
assignments, regular quizzes, a midterm, and a final examination.
The following topics will be covered:
|