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