*Big-O Algorithms* is perfect for engineers who need a refresher on computer science basics, want to learn how to speed up their programs, or never went through a formal course at all. The study of algorithmic complexity is often overlooked in developer boot camps, but not at Qvault. It’s impossible to become a senior developer without being familiar with the concepts in this course, so get started!

Senior developers need to have an understanding of algorithmic complexity in order to be proficient in developing fast applications. Many new developers, especially those without formal training, never had the chance to learn these computer science basics.

This course begins with an overview of Big-O analysis, complexity classes, and the math required to complete the course. Next, we code some of the most common sorting algorithms right in the browser and determine their Big-O complexity. Finally we dive into the basics of complexity theory – polynomial vs nondeterministic polynomial time.

The majority of *Big-O Algorithms* consists of multi-choice style questions accompanied by explanatory excerpts, though there are many hands-on coding exercises as well. The coding projects in this course are all written in Go, a language becoming more and more important for backend systems engineers. If you are new to Go, take the Go Mastery course first.

- Intro to algorithms and definitions
- Math review – exponents and logarithms
- Big-O introduction
- Big-O classes and growth rates
- Factorials
- Reducing Big-O formulas

- Bubble sort
- Merge sort
- Quick sort
- Big-O analysis of sorting algorithms
- Benefits of sorting algorithms

- Polynomial-time
- Non-deterministic polynomial time
- Travelling Salesman Problem
- NP-Complete
- NP-Hard
- P = NP
- Factoring