CS210{C,S,T,W}. Algorithm Design and Analysis

Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, algorithmic strategies, and an introduction to automata theory and its application to language translation.

Prerequisites: introduction to computer science (any implementation of CS103 or CS112), discrete structures (CS106 or CS115)

Syllabus:

Units covered:
DS3 Proof techniques   3 core hours (of 12)
DS5 Graphs and trees   4 core hours
PF2 Algorithms and problem-solving   3 core hours (of 6)
PF3 Fundamental data structures   3 core hours (of 14)
PL3 Introduction to language translation   2 core hours
AL1 Basic algorithmic analysis   2 core hours (of 4)
AL2 Algorithmic strategies   6 core hours
AL3 Fundamental computing algorithms   6 core hours (of 12)
AL5 Basic computability   6 core hours
AL6 The complexity classes P and NP   2 hours
AL7 Automata theory   2 hours
  Elective topics   1 hour

Notes:
The topic of algorithmic analysis is central to much of computer science. The thrust of this course is to explore and examine a range of algorithms that can be used to solve practical problems. Each algorithm possesses strengths and weaknesses. Moreover, the performance or any particular algorithm typically varies according to the size and nature of the input data. Students need a thorough understanding of the tools of analysis in order to select the right algorithm for the job.

Students are most receptive to the material presented in this course if they understand the connections between theory and practice. To this end, instructors should try to find ways to reinforce the theoretical topics through practical activity. It is also important for instructors to provide compelling demonstrations of the enormous differences in running time that can occur when algorithms have different complexity characteristics. The importance of complexity measures must be made real.

Algorithmic animation can be a powerful tool toward getting students to understand both the algorithms themselves and the associated complexity measures. Tools for creating graphical animations of classical algorithms are widely available on the web. These tools provide visible evidence of the complexity measures and thus reinforce the theoretical results.

It is also possible to take a more formal approach to this topic that focuses on formal specification of algorithms and proofs of correctness, possibly supported by appropriate specification and verification tools. A more informal approach, however, is likely to appeal to a wider spectrum of students.

Students who complete this course should be able to perform the following tasks:

Online resources for CS210


 
CC2001 Report
December 15, 2001