1. Students will learn a fundamental set of data structures, algorithms, and algorithm design methodologies. 2. Students will develop an understanding of the theoretical runtime efficiency as it relates to the actual runtime efficiency. Specifically, students will understand the relation of O(log n) as it applies to relevant data structures and algorithms. 3. Students will form a context for learning and working with data structures and algorithms in a modern software engineering environment. 4. Students will increase their skills of developing and understanding programming solutions involving interfaces, inheritance, iterators, and recursion. 5. Students will be able to develop Induction proofs on their own that prove relevant properties about data structures. 6. Students will be introduced to the process of writing a technical report in the field of Computer Science.
Description Weight 1. Review: exceptions, iterators 1 2. Abstract Data Types (ADTs) and OO principles (reuse, encapsulation, abstraction) 5 3. running-time efficiency 5 4. Sequences: lists, stacks, queues -- ADT based implementations 2 5. trees, binary trees 3 6. search trees 4 7. graphs and graph algorithms
(topological sort, shortest-path, network flow, minimum spanning tree)3 8. hash tables 3 9. priority queues and heaps 3 10. sorting techniques
(heapsort, mergesort, quicksort, bucket sort, external sorting)2 10. text processing 2 11. algorithm design (greedy, divide and conquer, dynamic, backtrack) and design patterns 3 12. applied induction proofs 4
Weighting of topics based on the following scale:
4,5:Continuing thread in the course. The concepts are reinforced by the other topics in the class. 3:Significant 2:Less significant 1:Expendable if run out of time