Code 502: Master Data Structures & Algorithms

Overview

Let’s dive deep into the world of Computer Science!

Prepare for advanced whiteboarding interviews that test your ability to understand and apply data structures and algorithms to a specific problem set.

If you already have basic familiarity with Data Structures and Algorithms and are looking for the next level, this course will train you with the advanced CS concepts found in senior-level software developer interviews and in coding-at-scale in larger tech companies like Google, Amazon, and Facebook.

Outcomes

At the end of this course you will:

  • Be able to correctly evaluate, compute, and describe the upper and lower bounds of efficiency of complex algorithms (Big O, Big Theta)
  • Identify, build, and execute the most suitable Data Structure to solve code challenges, in the approved programming language of your choice.
  • Level up your parallel whiteboarding skills of communication, coding, problem-solving, and analysis to correctly solve interesting challenges at the whiteboard.
  • Master the algorithms you’ll need for challenges like from-scratch auto-complete and solution-optimization challenges.
  • Demonstrate the command of computer science vocabulary to be able to speak like a professional software developer.
  • Get a personalized mock interview, followed by coaching and guidance on where to focus further study time for optimal interview success.

Prerequisites

So that everyone is starting at relatively the same point, students enrolling in this course should have:

  • Solid knowledge of how to write code.
  • Familiarity with core data structures: Arrays, Linked Lists, Stacks, Queues, Trees, and Hash Tables.
  • Proficiency in at least one of the following languages:
    • Java
    • C, C++, or C#
    • Python
    • Javascript
    • Ruby

Topics

Each lesson will include coding exercises and a whiteboard challenge.

Data Structures

  • Skip Lists
  • Tries
  • Heaps
  • Graphs
  • Systems Design

Algorithms and Techniques

  • Huffman Codes
  • Understanding P vs NP problems
  • Dynamic Programming and Memoization
  • Knapsack Problems
  • Recursion
  • Analysis of performance upper and lower bounds

Interviewing

  • Whiteboard Exercises
  • Testing
  • Resume Review
  • Mock Interview with Instructor

Learn with Stacked Modules

Concepts in each of our courses are taught using stacked modules, where a new concept is introduced in each class session, building upon what came before it. This is a challenging style that requires persistence, practice, and collaboration, but allows more concepts to be introduced over the length of the course. This method helps students learn and retain more in a short period of time. Learn more about stacked modules »

Computer Requirements

Students are required to bring their own laptop with plenty of free space on the hard drive. Most students use Macs, simply because they are easy to work with. Others install Linux on their laptops. By the first day of class, students will need:

  • macOS, Linux, or Windows:
    • Fully updated operating system
    • Working dev environment in the approved language of your choice
  • The latest version of Google Chrome
  • A text editor, such as Visual Studio Code
  • A GitHub account

If you would like to set up your Windows machine to dual boot to Linux, check out these guides: