Impact of data structure design on algorithm design and performance. Topics covered include graph and tree algorithms, performance analysis, testing and classification of algorithms, and design techniques. Topics will be implemented in C++, Java, Ruby, Python or mathematical programming languages such as Mathematica or MATLAB.