Data structures play a central role in computer science and are the cornerstones of efficient algorithms. This specialization explores the principles and methods in the design and implementation of various data structures. You will learn the essential skills for algorithm design and performance analysis. Topics covered by this specialization range from fundamental data structures to recent research results.
By learning this course, you will get a comprehensive grasp of vector and list and the ability to use them in solving real problems. By the end of this course, you will be able to evaluate data structures and algorithms in terms of asymptotic complexity, analyze storage/time complexity of iterative/recursive algorithms, implement
vector and list, understand/implement basic sorting algorithms such as Bubblesort, Insertionsort, and Selectionsort, understand/implement search algorithms such as Binary Search, Fibonacci Search, and Interpolation Search, use vector and list in problem-solving.
By learning this course, you will get a comprehensive grasp of stack, queue, binary tree, graph and BST structures and algorithms, as well as their applications. By the end of this course, you will be able to understand and implement stack, queue and binary tree, use binary trees to solve problems such Huffman encoding, understand and implement the graph structure as well as related algorithms such BFS, DFS and PFS, understand and implement AVL tree.
By learning this course, you will get a comprehensive grasp of hashing and typical balanced binary search trees, as well as their applications. By the end of this course, you will be able to understand the principle of Hashing, design and implement Hashtables for real problems, understand and implement typical balanced binary search trees such as Splay tree, Red-Black tree as well as B-tree, use BBST to solve various problems such as range query.
By learning this course, you will get a comprehensive grasp of Priority Queues and string match techniques, as well as their applications. By the end of this course, you will be able to understand/implement Bucketsort, Counting-sort, and Radixsort, understand the principle/implementation/application of different Priority Queues such as complete binary heap and leftist heap, understand and implement Heapsort, understand and implement typical string matching algorithms such as KMP, BM, and Karp-Rabin, implement and analyze advanced selection/sorting algorithms such as Quicksort, QuickSelect, LinearSelect, and Shellsort.