Algorithms & Data Structures

Free Version

Upgrade subject to access all content

Theme Icon

Mathematical Foundations

The use of rigorous mathematics distinguishes the study of algorithms and data structures from that of programming in general. This theme explores mathematical topics typically used in computer science. Apply knowledge of logic and proofs to ensure guarantees of efficiency and accuracy in code. Design algorithms involving recursive expressions in their analysis and utilize set and graph theories to formulate an algorithm and its goals. Finally, apply results of number theory, probability and statistics, and linear algebra to solve certain algorithmic challenges.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Basic LogicFree

0 of 6
0%
Get Started

Propositional LogicFree

0 of 1
0%
Get Started

Logical ConnectivesFree

0 of 6
0%
Get Started

Truth TablesFree

0 of 5
0%
Get Started

Inference RulesFree

0 of 3
0%
Get Started

AbstractFree

0 of 5
0%
Get Started

SetsFree

0 of 4
0%
Get Started

RelationsFree

0 of 4
0%
Get Started

GraphsFree

0 of 2
0%
Get Started

StatisticsFree

0 of 6
0%
Get Started

CountingFree

0 of 1
0%
Get Started

Geometric DistributionsFree

0 of 5
0%
Get Started

MatriciesFree

0 of 3
0%
Get Started

Matrix OperationsFree

0 of 3
0%
Get Started

VectorsFree

0 of 7
0%
Get Started

Vector PropertiesFree

0 of 3
0%
Get Started

Vector OperationsFree

0 of 7
0%
Get Started

Proof TechniquesFree

0 of 7
0%
Get Started

InductionFree

0 of 5
0%
Get Started

Recursive definitionsFree

0 of 2
0%
Get Started
Theme Icon

Introduction to Algorithms

The use of rigorous mathematics distinguishes the study of algorithms and data structures from that of programming in general. This theme explores mathematical topics typically used in computer science. Apply knowledge of logic and proofs to ensure guarantees of efficiency and accuracy in code. Design algorithms involving recursive expressions in their analysis and utilize set and graph theories to formulate an algorithm and its goals. Finally, apply results of number theory, probability and statistics, and linear algebra to solve certain algorithmic challenges.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Programming Concepts

0 of 39
0%
Get Started

Primitive Data Types

0 of 16
0%
Get Started

Loops

0 of 11
0%
Get Started

Conditionals

0 of 10
0%
Get Started

Arrays

0 of 11
0%
Get Started

Static Methods

0 of 3
0%
Get Started

Recursion

0 of 4
0%
Get Started

API's

0 of 10
0%
Get Started

Strings

0 of 16
0%
Get Started

Binary Search

0 of 2
0%
Get Started

Binary Logic

0 of 4
0%
Get Started

Data Representations

0 of 7
0%
Get Started

Data Abstraction

0 of 31
0%
Get Started

Objects

0 of 14
0%
Get Started

Abstract Data Types

0 of 20
0%
Get Started

Classes

0 of 16
0%
Get Started

Algorithm Design and Analysis

0 of 40
0%
Get Started

Notation Methods

0 of 5
0%
Get Started

Visualizing Functions

0 of 1
0%
Get Started

Running Time

0 of 27
0%
Get Started

Memory Usage and Allocation

0 of 6
0%
Get Started

Dynamic Programming

0 of 11
0%
Get Started

Greedy Algorithms

0 of 3
0%
Get Started

Examples and Applications

0 of 15
0%
Get Started

The maximum subarray problem

0 of 2
0%
Get Started

Strassen's algorithm

0 of 3
0%
Get Started

Solving recurrences

0 of 5
0%
Get Started
Theme Icon

Data Structures

In any programming scenario, it is important to organize data in such a way so as to make it efficient to use. Learn the basic methods of organizing data with array, stacks, queues, and lists. Explore the creation and application of hash tables and various methods of constructing data trees.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Basic Data Structures

0 of 17
0%
Get Started

Arrays

0 of 6
0%
Get Started

Stacks and Queues

0 of 7
0%
Get Started

Linked Lists

0 of 11
0%
Get Started

Pointers and Objects

0 of 7
0%
Get Started

Noted Trees

0 of 1
0%
Get Started

References

0 of 1
0%
Get Started

Hash Tables

0 of 6
0%
Get Started

Direct Address Tables

0 of 5
0%
Get Started

Hash Functions

0 of 5
0%
Get Started

Open Addressing

0 of 5
0%
Get Started

Augmenting Data Structures

0 of 4
0%
Get Started
Theme Icon

Sorting

In many algorithms, the first step is to sort the data. Learn the many different techniques that have been applied to the problem. Review fundamental methods such as bubble sort, insertion sort, and selection sort. Practice optimal strategies, including merge sort, quicksort and heapsort. Discover how certain classes of input can be sorted in linear time using counting sort, radix sort, and bucket sort.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Basic Sorts

0 of 5
0%
Get Started

Selection Sort

0 of 1
0%
Get Started

Insertion Sort

0 of 1
0%
Get Started

Bubblesort

0 of 3
0%
Get Started
Theme Icon

Searching

In most IT applications, searching for data quickly is the main concern. This theme covers the basic techniques for searching that every programmer should know. Learn the basics about symbol tables, and invent techniques to remove duplicates and keep track of statistics. Explore how to quickly search through a sorted list using binary search. Review techniques for keeping binary search trees balanced after adding and removing data. Analyze how to achieve constant-time lookups using hash tables.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Binary Search

0 of 1
0%
Get Started
Theme Icon

Graphs

Every binary relationship can be effectively stored and visualized using a graph. This topic includes questions designed to review and enhance your knowledge about fundamental graph algorithms. Understand the distinctions between directed and undirected graphs. Apply your knowledge of greedy algorithms to efficiently find a minimum spanning tree. Study optimal substructure as it relates to finding shortest paths. Investigate techniques for pushing the maximum flow through fluid networks as represented by directed graphs.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Basic Graph Algorithms

0 of 9
0%
Get Started

Undirected graphs

0 of 8
0%
Get Started

Directed graphs

0 of 3
0%
Get Started

Minimum Spanning Trees

0 of 13
0%
Get Started

Cut property

0 of 1
0%
Get Started

Greedy algorithms

0 of 7
0%
Get Started

Edge-weighted graphs

0 of 4
0%
Get Started

Prim's algorithm

0 of 7
0%
Get Started

Kruskal's algorithm

0 of 9
0%
Get Started

Single-Source Shortest Paths

0 of 9
0%
Get Started

Bellman-Ford algorithm

0 of 6
0%
Get Started

Edge-weighted digraphs

0 of 5
0%
Get Started

Directed acyclic graphs

0 of 2
0%
Get Started

Dijkstra's algorithm

0 of 7
0%
Get Started

Difference constraints

0 of 1
0%
Get Started

Maximum Flow

0 of 3
0%
Get Started

Flow networks

0 of 2
0%
Get Started

The Ford-Fulkerson method

0 of 1
0%
Get Started

Push-relabel algorithms

0 of 1
0%
Get Started
Theme Icon

Strings

Given that strings are a sequence of letters taken from an alphabet, special algorithms must be designed to help sort string entries. Learn basic string sorting techniques, create tries designed specifically for organizing strings, and apply algorithms designed to search strings for substrings. Apply compression techniques to encode strings using fewer bits than the original representation.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Regular Expressions

0 of 1
0%
Get Started
Theme Icon

Special Topics

The topics covered in prior themes represent the most fundamental developments in algorithms and data structures to date, yet they barely scratch the surface of this vast field. In this section, branch out to explore additional applications of algorithms and data structures. Engage with algorithms for breaking simple encryption methods. Explore the complications that arise when multiple computers work together to implement an algorithm. Investigate the application of algorithms to compute the solutions to geometric problems. Encounter the most important unsolved problem in Computer Science by studying the theory of NP-completeness.

CompletionAccuracy

Accuracy is based on your most recent attempt.

Status

Your status is based on your weighted accuracy which accounts for the difficulty of the questions.

Your weighted accuracy is based on your most recent attempts compared to everyone else’s first attempts.

Re-answering questions correctly will improve your weighted average status.

Cryptography

0 of 4
0%
Get Started

Substitution Ciphers

0 of 4
0%
Get Started

Distributed Algorithms

0 of 1
0%
Get Started

Parallel Architecture

0 of 1
0%
Get Started

NP Completeness

0 of 1
0%
Get Started

NP-Complete Problems

0 of 1
0%
Get Started