The Self-Taught Computer Scientist: The Beginner's Guide to Data Structures & Algorithms

(CS-DS-ALGO.AE1)/ISBN:978-1-64459-429-2

This course includes
Lessons
TestPrep
Lab
AI Tutor (Add-on)

Enhance your programming skills with The Self-Taught Computer Scientist: The Beginner’s Guide to Data Structures & Algorithms course. Master computer science, data structures, and algorithms to solve complex problems and propel your career to new heights. Start a transformative learning journey with real-life examples that yield tangible outcomes. It contains interactive lessons, quizzes, and hands-on labs to build and iterate on your code like a software developer.

Lessons

19+ Lessons | 104+ Exercises | 100+ Quizzes | 154+ Flashcards | 154+ Glossary of terms

TestPrep

52+ Pre Assessment Questions | 52+ Post Assessment Questions |

Here's what you will learn

Download Course Outline

Lessons 1: Introduction

  • What You Will Learn
  • Who Is This Course For?
  • Self-Taught Success Stories
  • Getting Started
  • Sticking with It

Lessons 2: What Is an Algorithm

  • Analyzing Algorithms
  • Constant Time
  • Logarithmic Time
  • Linear Time
  • Log-Linear Time
  • Quadratic Time
  • Cubic Time
  • Exponential Time
  • Best-Case vs. Worst-Case Complexity
  • Space Complexity
  • Why Is This Important?
  • Challenge

Lessons 3: Recursion

  • When to Use Recursion
  • Challenge

Lessons 4: Search Algorithms

  • Linear Search
  • When to Use a Linear Search
  • Binary Search
  • When to Use a Binary Search
  • Searching for Characters
  • Challenge

Lessons 5: Sorting Algorithms

  • Bubble Sort
  • When to Use Bubble Sort
  • Insertion Sort
  • When to Use Insertion Sort
  • Merge Sort
  • When to Use Merge Sort
  • Sorting Algorithms in Python
  • Challenge

Lessons 6: String Algorithms

  • Anagram Detection
  • Palindrome Detection
  • Last Digit
  • Caesar Cipher
  • Challenge

Lessons 7: Math

  • Binary
  • Bitwise Operators
  • FizzBuzz
  • Greatest Common Factor
  • Euclid's Algorithm
  • Primes
  • Challenge

Lessons 8: Self-Taught Inspiration: Margaret Hamilton

Lessons 9: What Is a Data Structure

  • Data Structure and its Types
  • Challenge

Lessons 10: Arrays

  • Array Performance
  • Creating an Array
  • Moving Zeros
  • Combining Two Lists
  • Finding the Duplicates in a List
  • Finding the Intersection of Two Lists
  • Challenge

Lessons 11: Linked Lists

  • Linked List Performance
  • Create a Linked List
  • Search a Linked List
  • Removing a Node from a Linked List
  • Finding a Linked List Cycle
  • Challenges

Lessons 12: Stacks

  • When to Use Stacks
  • Creating a Stack
  • Using Stacks to Reverse Strings
  • Min Stack
  • Stacked Parentheses
  • Challenges

Lessons 13: Queues

  • When to Use Queues
  • Creating a Queue
  • Python's Built-In Queue Class
  • Create a Queue Using Two Stacks
  • Challenge

Lessons 14: Hash Tables

  • When to Use Hash Tables
  • Characters in a String
  • Two Sum
  • Challenge

Lessons 15: Binary Trees

  • When to Use Trees
  • Creating a Binary Tree
  • Breadth-First Tree Traversal
  • More Tree Traversals
  • Invert a Binary Tree
  • Challenges

Lessons 16: Binary Heaps

  • When to Use Heaps
  • Creating a Heap
  • Connecting Ropes with Minimal Cost
  • Challenge

Lessons 17: Graphs

  • When to Use Graphs
  • Creating a Graph
  • Dijkstra's Algorithm
  • Challenge

Lessons 18: Self-Taught Inspiration: Elon Musk

Lessons 19: Next Steps

  • What’s Next?
  • Climbing the Freelance Ladder
  • How to Get an Interview
  • How to Prepare for a Technical Interview
  • Additional Resources
  • Final Thoughts

Hands-on LAB Activities (Performance Labs)

What Is an Algorithm

  • Iterating Through a List

Recursion

  • Printing the Numbers Recursively
  • Calculating the Factorial of a Number Recursively

Search Algorithms

  • Performing a Linear Search
  • Performing a Binary Search

Sorting Algorithms

  • Using a Bubble Sort Algorithm
  • Using an Insertion Sort Algorithm

String Algorithms

  • Determining Anagrams
  • Determining a Palindrome

Math

  • Implementing FizzBuzz
  • Finding the Greatest Common Factor of Two Numbers
  • Determining a Prime Number

Arrays

  • Locating All the Zeros to the End of a List
  • Combining Two Lists

Linked Lists

  • Creating a Linked List
  • Finding a Linked List Cycle

Stacks

  • Tracking Stack's Biggest Number
  • Using Stacked Parentheses

Queues

  • Creating a Queue Using Two Stacks

Hash Tables

  • Removing All Duplicate Words
  • Counting All the Characters in a String

Binary Trees

  • Using a Breadth-First Search
  • Inverting a Binary Tree

Binary Heaps

  • Creating a Heap

Graphs

  • Implementing Dijkstra's Algorithm