{
  "title": "OpenDSA Data Structures and Algorithms Modules Collection",
  "desc": "OpenDSA Data Structures and Algorithms Modules Collection",
  "build_dir": "Books", 
  "code_dir": "SourceCode/", 
  "code_lang": {
    "Java": {
      "ext": [
        "java"
      ], 
      "label": "Java", 
      "lang": "java"
    }, 
    "Java_Generic": {
      "ext": [
        "java"
      ], 
      "label": "Java (Generic)", 
      "lang": "java"
    }, 
    "C++": {
      "ext": [
        "cpp", 
        "h"
      ], 
      "label": "C++", 
      "lang": "C++"
    }
  }, 
  "lang": "en", 
  "build_JSAV": false, 
  "suppress_todo": false, 
  "dispModComp": true, 
  "glob_exer_options": {
    "JXOP-debug": "true"
  }, 
  "glob_ss_options": {
    "threshold": 1.0, 
    "points": 0.0, 
    "required": false,
    "partial_credit": false
  }, 
  "glob_ff_options": {
    "threshold": 1.0, 
    "points": 0.0, 
    "required": false,
    "partial_credit": false
  },
  "glob_ka_options": {
    "threshold": 5, 
    "points": 1.0, 
    "required": false,
    "partial_credit": false
  }, 
  "glob_extr_options": {
    "code-workout": {
      "points": 2.0
    }, 
    "points": 1.0,
    "partial_credit": false
  }, 
  "glob_pe_options": {
    "threshold": 0.9, 
    "points": 2.0, 
    "required": false,
    "partial_credit": false
  }, 
  "chapters": {
    "Preface": {
      "Intro": {}, 
      "Status": {}
    }, 
    "Introduction for Data Structures and Algorithms Courses": {
      "Background/IntroDSA": {
        "Some Software Engineering Topics": {
          "showsection": true
        }
      }
    }, 
    "Biographies": {
      "Biography/CarlGauss": {}, 
      "Biography/FrancisBacon": {}
    }, 
    "Programming Tutorials": {
      "Tutorials/cmdline": {}, 
      "Tutorials/parameters": {}, 
      "Tutorials/eclipseparameters": {}, 
      "Tutorials/webcattools": {}, 
      "Tutorials/debugmethods": {}, 
      "Tutorials/debug": {}, 
      "Tutorials/scanning": {}, 
      "Tutorials/randomaccessfile": {}, 
      "Tutorials/junitstart": {}, 
      "Tutorials/junitbasic": {}, 
      "Tutorials/junitcoverage": {},
      "Tutorials/MTeclipse": {},
      "Tutorials/MTbasics": {},
      "Tutorials/MTadvanced": {},
      "Testing/TriangleIntro": {},
      "Testing/TriangleCoverage": {},
      "Testing/BowlingIntro": {},
      "Testing/BowlingCoverage": {}
    }, 
    "Design I": {
      "Design/ADT": {
        "IntroADTSumm": {
          "threshold": 4
        }
      }, 
      "Design/IntroOO": {}, 
      "Design/IntroUML": {}, 
      "Design/IntroProcess": {}
    }, 
    "Introduction to Pointers in Java": {
      "PointersJava/PointerIntro": {},
      "PointersJava/BasicPointers1": {},
      "PointersJava/BasicPointers2": {
        "PointerEX1PRO": {
          "threshold": 1
        }, 
        "PointerEX2PRO": {
          "threshold": 1
        }
      }, 
      "PointersJava/Syntax": {},
      "PointersJava/LocalMem": {},
      "PointersJava/HeapMem": {},
      "PointersJava/Links1": {
        "PointerEX3PRO": {
          "threshold": 1
        }
      },
      "PointersJava/Links2": {},
      "PointersJava/ExercisesPtr": {}
    }, 
    "Mathematical Background": {
      "Background/MathpreIntro": {}, 
      "Background/SetDef": {
        "SetTFrelation": {
          "points": 2.0
        }, 
        "SetTFequivrel": {
          "threshold": 3
        }, 
        "SetTFpartialorder": {
          "threshold": 3
        }
      }, 
      "Background/MiscMath": {}, 
      "Background/Logarithms": {
        "MathLogSumm": {
          "points": 2.0, 
          "threshold": 10
        }
      }, 
      "Background/Summations": {}, 
      "Background/RecurrenceIntro": {}, 
      "Background/Proofs": {}, 
      "Background/Estimation": {}, 
      "Background/MathpreSumm": {}
    }, 
    "Searching I": {
      "Searching/BinarySearch": {
        "binarySearchPRO": {
          "points": 1.0, 
          "threshold": 1.0
        }
      }
    }, 
    "Algorithm Analysis": {
      "AlgAnal/AnalChap": {}, 
      "AlgAnal/AnalPrelim": {
        "AnalPrelimSumm": {
          "threshold": 4
        }
      }, 
      "AlgAnal/AnalIntro": {
        "CompareGrowth": {
          "points": 2.0, 
          "threshold": 3
        }, 
        "GrowthRatesPRO": {
          "threshold": 3
        }
      }, 
      "AlgAnal/AnalCases": {}, 
      "AlgAnal/AnalCompvsAlg": {
        "FasterCorASumm": {
          "threshold": 2
        }
      }, 
      "AlgAnal/AnalAsymptotic": {
        "UpperBoundsSumm": {
          "threshold": 4
        }
      }, 
      "AlgAnal/AnalLower": {
        "LowerThetaSumm": {
          "points": 2.0
        }
      }, 
      "AlgAnal/AnalProgram": {
        "binarySearchPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }, 
          "points": 1.0, 
          "threshold": 1.0
        }
      }, 
      "AlgAnal/AnalProblem": {}, 
      "AlgAnal/AnalMisunderstanding": {
        "MisSumm": {
          "threshold": 4
        }
      }, 
      "AlgAnal/AnalMultiple": {}, 
      "AlgAnal/AnalSpace": {}, 
      "AlgAnal/AnalTuning": {}, 
      "AlgAnal/AlgAnalSummCS2": {},
      "AlgAnal/AlgAnalSummCS3": {}
    }, 
    "Linear Structures": {
      "List/ListIntro": {}, 
      "List/ListADT": {
        "List ADT Programming Exercise": {
          "points": 1.0
        }
      }, 
      "List/ListArray": {
        "AlistInsertPRO": {
          "threshold": 3
        }, 
        "AlistRemovePRO": {
          "threshold": 4
        }, 
        "ALSumm": {
          "threshold": 3
        }
      }, 
      "List/ListLinked": {
        "LlistRemovePRO": {
          "points": 2
        }
      }, 
      "List/ListAnalysis": {
        "ListOverhead": {
          "threshold": 3
        }, 
        "LLSumm": {
          "points": 2, 
          "threshold": 6
        }
      }, 
      "List/ListDouble": {}, 
      "List/ListElement": {
        "ListSumm": {
          "threshold": 3
        }
      }, 
      "List/StackArray": {}, 
      "List/StackLinked": {}, 
      "List/Freelist": {}, 
      "List/StackRecur": {}, 
      "List/Queue": {}, 
      "List/QueueLinked": {}, 
      "List/ListSumm": {
        "ListdsSumm": {
          "points": 2
        }, 
        "ListChapterSumm": {
          "points": 2, 
          "threshold": 10
        }
      }
    }, 
    "Recursion": {
      "RecurTutor/RecIntro": {}, 
      "RecurTutor/Write": {}, 
      "RecurTutor/CodeCompletionEx": {
        "Recursion Programming Exercise: Largest": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Multiply": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: GCD": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: log": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Cummulative Sum": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Add odd values": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Sum Of the Digits": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Count Characters": {
          "points": 1.0
        }
      }, 
      "RecurTutor/HarderWrite": {}, 
      "RecurTutor/HarderCodeCompletionEx": {
        "Recursion Programming Exercise: Minimum of array": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Is Reverse": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Decimal to Binary": {
          "points": 1.0
        }
      }, 
      "RecurTutor/WritingEx": {
        "Recursion Programming Exercise: Cannonballs": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Check Palindrome": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Subset Sum": {
          "points": 1.0
        }, 
        "Recursion Programming Exercise: Pascal Triangle": {
          "points": 1.0
        }
      }, 
      "RecurTutor/Trace": {}, 
      "RecurTutor/TracingEx": {
        "RecTraceSummFwdFlow": {
          "threshold": 1.0
        }, 
        "RecTraceSummbckwrdFlow": {
          "threshold": 1.0
        }, 
        "RecTraceSummFuncErr": {
          "threshold": 1.0
        }, 
        "RecTraceSummTwoRC": {
          "threshold": 1.0
        }, 
        "RecTraceSummHowmany": {
          "threshold": 1.0
        }, 
        "RecTraceSummHard": {
          "threshold": 1.0
        }
      }, 
      "RecurTutor/RecSummaryEx": {}
    }, 
    "Design II": {
      "Design/DesignPatterns": {
        "DesignPatternSumm": {
          "threshold": 4
        }
      }, 
      "Design/DesignAltList": {}, 
      "Design/Comparison": {}, 
      "Design/Dictionary": {
        "DesignDictionarySumm": {
          "threshold": 3
        }
      }
    }, 
    "Binary Trees": {
      "Binary/BinaryTreeIntro": {}, 
      "Binary/BinaryTree": {
        "DefSumm": {
          "points": 2, 
          "threshold": 8
        }, 
        "Treeprobs": {
          "threshold": 4
        }
      }, 
      "Binary/RecursiveDS": {}, 
      "Binary/BinaryTreeFullThm": {}, 
      "Binary/BinaryTreeTraversal": {
        "btTravPreorderPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }, 
          "points": 1.0
        }, 
        "btTravPostorderPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }, 
          "points": 1.0
        }, 
        "btTravInorderPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }, 
          "points": 1.0
        }, 
        "TravSumm": {
          "threshold": 3
        }
      }, 
      "Binary/WritingTraversals": {
        "Binary Tree Increment By One Exercise": {
          "points": 1.0
        }
      }, 
      "BTRecurTutor/BinaryTreeInfFlw": {
        "BinaryTreeMistakesCON": {
          "points": 1.0, 
          "threshold": 0.9
        }
      }, 
      "Binary/BinaryTreeImpl": {}, 
      "Binary/Composite": {}, 
      "Binary/BinaryTreeNodeSpace": {
        "TreeOverheadFIB": {
          "points": 2
        }
      }, 
      "Binary/BST": {
        "BSTsearchPRO": {
          "exer_options": {
            "JXOP-code": "none", 
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "undo"
          }, 
          "points": 1.0
        }, 
        "BSTinsertPRO": {
          "exer_options": {
            "JXOP-code": "none", 
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "undo"
          }, 
          "points": 1.0
        }, 
        "BSTremovePRO": {
          "exer_options": {
            "JXOP-code": "none", 
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "undo"
          }
        }, 
        "BSTSumm": {
          "threshold": 2
        }
      }, 
      "Binary/BSTDict": {}, 
      "BTRecurTutor/BinaryTreeGuidedInfFlw": {
        "IneffBinaryTreeRangeCON": {
          "points": 1.0, 
          "threshold": 0.9
        }
      }, 
      "BTRecurTutor/MultipleBinaryTrees": {}, 
      "BTRecurTutor/BSTCheck": {}, 
      "Binary/CompleteTree": {}, 
      "Binary/Heaps": {
        "heapinsertPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }
        }, 
        "heapbuildPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }, 
          "points": 1.0
        }, 
        "heapremovePRO": {
          "exer_options": {
            "JXOP-code": "none"
          }
        }, 
        "HeapSumm": {
          "points": 2.0
        }
      }, 
      "Binary/Huffman": {}, 
      "Binary/TreeTrie": {}, 
      "Binary/HuffProof": {}, 
      "Binary/BinaryChapSumm": {
        "BinaryChapSumm": {
          "points": 2.0, 
          "threshold": 10
        }
      }
    }, 
    "Sorting": {
      "Sorting/InSort": {}, 
      "Sorting/SortNotation": {
        "SortIntroSumm": {
          "threshold": 3
        }
      }, 
      "Sorting/InsertionSort": {}, 
      "Sorting/BubbleSort": {
        "BubsortPRO": {
          "points": 2.0, 
          "threshold": 3
        }
      }, 
      "Sorting/SelectionSort": {
        "SelsortPRO": {
          "points": 2.0
        }
      }, 
      "Sorting/ExchangeSort": {
        "FindInversionsPRO": {
          "points": 2.0
        }
      }, 
      "Sorting/SortOpt": {
        "insertionSortWithoutSwapPRO": {
          "exer_options": {
            "JXOP-code": "none"
          }, 
          "points": 0.0
        }
      }, 
      "Sorting/Shellsort": {
        "shellsortPRO": {
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }, 
        "shellsortPerf": {
          "threshold": 1.0
        }
      }, 
      "Sorting/Mergesort": {
        "mergesortPRO": {
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }
      }, 
      "Sorting/MergesortImpl": {}, 
      "Sorting/Quicksort": {
        "quicksortPRO": {
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }
      }, 
      "Sorting/Heapsort": {
        "HeapsortStepPRO": {
          "points": 2.0
        }, 
        "heapsortPRO": {
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }
      }, 
      "Sorting/BinSort": {}, 
      "Sorting/RadixSort": {
        "RadixsortPRO": {
          "points": 2.0, 
          "threshold": 4
        }
      }, 
      "Sorting/SortingEmpirical": {},
      "Sorting/SortingLowerBound": {
        "SortBoundSumm": {
          "threshold": 4
        }
      }, 
      "Sorting/SortSumm": {
        "SortChapterSumm": {
          "points": 2, 
          "threshold": 10
        }
      }
    }, 
    "File Processing": {
      "Files/FileProc": {}, 
      "Files/Secondary": {}, 
      "Files/Diskdrive": {}, 
      "Files/BuffPool": {}, 
      "Files/FileProg": {}, 
      "Files/ExternalSort": {
        "extRSPRO": {
          "points": 1.0, 
          "threshold": 1.0
        }, 
        "extMultiMergePRO": {
          "points": 1.0
        }
      }
    }, 
    "Hashing": {
      "Hashing/HashIntro": {}, 
      "Hashing/HashFunc": {
        "BirthdayFIB": {
          "threshold": 3
        }
      }, 
      "Hashing/HashFuncExamp": {
        "MidSquare": {
          "points": 0.5, 
          "threshold": 1.0
        }, 
        "StringSimple": {
          "points": 0.5, 
          "threshold": 1.0
        }, 
        "StringSfold": {
          "points": 0.5, 
          "threshold": 1.0
        }
      }, 
      "Hashing/OpenHash": {
        "OpenHashPRO": {
          "points": 2.0
        }
      }, 
      "Hashing/BucketHash": {}, 
      "Hashing/HashCSimple": {}, 
      "Hashing/HashCImproved": {
        "HashLinearStepPPRO": {
          "points": 2.0
        }, 
        "HashPseudoRandomPPRO": {
          "points": 2.0
        }, 
        "HashQuadraticPPRO": {
          "points": 2.0
        }, 
        "HashDoublePPRO": {
          "points": 2.0
        }
      }, 
      "Hashing/HashAnal": {}, 
      "Hashing/HashDel": {
        "HashDelSumm": {
          "threshold": 3
        }
      }, 
      "Hashing/HashSumm": {
        "HashChapterSumm": {
          "points": 2.0, 
          "threshold": 10
        }
      }
    }, 
    "Memory Management": {
      "MemManage/MemmanIntro": {}, 
      "MemManage/Dynamic": {}, 
      "MemManage/SequentialFit": {}, 
      "MemManage/FirstFit": {}, 
      "MemManage/CircularFit": {}, 
      "MemManage/BestFit": {}, 
      "MemManage/WorstFit": {}, 
      "MemManage/MMPerformance": {}, 
      "MemManage/Buddy": {}, 
      "MemManage/Garbage": {}
    }, 
    "Indexing": {
      "Indexing/IndexIntro": {}, 
      "Indexing/LinearIndexing": {}, 
      "Indexing/ISAM": {}, 
      "Indexing/TreeIndexing": {}, 
      "Indexing/TwoThreeTree": {}, 
      "Indexing/BTree": {
        "bPlusTreeInsertPRO": {
          "exer_options": {
            "JXOP-feedback": "continuous"
          }
        }
      }, 
      "Indexing/IndexingSumm": {
        "IndexChoice": {
          "points": 2
        }
      }
    }, 
    "General Trees": {
      "General/GenTreeIntro": {},
      "General/UnionFind": {},
      "General/SequentialRep": {}
    }, 
    "Graphs": {
      "Graph/GraphIntro": {
        "GspaceCalcSumm": {
          "points": 2.0
        }, 
        "GraphIntroSumm": {
          "points": 3.0, 
          "threshold": 10
        }
      }, 
      "Graph/GraphImpl": {}, 
      "Graph/GraphTraversal": {},
      "Graph/GraphTopsort": {}, 
      "Graph/GraphShortest": {},
      "Graph/MCST": {}, 
      "Graph/Kruskal": {},
      "Graph/Floyd": {}
    }, 
    "Spatial Data Structures": {
      "Spatial/Spatial": {}, 
      "Spatial/PRquadtree": {}, 
      "Spatial/KDtree": {}, 
      "Spatial/Bintree": {}, 
      "Spatial/OtherSpatial": {}
    }, 
    "Senior Algorithms Course": {
      "SeniorAlgAnal/AAIntro": {}, 
      "SeniorAlgAnal/ProblemSolving": {}, 
      "SeniorAlgAnal/AAOverview": {}, 
      "SeniorAlgAnal/TOH": {}, 
      "SeniorAlgAnal/BoundsReview": {}, 
      "SeniorAlgAnal/GrowthRate": {}, 
      "SeniorAlgAnal/AdvSumm": {}, 
      "SeniorAlgAnal/Recurrence": {}
    }, 
    "Searching": {
      "Searching/SearchIntro": {}, 
      "Searching/UnsortedSearch": {}, 
      "Searching/SortedSearch": {}, 
      "Searching/SelfOrg": {
        "SelfOrgCounterPRO": {
          "points": 2.0, 
          "threshold": 0.9, 
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }, 
        "SelfOrgM2FPRO": {
          "points": 2.0, 
          "threshold": 0.9, 
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }, 
        "SelfOrgTransposePRO": {
          "points": 2.0, 
          "threshold": 0.9, 
          "exer_options": {
            "JXOP-feedback": "continuous", 
            "JXOP-fixmode": "fix"
          }
        }
      }, 
      "Development/SetSearch": {}, 
      "Development/PerfectHash": {}
    }, 
    "Lower Bounds": {
      "Bounds/BoundMax": {}, 
      "Bounds/BoundAdversary": {}, 
      "Bounds/BoundState": {}, 
      "Bounds/BoundiBest": {}, 
      "Bounds/SortingOptimal": {}
    }, 
    "Number Problems": {
      "SeniorAlgAnal/Numeric": {}, 
      "SeniorAlgAnal/Transform": {},
      "SeniorAlgAnal/FFT": {}
    }, 
    "Probabilistic Algorithms": {
      "SeniorAlgAnal/Probabilistic": {}, 
      "SeniorAlgAnal/Primes": {}, 
      "SeniorAlgAnal/RandomNums": {}, 
      "SearchStruct/SkipList": {}
    }, 
    "Search Structures": {
      "SearchStruct/BalancedTree": {}, 
      "SearchStruct/AVL": {}, 
      "SearchStruct/Splay": {}, 
      "SearchStruct/RedBlack": {
        "redBlackTreeColoring": {
          "points": 1.0
        }, 
        "redBlackTreePRO": {
          "points": 1.0
        }
      }
    }, 
    "Miscellaneous": {
      "SearchStruct/Sparse": {},
      "SeniorAlgAnal/DynamicProgramming": {}, 
      "SeniorAlgAnal/AmortAnal": {}, 
      "Development/Knapsack": {
        "sackProficiency": {
          "points": 1
        }
      }, 
      "Development/EditDistance": {
        "editRCT": {
          "points": 1, 
          "threshold": 0.9
        }, 
        "editPrune": {
          "points": 1, 
          "threshold": 0.9
        }, 
        "editOptimal": {
          "points": 1, 
          "threshold": 0.9
        }
      }, 
      "Development/StringSearchKMP": {},
      "Development/StringSearchBoyerMoore": {},
      "Development/StringSearchRabinKarp": {},
      "Development/GenTreeImplement": {},
      "Development/Kary": {}
    },
    "Limits to Computing": {
      "NP/LimComp": {},
      "NP/Reduction": {}, 
      "NP/NPComplete": {}, 
      "NP/circuitSAT": {}, 
      "NP/SAT": {}, 
      "NP/threeSAT": {
        "threeSATPRO": {
          "threshold": 1.0
        }
      },
      "NP/clique": {
        "cliquePRO": {
          "threshold": 1.0
        }
      },
      "NP/independentSet": {
        "independentSetPRO": {
          "threshold": 1.0
        }
      },
      "NP/vertexCover": {
        "vertexCoverPRO": {
          "threshold": 1.0
        }
      },
      "NP/hamiltonianCycle": {
        "hamiltonianCycPRO": {
          "threshold": 1.0
        }
      },
      "NP/TSP": {
        "TSPPRO": {
          "threshold": 1.0
        }
      },
      "NP/provingNPC": {},
      "NP/circuitSAT_to_SAT": {},
      "NP/SAT_to_threeSAT": {},
      "NP/threeSAT_to_clique": {},
      "NP/clique_to_independentSet": {},
      "NP/independentSet_to_vertexCover": {},
      "NP/threeSAT_to_hamiltonianCycle": {},
      "NP/hamiltonianCycle_to_TSP": {},
      "NP/NPCoping": {},
      "SeniorAlgAnal/Impossible": {},
      "SeniorAlgAnal/Turing": {}
    },
    "Appendix": {
      "Glossary": {},
      "Bibliography": {}
    }
  }
}
