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