https://github.com/mxagar/accelerated_computer_science_coursera
This repository contains my notes on the Specialization "Accelerated Computer Science Fundamentals" from Coursera / University of Illinois.
https://github.com/mxagar/accelerated_computer_science_coursera
algorithms data-structures
Last synced: about 1 year ago
JSON representation
This repository contains my notes on the Specialization "Accelerated Computer Science Fundamentals" from Coursera / University of Illinois.
- Host: GitHub
- URL: https://github.com/mxagar/accelerated_computer_science_coursera
- Owner: mxagar
- Created: 2022-01-11T10:24:27.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-02T07:35:42.000Z (about 3 years ago)
- Last Synced: 2025-02-15T12:50:38.186Z (about 1 year ago)
- Topics: algorithms, data-structures
- Language: C++
- Homepage:
- Size: 54.7 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Accelerated Computer Science Fundamentals - Coursera
This repository contains the notes I made when following this Specialization offered in Coursera by University of Illinois at Urbana-Champaign (Prof. Wade Fagen-Ulmschneider):
[Accelerated Computer Science Fundamentals](https://www.coursera.org/specializations/cs-fundamentals)
I have forked the original repository to my Github account; additionally, I use the material from the course and the original repository on this repository.
- Original repository: [wadefagen/coursera](https://github.com/wadefagen/coursera).
- My repository, forked from the original: [mxagar/coursera-cs400](https://github.com/mxagar/coursera-cs400).
- Repository of the current notes: [mxagar/accelerated_computer_science_coursera](https://github.com/mxagar/accelerated_computer_science_coursera).
This Coursera Specialization is divided into 3 courses, each one contained in a specific folder:
1. [Object Oriented Data Structures in C++](https://www.coursera.org/learn/cs-fundamentals-1?specialization=cs-fundamentals): [`01_OOP`](01_OOP)
1. Week 1: Introduction to Writing C++ Programs
- 1.1 Introduction
- 1.2 C++ Classes
- 1.3 C++ Standard Library: STD / STL
2. Week 2: C++ Memory Model
- 2.1 Stack Memory and Pointers
- 2.2 Heap Memory
- 2.3 Heap Memory Puzzels
- 2.4 Additional Notes
3. Week 3: C++ Classes
- 3.1 Copy Constructors
- 3.2 Copy Assignment Operator `=`
- 3.3 Summary of Constructor and Copying Functions
- 3.4 Variable Storage: Creating, Passing and Returning by Value / Reference / Pointer
- 3.5 Class Destructor
- 3.6 Summary of Types of Constructors & Destructors
- 3.7 Errors due to Missuse of Pointers
- 3.8 Modern Range-based `for`-Loops
- 3.9 Unsigned Integers
4. Week 4: C++ Software Solutions: Templates, Class Inheritance
- 4.1 Tower of Hanoi: Game Explanation
- 4.2 Tower of Hanoi: Solution 1
- 4.3 Tower of Hanoi: Solution 2
- 4.4 Templates
- 4.5 Inheritance
- 4.6 Week 4 Assignment
5. General Notes on Classes (Excurs)
- Object-Oriented Programming in C++
- Polymorphism
- Additional Glossary
2. [Ordered Data Structures in C++](https://www.coursera.org/learn/cs-fundamentals-2?specialization=cs-fundamentals): [`02_Ordered_DS`](02_Ordered_DS)
1. Week 1: Linear Structures
- 1.1 Arrays
- 1.2 Lists = Linked Memory
- 1.3 Run Time Analysis: Access, Insert
- 1.4 Array and List Operations: Find, Insert After
- 1.5 Queue (Data Structure)
- 1.6 Stack (Data Structure)
- 1.7 Week 1 Assignment: Linked Lists and Merge Sort
2. Week 2: Binary (Search) Trees
- 2.1 Tree Terminology
- 2.2 Binary Trees
- 2.3 Tree Traversals
- 2.4 Binary Search Trees (BST)
- 2.5 BST Analysis
3. Week 3: AVL Trees and B-Trees
- 3.1 AVL Trees
- 3.1.1 AVL Trees: Self-Balancing BSTs
- 3.1.2 AVL Analysis: `avl::insert()` and `avl::remove()`
- 3.2 B-Trees
- 3.2.1 B-Tree Introduction
- 3.2.2 B-Tree Insert
- 3.2.3 B-Tree Properties
- 3.2.4 B-Tree Remove/Delete: Not considered in this course, because it is considerably more complex
- 3.2.5 B-Tree Search
- 3.3 Week 3 Challenge
- 3.4 Week 3 Assignment
4. Week 4: Heaps
- 4.1 Motivation: Priority Queues & Heap Definition
- 4.2 Heap Insert
- 4.3 Heap Remove (Min)
- 4.4 Heaps: `buildHeap()`
- 4.5 Heaps: Runtime Analysis, Heap Sort
3. [Unordered Data Structures in C++](https://www.coursera.org/learn/cs-fundamentals-3?specialization=cs-fundamentals): [`03_Unordered_DS`](03_Unordered_DS)
1. Week 1: Hashing
- 1.1 Introduction
- 1.2 Hash Function
- Examples of Hash Functions
- Properties
- 1.3 Collision Handling
- 1.3.1 Separate Chaining
- 1.3.2 Linear Probing and Double Hashing
- 1.3.3 Load Factor and Re-Hashing
- 1.4 Hashing Analysis
- 1.5 Hash Tables in C++
- 1.6 Week 1 Challenge: Linear Probing Inserting in a Hash Table
- 1.7 Week 1 Assignment: `std::unordered_map`
2. Week 2: Disjoint Sets
- 2.1 Introduction to Disjoint Sets
- 2.2 Disjoint Sets: Implementations
- Version 1: Naive
- Version 2: UpTrees
- Version 3: UpTrees with Smart Union and Path Compression
- 2.3 Week 2 Challenge: Path Compression in an UpTree
3. Week 3: Graph Data Structures
- 3.1 Graphs: Vocabulary & Notation
- 3.2 Graph ADT (Abstract Data Structure)
- 3.3 Graphs: First Implementation -- Edge-List Implementation
- 3.4 Graphs: Second Implementation -- Adjacency Matrix Implementation
- 3.5 Graphs: Third Implementation -- Adjacency List Implementation
- 3.6 Graphs: Implementation Comparison
- 3.7 Week 3 Challenge: Union of Graphs Represented as Disjoint Sets
- 3.8 Week 3 Assignment: Breadth-First-Search in a Graph
4. Week 4: Graph Algorithms
- 4.1 Graph Traversal
- 4.1.1 Breadth-First Search Traversal (BFS)
- 4.1.2 Depth-First Search Traversal (DFS)
- 4.2 Minimum Spanning Trees (MST)
- 4.2.1 Kruskal's Algorithm for Building a MST
- 4.2.2 Prim's Algorithm for Building a MST
- 4.3 Shortest Path Algorithms
- 4.3.1 Dijkstra's Single Source Shortest Path Algorithm
- 4.3.2 The Landmark Path Problem
- 4.4 Week 4 Challenge: Breadth-First Search in a Graph with Distance Computation Using Disjoint Sets
Mikel Sagardia, 2021.
No guarantees.