This course will teach us about important data structures and algorithm design techniques to efficiently solve different computing problems. The course will cover a variety of different algorithms including: algorithm efficiency, hash, heap, graph, tree, sorting and searching, brute force, divide-and-conquer, decrease-and-conquer, transform-and-conquer, dynamic programming, and greedy programming. This course is important for us to take because algorithms are the heart of computer science and programming. Most “white-board” interview questions are centered around algorithms. This course teaches some of the most important skills that employers are looking for, because if you understand algorithms and how to write them efficiently, you can learn whatever coding language and excel at it.