Lesson
Weekend
### Section 1: Big O Notation and Binary Trees

### Section 2: Graph Theory

### Section 3: Bit Manipulation and Hashing

### Section 4: Algorithms

### Section 5: Additional Data Structures and Key Concepts

Over the next five weeks, we'll be covering key computer science concepts that are taught in computer science programs and elsewhere. In *Cracking the Coding Interview*, Gayle Laakmann McDowell includes a list of basic, must-have knowledge for coding interviews. Our computer science curriculum is modeled around covering these recommended concepts because they provide an excellent structure for learning computer science and improving your coding interview skills.

Up to this point, we've focused on our *programming* skills. Computer science, on the other hand, tends to be more theoretical. It is the study of computers and computing in general. Computer science incorporates a broad range of disciplines including mathematics and logic - but you do not need to be a mathematician to learn key computer science concepts. In fact, these key computer science concepts are essential for improving your programming skills - and they will give you a deeper understanding of what exactly it is we are doing when we are programming. Think of it as being a bit like a musician that plays only by ear learning music theory, which then would give that musician more insights on everything from composing music to improvisation.

Here's an overview of what we'll cover in this course:

- Big O Notation
- Trees
- Binary Trees
- Binary Search Trees

- Graphs
- Representing Graphs with Code
- Building Graphs
- Stacks and Queues
- Depth First Search Algorithms
- Breadth First Search Algorithms

- ASCII
- Bits, Bytes, and Binary Numbers
- Manipulating Bits
- Hash Tables
- Hash Algorithms

- Binary Search
- Insertion Sort
- Selection Sort
- Bubble Sort
- Merge Sort
- Quicksort

- Linked Lists
- Tries and Heaps
- Memory Basics
- Memoization

Lesson 2 of 11

Last updated more than 3 months ago.