This course is an introduction to and exploration of Data Structures and Algorithmic Analysis. Knowing how to write computer programs, the question is now how to distinguish good programs from bad programs. Furthermore, how do we design algorithms that can handle LARGE amounts of data, amounts of data that are intractable if handled naively? The key is designing the best algorithm and choosing the best data structure for the task. In this course, I explored basic data structures at my disposal and examined the runtimes of their operations through algorithm analysis.
• Algorithm Analysis
• Linked-Lists
• Stacks & Queues
• Trees (Binary, AVL, Red-Black, Splay, B-Trees)
• Maps
• Hash Tables and Functions
• Heaps
• Searching & Sorting (Optimal Sorting and Linear Sorting)
• Sets
• Graphs and Graph Algorithms
• Algorithm Design Techniques (Greedy, Divide & Conquer, Dynamic, etc.)