This course covers the organization of data and the algorithms that act upon them. The topics of stacks, queues, trees and sets are introduced. Fundamentals of algorithm performance are also introduced, with an emphasis placed on time complexity analysis. Applications to data structure searching and sorting, memory allocation and file management are included. Laboratory activities include the application of data structures from standard libraries. (prereq: CS-1020) (2-2-3)

Outcomes

On successful completion of this course, the student will:

- understand and apply complex data structures and algorithms.
- use appropriate algorithms (and associated data structures) to solve complex problems.
- have a thorough understanding of commonly used library data structures.
- be able to analyze the time complexity of algorithms, both sequential and recursive.
- understand the use of recursion in problem solving.
- be able to use data structures in software design and implementation.
- be able to apply standard library data structures in software design.

The above course description and goals were taken from the official course description.

General Course Policies

Please review the general course policies webpage.

Textbook

*Data Structures and the Java Collections Framework* 2^{nd}
Ed., by William Collins, McGraw-Hill, 2005. ISBN: 0-07-302265-9

Quizzes

Quizzes will be given nearly every week at the beginning of lab. The lowest quiz score will be dropped. No make-up quizzes will be given.

Laboratory

Unless stated otherwise, all laboratory assignments will be completed in teams of two. One lab report should be submitted for each team. Lab assignments are worth 50 points per week of the assignment.

My Schedule

Grading

Quizzes: | 15% |

Lab projects: | 40% |

Midterm exam: | 20% |

Final exam: | 25% |

Total: | 100% |