An open API service indexing awesome lists of open source software.

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.

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.