This course presents and in-depth look at data structures and algorithms. Students taking this class already have some exposure and familiarity with both data structures and algorithms. In this class, we look more closely at both with particular attention to their formal properties. As a consequence of taking this course, students should be well versed in the design and analysis of algorithms that they will encounter in the future. The prerequisites for the course include CS030 and MA/CS015, Discrete Mathematics. If for some reason you are concurrently taking Discrete Mathematics, you should refer early and often to the Appendices in Part VIII of the text.