Course Summary
This course covers the fundamental concepts of computer science including algorithms, data structures, and complexity analysis. Students will learn how to apply these concepts to solve real-world problems.Key Learning Points
- Gain a strong foundation in computer science
- Learn to apply key concepts to solve real-world problems
- Develop critical thinking and problem-solving skills
Related Topics for further study
Learning Outcomes
- Develop a strong foundation in computer science concepts
- Learn to apply these concepts to solve real-world problems
- Improve critical thinking and problem-solving skills
Prerequisites or good to have knowledge before taking this course
- Basic knowledge of programming concepts
- Familiarity with a programming language such as Python or Java
Course Difficulty Level
IntermediateCourse Format
- Online
- Self-paced
Similar Courses
- Algorithms, Part I
- Python Data Structures
- Data Structures and Algorithms Specialization
Related Education Paths
Related Books
Description
The Unordered Data Structures course covers the data structures and algorithms needed to implement hash tables, disjoint sets and graphs. These fundamental data structures are useful for unordered data. For example, a hash table provides immediate access to data indexed by an arbitrary key value, that could be a number (such as a memory address for cached memory), a URL (such as for a web cache) or a dictionary. Graphs are used to represent relationships between items, and this course covers several different data structures for representing graphs and several different algorithms for traversing graphs, including finding the shortest route from one node to another node. These graph algorithms will also depend on another concept called disjoint sets, so this course will also cover its data structure and associated algorithms.
Outline
- Orientation; Hashing
- Lesson 1.1.1 Hashing Introduction
- Lesson 1.1.2 Hashing - Hash Function
- Lesson 1.1.3 Hashing - Hash Function Examples
- Lesson 1.1.4 Collision Handling I: Separate Chaining
- Lesson 1.1.5 Collision Handling II: Probing and Double Hashing
- Lesson 1.1.6 Hashing Analysis
- Lesson 1.1.7 Hash Tables in C++
- Syllabus
- Additional References for C++
- Week 1 Overview
- Important Tips and Notes for All Challenge Problems
- Guidelines for Asking for Help With Code
- Orientation Quiz
- Week 1 Quiz
- Week 1 Challenge Problem
- Disjoint Sets
- 2.1.1 Disjoint Sets: Introduction
- 2.1.2 Disjoint Sets: Naive Implementation
- 2.1.3 Disjoint Sets: UpTrees - A Better Implementation
- 2.1.4 UpTrees: Simple Running Time
- 2.1.5A UpTrees: Smart Union & Path Compression I
- 2.1.5B UpTrees: Smart Union & Path Compression II
- Week 2 Overview
- Terminology Note: "Disjoint Sets" and "Union-Find"
- Week 2 Quiz
- Week 2 Challenge Problem
- Graph Data Structures
- 3.1.1 Graphs: Introduction
- 3.1.2 Graphs: Vocabulary
- 3.1.3 Graphs: Edge List Implementation
- 3.1.4 Graphs: Adjacency Matrix Implementation
- 3.1.5 Graphs: Adjacency List Implementation
- Week 3 Overview
- Week 3 Quiz
- Week 3 Challenge Problem
- Graph Algorithms
- 4.1.1 Graphs: BFS Traversal
- 4.1.2 Graphs: BFS Analysis
- 4.1.3 Graphs: DFS Traversal
- 4.2.1 Minimum Spanning Trees (MST) Introduction
- 4.2.2 MST: Kruskal's Algorithm I
- 4.2.3 MST: Kruskal's Algorithm II
- 4.2.4 MST: Prim's Algorithm
- 4.3.1 Graphs: Dijkstra's Algorithm
- 4.3.2 Graphs: Dijkstra's Edge Cases
- 4.3.3 Graphs: Dijkstra's Running Time
- 4.3.4 Graphs: Landmark Path Problem
- Week 4 Overview
- Week 4 Quiz
- Week 4 Challenge Problem
Summary of User Reviews
Learn computer science fundamentals with this course. Students highly recommend it for its comprehensive coverage and practical exercises. One key aspect that many users thought was good is the clear explanations of complex concepts.Pros from User Reviews
- Comprehensive coverage of computer science fundamentals
- Practical exercises reinforce learning
- Clear explanations of complex concepts
- Great for beginners
- Engaging and interactive course material
Cons from User Reviews
- Limited programming assignments
- Some users found the course too basic
- Lack of interaction with instructors
- Slow pace in some sections
- Not enough practice problems