Introduction to Abstract Data Types and analysis of different algorithms
Review of elementary data types and structures in C. The Array data type and the importance of Random Access.
Searching an array: linear and Binary search. Sorting: Merge, Sort, and analysis
ADT Array - searching and sorting on arrays
Review of Pointers in C. The Linked list ADT.
Searching a linked list, inserting and deleting from a linked list. Application: representing a univariate polynomial, and adding two univariate polynomials
ADT Linked Lists, Stacks, Queues
List manipulation algorithms: reversal of a list, use of recursion to reverse/search. Doubly linked lists, circular linked lists
Stack and Queue ADT, comparison of implementation using arrays and linked lists
Binary Trees
Tree ADT representation, traversal, and application of binary trees in Huffman coding.
Introduction to expression trees: Recursive traversal depth, height, and number of nodes. Post/pre/infix notation.
Dictionary
Binary search trees search, insertion and deletion
Balanced binary search trees
ADT Priority queues
Heap ADT implementation and Heapsort, in-place sorting.
Heaps for maintaining interval trees.
Graphs
Representations or relations using matrices. The Graph ADT and applications.
Transitive closure, Flyod Warshall's algorithm and application connectivity and spanning trees.
Advanced topics options for the teacher
Adj. List representation of a Graph. Breadth First. Search traversal and identification of shortest paths.
Depth First Search recursive specification and application to finding articulation points