A set of practice and demo code of Accelerated Computer Science Fundamentals Specialization on Coursera
https://www.coursera.org/specializations/cs-fundamentals
Accelerated Computer Science Fundamentals Specialization Data Structures and Algorithms in C++.
Learn fundamentals of computer science while implementing efficient data structures in C++.
- Week_1_Orientation_Write_a_cpp_program
- Introduction
- Local development environment, toolchain, and IDE installation
- Cloud development environment configuration
- C++ Standard Library
- C++ Classes
- Week_2_Understanding Cpp memory model
- Variable, pointer, and memory
- Stack
- Heap
- New, delete, and memory management
- Basic control flow
- Header file and source file
- Project: Hello world
- Week_3_Developing Cpp Classes
- Classes
- Constructor / Destructor
- Copy assignment operator
- Variable storage
- Introduction to un-initialized pointer, segmentation Fault, and un-defined behavoir
- Range-based loop
- Week_4_Engineering Cpp software solution
- Recursive with implementation of Tower of Hanoi
- Template type and template classes
- Inheritance
- Project: Image processing
- Week_1_Orientation_Linear data structures
- Introduction
- Array
- Linked-list
- Time and space complexity analysis of Array and Linked-list
- Operation of Array and Linked-list
- Queue
- Stack
- Project: Linked list and Merge sort
- Week_2_Introduction to Tree structures
- Tree terminology
- Tree Traversal
- Binary Tree
- Binary Search Tree
- Time and space complexity analysis of Tree search operation
- Week_3_Advanced Tree Structures
- Balanced Binary Search Tree
- AVL Tree adn its analysis
- B-Tree introduction
- B-Tree operation: insert and search
- Project: Generic Tree and Tree Traversal
- Week_4_Heap Structures
- Heap introduction
- Heap and priority-queue
- Heap variation: min-heap, max-heap
- Heap operation: insert, extract-min, build heap, heapify adjustment
- Time and space complexity analysis of Heap
- Week_1_Orientation_Hashing
- Hashing introduction
- Hashing function with examples
- Collision handling: separate chaining
- Collision handling: probing and double-hashing
- Time and space complexity analysis of Hashing
- Project: Unordered-map
- Week_2_Disjoint-sets
- Disjoint-sets introduction
- Disjoint-sets teminology
- Naive implementation
- Up-tree, a better implementation
- Smart union & Path-compression
- Time and space complexity analysis of Disjoint-sets
- Week_3_Graph
- Graph introduction
- Week_3_Graph terminology
- Graph representation: edge list
- Graph representation: adjacency matrix
- Graph representation: adjacency list
- Time and space complexity analysis of graph operation
- Project: Graph search
- Week_4_Graph algorithm
- Graph traversal algorithm
- Breadth First Search (i.e., BFS ) Traversal
- Time and space complexity analysis of BFS
- Depth First Search (i.e., DFS) Traversal
- Time and space complexity analysis of DFS
- Minimal spanning tree (i.e., MST ) algorithm
- Kruskal algorithm
- Prim algorithm
- Shortest path algorithm
- Dijkstra algorithm
- Dijkstra algorithm's edge case
- Time and space complexity of Dijkstra algortithm
- Landmark path problem