Exercise Title Features Description Platform Keywords
Introduction Chapter for CS1: Review Questions 1 Question Set Intro to Software Design Week 1 battery of self-assessment questions: Micro-Worlds OpenDSA Software Design
Introduction Chapter for CS1: Review Questions 2 Question Set Intro to Software Design Week 1 battery of self-assessment questions: Turning micro-worlds into code. OpenDSA Software Design
Introduction Chapter for CS1: Week 1 Reading Quiz Question Set Intro to Software Design Week 1 battery of self-assessment questions: Programming Concepts. OpenDSA Software Design
Inheritance and Polymorphism: Review Questions 1 Question Set Inheritance and Polymorphism battery of self-assessment questions: Working with Jeroos. OpenDSA Subclass
Inheritance and Polymorphism: Course Grading Policy Question Set Intro to Software Design (CS1) course grading policy review questions OpenDSA Software Design
Inheritance and Polymorphism: Review Questions 2 Question Set Inheritance and Polymorphism battery of self-assessment questions: Working class hierarchy and inheritance OpenDSA Class Hierarchy, Inheritance
Inheritance and Polymorphism: Review Questions 3 Question Set Inheritance and Polymorphism battery of self-assessment questions: Developing algorithms. OpenDSA Class Hierarchy, Inheritance
Inheritance and Polymorphism: Review Questions 4 Question Set Inheritance and Polymorphism battery of self-assessment questions: Writing methods. OpenDSA Method
Inheritance and Polymorphism: Chapter Summary Review Question Set Inheritance and Polymorphism battery of self-assessment questions: Chapter review summary. OpenDSA Inheritance, Polymorphism
Conditional statements: Working with If-Then-Else Statements Question Set Conditional Statement self-assessment questions: Working with if-then-else statements. OpenDSA Conditional Statement
Conditional statements: Working with If-Then Statements 2 Question Set Conditional Statement self-assessment questions: Working with if-then-else statements second quiz. OpenDSA Conditional Statement
Conditional statements: Using the Right Conditional Statement Question Set Conditional Statement self-assessment questions: Deciding when to use each type of conditional structure. OpenDSA Conditional Statement
Boolean Operators: AND, OR, NOT Question Set Boolean Operator self-assessment questions: AND, OR, NOT. OpenDSA Boolean Operator, Conditional Statement
Working with While Loops Review Questions Question Set While Loops self-assessment questions. OpenDSA While Loop
Conditional Statements and While Loops: Chapter Review Question Set Chapter review questions for conditional statements and while loops. OpenDSA While Loop, Conditional Statement
Software Testing Concepts Review Questions Question Set Software Testing self-assessment questions. OpenDSA Software Testing
Understanding Method Signatures Review Questions Question Set Understanding method signatures self-assessment questions. OpenDSA Method, Signature
Methods with Parameters Review Questions Question Set Understanding methods with parameters self-assessment questions. OpenDSA Method, Parameter
Logical Equivalence Review Questions Question Set Logical equivalence self-assessment questions. OpenDSA Boolean Operator, Boolean Expression
Chapter Review Questions: Software Testing Question Set Software testing for CS1 self-assessment questions. OpenDSA Boolean Operator, Boolean Expression
Variables Review Quiz Question Set Variables for CS1 self-assessment questions. OpenDSA Variable
Scope Review Quiz Question Set Scope for CS1 self-assessment questions. OpenDSA Scope
Getters and Setters Review Quiz Question Set Getters and Setters for CS1 self-assessment questions. OpenDSA Getters, Setters
Methods and Return Statements Review Quiz Question Set Methods and return statement for CS1 self-assessment questions. OpenDSA Method, Return Statement
For-each Loop Statement Module Review Quiz Question Set For-each statement module review questions for CS1. OpenDSA For-Each Loop
For-each Loop Statement Review Quiz Question Set For-each statement for CS1 self-assessment questions. OpenDSA For-Each Loop
Strings Review Quiz Question Set Strings introduction for CS1 review questions. OpenDSA String
Counter Controlled Loops Review Quiz Question Set Counter controlled loops for CS1 review questions. OpenDSA Loop
Random Numbers Review Quiz Question Set Random Numbers for CS1 review questions. OpenDSA Random Number
Method Overriding Review Quiz Question Set CS1 review questions: Method overriding. OpenDSA Method
Interfaces Review Quiz Question Set Introduction to interfaces for CS1 review questions. OpenDSA Interface
Lists and ArrayList Class Review Quiz Question Set Introduction to lists and the ArrayList class for CS1 review questions. OpenDSA ArrayList Class
Nested For Loops Review Quiz Question Set Introduction to using nested for loops for CS1 review questions. OpenDSA For Loop
Introduction to Lists Module Review Quiz Question Set Introduction to lists and nested for loops for CS1 review questions. OpenDSA List, For Loop
Loop Idioms Review Questions Question Set CS1 review questions about loop idioms. OpenDSA Loop
Generics Review Questions Question Set CS1-level review questions about generics. OpenDSA Generics
Null Keyword Review Questions Question Set CS1-level review questions about the Null keyword OpenDSA Null
Arrays Introduction Review Questions Question Set CS1-level introduction to arrays review questions. OpenDSA Array
Iterating with Arrays Review Questions Question Set CS1-level iterating over arrays review questions. OpenDSA Array, For-Each Loop
Arrays Module Review Questions Question Set CS1-level introduction to arrays module review questions. OpenDSA Array, For-Each Loop
2D Arrays Review Questions Question Set CS1-level introduction to 2D arrays review questions. OpenDSA Array
Iterating with 2D Arrays Review Questions Question Set CS1-level interating with 2D arrays review questions. OpenDSA Array
Modulus Review Questions Question Set CS1-level introduction to modulus review questions. OpenDSA Modulus
Variable Scope Review Questions Question Set CS1-level introduction to variable scope review questions. OpenDSA Variable Scope
Java Output Review Questions Question Set CS1-level introduction to output in Java review questions. OpenDSA File Processing
Java Input Review Questions Question Set CS1-level introduction to Java input review questions. OpenDSA File Processing, Scanner
Java Testing Review Questions Question Set CS1-level review questions on file I/O testing in Java. OpenDSA Testing
Java Maps Review Questions Question Set CS1-level review questions on maps in Java. OpenDSA Map
Inheritance and Polymorphism: Course Grading Policy Question Set Intro to Software Design (CS1) course grading policy review questions OpenDSA Software Design
Java Sets Review Questions Question Set CS1-level review questions on sets in Java. OpenDSA Set
Main Method Review Questions Question Set CS1-level review questions on the main method in Java. OpenDSA Main Method
Static Keyword Review Questions Question Set CS1-level review questions on the static keyword in Java. OpenDSA Static
Throwing Exceptions Review Questions Question Set CS1-level review questions on exception handling in Java. OpenDSA Exception
Try/Catch Blocks Review Questions Question Set CS1-level review questions on try/catch blocks in Java. OpenDSA Exception
pwd Command Proficiency Exercise Interactive Proficiency Exercise pwd command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
pwd Command Proficiency Exercise 2 Interactive Proficiency Exercise Second pwd command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
pwd Command Proficiency Exercise 3 Interactive Proficiency Exercise Third pwd command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
ls command proficiency exercise Interactive Proficiency Exercise ls command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
cd Command Proficiency Exercise Interactive Proficiency Exercise Cd command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
Cd Command Proficiency Exercise 2 Interactive Proficiency Exercise Second cd command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
Cd Command Proficiency Exercise 3 Interactive Proficiency Exercise Third cd command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
touch command proficiency exercise Interactive Proficiency Exercise touch command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
mkdir command proficiency exercise Interactive Proficiency Exercise mkdir command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
rm Command Proficiency Exercise Interactive Proficiency Exercise rm command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
rm -r Command Proficiency Exercise Interactive Proficiency Exercise rm -r command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
rmdir command proficiency exercise Interactive Proficiency Exercise rmdir command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
mv command proficiency exercise Interactive Proficiency Exercise mv command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
cp command proficiency exercise Interactive Proficiency Exercise cp command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Command Line
Command Line Proficiency Exercise: Challenge 1 Interactive Proficiency Exercise Command line proficency exercise: User provides the appropriate command to achieve some goal. Challenge 1. OpenDSA Command Line
Command line proficiency exercise: Challenge 2 Interactive Proficiency Exercise Command line proficency exercise: User provides the appropriate command to achieve some goal. Challeng 2. OpenDSA Command Line
Command Line Proficiency Exercise: Challenge 3 Interactive Proficiency Exercise Command line proficency exercise: User provides the appropriate command to achieve some goal. Challenge 3. OpenDSA Command Line
Clone Command Proficiency Exercise Interactive Proficiency Exercise clone command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Status Command Proficiency Exercise Interactive Proficiency Exercise status command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Add Command Proficiency Exercise Interactive Proficiency Exercise Add command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Command Proficiency Exercise: rm Interactive Proficiency Exercise Git command proficency exercise: User provides the appropriate command to achieve some goal. rm command. OpenDSA Git
Git Commit Command Proficiency Exercise Interactive Proficiency Exercise Commit command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Push Command Proficiency Exercise Interactive Proficiency Exercise push command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Restore Command Proficiency Exercise Interactive Proficiency Exercise restore command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Restore Staged Command Proficiency Exercise Interactive Proficiency Exercise Git Restore staged command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Pull Command Proficiency Exercise Interactive Proficiency Exercise Git pull command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Commit -a Command Proficiency Exercise Interactive Proficiency Exercise Commit -a command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Commit Path Command Proficiency Exercise Interactive Proficiency Exercise Commit Path command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Branch Command Proficiency Exercise Interactive Proficiency Exercise Git branch command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Switch Command Proficiency Exercise Interactive Proficiency Exercise Git switch command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Switch -c Command Proficiency Exercise Interactive Proficiency Exercise Git switch -c command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Switch Diverged Command Proficiency Exercise Interactive Proficiency Exercise Git switch diverged command proficency exercise: User provides the appropriate command to achieve some goal. OpenDSA Git
Git Command Proficiency Exercise: Challenge 1 Interactive Proficiency Exercise Git command proficency exercise: User provides the appropriate command to achieve some goal. Challenge 1. OpenDSA Git
Git Command Proficiency Exercise: Challenge 2 Interactive Proficiency Exercise Git command proficency exercise: User provides the appropriate command to achieve some goal. Challenge 2. OpenDSA Git
Git Command Proficiency Exercise: Challenge 3 Interactive Proficiency Exercise Git command proficency exercise: User provides the appropriate command to achieve some goal. Challenge 3. OpenDSA Git
Introduction to Data Structures and Algorithms Review Questions Question Set Data Structures introduction battery of self-assessment questions. OpenDSA Data Structures
Object-oriented programming concept map: Review Questions Question Set, Concept Map Self-assessment question battery about the object-oriented programming concept map. OpenDSA Object-Oriented Programming
Data types concept map: Review Questions Question Set, Concept Map Self-assessment question battery about the data types concept map. OpenDSA Data Type, Abstract Data Type
ADT Introduction Review Questions Question Set Self-assessment question battery about data types. OpenDSA Data Type, Abstract Data Type
Triangle Classification TestCase Exercise Code Testing Exercise Interactive exercise where user enters input values for a triangle classifier problem with the goal of getting complete code coverage.... OpenDSA Test Case, Code Coverage
Triangle Classification TestCase Exercise Code Testing Exercise Interactive exercise where user enters input values for a triangle classifier problem with the goal of getting complete code coverage.... OpenDSA Test Case, Code Coverage
Bowling Score TestCase Exercise Code Testing Exercise Interactive exercise where user enters input values for a bowling game scoring function with the goal of getting complete code... OpenDSA Test Case, Code Coverage
Bowling Score TestCase Exercise Code Testing Exercise Interactive exercise where user enters input values for a bowling game scoring function with the goal of getting complete code... OpenDSA Test Case, Code Coverage
Java Data Types Demonstration Slideshow showing primitive data types in Java and the concept of object and reference. OpenDSA Pointer, Reference, Data Type, Object
Practicing Pointers 1 Code Tracing Exercise Pointer assignment proficiency exercise. Users click on objects to show how pointers should be updated. OpenDSA Pointer, Object
Shallow vs Deep Copy Code Tracing Visualization Slideshow demonstrating the distinction between shallow and deep copy. OpenDSA Pointer, Reference, Object
Practicing Pointers 2 Code Tracing Exercise Second pointer assignment proficiency exercise. Users click on objects to show how pointers should be updated. OpenDSA Pointer, Object
Consequences of Dereferencing a Null Pointer Demonstration Slideshow demonstrating the consequence of dereferencing a null pointer. OpenDSA Pointer, Reference, Object
Assigning a Reference to an Object Code Tracing Visualization Slideshow demonstrating assigning a reference to an object. OpenDSA Pointer, Reference, Object
Changing the Reference to an Object Code Tracing Visualization Slideshow demonstrating changing the reference to an object. OpenDSA Pointer, Reference, Object
Lifetime of Local Variables Code Tracing Visualization Slideshow demonstrating the lifetime of local storage. OpenDSA Pointer, Reference, Object
Allocation and Deallocation of Local Variables Code Tracing Visualization Slideshow demonstrating the details of local variable allocation and deallocation. OpenDSA Pointer, Reference, Object
Garbage Disposal Code Tracing Visualization, Algorithm Visualization Slideshow introducing the concept of garbage collection. OpenDSA Garbage Collection, Heap Memory
A Heap Example Code Tracing Visualization Slideshow demonstrating the memory allocation and deallocation. OpenDSA Memory Allocation
Link Nodes Code Tracing Visualization, Algorithm Visualization Slideshow introducing the concept of Link Nodes. OpenDSA Link Node
Creating a Chain of Links Code Tracing Visualization, Algorithm Visualization Slideshow introducing the concept of chaining link nodes to form a linked list. OpenDSA Link Node, Linked List
Practicing Pointers: Links Code Tracing Exercise Third pointer assignment proficiency exercise. Users click on objects to show how pointers link nodes together into a linked list. OpenDSA Pointer, Object
Link Nodes: Iteration Code Tracing Visualization, Algorithm Visualization Slideshow introducing the concept of iterating through a linked list. OpenDSA Link Node, Iteration
Link Nodes: Delete Code Tracing Visualization, Algorithm Visualization Slideshow introducing the concept of deleting from a linked list. OpenDSA Link Node, Iteration
Link Nodes: Insertion Code Tracing Visualization, Algorithm Visualization Slideshow introducing the concept of inserting a new node into a linked list. OpenDSA Link Node, Iteration
Pointers concept map: Review Questions Question Set, Concept Map Self-assessment question battery about the pointers concept map. OpenDSA Pointer
Set Definitions Review Programmed Instruction Programmed Instruction Frameset presentation of basic set definitions and terminology review. OpenDSA Set
Set Notation Review Programmed Instruction Programmed Instruction Frameset presentation of basic set notation review. OpenDSA Set
Relations Review Programmed Instruction Programmed Instruction Frameset presentation of basic relations terminology review. OpenDSA Set
Set Relations: Review Questions Question Set Set relations self-assessment questions. OpenDSA Insertion Sort
Equivalence Relations Review Programmed Instruction Programmed Instruction Frameset presentation of equivalence relations review. OpenDSA Set
Equivalence Relations: Review Questions Question Set Equivalence relations self-assessment questions. OpenDSA Insertion Sort
Partial Orders: Review Questions Question Set Partial orders self-assessment questions. OpenDSA Insertion Sort
Programmed Instruction: Proof Techniques Introduction Programmed Instruction Programmed Instruction Frameset presentation of basic proofs review, including proof by contradiction review. OpenDSA Proof
Programmed Instruction: Induction Proofs Programmed Instruction Programmed Instruction Frameset review of induction proofs. OpenDSA Induction Proof
Programmed Instruction: Induction Proof Examples Programmed Instruction Programmed Instruction Frameset examples of induction proofs. OpenDSA Proof by Induction
Programmed Instruction: Induction Proof For Two Coloring Programmed Instruction Programmed Instruction Frameset examples of induction proof for two-coloring the 2D plane. OpenDSA Proof by Induction
Programmed Instruction: Induction Proof For Factorial Programmed Instruction Programmed Instruction Frameset examples of induction proof proving a Factorial function implementation correct. OpenDSA Proof by Induction
Problem, Algorithm, and Program definitions Demonstration Slideshow illustrating the differences between problems, algorithms, and programs. OpenDSA Problem, Algorithm, Program
Problems, Algorithms, and Programs Exercise Question Set Battery of self-assessment questions on lower bounds and the relationship of various growth rates. OpenDSA Problem, Algorithm, Program
Comparing Growth Rates Exercise Question Set Battery of self-assessment questions that lets users pick which growth rate is cheapest from several choices. OpenDSA Problem, Algorithm, Program
Growth Rates Ordering Exercise Question Set Battery of self-assessment questions that lets users put several growth rates in order. OpenDSA Problem, Algorithm, Program
Simple analysis cases slideshow Demonstration Slideshow illustrating analysis when there is only one input of a given size. OpenDSA Problem, Algorithm, Program
Best, Worst, and Average cases slideshow Demonstration Slideshow illustrating analysis when there are different inputs of a given size. OpenDSA Problem, Algorithm, Program
Faster Computer or Faster Algorithm Exercise Question Set Battery of self-assessment questions on the distinction between speeding a computer processor vs. reducing computational complexity of an algorithm OpenDSA Problem, Algorithm, Program
Misconceptions Related to Upper Bounds Demonstration Slideshow illustrating various misconceptions that can occur related to upper bounds asymptotic analysis. OpenDSA Problem, Algorithm, Program
Asymptotic Analysis and Upper Bounds Exercise Question Set Battery of self-assessment questions about asymptotic analysis and upper bounds. OpenDSA Problem, Algorithm, Program
Lower Bounds Misconceptions Demonstration Slideshow illustrating lower bounds analysis and discussing various associated misconceptions. OpenDSA Problem, Algorithm, Program
Algorithm Analysis Lower Bounds Practice Exercise Question Set Battery of self-assessment questions on the distinction between problems, algorithms, and programs. OpenDSA Growth Rate, Lower Bound
Binary Search Algorithm Algorithm Visualization, Code Tracing Visualization Slideshow illustrating Binary Search and presenting its analysis. OpenDSA Binary Search, Algorithm Analysis
Binary Search Proficency Exercise Algorithm Tracing Exercise Interactive exercise where users indicate which elements of the array should be searched to reproduce the binary search algorithm's behavior. OpenDSA Binary Search
Binary Search Algorithm Worst Case Analysis Recurrence Visualization Algorithm Analysis Demonstration Slideshow illustrating Binary Search worst case analysis through analysis of its recurrence relation. OpenDSA Binary Search, Algorithm Analysis, Recurrence Relation
Program Code Analysis Practice Questions Question Set Battery of self-assessment questions about asymptotic analysis and analyzing programs. OpenDSA Algorithm Analysis, Analyzing Programs
Analyzing Problems Practice Questions Question Set Battery of self-assessment questions about asymptotic analysis and analyzing problems. OpenDSA Algorithm Analysis, Analyzing Problems
Misunderstanding Examples: Graph Visualization Demonstration Slideshow illustrating various growth rate behaviors. OpenDSA Problem, Algorithm, Program
Common Algorithm Analysis Misconceptions Practice Questions Question Set Battery of self-assessment questions related to misconceptions in asymptoic algorithm analysis. OpenDSA Algorithm Analysis, Misconception
Algorithm Analysis Chapter Summary Questions: CS2 Question Set Battery of self-assessment questions on Algorithm Analysis. Suitable for a CS2 course. OpenDSA Algorithm Analysis
Algorithm Analysis Chapter Summary Questions: CS3 Question Set Battery of self-assessment questions on Algorithm Analysis. Suitable for a post-CS2 Data Structures and Algorithms course. OpenDSA Algorithm Analysis
Basics of Writing a Recursive Function Code Tracing Visualization, Algorithm Visualization Slideshow demonstrating the concept of recusion as delegation of a task. OpenDSA Recursion, Delegation
Recursion Introduction Slideshow: Details of Recursion Algorithm Visualization Slideshow demonstrating the concept of recusion showing the detials of recursive multiplication. OpenDSA Recursion
Recursion Introduction Slideshow: Delegation Code Tracing Visualization Slideshow demonstrating the basic concepts of base cases and recursive calls in a function. OpenDSA Recursion
Writing a Recursive Function: Variations Code Tracing Visualization Slideshow showing multiple examples of how to write a recursive function to do summation. OpenDSA Recursion
Tracing Recursive Code: Winding and Unwinding Code Tracing Visualization Slideshow demonstrating code tracing, showing how the call stack winds and unwinds. OpenDSA Recursion
Tracing Recursive Code: Factorial Function Code Tracing Visualization Slideshow demonstrating code tracing, using the factorial function as an example. OpenDSA Recursion
Tracing Recursive Code: Summation Code Tracing Visualization Slideshow demonstrating code tracing, using a simple summation function as an example. OpenDSA Recursion
Tracing Recursive Code: Domino Effect Code Tracing Visualization Slideshow demonstrating code tracing, using a domino metaphor. OpenDSA Recursion
Tracing Recursive Code: Towers of Hanoi Code Tracing Visualization Slideshow demonstrating code tracing the Towers of Hanoi problem. OpenDSA Recursion, Towers of Hanoi
Recursive Code Tracing Exercise: Forward Flow Code Tracing Exercise Recursive Code Tracing Exercise collection focusing on foward flow of information. OpenDSA Recursion
Recursive Code Tracing Exercise: Backward Flow Code Tracing Exercise Recursive Code Tracing Exercise collection focusing on backward flow of information. OpenDSA Recursion
Recursive Code Tracing Exercise: Function Errors Code Tracing Exercise Recursive Code Tracing Exercise collection focusing on recognizing errors. OpenDSA Recursion
Recursive Code Tracing Exercise: Two Recursive Calls Code Tracing Exercise Recursive Code Tracing Exercise collection focusing on functions with two recursive calls. OpenDSA Recursion
Recursive Code Tracing Exercise: Call Count Code Tracing Exercise Recursive Code Tracing Exercise collection focusing on counting the number of function calls made. OpenDSA Recursion
Recursive Code Tracing Exercise: Harder Exercises Code Tracing Exercise Recursive Code Tracing Exercise collection with some harder tracing exercises. OpenDSA Recursion
Recursion Tutor: Chapter Summary Question Set Recursion tutorial chapter summary practice question set. OpenDSA Recursion
List ADT Positions Slideshow Demonstration Slideshow discussing the concept of current position in a list and its implications for insertion. OpenDSA List
Array-based List Private Data Members Code Tracing Visualization Slideshow presenting the private data members from an array-based list implementation. OpenDSA Array-Based List
Array-based List Introduction Slideshow Demonstration Slideshow presenting the array-based list implementation. OpenDSA Array-Based List
Array-based List Insertion Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow demonstrating array-based list insertion. OpenDSA Array-Based List
Array-Based List Insertion Proficiency Exercise Algorithm Tracing Exercise Array-based list interactive proficiency exercise. Users click on values in an array to show how insertion takes place. OpenDSA Array-Based List
Array-based List Append Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow demonstrating the array-based list append operation. OpenDSA Array-Based List
Array-based List Remove Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow demonstrating array-based list remove. OpenDSA Array-Based List
Array-Based List Remove Proficiency Exercise Algorithm Tracing Exercise Array-based list interactive proficiency exercise. Users click on values in an array to show how remove takes place. OpenDSA Array-Based List
Array-Based List Review Questions Question Set Array-based list battery of self-assessment questions. OpenDSA Array-Based List
Bad Linked List Representation Slideshow Demonstration Slideshow demonstrating a bad representation for the current node in a linked list. OpenDSA Linked List
Linked List Deletion Problem Slideshow Demonstration Slideshow demonstrating why a naive representation for the current node in a linked list leads to problems on deletion. OpenDSA Linked List
Linked List Data Members Slideshow Code Tracing Visualization Slideshow presenting the data members for a linked list implementation. OpenDSA Linked List
Linked List Constructors Slideshow Code Tracing Visualization Slideshow presenting the constructors for a linked list implementation. OpenDSA Linked List
Linked List Insertion Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow demonstrating insertion into a linked list. OpenDSA Linked List
Linked List Insertion Special Case Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow demonstrating some special cases related to insertion into a linked list. OpenDSA Linked List
Linked List Insertion Proficiency Exercise Algorithm Tracing Exercise Linked list insert interactive proficiency exercise. Users click on values in a linked list display to show how insertion takes... OpenDSA Linked List
Linked List Remove Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow demonstrating removing from a linked list. OpenDSA Linked List
Linked List Remove Proficiency Exercise Algorithm Tracing Exercise Linked list remove interactive proficiency exercise. Users click on values in a linked list display to show how remove takes... OpenDSA Linked List
Linked List Miscillaneous Methods Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow demonstrating some miscillaneous methods for a linked list implementation. OpenDSA Linked List
List Implementation Overhead Exercise Question Set User provides overhead computations for specified implementations. OpenDSA Linked List, Array-Based List, Overhead, List Implementation Comparison
Linked List Summary Questions Question Set Self-practice questions about linked list costs. OpenDSA Linked List
Doubly Linked List Insert Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow presenting insertion into a doubly linked list. OpenDSA Doubly Linked List
Doubly Linked List Append Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow presenting appending to a doubly linked list. OpenDSA Doubly Linked List
Doubly Linked List Remove Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow presenting removing from a doubly linked list. OpenDSA Doubly Linked List
Doubly Linked List Prev Method Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow showing how to move to the previous element in a doubly linked list. OpenDSA Doubly Linked List
List Element Data Slideshow Algorithm Visualization Slideshow discussing the tradeoffs for storing element values in link nodes vs. references to element values. OpenDSA List Element Implementation
List Element Type Slideshow Algorithm Visualization Slideshow illustrating the choice between storing non-homogeneous data types in list nodes and limiting to a homogenous data type. OpenDSA List Element Implementation
List Element Deletion Slideshow Algorithm Visualization Slideshow discussing the design choices on what to do when a list element is deleted. OpenDSA List Element Implementation
General List Summary Questions Question Set Summary self-practice questions on lists. OpenDSA List
Array-Based Stack Data Members Slideshow Code Tracing Visualization Slideshow presenting the data members for an array-based stack implementation. OpenDSA Array-Based Stack
Array-Based Stack Top Slideshow Code Tracing Visualization Slideshow discussing the implementation for the top position in an array-based stack. OpenDSA Array-Based Stack
Array-Based Stack Push Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow discussing the implementation for the push operation in an array-based stack. OpenDSA Array-Based Stack
Array-Based Stack Push Proficiency Exercise Algorithm Tracing Exercise Array-based stack push proficiency exercise. Users click on values in a linked list display to show how push takes place. OpenDSA Array-Based Stack
Array-Based Stack Pop Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow discussing the implementation for the pop operation in an array-based stack. OpenDSA Array-Based Stack
Array-Based Stacks Pop Proficiency Exercise Algorithm Tracing Exercise Array-based stack pop proficiency exercise. Users click on values in a linked list display to show how pop takes place. OpenDSA Array-Based Stack
Linked Stack Push Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow discussing the implementation for the push operation in a linked stack. OpenDSA Linked Stack
Linked Stack Push Proficiency Exercise Algorithm Tracing Exercise Linked stack push proficiency exercise. Users click on values in a linked list display to show how push takes place. OpenDSA Linked Stack
Linked Stack Pop Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow discussing the implementation for the pop operation in a linked stack. OpenDSA Linked Stack
Linked Stack Pop Proficiency Exercise Algorithm Tracing Exercise Linked stack pop proficiency exercise. Users click on values in a linked list display to show how pop takes place. OpenDSA Linked Stack
Freelist Slideshow Algorithm Visualization Slideshow presenting the concept of using a freelist instead of a system memory manager. OpenDSA Linked List
Array-Based Queue Positions Slideshow Algorithm Visualization Slideshow presenting an initial design for storing a queue in an array. OpenDSA Array-Based Queue
Array-Based Queue Drift Slideshow Algorithm Visualization Slideshow presenting the a design that allows elements in an array-based queue to drift. OpenDSA Array-Based Queue
Array-Based Queue Design Problem Slideshow Algorithm Visualization Slideshow presenting the problem that elements in an array-based queue will eventually run out of space. OpenDSA Array-Based Queue
Circular Array-Based Queue Design Slideshow: Concepts Algorithm Visualization Slideshow presenting the concept of a circular array-based queue. OpenDSA Array-Based Queue
Circular Array-Based Queue Empty Representation Slideshow Algorithm Visualization Slideshow presenting design options for recognizing when an array-based queue is empty or full. OpenDSA Array-Based Queue
Circular Array-Based Queue Design Slideshow: Data Members Code Tracing Visualization Slideshow presenting the data members for a circular array-based queue implementation. OpenDSA Array-Based Queue
Circular Array-Based Queue Enqueue Proficiency Exercise Algorithm Tracing Exercise Array-based queue enqueue proficiency exercise. Users click on values in a circular array display to show how enqueue takes place. OpenDSA Array-Based Queue
Circular Array-Based Queue Dequeue Proficiency Exercise Algorithm Tracing Exercise Array-based queue dequeue proficiency exercise. Users click on values in a circular array display to show how dequeue takes place. OpenDSA Array-Based Queue
Linked Queue Data Members Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow presenting data members and constructors for a linked queue implementation. OpenDSA Linked Queue
Linked Queue Enqueue Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow presenting an implementation for linked queue enqueue. OpenDSA Linked Queue
Linked Queue Enqueue Proficiency Exercise Algorithm Tracing Exercise Linked queue enqueue proficiency exercise. Users click on values in a linked queue display to show how enqueue takes place. OpenDSA Linked Queue
Linked Queue Dequeue Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow presenting an implementation for linked queue dequeue. OpenDSA Linked Queue
Linked Queue Dequeue Proficiency Exercise Algorithm Tracing Exercise Linked queue dequeue proficiency exercise. Users click on values in a linked queue display to show how dequeue takes place. OpenDSA Linked Queue
Stack and Queue Summary Questions Question Set Self-practice questions about stacks and queues. OpenDSA Stack, Queue
Linear Data Structures Summary Questions Question Set Self-practice questions comparing uses of linear structures. OpenDSA List, Stack, Queue
Linear Structures Chapter Summary Questions Question Set Self-practice questions related to all aspects of lists, stacks, and queues. OpenDSA List, Stack, Queue
Design Patterns Review Questions Question Set A battery of self-assessment questions on design patterns. OpenDSA Design Pattern
Comparison Review Questions Question Set A battery of self-assessment questions on comparators and design issues related to comparing records. OpenDSA Record Comparison, Comparator
Dictionary ADT Review Questions Question Set A battery of self-assessment questions on the Dictionary ADT. OpenDSA Dictionary, Abstract Data Type
Binary Tree Definition Calculation Questions Question Set, Calculation Exercise Self-practice questions about binary tree terminology that require calculation of quantities such as node counts and tree heights. OpenDSA Binary Tree
Binary Tree Terminology Practice Questions Question Set Self-practice questions about binary tree terminology that require calculation of quantities such as descendants and tree heights. OpenDSA Binary Tree
Recursive Operations in a Binary Tree Demonstration Slideshow discussing recursive operations on a binary tree. OpenDSA Array-Based Stack
Preorder Traversal Shown in Detail Algorithm Visualization, Code Tracing Visualization Slideshow presenting a detailed visualization of preorder traversal of a binary tree and how the recursion works. OpenDSA Preorder Traversal
Postorder Traversal Shown in Detail Algorithm Visualization, Code Tracing Visualization Slideshow presenting a detailed visualization of postorder traversal of a binary tree and how the recursion works. OpenDSA Postorder Traversal
Inorder Traversal Shown in Detail Algorithm Visualization, Code Tracing Visualization Slideshow presenting a detailed visualization of inorder traversal of a binary tree and how the recursion works. OpenDSA Inorder Traversal
Preorder Traversal Exercise Code Tracing Exercise, Algorithm Tracing Exercise Practice exercise for preorder traversal. User clicks on nodes to indicate the proper order of the traversal process. OpenDSA Preorder Traversal
Postorder Traversal Exercise Code Tracing Exercise, Algorithm Tracing Exercise Practice exercise for postorder traversal. User clicks on nodes to indicate the proper order of the traversal process. OpenDSA Postorder Traversal
Inorder Traversal Exercise Code Tracing Exercise, Algorithm Tracing Exercise Practice exercise for Inorder traversal. User clicks on nodes to indicate the proper order of the traversal process. OpenDSA
Binary Tree Traversal Summary Questions Question Set Self-practice questions about binary tree traversals. OpenDSA Binary Tree Traversal
Typical Mistakes During Tree Traversal Code Tracing Visualization Slideshow demonstrating some typical mistakes when writing recursive binary tree traversals. OpenDSA Preorder Traversal
Traverse an expression tree Code Tracing Visualization, Algorithm Visualization Slideshow demonstrating traversal of an expression tree. The primary point is to highlight the node implementation for a full binary... OpenDSA Expression Tree, Binary Tree Traversal, Full Binary Tree
Tree Implementation Overhead Exercise Calculation Exercise Self-practice questions that require the user to calculate overhead fractions for various binary tree node implementations. OpenDSA Binary Tree, Overhead
BST Search Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing recursive search in a BST. OpenDSA Binary Search Tree
Binary Search Tree Search Proficiency Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with BST search. OpenDSA Binary Search Tree
BST Insert Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing recursive insert in a BST. OpenDSA Binary Search Tree
Binary Search Tree Insert Proficiency Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with BST insert. OpenDSA Binary Search Tree
BST Delete Max Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing recursive delete of the maximum value in a BST. OpenDSA Binary Search Tree
BST Remove Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing recursive remove value in a BST. OpenDSA Binary Search Tree
Binary Search Tree Remove Proficiency Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with BST remove. OpenDSA Binary Search Tree
Binary Search Tree Summary Questions Question Set Self-practice questions about Binary Search Trees. OpenDSA Binary Search Tree
Inefficient Range Query in a BST Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing a range query implementation in a BST, contrasting an inefficient and an efficient implementation. OpenDSA Binary Search Tree
Complete Binary Tree Calculation Questions Calculation Exercise Self-practice questions requiring user to calcuate node positions and values in an array representation for a complete binary tree. OpenDSA Linked List
Heap Insert Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing insert into a heap. OpenDSA Heap
Heap Insert Proficiency Exercise Code Tracing Exercise, Algorithm Tracing Exercise Practice exercise for heap insertion. User clicks on nodes to indicate the proper order of the insert process. OpenDSA Heap
Heap Inefficient Build Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing a naive heap building algorithm. OpenDSA Heap
Heap Build Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing the efficient heap buiding algorithm. OpenDSA Heap
Heap Build Proficiency Exercise Code Tracing Exercise, Algorithm Tracing Exercise Practice exercise for heap building. User clicks on nodes to indicate the proper order of the build process. OpenDSA Heap
Heap Build Proof Slideshow Code Tracing Visualization, Algorithm Visualization Slideshow visualizing the cost of the efficient heap buiding algorithm, showing that it is a linear-time algorithm. OpenDSA Heap
Heap Max Remove Slideshow Algorithm Visualization Slideshow visualizing heap update when removing the max value from a maxheap. OpenDSA Heap
Heap Remove Proficiency Exercise Code Tracing Exercise, Algorithm Tracing Exercise Practice exercise for heap remove. User clicks on nodes to indicate the proper order of the remove process. OpenDSA Heap
Heap Remove Slideshow Algorithm Visualization Slideshow visualizing heap update when removing a specified value from a heap. OpenDSA Heap
Heap Practice Questions Question Set Self-practice questions about heaps. OpenDSA Heap
Huffman Coding Tree Slideshow: Build Algorithm Visualization Slideshow visualizing the Huffman Coding Tree construction algorithm: Building the tree from a collection of weighted elements. OpenDSA Huffman Coding Tree
Huffman Coding Tree Slideshow: Label Edges Algorithm Visualization Slideshow visualizing the Huffman Coding Tree edge labeling step. OpenDSA Huffman Coding Tree
Huffman Coding Tree Slideshow: Setting Codes Algorithm Visualization Slideshow visualizing the Huffman Coding Tree code setting step. OpenDSA Huffman Coding Tree
Huffman Coding Tree Slideshow: Decoding Algorithm Visualization Slideshow visualizing the process of decoding a string of Huffman Codes. OpenDSA Huffman Coding Tree
Huffman Coding Proficiency Exercise Algorithm Computing Exercise Practice profiency exercise for Huffman Coding Trees. User must do actions like show the codes for a string, or vice... OpenDSA Huffman Coding Tree
Huffman Coding Tree Build Visualization Algorithm Visualization, User Supplied Data Visualization for building a Huffman Coding Tree from a set of weights supplied by the user. OpenDSA Huffman Coding Tree
Tree Timeline Slideshow Algorithm Visualization Slideshow showing the concept of marking a timeline for the values stored in a BST. This will be contrasted with... OpenDSA Trie
Trie Timeline Slideshow Algorithm Visualization Slideshow showing the concept of marking a timeline for the values stored in a Trie decomposition version of a BST. OpenDSA Trie
Binary Tree Chapter Summary Questions Question Set Self-practice questions for the full Binary Tree chapter. OpenDSA Binary Tree, Binary Search Tree, Heap, Huffman Coding Tree
Sorting Terminology and Notation Slideshow Demonstration Slideshow introducing the sorting problem. OpenDSA Sorting Notation
Sorting Introduction: Summary Questions Question Set Sorting introduction battery of self-assessment multiple choice questions. OpenDSA Sorting Notation
Insertion Sort Slideshow Algorithm Visualization Slideshow showing a visualization for the first pass of Insertion Sort. OpenDSA Insertion Sort
Insertion Sort Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for Insertion Sort. Includes code visualization. User can select data for the visualization. OpenDSA Insertion Sort
Insertion Sort proficiency exercise Algorithm Tracing Exercise Insertion Sort interactive proficiency exercise. Users click on values in an array to move them around as Insertion Sort would. OpenDSA Insertion Sort
Insertion Sort Worst Case Analysis Code Tracing Visualization, Algorithm Analysis Demonstration Slideshow showing an analysis of Insertion Sort's worst-case behavior and cost. OpenDSA Insertion Sort, Worst Case
Insertion Sort Best Case Slideshow Code Tracing Visualization, Algorithm Analysis Demonstration Slideshow showing an analysis of Insertion Sort's best-case behavior and cost. OpenDSA Insertion Sort, Best Case
Insertion Sort Average Case Slideshow Code Tracing Visualization, Algorithm Analysis Demonstration Slideshow showing an analysis of Insertion Sort's average-case behavior and cost. OpenDSA Insertion Sort, Average Case
Insertion Sort: Review Questions Question Set Insertion Sort battery of self-assessment questions. OpenDSA Insertion Sort
Bubble Sort First Pass Slideshow Algorithm Visualization Slideshow showing a simple visualization of the first pass for Bubble Sort. OpenDSA Bubble Sort
Bubble Sort 2nd Pass Slideshow Algorithm Visualization Slideshow showing a simple visualization of the second pass for Bubble Sort. OpenDSA Bubble Sort
Bubble Sort Visualization Algorithm Visualization, Code Tracing Visualization, User Supplied Data Algorithm Visualization for Bubble Sort. Includes code visualization. User can select data for the visualization. OpenDSA Bubble Sort
Bubble Sort Proficiency Exercise Algorithm Tracing Exercise Bubble Sort interactive proficiency exercise. Users click on values in an array to move them around as Bubble Sort would. OpenDSA Bubble Sort
Bubble Sort Analysis Slideshow Algorithm Analysis Demonstration Slideshow showing an analysis of Bubble Sort's cost in worst, average, and best cases. OpenDSA Bubble Sort, Worst Case, Average Case, Best Case
Bubble Sort: Review Questions Question Set Bubble Sort battery of self-assessment questions. OpenDSA Bubble Sort
Selection Sort First Pass Slideshow Algorithm Visualization Slideshow showing a simple visualization of the first pass for Selection Sort. OpenDSA Selection Sort
Selection Sort Second Pass Slideshow Algorithm Visualization Slideshow showing a simple visualization of the second pass for Selection Sort. OpenDSA Selection Sort
Selection Sort Visualization Algorithm Visualization, Code Tracing Visualization, User Supplied Data Algorithm Visualization for Selection Sort. Includes code visualization. User can select data for the visualization. OpenDSA Selection Sort
Selection Sort Sort Proficiency Exercise Algorithm Tracing Exercise Selection Sort interactive proficiency exercise. Users click on values in an array to move them around as Selection Sort would. OpenDSA Selection Sort
Selection Sort Analysis Slideshow Algorithm Analysis Demonstration Slideshow showing an analysis of Selection Sort's cost analysis. OpenDSA Selection Sort, Worst Case, Average Case, Best Case
Pointer Swap Optimization Slideshow Demonstration Slideshow showing that Selection Sort can be sped up for large records with swapping to records. OpenDSA
Selection Sort: Review Questions Question Set Selection Sort battery of self-assessment questions. OpenDSA Selection Sort
Count Inversions Proficiency Exercise Calculation Exercise Proficiency exercise to count the number of inversions in an array. OpenDSA Exchange Sort, Inversion
Exchange Sort Analysis Slideshow Algorithm Analysis Demonstration Slideshow showing an analysis of Echange Sorting cost. OpenDSA Bubble Sort, Worst Case, Average Case, Best Case
Exchange Sorts: Review Questions Question Set Exchange Sorting battery of self-assessment multiple choice questions. OpenDSA Insertion Sort
Insertion Sort Optimized with Shifting Proficiency Exercise Algorithm Tracing Exercise Interactive algorithm proficiency exercise for optimized Insertion Sort. User clicks on array elements to reproduce the behavior of Insertion Sort... OpenDSA Insertion Sort, Code Tuning
Shellsort First Pass Sublist Slideshow Algorithm Visualization Slideshow showing the sublists that would be processed by the first pass of Shellsort (increments of size n/2). OpenDSA Shellsort
Shellsort First Pass Details Slideshow Algorithm Visualization Slideshow showing the details of what records would be compared and swapped in the first pass of Shellsort. OpenDSA Shellsort
Shellsort Second Pass Sublist Slideshow Algorithm Visualization Slideshow showing a visualization for the sublists that would be sorted in the second pass of Shellsort. OpenDSA Shellsort
Shellsort Second Pass Sorting Details Slideshow Algorithm Visualization Slideshow showing the details of what records would be compared and swapped in the second pass of Shellsort. OpenDSA Shellsort
Shellsort Third Pass Sorting Details Slideshow Algorithm Visualization Slideshow showing the details of what records would be compared and swapped in the third pass of Shellsort. OpenDSA Shellsort
Shellsort Final Pass Details Slideshow Algorithm Visualization Slideshow showing the details of what records would be compared and swapped in the final "cleanup" pass of Shellsort. OpenDSA Shellsort
Shellsort Proficiency Exercises Algorithm Tracing Exercise Shellsort proficiency exercises. User clicks on array cells to reproduce the behavior of Shellsort. OpenDSA Shellsort
Shellsort Visualization Algorithm Visualization, Code Tracing Visualization, User Supplied Data Algorithm Visualization for Shellsort. User can select data for the visualization. OpenDSA Shellsort
Shellsort: Legal Series Questions Question Set Shellsort battery of self-assessment questions about whether a given diminishing increment series is legal for Shellsort. OpenDSA Shellsort
Shellsort Proficiency Exercise Algorithm Tracing Exercise Interactive proficiency exercise for Shellsort. User clicks on array cells to indicate the behavior of Shellsort. OpenDSA Shellsort
Shellsort Performance Proficiency Exercise Algorithm Computing Exercise Interactive proficiency exercise for Shellsort that focuses on the best performing diminishing increments. User selects an increment series and is... OpenDSA Shellsort
Shellsort: Review Questions Question Set Shellsort battery of self-assessment questions. OpenDSA Shellsort
Mergesort Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for Mergesort. User can select data for the visualization. OpenDSA Mergesort
Merging Slideshow Algorithm Visualization Slideshow showing the details of merging two sorted runs in Mergesort. OpenDSA Mergesort
Megesort Merging Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for the Mergesort merge step. User must indicate what values are merged into the results array. OpenDSA Mergesort
Mergesort Profiency Exercise Algorithm Tracing Exercise, Code Tracing Exercise Mergesort proficiency exercise. User must show all of the merge steps for all values in the array. OpenDSA Mergesort
Mergesort Analysis Slideshow Algorithm Visualization Slideshow showing a visual analysis of Mergesort best, average, and worst case performance. OpenDSA Mergesort
Mergsort Implementation Slideshow: Final Pass Algorithm Visualization Slideshow showing the details of implementing Mergesort using an array. This is the first of a two-part series, showing the... OpenDSA Mergesort
Mergsort Implementation Slideshow: Optimized Final Pass Algorithm Visualization Slideshow showing the details of implementing Mergesort using an array. This is the second of a two-part series, showing an... OpenDSA Mergesort
Mergesort: Review Questions Question Set Mergesort battery of self-assessment questions. OpenDSA Mergesort
Quicksort Pivot Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for the Quicksort pivot. User must indicate which value in the array is used as the pivot. OpenDSA Quicksort
Quicksort Partition Slideshow Algorithm Visualization Slideshow showing the partition step for Quicksort. OpenDSA Quicksort
Quicksort Partition Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for the Quicksort partition step. User must reproduce the series of steps taken during the Quicksort partition operation.. OpenDSA Quicksort
Quicksort Partition Analysis Slideshow Algorithm Visualization Slideshow showing a visual proof for the cost of the partition step for Quicksort. OpenDSA Quicksort
Quicksort Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for Quicksort. User can select data for the visualization. OpenDSA Quicksort
Quicksort Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for Quicksort. User must show the complete sequence of steps for sorting an array. OpenDSA Quicksort
Quicksort Worst Case Analysis Slideshow Algorithm Visualization Slideshow showing a visual proof for the worst-case cost of Quicksort. OpenDSA Quicksort
Quicksort Best Case Analysis Slideshow Algorithm Visualization Slideshow showing a visual proof for the best-case cost of Quicksort. OpenDSA Quicksort
Quicksort Average Case Analysis Slideshow Algorithm Visualization Slideshow showing a visual proof for the average-case cost of Quicksort. OpenDSA Quicksort
Quicksort: Review Questions Question Set Quicksort battery of self-assessment questions. OpenDSA Quicksort
Heapsort Visualization Slideshow Algorithm Visualization Slideshow showing a visualization of the Heapsort algorithm. OpenDSA Heapsort
Heapsort Remove Max Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for Heapsort. User must indicate how the array is updated when removing the maximum value during Heapsort. OpenDSA Heapsort
Heapsort Profiency Exercise Algorithm Tracing Exercise Heapsort proficiency exercise. User must show all of the steps for updating the array during Heapsort. OpenDSA Heapsort
Heapsort Analysis Slideshow Algorithm Visualization Slideshow showing a visual proof for the cost of Heapsort. OpenDSA Heapsort
Heapsort: Review Questions Question Set Heapsort battery of self-assessment questions. OpenDSA Heapsort
Binsort Slideshow: Sorting a Permutation Algorithm Visualization Slideshow showing the details of sorting a permutation of the n values from 0 to n-1. OpenDSA Binsort
Binsort Slideshow: Generalized Version Algorithm Visualization Slideshow showing the details of binsort for an arbitrary key range. OpenDSA Binsort
Radix Sort Visualization: Linked List Implementation Algorithm Visualization, User Supplied Data Algorithm Visualization for Radix Sort, implemented using linked lists. User can select data for the visualization. OpenDSA Radix Sort
Radix Sort Profiency Exercise Algorithm Tracing Exercise Proficiency exercise for a pass of the Radix Sort algorithm. User must indicate how values in one array are moved... OpenDSA Quicksort
Radix Sort Visualization: Array Implementation Algorithm Visualization, User Supplied Data Algorithm Visualization for Radix Sort, implemented using arrays. User can select data for the visualization. OpenDSA Radix Sort
Radix Sort Analysis Algorithm Visualization Slideshow showing a visual analysis for the cost of Radix Sort. OpenDSA Radix Sort
Radix Sort: Review Questions Question Set Radix Sort battery of self-assessment questions. OpenDSA Radix Sort
Sort Comparison Summary Exercise Question Set Battery of self-assessment questions where user selects which sort is the best to use in a particular situation. OpenDSA Radix Sort
Sorting Lower Bound Analysis Slideshow Algorithm Visualization Slideshow showing a visual proof for the lower bound of the general sorting problem. OpenDSA Sorting Problem Lower Bound
Sorting Lower Bound Summary Questions Question Set Battery of self-assessment questions related to the lower bounds proof for the general sorting problem. OpenDSA Sorting Problem Lower Bound
Sorting Chapter Summary Questions Question Set Battery of self-assessment questions for the entire Sorting chapter. OpenDSA Sorting
Buffer Pool Introduction Slideshow Algorithm Visualization Slideshow showing an introduction to buffer pools. OpenDSA Buffer Pool
LRU Introduction Slideshow Algorithm Visualization Slideshow illustrating the Least Recently Used replacement heuristic. OpenDSA Buffer Pool, Least Recently Used
LRU Replacement with Write Slideshow Algorithm Visualization Slideshow illustrating optimizing the Least Recently Used replacement heuristic by use of a dirty bit to minimize unnecessary writes. OpenDSA Buffer Pool, Least Recently Used, Dirty Bit
Buffer Pool Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for buffer pools. User can selectreplacement heuristic, pool size, and input data for the visualization. OpenDSA Buffer Pool
Motivation for External Sorting Slideshow Algorithm Visualization Slideshow illustrating standard Mergesort does not make for an optimal external sorting algorithm. OpenDSA File Processing, External Sorting
Mergesort Modified for External Sorting Algorithm Visualization Slideshow illustrating simple modifications to Mergesort to make a better external sorting algorithm. OpenDSA File Processing, External Sorting, Mergesort
External Replacement Selection Slideshow Algorithm Visualization Slideshow illustrating the replacement selection algorithm, used for external sorting. OpenDSA File Processing, External Sorting, Replacement Selection
Replacement Selection Proficiency Exercise Algorithm Tracing Exercise Interactive algorithm proficiency exercise for the replacement selection algorithm. User clicks on heap nodes to reproduce the behavior of replacement... OpenDSA File Processing, External Sorting, Replacement Selection
Multiway Merge Slideshow Algorithm Visualization Slideshow illustrating multiway merge in an external sorting algorithm. OpenDSA File Processing, External Sorting, Mergesort, Multiway Merge
Multiway Merge Proficiency Exercise Algorithm Tracing Exercise Interactive algorithm proficiency exercise for multiway merge. User clicks on positions in the array to reproduce the behavior of multiway... OpenDSA File Processing, External Sorting, Multiway Merge
Introduction to Hashing Slideshow Algorithm Visualization Slideshow showing the simplest of hashing approaches: Just put a key into that array position. OpenDSA Hashing
Birthday Calculator Calculation, User Supplied Data Simple calculator for computing the probability of a collision occuring given a specified number of inserts into a specified table... OpenDSA Hashing, Collision Resolution
Birthday Calculator Exercises Calculation User must use the birthday calculator to determine the smallest number of inserts into a hash table of a specified... OpenDSA Hashing, Collision Resolution
The mod Hash Function Algorithm Visualization Slideshow showing the basic mod function as a hash function. OpenDSA Hash Function
The Binning Hash Function Algorithm Visualization Slideshow showing basic binning (using high-order digits) as a hash function. OpenDSA Hash Function
Mid-square Method Calculator Calculation, User Supplied Data Calculator for computing value of the middle digits of a squared number. OpenDSA Hash Function
Simple String Hash Calculator Calculation, User Supplied Data Calculator for computing value of hashing a string by simple summation of its characters' ASCII values. OpenDSA Hash Function
String Folding Method activity Calculation, User Supplied Data Calculator for computing value of hashing a string by 'folding'. A better method than character value summing. OpenDSA Hash Function
Hash Functions Exercises Calculation User must give the result of a specified hash function on a specified input. Where appropriate, user is expected to... OpenDSA Hash Function
Hash Functions Summary Practice Questions Question Set A collection of self-practice questions on hash functions. OpenDSA Hash Function
Open Hashing Proficiency Exercise Algorithm Tracing Exercise User must show the result of doing a series of inserts using open hashing. The user indicates which position in... OpenDSA Open Hashing
Bucket Hashing Slideshow Algorithm Visualization Slideshow showing the basic hash method of hashing to any free position within a computed bucket. OpenDSA Bucket Hashing
Bucket Hashing Proficiency Exercise Algorithm Tracing Exercise User must give the result from a series of inserts using bucket hashing. The user clicks on an array to... OpenDSA Bucket Hashing
Alternate Bucket Hashing Slideshow Algorithm Visualization Slideshow showing a variation on bucket hashing where the key hashes to a slot in the table, and overflows to... OpenDSA Bucket Hashing
Alternate Form Bucket Hashing Proficiency Exercise Algorithm Tracing Exercise User must give the result from a series of inserts using bucket hashing. This version uses a variation on bucket... OpenDSA Bucket Hashing
Linear Probing Introduction Slideshow Algorithm Visualization Slideshow showing a basic linear probing collision resolution. OpenDSA Collision Resolution
Linear Probing Bad Performance Slideshow Algorithm Visualization Slideshow showing why linear probing is a poor method of collision resolution. OpenDSA Collision Resolution
Linear Probing Proficiency Exercise Algorithm Tracing Exercise User must give the result from a series of inserts using linear probing collision resolution. The user clicks on an... OpenDSA Linear Probing
Linear Probing With Steps Slideshow Algorithm Visualization Slideshow showing linear probing with steps collision resolution. OpenDSA Collision Resolution
Improved Linear Probing With Steps Slideshow Algorithm Visualization Slideshow showing how the table size and step size affects linear probing with steps collision resolution. OpenDSA Collision Resolution
Linear Hashing with Steps Proficiency Exercise Algorithm Tracing Exercise User must show the result of doing a series of inserts using linear probing with steps. The user indicates which... OpenDSA Collision Resolution
Pseudo-Random Probing Slideshow Algorithm Visualization Slideshow demonstrating pseudo-random probing collision resolution. OpenDSA Collision Resolution
Pseudo-Random Probing Proficiency Exercise Algorithm Tracing Exercise User must show the result of doing a series of inserts -- OpenDSA Collision Resolution
Pseudo-Random Probing Effectiveness Slideshow Algorithm Visualization Slideshow demonstrating why pseudo-random probing helps with collision resolution. OpenDSA Collision Resolution
Quadratic Probing Slideshow Algorithm Visualization Slideshow demonstrating quadratic probing collision resolution. OpenDSA Collision Resolution
Quadratic Probing Proficiency Exercise Algorithm Tracing Exercise User must show the result of doing a series of inserts using quadratic probing. The user indicates which position in... OpenDSA Collision Resolution
Quadratic Probing Problems Slideshow Algorithm Visualization Slideshow demonstrating how quadratic probing does not always visit all slots of the hash table during collision resolution. OpenDSA Collision Resolution
Double Hashing Introduction Slideshow Algorithm Visualization Slideshow demonstrating double hashing collision resolution. OpenDSA Collision Resolution
Alternate Double Hashing Slideshow Algorithm Visualization Slideshow demonstrating an alternate version of double hashing collision resolution. OpenDSA Collision Resolution
Double Hashing Proficiency Exercise Algorithm Tracing Exercise User must show the result of doing a series of inserts using double hashing. The user indicates which position in... OpenDSA Collision Resolution
Hash Cost Analysis Summary Practice Questions Question Set A collection of self-practice questions on hashing cost analysis. OpenDSA Hashing Cost Analysis
Hash Table Deletion Slideshow Algorithm Visualization Slideshow showing deletion from a hash table. OpenDSA Hashing
Hash Table Deletion Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for hash table deletion. User must show the complete sequence of steps for removing an element from the... OpenDSA Hashing
Hash Deletion Summary Practice Questions Question Set A collection of self-practice questions on hash table deletion. OpenDSA Hashing
Hashing Chapter Summary Practice Questions Question Set A collection of self-practice questions for the entire Hashing chapter. OpenDSA Hashing
First Fit Memory Manager Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for various sequential memory manager schemes. User can select data for the visualization. Multiple versions are available: First... OpenDSA Sequential Fit Memory Manager
First Fit Memory Manager Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for first fit memory manager. User must show the complete sequence of steps for allocating memory blocks. OpenDSA First Fit Memory Manager
First Fit Memory Manager Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for various sequential memory manager schemes. User can select data for the visualization. Multiple versions are available: First... OpenDSA Sequential Fit Memory Manager
First Fit Memory Manager Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for various sequential memory manager schemes. User can select data for the visualization. Multiple versions are available: First... OpenDSA Sequential Fit Memory Manager
First Fit Memory Manager Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for various sequential memory manager schemes. User can select data for the visualization. Multiple versions are available: First... OpenDSA Sequential Fit Memory Manager
First Fit Memory Manager Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for various sequential memory manager schemes. User can select data for the visualization. Multiple versions are available: First... OpenDSA Sequential Fit Memory Manager
Buddy Method Memory Manager Visualization Algorithm Visualization, User Supplied Data Algorithm Visualization for the buddy method memory manager. User can select data for the visualization. OpenDSA Buddy Method Memory Manager
Simple linear index Slideshow Algorithm Analysis Demonstration Slideshow showing a simple linear index for variable length records stored on disk. OpenDSA Linear Indexing, File Processing
Two-level linear index Slideshow Algorithm Analysis Demonstration Slideshow showing a two-level linear index for variable length records stored on disk. OpenDSA Linear Indexing
Linear Indexing Proficiency Exercise Algorithm Tracing Exercise Interactive proficiency exercise for linear indexing. User clicks on array elements to indicate how the search process progresses from through... OpenDSA Linear Indexing
Paged BST Slideshow Algorithm Visualization Slideshow showing the use of paging with a BST-based index. Updating the BST to require it to remain a complete... OpenDSA Tree-Based Indexing
Paged BST with Page Rebalancing For Use on Disk Slideshow Algorithm Visualization Slideshow showing the use of paging with a BST-based index. Reorganizing the nodes to be on optimal disk pages reduces... OpenDSA Tree-Based Indexing
Tree Indexing Proficiency Exercise Question Set Tree-based indexing proficiency exercise. User indicates the number of disk pages visited for a given tree. OpenDSA Tree-Based Indexing
Simple Insertion into a 2-3 tree. Algorithm Visualization Slideshow showing simple insertion into a 2-3 tree. OpenDSA Tree-Based Indexing, 2-3 Tree
Promote Key on Insertion into a 2-3 tree. Algorithm Visualization Slideshow showing how keys can be promoted on insertion into a 2-3 tree. OpenDSA Tree-Based Indexing, 2-3 Tree
Split on Insertion into a 2-3 tree. Algorithm Visualization Slideshow showing how node split on insertion is handled by a 2-3 tree. OpenDSA Tree-Based Indexing, 2-3 Tree
Building a 2-3+ Tree Slideshow Algorithm Visualization Slideshow showing a series of insertions into a 2-3+ tree. OpenDSA Tree-Based Indexing, 2-3 Tree
Search in a 2-3+ Tree Algorithm Visualization Slideshow showing a series of search operations in a 2-3+ tree. OpenDSA Tree-Based Indexing, 2-3 Tree
Deletion from a 2-3+ Tree Algorithm Visualization Slideshow showing a series of delete operations in a 2-3+ tree. OpenDSA Tree-Based Indexing, 2-3 Tree
Search in a B+ Tree of Degree 4 Algorithm Visualization Slideshow showing a series of search operations in a B+ Tree of degree 4. OpenDSA Tree-Based Indexing, B-Tree
Building a B+ Tree of Degree 4 Algorithm Visualization Slideshow showing a series of insert operations in a B+ Tree of degree 4. OpenDSA Tree-Based Indexing, B-Tree
B+ Tree Insertion Proficiency Exercise Algorithm Tracing Exercise Interactive proficiency exercise for insertion into a B+ Tree. User clicks on tree nodes to indicate how the insert process... OpenDSA B-Tree, Tree-Based Indexing
Deletion from a B+ Tree of Degree 4 Algorithm Visualization Slideshow showing a series of delete operations in a B+ Tree of degree 4. OpenDSA Tree-Based Indexing, B-Tree
Building a B+ Tree of Degree 5 Algorithm Visualization Slideshow showing a series of insert operations in a B+ Tree of degree 5. OpenDSA Tree-Based Indexing, B-Tree
Choosing the Best Indexing Method Question Set Self-test question battery on which is the best indexing choice for a given scenario. OpenDSA Tree-Based Indexing
General Tree Preorder Traversal Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow showing preorder traveral of a general tree, and demonstrates the general tree ADT. OpenDSA General Tree
General Tree Postorder Traversal Slideshow Algorithm Visualization Slideshow showing postorder traveral of a general tree, and demonstrates the general tree ADT. OpenDSA General Tree
Union/Find Examaple Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow demonstrating processing of a series of union operations on a collection of disjoint sets. Shows the parent pointer representation... OpenDSA Union/Find Algorithm, Disjoint Set
Union/Find with Path Compression Examaple Slideshow Algorithm Visualization, Code Tracing Visualization Slideshow demonstrating the path compression optimization for Union/Find. Shows the parent pointer representation used to maintain the set information. OpenDSA Union/Find Algorithm, Disjoint Set
Union/Find Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for the Union/Find algorithm to maintain a collection of disjoint sets. User must show the complete sequence of... OpenDSA Union/Find Algorithm
Binary Tree Serialization Slideshow Algorithm Visualization Slideshow how to reconstruct a binary tree from a serialized representation of its node values. OpenDSA Serialization, Binary Tree
Binary Tree Sequential Representation Proficiency Exercise Algorithm Tracing Exercise User must show the sequential representation for a given binary tree. OpenDSA Sequential Representation, Binary Tree
Binary Tree Serialization Slideshow: Internal Node Mark Bits Algorithm Visualization Slideshow how to reconstruct a binary tree from a serialized representation of its node values. Alternative representation using mark bits... OpenDSA Serialization, Binary Tree
Alternative Binary Tree Sequential Representation Proficiency Exercise Algorithm Tracing Exercise User must show the sequential representation for a given binary tree. This representation marks internal nodes. OpenDSA Sequential Representation, Binary Tree
Full Binary Tree Serialization Slideshow: Mark Bits Algorithm Visualization Slideshow how to reconstruct a full binary tree from a serialized representation of its node values. All that is needed... OpenDSA Serialization, Binary Tree
Full Binary Tree Sequential Representation Proficiency Exercise Algorithm Tracing Exercise User must show the sequential representation for a given full binary tree. The representation uses a bit vector to deduce... OpenDSA Sequential Representation, Full Binary Tree
General Tree Serialization Slideshow Algorithm Visualization Slideshow how to reconstruct a general tree from a serialized representation of its node values. OpenDSA Serialization, Binary Tree
General Tree Sequential Representation Proficiency Exercise Algorithm Tracing Exercise User must show the sequential representation for a given general tree. OpenDSA Sequential Representation, General Tree
Space Requirements for Graph Representations Exercise Calculation User must calculate the space requirements for a specified graph representation scenario. OpenDSA Graph Representation
Graph Introductory Practice Questions Question Set Self-practice questions related to graph terminology and representation. OpenDSA Graph Representation
Depth-first graph traversal slideshow Algorithm Visualization Slideshow demonstrating the depth-first search algorithm for traversing a graph. OpenDSA Depth-First Search
Depth-First Search Graph Traversal Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for depth-first search to traverse a graph. User just indicate the order in which nodes are visited by... OpenDSA Depth-First Search
Breadth-first graph traversal slideshow Algorithm Visualization Slideshow demonstrating the breadth-first search algorithm for traversing a graph. OpenDSA Breadth-First Search
Breadth-First Search Graph Traversal Visualization Algorithm Visualization Visualization for breadth-first search to traverse a graph. OpenDSA Breadth-First Search
Breadth-First Search Graph Traversal Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for breadth-first search to traverse a graph. User must indicate the order in which nodes are visited by... OpenDSA Breadth-First Search
Depth-First Topological Sort Slideshow Algorithm Visualization Slideshow demonstrating the depth-first topological sort algorithm. OpenDSA Topological Sort
Queue-Based Topological Sort Slideshow Algorithm Visualization Slideshow demonstrating the queue-based topological sort algorithm. OpenDSA Topological Sort
Dijkstra's Single-Source Shortest Paths Algorithm Algorithm Visualization Slideshow demonstrating the Dijkstra's single-source shortest paths algorithm. OpenDSA Shortest Path Problem
Dijkstra's Single-Source Shortest Paths Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for Dijkstra's single-source -- OpenDSA Shortest Path Problem
Prim's Minimal-Cost Spanning Tree Algorithm slideshow Algorithm Visualization Slideshow demonstrating Prim's algorithm for constructing the minimal cost spanning tree for a graph. OpenDSA Minimal-Cost Spanning Tree
Prim's Minimal-Cost Spanning Tree Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for Prim's minimal-cost spanning tree. User must indicate the order in which nodes are visited by clicking on... OpenDSA Minimal-Cost Spanning Tree
Kruskal's Minimal-Cost Spanning Tree Algorithm slideshow Algorithm Visualization Slideshow demonstrating Kruskal's algorithm for constructing the minimal cost spanning tree for a graph. OpenDSA Minimal-Cost Spanning Tree
Kruskal's Minimal-Cost Spanning Tree Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for Kruskal's minimal-cost spanning tree. User must indicate the order in which nodes are visited by clicking on... OpenDSA Minimal-Cost Spanning Tree
Graph Concept Practice Questions Question Set, Concept Map Self-assessment question battery about graphs, using a concept map. OpenDSA Graph
PR Quadtree Visualization Algorithm Visualization Algorithm Visualization for the PR Quadtree with one point per node. OpenDSA PR Quadtree
PR Quadtree Two Points Visualization Algorithm Visualization Algorithm Visualization for the PR Quadtree with up to two points per node. OpenDSA PR Quadtree
PR Quadtree Interactive Visualization Algorithm Visualization, User Supplied Data PR Quadtree Visualization that allows the user to click on locations to insert points to be inserted into or deleted... OpenDSA PR Quadtree
KD Tree Visualization Algorithm Visualization Algorithm Visualization illustrating the KD Tree. OpenDSA KD Tree
Bintree Visualization Algorithm Visualization Algorithm Visualization for the Bintree data structure. OpenDSA PR Quadtree
Bintree Interactive Visualization Algorithm Visualization, User Supplied Data Interactive Algorithm Visualization for the Bintree data structure. User can click to indicate where a point should be inserted or... OpenDSA Bintree
Summation of the first N integers visualization Demonstration Slideshow showing how to calculate the closed form for the summation of the first N integers. OpenDSA Summation
Geometric Summation Proof Demonstration Slideshow showing how to calculate the closed form for the geometric series. OpenDSA Summation
Expanding a Divide and Conquer Recurrence Demonstration Slideshow showing how to calculate the closed form for a divide-and-conquer recurrence using the expansion technique. OpenDSA Recurrence Relation
Master Theorem for Recurrence Relations Demonstration Slideshow showing how to calculate the closed form for a divide-and-conquer recurrence using the Master Theorem. OpenDSA Recurrence Relation, Master Theorem
Using Posets for a Lower Bounds Proof Demonstration Slideshow showing the use of posets in a proof of the lower bound for search in an unsorted list. OpenDSA Poset, Search in Unsorted Lists
Binary Search Algorithm Algorithm Visualization, Code Tracing Visualization Slideshow illustrating Binary Search and presenting its analysis. OpenDSA Binary Search, Algorithm Analysis
Skip List Introduction Slideshow Algorithm Visualization Slideshow showing an idealized version of the Skip List as an introduction to the concepts. OpenDSA Skip List
Skip List Insert Slideshow Algorithm Visualization Slideshow showing examples of insertion into a Skip List. OpenDSA Skip List, Randomized Algorithm
Skip List Delete Slideshow Algorithm Visualization Slideshow showing examples of deletion from a Skip List. OpenDSA Skip List, Randomized Algorithm
Constructing a Binomial Tree Algorithm Visualization Slideshow showing a small example of building a binomial tree. OpenDSA Binomial Tree
Binary Insertion Sort Slideshow Algorithm Visualization Slideshow introducing the concept of using binary search to find the insert location of the next record during Insertion Sort.... OpenDSA Binary Insertion Sort
Merge Insertion Sort Slideshow Algorithm Visualization Slideshow sketching the Merge Insertion Sort, or Ford and Johnson sort. OpenDSA Merge Insertion Sort, Ford, Johnson Sort
Call Structure for the Fibonacci Sequence Problem Algorithm Visualization Slideshow showing the tree structure for calls by a recursive implementation of the Fibonacci sequence calculation. OpenDSA Dynamic Programming, Fibonacci Sequence
Call Structure for the Chained Matrix Multiplication Problem Algorithm Visualization Slideshow showing the tree structure for calls by a solution to the chained matrix multiplication problem. OpenDSA Dynamic Programming, Chained Matrix Multplication Problem
Problem Notation Slideshow Demonstration Slideshow showing the basic notation for defining a problem, with the example being sorting. OpenDSA Reduction
Reduction of Pairing to Sorting Demonstration Slideshow showing a reduction of Pairing to Sorting. This demonstrates that the upper bound for Pairing is the same as... OpenDSA Reduction
Reduction of Sorting to Pairing Demonstration Slideshow showing a reduction of Sorting to Pairing. This demonstrates that the lower bound for Pairing is the same as... OpenDSA Reduction
Symmetric Matrix Multiplication Reduction Demonstration Slideshow showing a reduction of Matrix Multiply to Symmetric Matrix Multiply. This demonstrates that the lower bound for Symmetric Matrix... OpenDSA Reduction
Introduction to the Clique Problem Demonstration Slideshow demonstrating the Clique problem. OpenDSA Clique Problem
Introduction to the Circuit Satisfiability Problem Demonstration Slideshow demonstrating the circuit satisfiability problem. OpenDSA Circuit Satisfiability Problem
Introduction to the CNF Satisfiability Problem Demonstration Slideshow demonstrating the CNF satisfiability problem. OpenDSA Satisfiability Problem
Introduction to the 3-CNF Satisfiability Problem Demonstration Slideshow demonstrating the 3-CNF satisfiability problem. OpenDSA Satisfiability Problem
3-Satisfiability Proficency Exercise Demonstration Exercise User must determine whether a given 3-CNF expression has a satisfying truth assignment or not. OpenDSA Satisfiability Problem
Proof that 3-SAT is NP-Complete Slideshow Proof Visualization Slideshow demonstrating that 3-Satisfiability is NP-Complete by a reduction from Satisfiability. OpenDSA Clique Problem
Introduction to the Clique Problem Demonstration Slideshow demonstrating the Clique problem. OpenDSA Clique Problem
Clique Proficency Exercise Demonstration Exercise User must determine the largest clique in a given graph. OpenDSA Clique Problem
Introduction to the Independent Set Problem Demonstration Slideshow demonstrating the independent set problem. OpenDSA Independent Set Problem
Independent Set Proficency Exercise Demonstration Exercise User must determine the largest independent set in a given graph. OpenDSA Independent Set Problem
Introduction to the Vertex Cover Problem Demonstration Slideshow demonstrating the vertex cover problem. OpenDSA Vertex Cover Problem
Vertex Cover Proficency Exercise Demonstration Exercise User must determine the smallest vertex cover in a given graph. OpenDSA Vertex Cover Problem
Introduction to the Hamiltonian Cycle Problem Demonstration Slideshow demonstrating the Hamiltonian cycle problem. OpenDSA Hamiltonian Cycle Problem
Hamiltonian Cycle Proficency Exercise Demonstration Exercise User must determine whether a given graph has a Hamiltonian cycle. OpenDSA Hamiltonian Cycle Problem
Introduction to the Traveling Salesman Problem Demonstration Slideshow demonstrating the Traveling Salesman problem. OpenDSA Traveling Salesman Problem
Traveling Saleseman Proficency Exercise Demonstration Exercise User must determine the shortest complete cycle in a given graph. OpenDSA Traveling Salesman Problem
Reduction of Circuit SAT to SAT Slideshow Demonstration Slideshow demonstrating a reduction from an instance of the Circuit Satisfiability problem to an instance of the CNF Satisfiability problem. OpenDSA Reduction, Satisfiability Problem
Reduction of 3-SAT to Clique Slideshow Demonstration Slideshow demonstrating a reduction from an instance of the 3-Satisfiability problem to an instance of the Clique problem. OpenDSA Reduction, Satisfiability Problem, Clique Problem
Reduction of Independent Set to Vertex Cover Slideshow Demonstration Slideshow demonstrating a reduction from an instance of the Independent Set problem to an instance of the Vertex Cover problem. OpenDSA Reduction, Independent Set Problem, Vertex Cover Problem
Reduction of 3-SAT to Hamiltonian Cycle Slideshow Demonstration Slideshow demonstrating a reduction from an instance of the 3-Satisfiability problem to an instance of the Hamiltonian Cycle problem. OpenDSA Reduction, Satisfiability Problem, Hamiltonian Cycle Problem
Reduction of Clique to Independent Set Slideshow Demonstration Slideshow demonstrating a reduction from an instance of the Clique problem to an instance of the Independent Set problem. OpenDSA Reduction, Clique Problem, Independent Set Problem
Reduction of Hamiltonian Cycle to Traveling Salesman Slideshow Demonstration Slideshow demonstrating a reduction from an instance of the Hamiltonian Cycle problem to an instance of the Traveling Salesman problem. OpenDSA Reduction, Clique Problem, Independent Set Problem
Polynomial Multiplication Introduction Slideshow Algorithm Visualization Slideshow showing how the terms of a polynomial affect its geometric shape. OpenDSA Polynomial Multiplication
Evaluation and Interpolation Algorithm Visualization Slideshow demonstrating the relationships of evaluation and interpolation of a polynomial. OpenDSA Polynomial Multiplication, Polynomial Evaluation, Polynomial Interpolation
Polynomial Product Algorithm Visualization Visualization of the process for muliplying to polynomials. OpenDSA Polynomial Multiplication
Polynomial Evaluation Algorithm Visualization Visualization of the relationship between evaluation of polynomials and multiplying polynomials. OpenDSA Polynomial Multiplication, Evaluation
Polynomial Multiplication and Evaluation Review Questions Question Set Polynomial multiplication concepts battery of self-assessment questions. OpenDSA Transform, Polynomial Multiplication, Polynomial Evaluation
Even and Odd Polynomials Slideshow Demonstration Demonstration of the symmetries between even powers versus odd powers for polynomial evaluation of a value and its negation. OpenDSA Polynomial Multiplication
Nth Root of Unity Review Questions Question Set Battery of self-assessment questions on the concept of the nth root of unity. OpenDSA Polynomial Multiplication, Fast Fourier Transform
Discrete Fourier Transform Matrix Demonstration Demonstration of multiplying by the FFT symmetry matrix for the 8th power of unity. OpenDSA Polynomial Multiplication, Fast Fourier Transform
Symmetries of the FFT Matrix Demonstration Demonstration of the symmetries found within the nth powers of unity matrix for the FFT. OpenDSA Polynomial Multiplication, Fast Fourier Transform
The Fast Fourier Transform Code Tracing Visualization, Algorithm Visualization Visual demonstration of the Fast Fourier Transform for polynomial multiplication. OpenDSA Polynomial Multiplication, Fast Fourier Transform
FFT Algorithm Proficiency Exercise Algorithm Tracing Exercise Proficiency exercise for the Fast Fourier Transform algorithm. OpenDSA Polynomial Multiplication, Fast Fourier Transform
Parse Tree Example for a Math Expression Algorithm Visualization Slideshow visualizing generation of a parse tree for a simple math expression. OpenDSA Parse Tree
Determining Number of Parse Tree Nodes Exercise Calculation Exercise A collection of self-practice questions where users determine the number of nodes in a parse tree generated by a given... OpenDSA Context-Free Grammar, Parse Tree
Determining Whether a Given String is Derivable from Given Grammar Exercise Calculation Exercise A collection of self-practice questions where users determine which strings can or cannot be derived from a given grammar. OpenDSA Context-Free Grammar, Parse Tree
Characterizing Languages Exercise 1 Question Set Exercise on how to characterize the strings in the language for a given grammar on a's and b's. OpenDSA Language, Grammar
Characterizing Languages Exercise 2 Question Set Exercise on how to characterize the strings in the language for a given grammar on palindromes. OpenDSA Language, Grammar
Ambiguous Parse Tree Example for a Math Expression Algorithm Visualization Slideshow visualizing how generation of a parse tree from a grammar might be ambiguous. OpenDSA Parse Tree
Ambiguous Parse Tree Example for a Math Expression: 2 Algorithm Visualization Slideshow visualizing a second example of how generation of a parse tree from a grammar might be ambiguous. OpenDSA Parse Tree
CFG Ambiguity 1 Exercise Calculation Exercise A collection of self-practice questions where users determine whether a given string is parsed ambiguously or not. OpenDSA Context-Free Grammar, Parse Tree
CFG Ambiguity 2 Exercise Question Set A second collection of self-practice questions where users determine whether a given string is parsed ambiguously or not. OpenDSA Context-Free Grammar, Ambiguity
CFG Ambiguity 3 Exercise Question Set A third collection of self-practice questions where users determine whether a given string is parsed ambiguously or not. OpenDSA Context-Free Grammar, Ambiguity
CFG Determining Ambiguity Exercise Question Set A collection of self-practice questions where users determine whether a given CFG is ambiguous or not. OpenDSA Context-Free Grammar, Ambiguity
Parse Tree Example: Enforcing Order of Operations Algorithm Visualization Slideshow visualizing a parse tree from a grammar that enforces the correct order of operations. OpenDSA Parse Tree
Parsing an Expression Algorithm Visualization, User Supplied Data Algorithm Visualization for generating the parse tree of a user-supplied mathematical expression. Demonstrates that the associated grammar enforces the correct... OpenDSA Parse Tree
CFG Expression Evaluation Exercise Question Set A collection of self-practice questions where users evaluate a mathematical expression under the definition of a given CFG. OpenDSA Context-Free Grammar, Ambiguity
CFG Associativity Exercise Question Set A collection of self-practice questions where users evaluate a mathematical expression and deterimine if the grammar enforces correct associativity. OpenDSA Context-Free Grammar, Ambiguity
CFG Precedence and Associativity Exercise Question Set A collection of self-practice questions where users evaluate a mathematical expression and deterimine if the grammar enforces correct precedence and... OpenDSA Context-Free Grammar, Ambiguity
Language from CFG Exercise Question Set A collection of self-practice questions where users select a language description for a given CFG. OpenDSA Context-Free Grammar
Extended BNF Exercise Question Set A collection of self-practice questions where users select extended BNF statements matching a normal set of BNF statements. OpenDSA Context-Free Grammar
Jison Grammar Exercise 1 Calculation A collection of self-practice questions where users calculate the number of strings parsed successfully by a given grammar. OpenDSA Parser Generator
Jison Grammar Exercise 2 Calculation A second collection of self-practice questions where users calculate the number of strings parsed successfully by a given grammar. OpenDSA Parser Generator
Annotating Jison Exercise Question Set A collection of self-practice questions where users determine the results of parsing a given collection of strings. OpenDSA Parser Generator
Functional Programming: Cons Operator Code Tracing Exercise A collection of self-practice questions related to the cons operator. OpenDSA Functional Programming
Functional Programming: Cons, Hd, and Tl Code Tracing Exercise A collection of self-practice questions related to the cons, hd, and tl operators. OpenDSA Functional Programming
Functional Programming: Cons, Hd, and Tl, Exercise 2 Code Tracing Exercise A second collection of self-practice questions related to the cons, hd, and tl operators. OpenDSA Functional Programming
Functional Programming: isEq Code Tracing Exercise A collection of self-practice questions related to the isEq operator. OpenDSA Functional Programming
Functional Programming List Processing: Summation Algorithm Visualization, Code Tracing Visualization Slideshow visualizing basic list processing in a functional programming language: Summation of list values. OpenDSA Functional Programming
Recursive List Processing 1 Code Tracing Exercise A collection of self-practice questions related to list processing in a functional programming language. OpenDSA Functional Programming
Functional Programming List Processing: isMember Algorithm Visualization, Code Tracing Visualization Slideshow visualizing basic list processing in a functional programming language: isMember function. OpenDSA Functional Programming
Recursive List Processing 2 Code Tracing Exercise A second collection of self-practice questions related to list processing in a functional programming language. OpenDSA Functional Programming
Functional Programming List Processing: Substitution Algorithm Visualization, Code Tracing Visualization Slideshow visualizing basic list processing in a functional programming language: substitution function. OpenDSA Functional Programming
Recursive List Processing 3 Code Tracing Exercise A third collection of self-practice questions related to list processing in a functional programming language. OpenDSA Functional Programming
Functional Programming Recursion: Summing Elements in a Tree Algorithm Visualization, Code Tracing Visualization Slideshow visualizing list-of-list (tree) processing in a functional programming language: sum all values. OpenDSA Functional Programming
Recursive Tree Processing: Value Summation Code Tracing Exercise A collection of self-practice questions related to tree processing in a functional programming language: Value summation. OpenDSA Functional Programming
Functional Programming Recursion: BST Algorithm Visualization, Code Tracing Visualization Slideshow visualizing list-of-list (tree) processing in a functional programming language: Binary Search Tree Search. OpenDSA Functional Programming
Recursive Tree Processing: Substitution Code Tracing Exercise A collection of self-practice questions related to tree processing in a functional programming language: Substitution. OpenDSA Functional Programming
Recursive Tree Processing: Substitution 2 Code Tracing Exercise A collection of self-practice questions related to tree processing in a functional programming language: Substitution 2. OpenDSA Functional Programming
Recursive Tree Processing: Mystery Function Code Tracing Exercise A collection of self-practice questions related to tree processing in a functional programming language: Mystery Function. OpenDSA Functional Programming
Functional Programming: Split and Join Algorithm Visualization, Code Tracing Visualization Slideshow visualizing split and join operations in a functional programming language. OpenDSA Functional Programming
Functional Programming: Accumulator Pattern Pivot Algorithm Visualization, Code Tracing Visualization Slideshow visualizing using pivot as an example in the accumlator pattern. OpenDSA Functional Programming
Split anad Join with Accumulators Code Tracing Exercise A collection of self-practice questions related to split and join operations with accumulators in a functional programming language. OpenDSA Functional Programming
Functional Programming: Quicksort Code Tracing Exercise A collection of self-practice questions related to using split and join to implement Quicksort. OpenDSA Functional Programming
Functional Programming: Accumulator Pattern Code Tracing Exercise A collection of self-practice questions related to the accumulator pattern. OpenDSA Functional Programming
Functional Programming: Scope and Closure Algorithm Visualization, Code Tracing Visualization Slideshow visualizing scope and closure in a functional programming language. OpenDSA Functional Programming
Functional Programming: Variable Hoisting Algorithm Visualization, Code Tracing Visualization Slideshow visualizing variable hoisting in a functional programming language. OpenDSA Functional Programming
Functional Programming: Nested Scopes Algorithm Visualization, Code Tracing Visualization Slideshow illustrating nested scopes in a functional programming language. OpenDSA Functional Programming
Functional Programming Visualization: Static vs Dynamic Binding Algorithm Visualization, Code Tracing Visualization Slideshow illustrating static vs dynamic binding in a functional programming language. OpenDSA Functional Programming
Functional Programming: Closures Algorithm Visualization, Code Tracing Visualization Slideshow illustrating closures in a functional programming language. OpenDSA Functional Programming
Functional Programming: Higher Order Functions 1 Code Tracing Exercise A collection of self-practice questions related to functional programming languages: higher order functions. OpenDSA Functional Programming
Functional Programming: Higher Order Functions 2 Code Tracing Exercise A second collection of self-practice questions related to functional programming languages: higher order functions. OpenDSA Functional Programming
Functional Programming: Higher Order Functions 3 Code Tracing Exercise A third collection of self-practice questions related to functional programming languages: higher order functions. OpenDSA Functional Programming
Functional Programming Exercise: Static vs Dynamic Binding Code Tracing Exercise A third collection of self-practice questions related to functional programming languages: static vs. dynamic binding. OpenDSA Functional Programming
Functional Programming Visualization: Mapping Pattern Algorithm Visualization, Code Tracing Visualization Slideshow visualizing the mapping pattern in a functional programming language. OpenDSA Functional Programming
Functional Programming Exercise: Mapping Pattern Code Tracing Exercise A collection of self-practice questions related to functional programming languages: mapping pattern. OpenDSA Functional Programming
Functional Programming Visualization: Functional Composition Algorithm Visualization, Code Tracing Visualization Slideshow visualizing functional composition in a functional programming language. OpenDSA Functional Programming
Functional Programming Exercise: Functional Composition Code Tracing Exercise A collection of self-practice questions related to functional programming languages: functional composition. OpenDSA Functional Programming
Functional Programming: Currying Algorithm Visualization, Code Tracing Visualization Slideshow visualizing currying in a functional programming language. OpenDSA Functional Programming
Functional Programming: Curry 1 Code Tracing Exercise A collection of self-practice questions related to functional programming languages: curry 1. OpenDSA Functional Programming
Functional Programming: Curry 2 Code Tracing Exercise A collection of self-practice questions related to functional programming languages: curry 2. OpenDSA Functional Programming
Functional Programming: Filter Pattern Algorithm Visualization, Code Tracing Visualization Slideshow visualizing the filter pattern in a functional programming language. OpenDSA Functional Programming
Functional Programming: Filter Code Tracing Exercise A collection of self-practice questions related to functional programming languages: filter pattern. OpenDSA Functional Programming
Functional Programming: Reduce/Folding Pattern Algorithm Visualization, Code Tracing Visualization Slideshow visualizing the reduce/folding pattern in a functional programming language. OpenDSA Functional Programming
Functional Programming: ReduceRight Pattern Algorithm Visualization, Code Tracing Visualization Slideshow visualizing the reduceRight pattern in a functional programming language. OpenDSA Functional Programming
Functional Programming: Reduce 1 Code Tracing Exercise A collection of self-practice questions related to functional programming languages: reduce pattern. OpenDSA Functional Programming
Functional Programming: Reduce and Map Code Tracing Exercise A collection of self-practice questions related to functional programming languages: reduce and map pattern. OpenDSA Functional Programming
Functional Programming: Reduce 2 Code Tracing Exercise A second collection of self-practice questions related to functional programming languages: reduce pattern. OpenDSA Functional Programming
Functional Programming: MapReduce Pattern Algorithm Visualization, Code Tracing Visualization Slideshow visualizing the Map/Reduce pattern in a functional programming language. OpenDSA Functional Programming
Functional Programming: Map Reduce Code Tracing Exercise A second collection of self-practice questions related to functional programming languages: map reduce. OpenDSA Functional Programming
Functional Programming: Tail Recursion Code Tracing Exercise A collection of self-practice questions related to functional programming languages: tail recursion. OpenDSA Functional Programming
Functional Programming: Continuation Passing Algorithm Visualization, Code Tracing Visualization Slideshow illustrating continuation passing in a functional programming language. OpenDSA Functional Programming
Functional Programming: CPS vs non-tail recursion Algorithm Visualization, Code Tracing Visualization Slideshow comparing continuation passing with non-tail recursion and accumulation. OpenDSA Functional Programming
Functional Programming: Continuation Passing Style 1 Code Tracing Exercise A collection of self-practice questions related to functional programming languages: Continuation Passing Style. OpenDSA Functional Programming
Functional Programming: Continuation Passing Style 2 Code Tracing Exercise A second collection of self-practice questions related to functional programming languages: Continuation Passing Style. OpenDSA Functional Programming
Functional Programming: Continuation Passing Style 3 Code Tracing Exercise A third collection of self-practice questions related to functional programming languages: Continuation Passing Style. OpenDSA Functional Programming
Functional Programming: Continuation Passing Style 4 Code Tracing Exercise A fourth collection of self-practice questions related to functional programming languages: Continuation Passing Style. OpenDSA Functional Programming
Lambda Calculus: How to Build a Parse Tree Algorithm Visualization, Code Tracing Visualization Slideshow visualizing building a parse tree for lambda calculus expressions. OpenDSA Lambda Calculus
Lambda Calculus: Syntax 1 Question Set A collection of self-practice questions related to syntax of the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: Syntax 2 Question Set A second collection of self-practice questions related to syntax of the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: Semantics Code Tracing Exercise A collection of self-practice questions related to semantics of the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: Free Variables Code Tracing Exercise A collection of self-practice questions related to identifying free variables in a Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Bound Variables Code Tracing Exercise A collection of self-practice questions related to identifying bound variables in a Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Alpha Conversion Code Tracing Exercise A collection of self-practice questions related to alpha conversion in the Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Substitution Subcases 1 Code Tracing Exercise A collection of self-practice questions related to substitution subcases in the Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Substitution Subcases 2 Code Tracing Exercise A second collection of self-practice questions related to substitution subcases in the Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Substitution Subcases 3 Code Tracing Exercise A third collection of self-practice questions related to substitution subcases in the Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Substitution 1 Code Tracing Exercise A collection of self-practice questions related to substitution in the Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Substitution 2 Code Tracing Exercise A second collection of self-practice questions related to substitution in the Lambda Calculus expression. OpenDSA Lambda Calculus
Lambda Calculus: Beta-Redex Code Tracing Exercise A collection of self-practice questions related to Beta-redexes in the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: Beta-Redex and Alpha Conversion Code Tracing Exercise A collection of self-practice questions related to Beta-redexes with Alpha conversion in the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: Performing Beta Reductions Code Tracing Exercise A collection of self-practice questions related to performing Beta-reduction in the Lambda Calculus. OpenDSA Lambda Calculus
Practicing Lambda Calculus Reduction Algorithm Tracing Exercise Algorithm Proficiency Exercise for determining reduction orders in Lambda Calculus expressions. OpenDSA Lambda Calculus
Lambda Calculus: Beta Reduction Order 1 Code Tracing Exercise A collection of self-practice questions related to Beta reduction order in the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: Beta Reduction Order 2 Code Tracing Exercise A second collection of self-practice questions related to Beta reduction order in the Lambda Calculus. OpenDSA Lambda Calculus
Applicative-order reduction Proficiency Exercise Algorithm Tracing Exercise Algorithm Proficiency Exercise for determining applicative-order reduction in Lambda Calculus expressions. OpenDSA Lambda Calculus
Normal-order reduction Proficiency Exercise Algorithm Tracing Exercise Algorithm Proficiency Exercise for determining normal-order reduction in Lambda Calculus expressions. OpenDSA Lambda Calculus
Reduction of True and False using Church Bools Algorithm Visualization Slideshow visualizing reduction of true and false using Church bools. OpenDSA Lambda Calculus
Lambda Calculus: If-Then-Else in Church Encoding Code Tracing Exercise A collection of self-practice questions related to if-then-else in Church encoding in the Lambda Calculus. OpenDSA Lambda Calculus
Lambda Calculus: OR in Church Encoding Code Tracing Exercise A collection of self-practice questions related to or in Church encoding in the Lambda Calculus. OpenDSA Lambda Calculus
Church Numerals Algorithm Visualization Slideshow illustrating reduction for Church numerals. OpenDSA Lambda Calculus
Church Numerals 2 Algorithm Visualization Slideshow illustrating reduction for Church numerals: Multiplication. OpenDSA Lambda Calculus
Lambda Calculus: Church Numerals Code Tracing Exercise A collection of self-practice questions related to Church numerals in the Lambda Calculus. OpenDSA Lambda Calculus
Identifying Fixed Point Combinators Code Tracing Exercise A collection of self-practice questions related to identifying fixed point combinators in the Lambda Calculus. OpenDSA Lambda Calculus
Concrete Syntax of SLang1 Code Tracing Exercise A collection of self-practice questions related to the syntax of functional programming language SLang1. OpenDSA Functional Programming
Concrete Syntax of SLang1: 2 Code Tracing Exercise A second collection of self-practice questions related to the syntax of functional programming language SLang1. OpenDSA Functional Programming
Abstract Syntax of SLang1 Code Tracing Exercise A collection of self-practice questions related to the abstract syntax of functional programming language SLang1. OpenDSA Functional Programming
Curry in SLang1 Question Set A collection of self-practice questions related to curry in the functional programming language SLang1. OpenDSA Functional Programming
Semantics of SLang1 Code Tracing Exercise A collection of self-practice questions related to the semantics of the functional programming language SLang1. OpenDSA Functional Programming
Determine Values Bound to a Variable in Environment Code Tracing Exercise A collection of self-practice questions related to determining values bound to a variable in environment of the functional programming language... OpenDSA Functional Programming
Expression Evaluation for SLang1 Code Tracing Exercise A collection of self-practice questions related to expression evaluation for the functional programming language SLang1. OpenDSA Functional Programming
Denoted Values in SLang1 Code Tracing Exercise A collection of self-practice questions related to denoted values in the functional programming language SLang1. OpenDSA Functional Programming
Nested Lets Syntax-Only Code Tracing Exercise A collection of self-practice questions related to nesting Let expressions implemented only syntactically in the functional programming language SLang1. OpenDSA Functional Programming
Nested Lets Code Tracing Exercise A collection of self-practice questions related to nesting Let expressions in the functional programming language SLang1. OpenDSA Functional Programming
Nested Lets with Closures Code Tracing Exercise A collection of self-practice questions related to nested Let expressions with closures in the functional programming language SLang1. OpenDSA Functional Programming
Output of an SLang2 Program Code Tracing Exercise A collection of self-practice questions related to the output of imperative language SLang2. OpenDSA Functional Programming
Efficient Recursion in SLang2 Code Tracing Exercise A collection of self-practice questions related to using recursion in imperative language SLang2. OpenDSA Functional Programming
Parameter Passing by Value Algorithm Visualization, Code Tracing Visualization Slideshow illustrating parameter passing by value in SLang2. OpenDSA Parameter Passing
Parameter Passing by Value Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with parameter passing by value. OpenDSA Parameter Passing
Parameter Passing by Reference Visualization Code Tracing Visualization Visualization of parameter passing by reference in SLang2. OpenDSA Parameter Passing
Parameter Passing by Reference Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with parameter passing by reference. OpenDSA Parameter Passing
Parameter Passing by Value vs Reference Exercise Code Tracing Exercise A collection of self-practice questions to compare parameter passing by value vs passing by reference in language SLang2. OpenDSA Parameter Passing
Parameter Passing by Copy-Restore Visualization Code Tracing Visualization Visualization of parameter passing by copy-restore in SLang2. OpenDSA Parameter Passing
Parameter Passing by Copy-Restore Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with parameter passing by copy-restore. OpenDSA Parameter Passing
Parameter Passing by Value vs Reference Exercise vs Copy-Restore Code Tracing Exercise A collection of self-practice questions to compare parameter passing by value vs passing by reference vs copy-restore in language SLang2. OpenDSA Parameter Passing
Parameter Passing by Macro Visualization Code Tracing Visualization Visualization of parameter passing by macro in SLang2. OpenDSA Parameter Passing
Parameter Passing by Macro Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with parameter passing by macro. OpenDSA Parameter Passing
Parameter Passing by Reference vs Copy-Restore vs Macro Code Tracing Exercise A collection of self-practice questions to compare parameter passing by reference vs copy-restore vs macro in language SLang2. OpenDSA Parameter Passing
Parameter Passing by Name Visualization Code Tracing Visualization Visualization of parameter passing by name in SLang2. OpenDSA Parameter Passing
Parameter Passing by Name Exercise Algorithm Tracing Exercise Interactive exercise to demonstrate proficiency with parameter passing by name. OpenDSA Parameter Passing
Parameter Passing Comparison of Five Methods Code Tracing Exercise A collection of self-practice questions to compare parameter passing by five methods. OpenDSA Parameter Passing
Parameter Passing by Copy-Restore vs Macro vs Name Code Tracing Exercise A collection of self-practice questions to compare parameter passing by copy-restore vs macro vs name in language SLang2. OpenDSA Parameter Passing
From Operation Algorithm Visualization Slideshow illustrating the concept of a lazy list. OpenDSA Parameter Passing, Lazy List
Lazy Lists Algorithm Visualization Slideshow illustrating the lazy list from operation. OpenDSA Parameter Passing, Lazy List
Lazy Lists Map Operation Algorithm Visualization Slideshow illustrating the map operation for a lazy list. OpenDSA Parameter Passing, Lazy List
Lazy Lists Filter Operation Algorithm Visualization Slideshow illustrating the filter operation for a lazy list. OpenDSA Parameter Passing, Lazy List
Lazy Lists Drop Operation Algorithm Visualization Slideshow illustrating the drop operation for a lazy list. OpenDSA Parameter Passing, Lazy List
Lazy Lists Iterates Operation Algorithm Visualization Slideshow illustrating the iterates operation for a lazy list. OpenDSA Parameter Passing, Lazy List
Lazy Lists Eager Evaluation Algorithm Visualization Slideshow illustrating the concept of eager evaluation for a lazy list. OpenDSA Parameter Passing, Lazy List
Lazy Lists Lazy Evaluation Algorithm Visualization Slideshow illustrating the concept of lazy evaluation for a lazy list. OpenDSA Parameter Passing, Lazy List
Matching Sequence to Code Code Tracing Exercise A collection of self-practice questions where user matches code to an output sequence. OpenDSA Parameter Passing
Writing Infinite Sequence Code Tracing Exercise A collection of self-practice questions where user writes code to generate a given sequence. OpenDSA Parameter Passing
Sequences Code Output Exercise Code Tracing Exercise A collection of self-practice questions where user shows the sequence generated by a given piece of code. OpenDSA Parameter Passing
Match Code to Output Exercise Code Tracing Exercise A collection of self-practice questions where user shows the output generated by a given piece of code. OpenDSA Parameter Passing
ML Type Inferencing 1 Code Tracing Exercise A collection of self-practice questions where user matches a ML type inference with its code. OpenDSA Type
ML Type Inferencing 2 Code Tracing Exercise A second collection of self-practice questions where user matches a ML type inference with its code. OpenDSA Type
ML Type Inferencing 3 Code Tracing Exercise A third collection of self-practice questions where user matches a ML type inference with its code. OpenDSA Type
ML Type Inferencing 4 Code Tracing Exercise A fourth collection of self-practice questions where user matches a ML type inference with its code. OpenDSA Type
ML Type Inferencing 5 Code Tracing Exercise A fifth collection of self-practice questions where user matches a ML type inference with its code. OpenDSA Type
ML Type Inferencing 6 Code Tracing Exercise A sixth collection of self-practice questions where user matches a ML type inference with its code. OpenDSA Type
Introduction to the Concept of a Language Programmed Instruction Programmed Instruction slideshow introducing the concept of a language. OpenDSA Language
Introduction to the Concept of a Grammar Programmed Instruction Programmed Instruction slideshow introducing the concept of a grammar. OpenDSA Grammar
Characterizing Languages Exercise 1: Alternate Question Set Exercise on how to characterize the strings in the language for a given grammar on a's and b's. Alternate version. OpenDSA Language, Grammar
Characterizing Languages Exercise 2: Alternate Question Set Exercise on how to characterize the strings in the language for a given grammar on palindromes. Alternate version. OpenDSA Language, Grammar
Grammar Construction Exercise: Three Strings Grammar Construction Exercise Exercise where user must write the grammar for a given language. This language has three strings. OpenDSA Language, Grammar
Grammar Construction Exercise: abb Grammar Construction Exercise Exercise where user must write the grammar for a given language. This language has some a's followed by twice as... OpenDSA Language, Grammar
Grammar Construction Exercise: a's and b's Grammar Construction Exercise Exercise where user must write the grammar for a given language. This language has some a's followed by some b's. OpenDSA Language, Grammar
Grammar Construction Exercise: Balanced Parentheses Grammar Construction Exercise Exercise where user must write the grammar for a given language. This language has balanced and properly nested parentheses. OpenDSA Language, Grammar
Grammar Construction Exercise: Palendrome Grammar Construction Exercise Exercise where user must write the grammar for a given language. This language is palendromes on a's and b's. OpenDSA Language, Grammar
Programmed Instruction: DFA Definitions Programmed Instruction Programmed Instruction Frameset covering the formal definition of a DFA. OpenDSA Deterministic Finite Automata
DFA Example Trace: How a DFA Traces Algorithm Visualization, Code Tracing Visualization Visualization of how a DFA would process an input string. OpenDSA Deterministic Finite Automata
DFA Example Trace: Even Binary Numbers Algorithm Visualization, Code Tracing Visualization Visualization of how a DFA would process input strings for the language of even binary numbers. OpenDSA Deterministic Finite Automata
DFA Exercise: Even Binary Numbers Automata Construction Exercise User creates a DFA that accepts the langugage of even binary numbers. OpenDSA Deterministic Finite Automata
Programmed Instruction: DFA Advanced Concepts Programmed Instruction Programmed Instruction Frameset covering more advanced DFA concepts. OpenDSA Deterministic Finite Automata
DFA Exercise: Odd a's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an odd number of a's. OpenDSA Deterministic Finite Automata
DFA Exercise: Odd a's, Even b's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an odd number of a's and an even number... OpenDSA Deterministic Finite Automata
DFA Exercise: Odd a's, 3 b's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an odd number of a's and at most 3... OpenDSA Deterministic Finite Automata
DFA Exercise: No 3 a's Automata Construction Exercise User creates a DFA that accepts the langugage of strings of a's and b's without 3 consecutive a's. OpenDSA Deterministic Finite Automata
DFA Exercise: Compliment of No 3 a's Automata Construction Exercise User creates a DFA that accepts the langugage of strings of a's and b's that have 3 consecutive a's. OpenDSA Deterministic Finite Automata
DFA Exercise: Even a's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an even number of a's. OpenDSA Deterministic Finite Automata
DFA Exercise: b Surrounds a Automata Construction Exercise User creates a DFA that accepts the langugage of strings where every a is surrounded by b's. OpenDSA Deterministic Finite Automata
DFA Exercise: Divisible by 4 Automata Construction Exercise User creates a DFA that accepts the langugage of strings of binary numbers divisible by 4. OpenDSA Deterministic Finite Automata
DFA Exercise: Even a, 3 b's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an even number of a's and at least 3... OpenDSA Deterministic Finite Automata
DFA Exercise: Complement Even a, 3 b's Automata Construction Exercise User creates a DFA that accepts the complement of the langugage of strings with an even number of a's and... OpenDSA Deterministic Finite Automata
DFA Exercise: Even a's Odd b's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an even number of a's and an odd number... OpenDSA Deterministic Finite Automata
DFA Exercise: Even a's, b's, odd a's Automata Construction Exercise User creates a DFA that accepts the langugage of strings with an even number of a's, followed by at least... OpenDSA Deterministic Finite Automata
DFA Exercise: Both Even or Odd Automata Construction Exercise User creates a DFA that accepts the langugage of strings with both even a's and b's, or both odd a's... OpenDSA Deterministic Finite Automata
DFA Exercise: No ba Automata Construction Exercise User creates a DFA that accepts the langugage of strings with a's and b's that does not end in ba. OpenDSA Deterministic Finite Automata
DFA Exercise: Complement No ba Automata Construction Exercise User creates a DFA that accepts the complement of the langugage of strings with a's and b's that does not... OpenDSA Deterministic Finite Automata
Programmed Instruction: Non-Deterministic Finite Automata Programmed Instruction Programmed Instruction Frameset introducing the concept of non-determinism and the NFA. OpenDSA Deterministic Finite Automata
Programmed Instruction: NFA to DFA Conversion Programmed Instruction Programmed Instruction Frameset with an example for converting an NFA to an equivalent DFA. OpenDSA Deterministic Finite Automata
Convert NFA to DFA Exercise 1 Automata Construction Exercise User shows the steps to convert a given NFA to an equivalent DFA: Exercise 1 OpenDSA Deterministic Finite Automata
NFA Construction Exercise 1 Automata Construction Exercise Construct an NFA: Exercise 1 OpenDSA Deterministic Finite Automata
Programmed Instruction: DFA Minimization Programmed Instruction Programmed Instruction Frameset presenting the algorithm to minimize the number of states in a DFA. OpenDSA Deterministic Finite Automata
Programmed Instruction: DFA Minimization Example 1 Programmed Instruction Programmed Instruction Frameset presenting the algorithm to minimize the number of states in a DFA: Example 1. OpenDSA Deterministic Finite Automata
Programmed Instruction: DFA Minimization Example 2 Programmed Instruction Programmed Instruction Frameset presenting the algorithm to minimize the number of states in a DFA: Example 2. OpenDSA Deterministic Finite Automata
DFA Exercise: Minimize the Number of State Exercise 1 Automata Construction Exercise User shows the steps in the algorithm to minimize the states in a given DFA. Exercise 1. OpenDSA Deterministic Finite Automata
DFA Exercise: Minimize the Number of State Exercise 2 Automata Construction Exercise User shows the steps in the algorithm to minimize the states in a given DFA. Exercise 2. OpenDSA Deterministic Finite Automata
Regular Expressions Introduction Frameset Programmed Instruction Programmed Instruction Frameset introducing Regular Expressions their formal definition. OpenDSA Regular Expression
Regular Expression Exercise: Strings Containing aba Regular Expression Writing Exercise User writes an regular expression for the language of strings containing aba. OpenDSA Regular Expression
Regular Expression Exercise: Strings Containing bba in an Even Position Regular Expression Writing Exercise User writes an regular expression for the langugae of strings containing bba in an even position. OpenDSA Regular Expression
Regular Expression Exercise: Strings Containing No aa Regular Expression Writing Exercise User writes an regular expression for the langugae of strings containing no occurance of aa. OpenDSA Regular Expression
Regular Expression Exercise: Strings Containing One bbb Regular Expression Writing Exercise User writes an regular expression for the langugae of strings containing exactly one instance of bbb. OpenDSA Regular Expression
Regular Expression Exercise: Strings of Even Binary Numbers Regular Expression Writing Exercise User writes an regular expression for the language of strings that are even binary numbers. OpenDSA Regular Expression
Regular Expression Exercise: Strings of Multiples of 3 a's Regular Expression Writing Exercise User writes an regular expression for the language of strings that contain a multiple of 3 a's. OpenDSA Regular Expression
Regular Expression Exercise: Strings of 2 b's and c's Regular Expression Writing Exercise User writes an regular expression for the language of strings where the number of b's and c's sums to 2. OpenDSA Regular Expression
Regular Expression Exercise: Strings of a's Preceded or Followed by b Regular Expression Writing Exercise User writes an regular expression for the language of strings where every a is either proceeded or followed by b. OpenDSA Regular Expression
Regular Expressions Equivalent to NFA: Part 1 Programmed Instruction Programmed Instruction Frameset presenting Part 1 of 4 parts of a proof of equivalence of Regular Expressions and NFAs. OpenDSA Regular Expression, Non-Deterministic Finite Automata
Regular Expressions Equivalent to NFA: Part 2: Or Programmed Instruction Programmed Instruction Frameset presenting Part 2 of 4 parts of a proof of equivalence of Regular Expressions and NFAs. Or'ing... OpenDSA Regular Expression, Non-Deterministic Finite Automata
Regular Expressions Equivalent to NFA: Part 3: Concatenate Programmed Instruction Programmed Instruction Frameset presenting Part 3 of 4 parts of a proof of equivalence of Regular Expressions and NFAs. Concatenating... OpenDSA Regular Expression, Non-Deterministic Finite Automata
Regular Expressions Equivalent to NFA: Part 4: Star Programmed Instruction Programmed Instruction Frameset presenting Part 4 of 4 parts of a proof of equivalence of Regular Expressions and NFAs. Kleene... OpenDSA Regular Expression, Non-Deterministic Finite Automata
Regular Expressions Equivalent to NFA: Example Programmed Instruction Programmed Instruction Frameset presenting examples of converting a Regular Expression to an equivalend NFA. OpenDSA Regular Expression, Non-Deterministic Finite Automata
Regular Expression to Minimized DFA Example Algorithm Visualization Visualization presenting examples of converting a Regular Expression to an equivalend NFA. OpenDSA Regular Expression, Non-Deterministic Finite Automata
NFA Conversion to Regular Expression Example Programmed Instruction Programmed Instruction Frameset presenting an example of converting a NFA to an equivalent Regular Expression. OpenDSA Regular Expression, Non-Deterministic Finite Automata
Regular Grammars Introduction Frameset Programmed Instruction Programmed Instruction Frameset presenting an introduction to regular grammars, their definitions and properties. OpenDSA Regular Grammar, Regular Language
Converting Regular Grammars to NFAs Frameset Programmed Instruction Programmed Instruction Frameset presenting a conversion from a regular grammar to an equivalent NFA. OpenDSA Regular Grammar, Regular Language, Non-Deterministic Finite Automata
Converting NFAs to Regular Grammars Frameset Programmed Instruction Programmed Instruction Frameset presenting a conversion from a NFA to an equivalent regular grammar. OpenDSA Regular Grammar, Regular Language, Non-Deterministic Finite Automata
Right and Left Regular Grammars Frameset Programmed Instruction Programmed Instruction Frameset presenting right and left regular grammars and conversion between them. OpenDSA Regular Grammar, Regular Language
Converting a RegEx to a Right Regular Grammar Frameset Programmed Instruction Programmed Instruction Frameset presenting a conversion from a regular expression to a right regular grammar. OpenDSA Regular Grammar, Regular Language
Converting a RegEx to a Left Regular Grammar Frameset Programmed Instruction Programmed Instruction Frameset presenting a conversion from a regular expression to a left regular grammar. OpenDSA Regular Grammar, Regular Language
Regular Grammar Exercise: NFA conversion Regular Expression Writing Exercise User writes a regular grammar equivalent to a given NFA: Exercise 1. OpenDSA Non-Deterministic Finite Automata, Regular Grammar
Regular Grammar Exercise: bb*aaa* Regular Expression Writing Exercise User writes an regular grammar for the language of strings that meet this regular expression: bb*aaa* OpenDSA Regular Expression
Regular Grammar Exercise: a's a Multiple of 3 Regular Expression Writing Exercise User writes an regular grammar for the language of strings with the number of a's being divisible by 3. OpenDSA Regular Expression
Regular Grammar Exercise: NFA Conversion 2 Regular Expression Writing Exercise User writes a regular grammar equivalent to a given NFA: Exercise 2. OpenDSA Non-Deterministic Finite Automata, Regular Grammar
Regular Grammar Exercise: NFA Conversion to Right Regular Grammar Regular Expression Writing Exercise User writes a right regular grammar equivalent to a given NFA: Exercise 2. OpenDSA Non-Deterministic Finite Automata, Regular Grammar
Regular Grammar Exercise: aaab*ba Regular Expression Writing Exercise User writes an regular grammar for the language of strings matching the regular expression (aaab*ba)*. OpenDSA Regular Expression
Regular Grammar Exercise: Number of a's and b's is Odd Regular Expression Writing Exercise User writes an regular grammar for the language of strings with an odd length. OpenDSA Regular Expression
Review of the Concept of Closure Properties Programmed Instruction Programmed Instruction Frameset reviewing the concept of closure properties, in the context of regular languages. OpenDSA Regular Language, Closure Property
Basic Closure Properties of Regular Languages Programmed Instruction Programmed Instruction Frameset presenting some basic operations that are closed for regular languages, like intersection. OpenDSA Regular Language, Closure Property
Closure Properties for Regular Languages: Right Quotient Programmed Instruction Programmed Instruction Frameset presenting the concept of right quotient, and a proof that this operator is closed for regular languages. OpenDSA Regular Language, Closure Property
Closure Properties for Regular Languages: Homomorphism Programmed Instruction Programmed Instruction Frameset presenting the concept of homomorphism, and a proof that this operator is closed for regular languages. OpenDSA Regular Language, Closure Property
Decideable Questions about Regular Languages Programmed Instruction Programmed Instruction Frameset reviews the concept of decideablilty and presenting some key questions that are decideable for regular languages. OpenDSA Regular Language
Introduction to the Concept of a Non-Regular Language Programmed Instruction Programmed Instruction slideshow introducing the concept of a non-regular language and ideas for how to recognize one. OpenDSA Non-Regular Language
Introduction to the Pumping Lemma Proof Visualization Introduction to the Pumping Lemma for regular languages. Includes a visualization for how this works. OpenDSA Pumping Lemma, Non-Regular Language
Introduction to the Concept of the Pumping Lemma Programmed Instruction Programmed Instruction slideshow introducing the concept of a the pumping lemma for regular languages. OpenDSA Non-Regular Language
Pumping Lemma Slideshow Proof Visualization Simple demonstration of a Pumping Lemma proof to show that a language is not regular. OpenDSA Pumping Lemma, Non-Regular Language
Pumping Lemma Example: a^n b^n Programmed Instruction, Proof Visualization Programmed Instruction slideshow showing the pumping lemma proof that the language a^n b^n is not regular. OpenDSA Non-Regular Language
Pumping Lemma Example: wwR Programmed Instruction, Proof Visualization Programmed Instruction slideshow showing the pumping lemma proof that the language consisting of a string w followed by the reverse... OpenDSA Non-Regular Language
Pumping Lemma Example: Harder Proof Programmed Instruction, Proof Visualization Programmed Instruction slideshow showing the harder pumping lemma proof where there are multiple cases to consider. OpenDSA Non-Regular Language
Pumping Lemma Game Interactive Proficiency Exercise Demonstration of an adversary argument for the Pumping Lemma, in the form of an adversary game. OpenDSA Pumping Lemma, Regular Language, Adversary Argument
Closure Properties to Show a Language Non-Regular Programmed Instruction, Proof Visualization Programmed Instruction slideshow introducing the concept of using closure properties to prove a language non-regular. OpenDSA Non-Regular Language, Closure Property
Closure Properties to Show a Language Non-Regular: Example 1 Programmed Instruction, Proof Visualization Programmed Instruction slideshow demonstrating an example of using closure properties to prove a language non-regular. Language: a^n b^m a^m. OpenDSA Non-Regular Language, Closure Property
Closure Properties to Show a Language Non-Regular: Example 2 Programmed Instruction, Proof Visualization Programmed Instruction slideshow demonstrating an example of using closure properties to prove a language non-regular. Example 2. OpenDSA Non-Regular Language, Closure Property
Context-Free Language Introduction Frameset Programmed Instruction Programmed Instruction Frameset introducing Context-Free Languages and their formal definition. OpenDSA Context-Free Language
Context-Free Language Derivations Frameset Programmed Instruction Programmed Instruction Frameset discussing derivations of strings from Context-Free Grammars. OpenDSA Context-Free Language
Context-Free Language Derivation Trees Frameset Programmed Instruction Programmed Instruction Frameset discussing derivation trees for Context-Free Grammars. OpenDSA Context-Free Language
Context-Free Language Derivation Trees Example Algorithm Visualization Visualization of a derviation tree from a given context-free grammar. OpenDSA Context-Free Language
Determining Number of Parse Tree Nodes Exercise: Alternate Calculation Exercise A collection of self-practice questions where users determine the number of nodes in a parse tree generated by a given... OpenDSA Context-Free Grammar, Parse Tree
Context-Free Language Membership Problem Frameset Programmed Instruction Programmed Instruction Frameset discussing how to recognize if a given string is derivable from a given Context-Free Grammar. OpenDSA Context-Free Language
Determining Whether a Given String is Derivable from Given Grammar Exercise: Alternate Calculation Exercise A collection of self-practice questions where users determine which strings can or cannot be derived from a given grammar: Alternate. OpenDSA Context-Free Grammar, Parse Tree
Context-Free Language Ambiguity Frameset Programmed Instruction Programmed Instruction Frameset discussing ambiguity in Context-Free Grammars. OpenDSA Context-Free Grammar
CFG Ambiguity 1 Exercise: Alternate Question Set A collection of self-practice questions where users determine whether a given string is parsed ambiguously or not. Alternate version. OpenDSA Context-Free Grammar, Ambiguity
CFG Ambiguity 2 Exercise: Alternate Question Set A second collection of self-practice questions where users determine whether a given string is parsed ambiguously or not. Alternate version. OpenDSA Context-Free Grammar, Ambiguity
CFG Ambiguity 3 Exercise: Alternate Question Set A third collection of self-practice questions where users determine whether a given string is parsed ambiguously or not. Alternate version. OpenDSA Context-Free Grammar, Ambiguity
CFG Determining Ambiguity Exercise: Alternate Question Set A collection of self-practice questions where users determine whether a given CFG is ambiguous or not. Alternate version. OpenDSA Context-Free Grammar, Ambiguity
CFG Expression Evaluation Exercise: Alternate Question Set A collection of self-practice questions where users evaluate a mathematical expression under the definition of a given CFG. Alternate version. OpenDSA Context-Free Grammar, Ambiguity
Unambiguous CFG Parse Tree Example Algorithm Visualization Visualization for the parse tree generated for a mathematical expression from a non-ambiguouse CFG. OpenDSA Context-Free Language, Parse Tree
CFG Associativity Exercise: Alternate Question Set A collection of self-practice questions where users evaluate a mathematical expression and deterimine if the grammar enforces correct associativity. Alternate... OpenDSA Context-Free Grammar, Ambiguity
CFG Precedence and Associativity Exercise: Alternate Question Set A collection of self-practice questions where users evaluate a mathematical expression and deterimine if the grammar enforces correct precedence and... OpenDSA Context-Free Grammar, Ambiguity
Language from CFG Exercise: Alternate Question Set A collection of self-practice questions where users select a language description for a given CFG. Alternate version. OpenDSA Context-Free Grammar
Extended BNF Exercise: Alternate Question Set A collection of self-practice questions where users select extended BNF statements matching a normal set of BNF statements. Alternate version. OpenDSA Context-Free Grammar
CFG Exercise: Odd length Grammar Construction Exercise User creates a CFG that generates strings in the language a^nb^m where m - n is positive, odd. OpenDSA Context-Free Grammar
CFG Exercise: a^mb^ic^n, i less than 3 Grammar Construction Exercise User creates a CFG that generates strings in the language a^mb^ic^n, i < 3. OpenDSA Context-Free Grammar
CFG Exercise: a^mb^ia^n, i=m+n Grammar Construction Exercise User creates a CFG that generates strings in the language a^mb^ia^n, i=m+n. OpenDSA Context-Free Grammar
CFG Exercise: a's and b's are equal Grammar Construction Exercise User creates a CFG that generates strings in the language where the number of a's and b's is equal. OpenDSA Context-Free Grammar
Context-Free Grammar Transformation Introduction Frameset Programmed Instruction Programmed Instruction Frameset discussing reasons for transforming Context-Free Grammars to simpler versions. OpenDSA Context-Free Grammar
Context-Free Grammar Transformation: Useless Productions Frameset Programmed Instruction Programmed Instruction Frameset discussing removing useless productions from Context-Free Grammars. OpenDSA Context-Free Grammar
Context-Free Grammar Transformation: Remove Lambda Productions Frameset Programmed Instruction Programmed Instruction Frameset discussing removing lambda productions from Context-Free Grammars. OpenDSA Context-Free Grammar
Context-Free Grammar Transformation: Remove Unit Productions Frameset Programmed Instruction Programmed Instruction Frameset discussing removing unit productions from Context-Free Grammars. OpenDSA Context-Free Grammar
Context-Free Grammar Transformation: Chomsky Normal Form Frameset Programmed Instruction Programmed Instruction Frameset discussing Chomsky Normal Form for Context-Free Grammars. OpenDSA Context-Free Grammar
Context-Free Grammar Transformation: Greibach Normal Form Frameset Programmed Instruction Programmed Instruction Frameset discussing Greibach Normal Form for Context-Free Grammars. OpenDSA Context-Free Grammar
DFA Exercise: Length a Multiple of 3 with No aab Automata Construction Exercise User creates a DFA that recognizes strings with length a multiple of 3 and containing no instance of aab. OpenDSA Context-Free Grammar
CFG Transformation Exercise 1 Grammar Construction Exercise User creates an equivalent CFG with no usless, lambda, or unit productions: Exercise 1. OpenDSA Context-Free Grammar
CFG Transformation Exercise 2 Grammar Construction Exercise User creates an equivalent CFG with no usless, lambda, or unit productions: Exercise 2. OpenDSA Context-Free Grammar
CFG Transformation: Chomsky Normal Form Grammar Construction Exercise User creates an equivalent CFG in Chomsky Normal Form. OpenDSA Context-Free Grammar
Pushdown Automata Introduction Frameset Programmed Instruction Programmed Instruction Frameset introducing Pushdown Automata and their formal definition. OpenDSA Pushdown Automata
Pushdown Automata Transitions Frameset Demonstration Programmed Instruction Frameset discussing Pushdown Automata transition types. OpenDSA Pushdown Automata
Pushdown Automata Acceptance Models Frameset Demonstration Programmed Instruction Frameset discussing Pushdown Automata acceptance models. OpenDSA Pushdown Automata
Pushdown Automata Empty Stack Acceptance Frameset Demonstration Programmed Instruction Frameset discussing Pushdown Automata and the empty stack acceptance model. OpenDSA Pushdown Automata
Pushdown Automata Acceptance Model Equivalence Frameset Demonstration Programmed Instruction Frameset discussing the equivalence of various Pushdown Automata acceptance models. OpenDSA Pushdown Automata
PDA Exercise: String and Reverse Automata Construction Exercise User creates a Pushdowns Automata that accepts the langugage WcW^R. OpenDSA Pushdown Automata
PDA Exercise: Equal a's and b's Automata Construction Exercise User creates a Pushdowns Automata that accepts the langugage a^ic^jb^i. OpenDSA Pushdown Automata
PDA Exercise: Twice as many a's as b's Automata Construction Exercise User creates a Pushdowns Automata that accepts the langugage of strings that have twice as many a's as b's. OpenDSA Pushdown Automata
PDA Exercise: Equal a's to b's or c's Automata Construction Exercise User creates a Pushdowns Automata that accepts the langugage of a's b's and c's with as many a's as either... OpenDSA Pushdown Automata
Pushdown Automata and Context Free Languages Demonstration Programmed Instruction Frameset discussing the relationship between Pushdown Automata and context free languages. OpenDSA Pushdown Automata
Deterministic vs Nondeterministic PDAs Demonstration Programmed Instruction Frameset discussing the differences between deterministic and non-deterministic PDAs. OpenDSA Pushdown Automata
Proof not all CFL are Deterministic Demonstration Programmed Instruction Frameset with a proof that there exists a CFL that is not a deterministic CFL. OpenDSA Pushdown Automata
Grammars for Deterministic CFL Demonstration Programmed Instruction Frameset discussing grammars for deterministic context free languages. OpenDSA Context-Free Language
Closure Properties for Context-Free Languages Programmed Instruction Programmed Instruction slideshow explaining the concept and giving examples of closure properties for Context-Free Languages. OpenDSA Context-Free Language, Closure Property
Pumping Lemma for Context-Free Languages Programmed Instruction Programmed Instruction slideshow introducing a pumping lemma for Context-Free Languages. OpenDSA Context-Free Language, Pumping Lemma
Context-Free Language Pumping Lemma Example 1 Programmed Instruction Programmed Instruction slideshow giving an example for using a pumping lemma to prove a language is not Context-Free: a^n b^n... OpenDSA Context-Free Language, Pumping Lemma
Context-Free Language Pumping Lemma Example 2 Programmed Instruction Programmed Instruction slideshow giving an example for using a pumping lemma to prove a language is not Context-Free: a^n b^n... OpenDSA Context-Free Language, Pumping Lemma
Context-Free Language Pumping Lemma Example 3 Programmed Instruction Programmed Instruction slideshow giving an example for using a pumping lemma to prove a language is not Context-Free: a^j b^k... OpenDSA Context-Free Language, Pumping Lemma
Context-Free Language Pumping Lemma Example 4 Programmed Instruction Programmed Instruction slideshow giving an example for using a pumping lemma to prove a language is not Context-Free: w, reverse... OpenDSA Context-Free Language, Pumping Lemma
Turing Machines Introduction Frameset Programmed Instruction Slideshow introducing the concept of a Turing machine and its formal definition. OpenDSA Collision Resolution
Turing Machines Configurations and Terminology Frameset Programmed Instruction Slideshow presenting the concept of a configuration for a Turing machine, along with defintions for terms like halting, accepting, and... OpenDSA Collision Resolution
Turing Machines Deciding vs. Accepting Frameset Programmed Instruction Slideshow presenting the distinction between a Turing Machine that decides a language (always halts with a decision) vs. one that... OpenDSA Turing Machine
Visualizaiton of the Turing Machine that accepts a^n b^n c^n Algorithm Visualization, Code Tracing Visualization Detailed trace on some examples for a Turing machine that accepts the langugage a^n b^n c^n. OpenDSA Turing Machine
Composition of Turing Machines Programmed Instruction Slideshow the formal conepts that support composition of Turing machines, which is a necessary step to building more complicated machines. OpenDSA Turing Machine
Turing Machine to Copy a String Algorithm Visualization, Code Tracing Visualization Slideshow presenting the execution of a Turing machine that copies a string. OpenDSA Turing Machine
Turing Machine Extensions Frameset Demonstration Slideshow presenting various potential extensions to Turing machines, such as two-dimensional tapes, multiple heads, and non-determinism. Includes proofs that these... OpenDSA Turing Machine
Turing Machine Exercise: Add an a Automata Construction Exercise User creates a Turing machine that adds an a to a string of a's. OpenDSA Turing Machine
Turing Machine Exercise: Erase abc Automata Construction Exercise User creates a Turing machine that erases a string of a's, b's, and c's. OpenDSA Turing Machine
Turing Machine Exercise: Keep abc Automata Construction Exercise User creates a Turing machine that moves over a string of a's, b's, and c's. OpenDSA Turing Machine
Turing Machine Exercise: Accept Powers of 2 Automata Construction Exercise User creates a Turing machine that accepts strings of a's with the number of characters being a power of 2. OpenDSA Turing Machine
Turing Machine Exercise: Decide Powers of 2 Automata Construction Exercise User creates a Turing machine that decides if strings of a's have a length that is a power of 2. OpenDSA Turing Machine
Turing Machine Exercise: Reverse a String Automata Construction Exercise User creates a Turing machine that, given string W, outputs WW^R. OpenDSA Turing Machine
Turing Machine Exercise: More a's Automata Construction Exercise User creates a Turing machine that recognizes the language with more a's than b's or c's. OpenDSA Turing Machine
Turing Machine Exercise: Replace aba with aca Automata Construction Exercise User creates a Turing machine that replaces every substring aba with aca. OpenDSA Turing Machine
Turing Machine Exercise: Palindromes Automata Construction Exercise User creates a Turing machine that recognizes the language of palindromes on strings of a's and b's. OpenDSA Turing Machine