
CS600 - Algorithms and Data Structures
Spring 2013
Instructor: Professor Stephan Olariu
Phone: 683-3915
Course Description:
CS600 is a graduate core course in
Computer Science. The main objective of this course is to present a
modern introduction to the design and analysis of computer algorithms and
data structures. In spirit, CS600 is a natural continuation of CS361 "Advanced Data Structures and Algorithms". The main thrust
is algorithm design and analysis from a more rigorous standpoint. Indeed, we will not be content with creating algorithmic
artifacts, we propose tostudy their performance attributed in some detail.
CS361 was concerned with the worst-case performance in terms of the amount of resources required by an algorithm to terminate.
While this is a perfectly reasonable approach, it
turns out that most worst-case scenarios occur with low probability (if at all). As a result,
worst-case analyzes are unduly pessimistic and even misleading. With this in mind, CS600 is
approaching the performance analysis issue from a probabilistic standpoint. Indeed, most of the time we will be interested
in the expected (rather than worst-case) performance of algorithms.
We shall also take the view that one crafts data structures in
support of algorithmic needs and not the other way around.
The students are expected to be familiar with
the data structures and algorithms studied in CS361 and with the
mathematical machinery covered in CS381 (Discrete Mathematics)
and STAT330 (Probability Theory and Statistics).
is interested almost exclusively in the average-case (expected) performance of algorithms.
One of the perennial concerns of the algorithm design and analysis is the model of computation -- expressed in terms
of the computation and communication primitives available -- that a particular algorithm assumes. CS600 proposes
to expose the student to a vast array of computational models ranging from
the Turing machine to various parallel and distributed models.
My long teaching experience shows that
those students who have a weak background in CS381 and STAT330 tend to do poorly in CS600.
The students taking CS600 are expected to be proficient in C++. Indeed, all planned
programming assignments require the mastery of C++. Java programs are also acceptable but C++ is preferred.
Formal lectures by Professor Olariu may be supplemented by guest-lectures by advanced PhD students as well as by
class presentations by the participants.
There will be five informal assignments, roughly one every three weeks. These assignments involve designing algorithms for various computational problems as well as proving mathematical statements about their performance. The students are encouraged to present their solutions to the class during problem sessions. Please note that no late assignments will be accepted.
Material: Topics to be covered include
Text: Professor Olariu will distribute in class chapters of his upcoming book. However, the students are encouraged to supplement their notes with material from other recent texts on algorithms.
Prerequisite: CS361 - Advanced Data Structures and Algorithms. Please note that CS600 is NOT open to students who have not had CS361 and to those for whom CS361 had been prescribed as a remedial course.
Grading Scheme:
Office Hours: Th 9:00am - 10:00pm
Back to Dr. Olariu's Home Page