Code 501: Master Data Structures & Algorithms

Code 501: Master Data Structures & Algorithms

Overview

Preparing for whiteboarding interviews that test your ability to understand and apply data structures and algorithms to a specific problem set? Need a more in-depth study of these core computer science topics? If you're new to the world of algorithms or just need a refresher, this course will train you with the most widely used CS concepts.

In this course, developers will dive into the world of data structures, Big O notation, computational thinking, whiteboarding, and much more.

Outcomes

At the end of this course students will:

  • Be able to correctly evaluate the efficiency of common modern algorithms.
  • Build their own data structures from scratch to solve code challenges, in the approved programming language of their choice.
  • Demonstrate the parallel whiteboarding skills of communication, coding, problem solving, and analysis to correctly solve challenges at the whiteboard.
  • Correctly identify what data structures to use for common code challenges.
  • Write common algorithms for data structures like arrays, linked lists, trees, and graphs.
  • 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 coures should have:

  • Solid knowledge of how to write code.
  • 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.

Mathematics

  • Probability
  • Combinatorics

Data Structures

  • Arrays
  • Linked Lists
  • Stacks
  • Queues
  • Skip Lists
  • Trees & BSTs
  • Heaps & Priority Queues
  • Graph

Algorithms

  • Search
  • Sort
  • Huffman encoding

Interviewing

  • Whiteboard Exercises
  • System Design Questions
  • Testing
  • Behavioral Questions
  • Resume Review
  • Mock Interview with Instructor

About the Instructor

Vishal Chowdhary works as a Principal Development Manager at Microsoft Research in the Machine Translation (MT) team. He has been at Microsoft for the past 11 years, interviewing hundreds of candidates—from college graduates to programmers with decades of experience. He has a Masters degree in Computer Science from SUNY Stony Brook where he was a TA for the database class. He has also been a TEALS volunteer and has mentored dozens of friends and colleagues to successfully prepare for technical interviews at top technology firms.

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 information 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: