Algorithms are at the center of almost any programming job. And particularly in the world of data engineering, using efficient algorithms is important enough that it's a common topic to be quizzed about in job interviews.

In this data engineering course, you'll learn more about how to assess and model the time complexity of algorithms — i.e., how fast they'll be. Then, you'll dig into some work modeling their space complexity — how much memory they'll require — and learn about how memory can often be traded for speed.

At the end of the course, you'll be asked to put together what you've learned in a guided project that tasks you with building indexes for a CSV using dictionaries.

By the end of the course, you'll know how to:

## Learn to analyze the time and space complexity of algorithms:

### Time Complexity of Algorithms

Learn to measure and model the execution time of an algorithm.

### Constant Time Complexity

Learn more about how computers manage memory and how it affects speed.

### Logarithmic Time Complexity

Learn about logarithms and logarithmic complexity.

### Sorting Algorithms

Learn how to implement your own sorting algorithm.

### Space Complexity

Learn how to evaluate the space complexity of an algorithm.

### Guided Project: Building Fast Queries on a CSV

Apply your new knowledge to build indexes for a CSV using dictionaries.