**MISSION 34**

# Algorithms

In this module, you'll learn what an algorithm is in the context of data structures and algorithms. An algorithm is a well-defined series of steps for performing a task. You may have seen machine learning algorithms within Dataquest. These are a special type of algorithm; there are many other kinds of algorithms.

As this module progresses, we'll show you a few examples of what an algorithm looks like, and introduce methods for evaluating their efficiency. While learning about algorithms and what they look like, you will learn to write efficient code by analyzing NBA data.

You'll learn several important concepts such as modularity, abstraction, time complexity, and more, as well as why each concept matters as you code different algorithms.

Learning about algorithms can be tough without any hands-on practice as you learn each concept. That's why you’ll get to apply what you’ve learned from within your browser as you work through each concept — there's no need to use your own machine to do the exercises. The Python environment inside of this course includes answer checking so you can ensure that you've fully mastered each concept before learning the next.

#### Objectives

#### Lesson Outline

1. What is an algorithm?

2. Implementing an Algorithm

3. The Importance of Modularity and Abstraction

4. Linear Search with Modular Code

5. What Makes an Algorithm Smart?

6. Constant Time Algorithms

7. Exercise: Recognizing Constant Time Algorithms

8. A Common Pitfall

9. Linear Time Algorithms

10. Some Other Algorithms

11. Notation for Time Complexity

12. Why Time Complexity Matters

13. Takeaways