We use cookies on this website to make it function correctly and to achieve the purposes illustrated in the cookie policy. By continuing to browse, you agree to the use of cookies. Cookie Policy

Algorithms + Data Structures

Write better code by identifying the correct kind of data structure and algorithm to use for a problem that you’re facing.

Course Overview

Part of the “secret language” of computer programmers, data structures, their associated algorithms, and the time/space complexity of each are often one of the filters you will face in job interviews. Fluently speak this secret language by not only learning the structures and algorithms. More importantly, learn when and how to apply these fundamentals in your day-to-day computer programming. Gain and apply an intuitive understanding of time and space complexity analysis so that you can talk big-O with the best of them.

video poster

How do these two subjects fit together?

When you want to accomplish some form of computation, you express it as an algorithm, a series of steps that generally does something. If that algorithm relies on data to succeed, then that data is normally structured in computer memory in a specific way, as a list, a tree, a graph, an array, a map, or some other structure. Data structures can exist without algorithms; however, without algorithms, maintaining data in a structure is just a waste of effort. This class provides an algorithms-first approach and presents supporting data structures to meet the needs of the algorithm.

How is this different from the widely available classes that already exist?

You will find that most classes are named “Data Structures and Algorithms”. The emphasis is on the data structure and, then, the algorithm. This class turns that around and puts algorithms as its primary concern. This problem-focused approach grants you the insight to analyze, evaluate, and create your own algorithms (and needed data structures) to solve problems that you may likely encounter in the real world, as well as in interviews. Break out of linked lists and binary trees to explore how to interact with multidimensional data, how to determine if you can easily solve a problem with a minimum spanning tree, and how to use probabilistic techniques to quickly determine optimal solutions.

Will I learn about XXX algorithm or YYY data structure in this class?

Maybe? The great thing about this class is that it will provide you with an intuitive understanding of the theory and applicability of many different algorithms. These algorithms are used in many modern problems being solved by companies today: distributed search, text processing, social cluster analysis, process control, and compiler optimization.

video poster

Course Design

Learning Objectives:

Generate hashes, heaps, lists, and trees, evaluate space and time complexity for various data structures, critique sort and search algorithms, and evaluate space and time complexity for various sort and search algorithms.

Major Learning Actions:

The Seekers is a project to determine the best way to deal with different volumes, velocities, and variability in data sources.


You have the ability to proficiently use a third-generation programming language.

Algorithms + Data Structures Mashup Philosophy

Your Instructor

Background Image

Curtis Schlak, VP, Professional Development Curriculum

Curtis Schlak’s software development career spans more than two decades in software, energy, finance, legal, and education. He has worked as an individual contributor and has led teams of nearly 200 people. He has worked or consulted at Barclays Capital, Bank of America Merrill Lynch, British Petroleum, CITGO Petroleum, Ernst & Young, and Microsoft. He has led software teams at startups like KickFire and DataCert. His consulting firm leads the training and adoption of Feature-Driven Development in the US. He has created and delivered consumer and enterprise training for hundreds of people through The Iron Yard, Hack Reactor, App Academy, and Galvanize. He has a BS in Mathematics, BA in English, and MS in Computer Science. He is currently working on his PhD in Computer Science.

Upcoming Courses:

January 11th - February 24th (no class Jan. 18th, Feb. 15th)

Algorithms + Data Structures

| Live Online



Our favorite applicant is someone who enjoys learning and participating in a dynamic learning community. We look for learners that are curious and motivated to further their craft. A learner who has grown tired of either unfocused or inefficient courses that have failed to take them to the next level.

Our application process is simple. Your application will help us learn more about you and should only take five minutes to complete. The application includes information about your educational background, programming experience, employment, and motivations for taking this course.

Our typical course is six weeks long and consists of two evening classes per week. Our evening classes are 90 minutes long. You can expect three to four hours per week outside of class for work on prepping for the next class and/or working on focused projects. 

Some of our courses require prerequisite skills or knowledge. If applicable, we ask about this in the application process.

Yes, you can. Our enrollment agreement will detail the participation and completion requirements. In general, we expect at least 50% attendance in the live classes and 100% completion of the course materials and projects. 

Yes. If your employer reimburses for education or professional development, we will make it easy for them to reimburse your participation in our courses. 

Universities typically only focus on computer science theory. We blend computer science theory with practical programming practices and thought leadership strategies to create more relevant courses. This format has more real-world applications that will help you advance your career.