March 24, 2020

# Learn to Optimize Algorithms in Our New Algorithm Complexity Course

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.

That's why we've just launched a new course!

Algorithm Complexity is the latest course in our Data Engineer career path. It adds five all-new lessons and a completely new guided project aimed at helping you master the assessment and implementation of efficient algorithms to fit your use case.

This course requires a Dataquest Premium subscription (which is currently available for 50% off, although that offer ends soon).

## Why Should I Learn About Algorithms?

The short answer is right there in the opening paragraph: because there's a good chance you'll be quizzed on this in job applications!

The real answer, though, is that while Python has plenty of built-in functions, they're not always going to be ideal for your use case.

Consider a sorting algorithm, for example: while Python has some built-in solutions, you may need to sort based on different parameters. You may also need to optimize performance based on the resources you have available, balancing the trade-off between faster processing times and higher storage requirements.

Algorithm optimization is important across a wide-variety of programming-related disciplines, but it's particularly important in data engineering, where you're often dealing with huge amounts of data and potential time and storage constraints. This course will help you on the road to building efficient, scalable processing for your data.

## What's in This Course?

This course is focused primarily on the two major aspects of algorithm complexity:

1. Time complexity (i.e., speed)
2. Space complexity (i.e., memory)

The first three interactive lessons of the course are focused on time complexity. Starting with basics like measuring how much time it takes an algorithm to execute, you'll quickly move into more advanced topics like modeling execution times, identifying hidden function calls, and logarithmic time complexity.

The next two lessons are focused on space complexity, and optimizing your algorithm based on the memory limitations you may have. You'll learn how to evaluate an algorithm's memory usage, as well as learn about and implement your own custom sorting algorithm.

As with all Dataquest courses, you'll work through these lessons in our interactive coding platform, writing and running real code from your browser.

The course concludes with a guided project that tasks you with putting all of your new knowledge together to implement an efficient algorithm for building indexes to query CSV files.