CS302 Data Structures Fall 2012
Course Objectives Introduce you to fundamental and advanced data structures. Discuss different implementations and analyze algorithm efficiency in terms of time and memory. Expose you to the field of image processing where data structures could be used to efficiently solve many practical problems.
Programming Language/Environment We will be using C++ Either Windows or Unix/Linux
Course Outline (tentative) Analysis of Algorithms Predict how running time increases as the size of the problem increases. Should be independent of machine, programming style. Best/Average/Worst
Course Outline (tentative) Stacks array-based TOP OF THE STACK linked-list-based
Course Outline (tentative) array-based Queues linked-list-based
Course Outline (tentative) Unsorted Lists array-based Sorted Lists Binary search: very efficient search when using arrays!
Course Outline (tentative) Unsorted Lists linked-list-based Sorted Lists
Course Outline (tentative) Recursion
Course Outline (tentative) Binary Search Trees Very efficient for searching! Heaps Very efficient for implementing priority queues 5
Course Outline (tentative) Graphs (i.e., array-based an linked-list-based) Searching (i.e., DFS and BFS) Shortest Paths (i.e., Dijkstra’s and Bellman-Ford algorithms)
Course Outline (tentative) Sorting Selection Sort, Bubble Sort, Insertion Sort (slow but easy to understand) Heapsort, Mergesort, Quicksort (fast but more complicated) Linear Time Sorts (under assumptions) 36 24 10 6 12
Questions?