We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.

Welcome to Data Structures and Algorithms

The terms "data structures" and "algorithms" (DSA) were designed to scare young CS students into eating their vegetables. After this course, you'll come to see there is nothing to fear.

Goals of This Course

  1. Learn to think algorithmically. Break problems down into easier-to-solve parts.
  2. Learn to think about how to organize data for more efficient access. Break problems down into data models that make sense.
  3. Learn and practice performance optimization. Make your code run faster and more efficiently, even with more data.

What Is a Data Structure?

Data structures are just organizational tools that allow for more advanced algorithms. You're already familiar with some of the simplest data structures:

  • Lists: Ordered collections of data
  • Dictionaries: Key -> value mappings
  • Sets: Unordered collections of unique data

In this course we'll be exploring when you should use each of these, but we'll also cover more advanced structures like stacks, queues, and trees.

What Is an Algorithm?

An "algorithm" is just a set of instructions that can be carried out to solve a problem. People use algorithms all the time without even realizing it. Practically every function you write in code is an algorithm (well, kinda), even if it's a simple one.

We are going to start by focusing on algorithms, then move onto data structures. While it may sound complicated, you'll be introduced to these concepts step by step.

A Word of Warning

Don't worry about memorizing this stuff. In particular, don't worry about memorizing the algorithms and data structures themselves. My philosophy is that it's mostly a waste of time to memorize anything that's a Google search away.

Instead, focus on understanding how DSA works at the moment. You should understand what your code is doing and why - but that doesn't mean you need to memorize the code itself.

Good luck.