{
  "title": "OpenDSA Complete Catalog",
  "desc": "OpenDSA Complete Catalog",
  "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,
  "build_cmap": true,
  "suppress_todo": true,
  "assumes": "recursion",
  "dispModComp": true,
  "glob_exer_options": {},
  "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": true,
    "partial_credit": false
  },
  "glob_extr_options": {
    "code-workout": {
      "points": 2.0,
      "required": true,
      "partial_credit": true,
      "enable_scrolling": true
    },
    "points": 1.0,
    "partial_credit": false
  },
  "glob_pe_options": {
    "threshold": 0.9,
    "points": 2.0,
    "required": true,
    "partial_credit": false
  },
  "chapters": {
    "Introduction to Software Design": {
      "IntroToSoftwareDesign/GettingStarted": {},
      "IntroToSoftwareDesign/InheritanceAndPolymorphism": {},
      "IntroToSoftwareDesign/ConditionalActions": {},
      "IntroToSoftwareDesign/SoftwareTesting": {},
      "IntroToSoftwareDesign/VariablesFieldsAndParameters": {},
      "IntroToSoftwareDesign/PicturesAndForEachLoops": {},
      "IntroToSoftwareDesign/AggregationStringsandMoreLoops": {},
      "IntroToSoftwareDesign/GroupingObjectsUsingListsAndNestedForLoops": {},
      "IntroToSoftwareDesign/ListAndLoopsDeepDive": {},
      "IntroToSoftwareDesign/Arrays": {},
      "IntroToSoftwareDesign/MultiDimensionalArrays": {},
      "IntroToSoftwareDesign/FileIO": {},
      "IntroToSoftwareDesign/MapsAndSets": {},
      "IntroToSoftwareDesign/StaticMainAndExceptions":{}
    },
    "Command Line and Git": {
      "CommandLine/About": {},
      "CommandLine/Exercisescmd": {},
      "Git/AboutGit": {},
      "Git/ExercisesGit": {}
    },
    "Introduction for Data Structures and Algorithms Courses": {
      "Background/IntroDSA": {}
    },
    "Object-Oriented Programming": {
      "Design/IntroOO": {},
      "Design/IntroUML": {},
      "Design/IntroProcess": {},
      "Design/ADT": {}
    },
    "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": {}
    },
    "Introduction to Pointers in Java": {
      "PointersJava/BasicPointers1": {},
      "PointersJava/BasicPointers2": {},
      "PointersJava/Syntax": {},
      "PointersJava/LocalMem": {},
      "PointersJava/HeapMem": {},
      "PointersJava/Links1": {},
      "PointersJava/Links2": {},
      "PointersJava/PointersCM": {},
      "PointersJava/ExercisesPtr": {},
      "PointersJava/LinkedChains": {}
    },
    "Mathematical Background": {
      "Background/MathpreIntro": {}, 
      "Background/SetDef": {},
      "Background/MiscMath": {},
      "Background/Logarithms": {},
      "Background/Summations": {},
      "Background/RecurrenceIntro": {},
      "Background/Proofs": {},
      "Background/Estimation": {},
      "Background/MathpreSumm": {}
    },
    "Algorithm Analysis": {
      "AlgAnal/AnalChap": {},
      "AlgAnal/AnalPrelim": {},
      "AlgAnal/AnalIntro": {},
      "AlgAnal/AnalCases": {},
      "AlgAnal/AnalCompvsAlg": {},
      "AlgAnal/AnalAsymptotic": {},
      "AlgAnal/AnalLower": {},
      "AlgAnal/AnalProgram": {},
      "AlgAnal/AnalProblem": {},
      "AlgAnal/AnalMisunderstanding": {},
      "AlgAnal/AnalMultiple": {},
      "AlgAnal/AnalSpace": {},
      "AlgAnal/AnalTuning": {},
      "AlgAnal/AlgAnalSummCS2": {},
      "AlgAnal/AlgAnalSummCS3": {}
    },
    "Recursion": {
      "RecurTutor/RecIntro": {},
      "RecurTutor/Write": {},
      "RecurTutor/CodeCompletionEx": {},
      "RecurTutor/HarderWrite": {},
      "RecurTutor/HarderCodeCompletionEx": {},
      "RecurTutor/WritingEx": {},
      "RecurTutor/Trace": {},
      "RecurTutor/TracingEx": {},
      "RecurTutor/RecSummaryEx": {}
    },
    "Linear Structures": {
      "List/ListIntro": {}, 
      "List/ListADT": {},
      "List/ListArray": {},
      "List/ListLinked": {},
      "List/ListAnalysis": {},
      "List/ListDouble": {},
      "List/ListElement": {},
      "List/StackArray": {},
      "List/StackLinked": {},
      "List/Freelist": {},
      "List/StackRecur": {},
      "List/Queue": {},
      "List/QueueLinked": {},
      "List/ListSumm": {}
    },
    "Design": {
      "Design/DesignPatterns": {},
      "Design/DesignAltList": {},
      "Design/Comparison": {},
      "Design/Dictionary": {}
    },
    "Binary Trees": {
      "Binary/BinaryTreeIntro": {}, 
      "Binary/BinaryTree": {},
      "Binary/RecursiveDS": {},
      "Binary/BinaryTreeFullThm": {},
      "Binary/BinaryTreeTraversal": {},
      "Binary/WritingTraversals": {},
      "BTRecurTutor/BinaryTreeInfFlw": {},
      "Binary/BinaryTreeImpl": {},
      "Binary/Composite": {},
      "Binary/BinaryTreeNodeSpace": {},
      "Binary/BST": {},
      "Binary/BSTDict": {},
      "BTRecurTutor/BinaryTreeGuidedInfFlw": {},
      "BTRecurTutor/MultipleBinaryTrees": {},
      "BTRecurTutor/BSTCheck": {},
      "Binary/CompleteTree": {},
      "Binary/Heaps": {},
      "Binary/Huffman": {},
      "Binary/TreeTrie": {},
      "Binary/HuffProof": {},
      "Binary/BinaryChapSumm": {}
    },
    "Sorting": {
      "Sorting/InSort": {},
      "Sorting/SortNotation": {},
      "Sorting/InsertionSort": {},
      "Sorting/BubbleSort": {},
      "Sorting/SelectionSort": {},
      "Sorting/ExchangeSort": {},
      "Sorting/SortOpt": {},
      "Sorting/Shellsort": {},
      "Sorting/Mergesort": {},
      "Sorting/MergesortImpl": {},
      "Sorting/Quicksort": {},
      "Sorting/Heapsort": {},
      "Sorting/BinSort": {},
      "Sorting/RadixSort": {},
      "Sorting/SortingEmpirical": {},
      "Sorting/SortingLowerBound": {},
      "Sorting/SortSumm": {}
    },
    "File Processing": {
      "Files/Secondary": {},
      "Files/Diskdrive": {},
      "Files/BuffPool": {},
      "Files/FileProg": {},
      "Files/ExternalSort": {}
    },
    "Hashing": {
      "Hashing/HashIntro": {},
      "Hashing/HashFunc": {},
      "Hashing/HashFuncExamp": {},
      "Hashing/OpenHash": {},
      "Hashing/BucketHash": {},
      "Hashing/HashCSimple": {},
      "Hashing/HashCImproved": {},
      "Hashing/HashAnal": {},
      "Hashing/HashDel": {},
      "Hashing/HashSumm": {}
    },
    "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": {},
      "Indexing/IndexingSumm": {}
    },
    "General Trees": {
      "General/GenTreeIntro": {},
      "General/UnionFind": {},
      "General/SequentialRep": {}
    },
    "Graphs": {
      "Graph/GraphIntro": {},
      "Graph/GraphImpl": {},
      "Graph/GraphTraversal": {},
      "Graph/GraphTopsort": {},
      "Graph/GraphShortest": {},
      "Graph/MCST": {},
      "Graph/Kruskal": {},
      "Graph/Floyd": {},
      "Graph/GraphCM": {}
    },
    "Spatial Data Structures": {
      "Spatial/Spatial": {},
      "Spatial/PRquadtree": {},
      "Spatial/KDtree": {},
      "Spatial/Bintree": {},
      "Spatial/OtherSpatial": {}
    },
    "Algorithms Introduction": {
      "SeniorAlgAnal/AAIntro": {},
      "SeniorAlgAnal/ProblemSolving": {},
      "SeniorAlgAnal/AAOverview": {}
    },
    "Analyzing Problems: The Basics": {
      "SeniorAlgAnal/TOH": {},
      "SeniorAlgAnal/BoundsReview": {},
      "SeniorAlgAnal/GrowthRate": {},
      "SeniorAlgAnal/AdvSumm": {},
      "SeniorAlgAnal/Recurrence": {}
    },
    "Searching": {
      "SeniorAlgAnal/SearchIntro": {},
      "Searching/UnsortedSearch": {},
      "Searching/SortedSearch": {},
      "SearchStruct/SkipList": {}
    },
    "Lower Bounds": {
      "Bounds/BoundMax": {},
      "Bounds/BoundAdversary": {},
      "Bounds/BoundState": {},
      "Bounds/BoundiBest": {},
      "Bounds/SortingOptimal": {},
      "SeniorAlgAnal/AmortAnal": {}
    },
    "Dynamic Programming": {
      "SeniorAlgAnal/DynamicProgramming": {}
    },
    "Limits to Computing": {
      "NP/LimComp": {},
      "NP/Reduction": {},
      "NP/NPComplete": {},
      "NP/provingNPC": {},
      "NP/circuitSAT": {},
      "NP/SAT": {},
      "NP/threeSAT": {},
      "NP/SAT_to_threeSAT": {},
      "NP/clique": {},
      "NP/independentSet": {},
      "NP/vertexCover": {},
      "NP/hamiltonianCycle": {},
      "NP/TSP": {},
      "NP/circuitSAT_to_SAT": {},
      "NP/threeSAT_to_clique": {},
      "NP/independentSet_to_vertexCover": {},
      "NP/threeSAT_to_hamiltonianCycle": {},
      "NP/clique_to_independentSet": {},
      "NP/hamiltonianCycle_to_TSP": {},
      "NP/NPCoping": {},
      "SeniorAlgAnal/Impossible": {}
    },
    "Number Problems": {
      "SeniorAlgAnal/Numeric": {},
      "SeniorAlgAnal/Matrix": {},
      "SeniorAlgAnal/Probabilistic": {},
      "SeniorAlgAnal/Primes": {},
      "SeniorAlgAnal/RandomNums": {},
      "SeniorAlgAnal/Transform": {},
      "SeniorAlgAnal/FFT": {}
    },
    "Grammars": {
      "PL/Grammars1": {},
      "PL/Grammars2": {},
      "PL/Grammars3": {},
      "PL/Grammars4": {},
      "PL/Grammars5": {}
    },
    "Functional Programming": {
      "PL/FP1": {},
      "PL/FP2": {},
      "PL/FP3": {},
      "PL/FP4": {},
      "PL/FP5": {},
      "PL/FP6": {},
      "PL/FP7": {},
      "PL/FP8": {},
      "PL/FP9": {}
    },
    "Lambda Calculus": {
      "PL/LCSyntax": {},
      "PL/LCSemantics": {},
      "PL/FreeBoundVariables": {},
      "PL/AlphaConversion": {},
      "PL/Substitution": {},
      "PL/BetaReduction": {},
      "PL/ReductionStrategies": {},
      "PL/ChurchNumerals": {},
      "PL/RecursiveFunctions": {}
    },
    "Interpreting the Functional Language SLang": {
      "PL/SLang1": {},
      "PL/Environment": {},
      "PL/SLang1withLetExpressions": {},
      "PL/SLang2": {},
      "PL/SLang2TTK": {}
    },
    "Variations on Parameter Passing": {
      "PL/SLang2ParameterPassing": {},
      "PL/LazyLists": {}
    },
    "Type Systems": {
      "PL/TypeSystems": {},
      "PL/TypeInference": {}
    },
    "Formal Languages Course Introduction": {
      "PIFLA/FLIntro": {},
      "PIFLA/FLOverview": {},
      "PIFLA/MajorConcepts": {},
      "PIFLA/IntroGrammarEx": {}
    },
    "Mathematical Background": {
      "PIFLA/SetNotationFLAFS": {},
      "PIFLA/Relations": {},
      "PIFLA/MathProof": {}
    },
    "Finite Acceptors": {
      "PIFLA/DFA": {},
      "PIFLA/DFAExercises1": {},
      "PIFLA/DFAExercises2": {},
      "PIFLA/DFAExercises3": {},
      "PIFLA/NFA": {},
      "PIFLA/NFAExercises": {},
      "PIFLA/DFAMinimization": {},
      "PIFLA/MinimizationEx": {}
    },
    "Regular Languages": {
      "PIFLA/RegEx": {},
      "PIFLA/RegExExercises": {},
      "PIFLA/RegExExercises2": {},
      "PIFLA/RegExPower": {},
      "PIFLA/RegularGrammars": {},
      "PIFLA/RegGramEx1": {},
      "PIFLA/RegGramEx2": {},
      "PIFLA/RegClosure": {}
    },
    "Identifying Non-regular Languages": {
      "PIFLA/NonRegular": {}
    },
    "Context-Free Grammars and Languages": {
      "PIFLA/CFG1": {},
      "PIFLA/CFG2": {},
      "PIFLA/BNF": {},
      "PIFLA/CFGExercises": {},
      "PIFLA/CFGTransformations": {},
      "PIFLA/CFGTransEx": {}
    },
    "Pushdown Automata": {
      "PIFLA/PDA": {},
      "PIFLA/PDAExercises": {},
      "PIFLA/PDACFL": {},
      "PIFLA/DPDA": {}
    },
    "Properties of Context-free Languages": {
      "PIFLA/CFLProp": {}
    },
    "Turing Machines": {
      "PIFLA/TuringMachines": {},
      "PIFLA/TuringMachinesAdv": {},
      "PIFLA/TMExercises": {}
    }
  }
}
