{"chapters": {"modules": {"Background/IntroDSA": {"long_name": "Data Structures and Algorithms", "sections": {"Data Structures and Algorithms": {"IntroSumm": {"long_name": "Introduction Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/IntroSumm.html", "mod_name": "IntroDSA", "threshold": 5}}, "Some Software Engineering Topics": {"showsection": true}}, "exercises": {"IntroSumm": {"long_name": "Introduction Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/IntroSumm.html", "mod_name": "IntroDSA", "threshold": 5}}}, "Biography/CarlGauss": {"long_name": "Spotlight: Carl Friedrich Gauss", "sections": {"Spotlight: Carl Friedrich Gauss": {}}, "exercises": {}}, "Biography/FrancisBacon": {"long_name": "Spotlight: Francis Bacon", "sections": {"Spotlight: Francis Bacon": {}}, "exercises": {}}, "Tutorials/cmdline": {"long_name": "Command Line Basics", "sections": {"What's A CLI?": {}}, "exercises": {}}, "Tutorials/parameters": {"long_name": "Parsing Command Line Parameters In Your Progam", "sections": {"Parameters In Programming": {}}, "exercises": {}}, "Tutorials/eclipseparameters": {"long_name": "Using Parameters in Eclipse", "sections": {"Using Parameters in Eclipse": {}}, "exercises": {}}, "Tutorials/webcattools": {"long_name": "Installing the Web-CAT Submission Plug-in for Eclipse", "sections": {"Introduction": {}, "Installing the Plug-in": {}, "Installing student.jar": {}, "Installing formatting support": {}}, "exercises": {}}, "Tutorials/debugmethods": {"long_name": "Common Debugging Methods", "sections": {"Common Debugging Methods": {}}, "exercises": {}}, "Tutorials/debug": {"long_name": "Debugging In Eclipse", "sections": {"Debugging In Eclipse": {}}, "exercises": {}}, "Tutorials/scanning": {"long_name": "Reading Input (from Files or Otherwise)", "sections": {"The Scanner Class": {}}, "exercises": {}}, "Tutorials/randomaccessfile": {"long_name": "Random Access Files In Java", "sections": {"Understanding File I/O": {}}, "exercises": {}}, "Tutorials/junitstart": {"long_name": "JUnit Testing And You", "sections": {"Getting Started": {}}, "exercises": {}}, "Tutorials/junitbasic": {"long_name": "Writing JUnit Tests", "sections": {"Writing JUnit Tests": {}}, "exercises": {}}, "Tutorials/junitcoverage": {"long_name": "Code Coverage In JUnit", "sections": {"Code Coverage In JUnit": {}}, "exercises": {}}, "Design/ADT": {"long_name": "Abstract Data Types", "sections": {"Abstract Data Types": {"ADTCON": {"type": "dgm", "mod_name": "ADT"}, "CMdatatypeSumm": {"long_name": "Concept map data types exercises", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/CMP/CMdatatypeSumm.html", "mod_name": "ADT", "threshold": 5}, "IntroADTSumm": {"long_name": "ADT Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/IntroADTSumm.html", "mod_name": "ADT", "threshold": 4}}}, "exercises": {"ADTCON": {"type": "dgm", "mod_name": "ADT"}, "CMdatatypeSumm": {"long_name": "Concept map data types exercises", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/CMP/CMdatatypeSumm.html", "mod_name": "ADT", "threshold": 5}, "IntroADTSumm": {"long_name": "ADT Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/IntroADTSumm.html", "mod_name": "ADT", "threshold": 4}}}, "Design/IntroOO": {"long_name": "Introduction to Object Oriented Programming", "sections": {"Introduction to Object Oriented Programming": {"CMoopSumm": {"long_name": "Concept map OOP exercises", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/CMP/CMoopSumm.html", "mod_name": "IntroOO", "threshold": 5}}}, "exercises": {"CMoopSumm": {"long_name": "Concept map OOP exercises", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/CMP/CMoopSumm.html", "mod_name": "IntroOO", "threshold": 5}}}, "Design/IntroUML": {"long_name": "The Unified Modeling Language", "sections": {"The Unified Modeling Language": {}}, "exercises": {}}, "Design/IntroProcess": {"long_name": "Software Development Processes", "sections": {"Software Development Processes": {}}, "exercises": {}}, "PointersJava/PointerIntro": {"long_name": "Pointers Chapter Introduction", "sections": {}, "exercises": {}}, "PointersJava/BasicPointers1": {"long_name": "Basic References Part 1", "sections": {"Pointers and References": {}, "Data Types in Java": {"primativeVsRefCON": {"long_name": "primativeVsRefCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/primativeVsRefCON.css"], "scripts": ["AV/Pointers/primativeVsRefCON.js"], "mod_name": "BasicPointers1"}}, "Referencing and Dereferencing": {"empRefnullCON": {"type": "dgm", "mod_name": "BasicPointers1"}}, "changePointeeDataDirect": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changePointeeDataDirect", "long_name": "changePointeeDataDirect", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "419", "type": "extr", "mod_name": "BasicPointers1"}, "The Employee Class": {}, "Reference Assignments": {"empRefsecondCON": {"type": "dgm", "mod_name": "BasicPointers1"}}, "circularList1": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "circularList1", "long_name": "circularList1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "421", "type": "extr", "mod_name": "BasicPointers1"}}, "exercises": {"primativeVsRefCON": {"long_name": "primativeVsRefCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/primativeVsRefCON.css"], "scripts": ["AV/Pointers/primativeVsRefCON.js"], "mod_name": "BasicPointers1"}, "empRefnullCON": {"type": "dgm", "mod_name": "BasicPointers1"}, "changePointeeDataDirect": {"long_name": "changePointeeDataDirect", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "empRefsecondCON": {"type": "dgm", "mod_name": "BasicPointers1"}, "circularList1": {"long_name": "circularList1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "PointersJava/BasicPointers2": {"long_name": "Basic References Part 2", "sections": {"Sharing": {"PointerEX1PRO": {"long_name": "PointerEX1PRO", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Pointers/PointerEX1PRO.html", "mod_name": "BasicPointers2", "threshold": 1}}, "Shallow and Deep Copying": {"shallowdeepCON": {"type": "dgm", "mod_name": "BasicPointers2"}, "shallowdeepExampleCON": {"long_name": "Shallow Deep Copy Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/shallowdeepExampleCON.css"], "scripts": ["AV/Pointers/shallowdeepExampleCON.js"], "mod_name": "BasicPointers2"}, "PointerEX2PRO": {"long_name": "PointerEX2PRO", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Pointers/PointerEX2PRO.html", "mod_name": "BasicPointers2", "threshold": 1}}, "Shallow and Deep Comparing": {}, "Bad References": {"empRefnullCON": {"type": "dgm", "mod_name": "BasicPointers2"}, "badPointerPowCON": {"long_name": "badPointerPowCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/badPointerPowCON.css"], "scripts": ["AV/Pointers/badPointerPowCON.js"], "mod_name": "BasicPointers2"}}}, "exercises": {"PointerEX1PRO": {"long_name": "PointerEX1PRO", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Pointers/PointerEX1PRO.html", "mod_name": "BasicPointers2", "threshold": 1}, "shallowdeepCON": {"type": "dgm", "mod_name": "BasicPointers2"}, "shallowdeepExampleCON": {"long_name": "Shallow Deep Copy Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/shallowdeepExampleCON.css"], "scripts": ["AV/Pointers/shallowdeepExampleCON.js"], "mod_name": "BasicPointers2"}, "PointerEX2PRO": {"long_name": "PointerEX2PRO", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Pointers/PointerEX2PRO.html", "mod_name": "BasicPointers2", "threshold": 1}, "empRefnullCON": {"type": "dgm", "mod_name": "BasicPointers2"}, "badPointerPowCON": {"long_name": "badPointerPowCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/badPointerPowCON.css"], "scripts": ["AV/Pointers/badPointerPowCON.js"], "mod_name": "BasicPointers2"}}}, "PointersJava/Syntax": {"long_name": "Pointers Syntax", "sections": {"Syntax": {"employeePtr2CON": {"long_name": "employeePtr2CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/employeePtr2CON.css"], "scripts": ["AV/Pointers/employeePtr2CON.js"], "mod_name": "Syntax"}, "examplePointerCodeCON": {"long_name": "examplePointerCodeCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/examplePointerCodeCON.css"], "scripts": ["AV/Pointers/examplePointerCodeCON.js"], "mod_name": "Syntax"}}, "changeHeadPointer1": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changeHeadPointer1", "long_name": "changeHeadPointer1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "415", "type": "extr", "mod_name": "Syntax"}, "Java References vs Pointers": {}, "How Are References Implemented In The Machine?": {"memoryModelCON": {"type": "dgm", "mod_name": "Syntax"}}}, "exercises": {"employeePtr2CON": {"long_name": "employeePtr2CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/employeePtr2CON.css"], "scripts": ["AV/Pointers/employeePtr2CON.js"], "mod_name": "Syntax"}, "examplePointerCodeCON": {"long_name": "examplePointerCodeCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/examplePointerCodeCON.css"], "scripts": ["AV/Pointers/examplePointerCodeCON.js"], "mod_name": "Syntax"}, "changeHeadPointer1": {"long_name": "changeHeadPointer1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "memoryModelCON": {"type": "dgm", "mod_name": "Syntax"}}}, "PointersJava/LocalMem": {"long_name": "Local Memory", "sections": {"Local Memory": {"simpleLifetimeCON": {"long_name": "simpleLifetimeCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/simpleLifetimeCON.css"], "scripts": ["AV/Pointers/simpleLifetimeCON.js"], "mod_name": "LocalMem"}, "T1-T5CON": {"long_name": "T1-T5CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/T1-T5CON.css"], "scripts": ["AV/Pointers/T1-T5CON.js"], "mod_name": "LocalMem"}}}, "exercises": {"simpleLifetimeCON": {"long_name": "simpleLifetimeCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/simpleLifetimeCON.css"], "scripts": ["AV/Pointers/simpleLifetimeCON.js"], "mod_name": "LocalMem"}, "T1-T5CON": {"long_name": "T1-T5CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/T1-T5CON.css"], "scripts": ["AV/Pointers/T1-T5CON.js"], "mod_name": "LocalMem"}}}, "PointersJava/HeapMem": {"long_name": "Heap Memory", "sections": {"Heap Memory": {"garbageDisposalCON": {"long_name": "garbageDisposalCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/garbageDisposalCON.css"], "scripts": ["AV/Pointers/garbageDisposalCON.js"], "mod_name": "HeapMem"}, "LocalHeapaloc": {"type": "dgm", "mod_name": "HeapMem"}, "LocalHeapdealoc": {"type": "dgm", "mod_name": "HeapMem"}, "LocalHeapintptr42": {"long_name": "LocalHeapintptr42", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/LocalHeapintptr42.css"], "scripts": ["AV/Pointers/LocalHeapintptr42.js"], "mod_name": "HeapMem"}}}, "exercises": {"garbageDisposalCON": {"long_name": "garbageDisposalCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/garbageDisposalCON.css"], "scripts": ["AV/Pointers/garbageDisposalCON.js"], "mod_name": "HeapMem"}, "LocalHeapaloc": {"type": "dgm", "mod_name": "HeapMem"}, "LocalHeapdealoc": {"type": "dgm", "mod_name": "HeapMem"}, "LocalHeapintptr42": {"long_name": "LocalHeapintptr42", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/LocalHeapintptr42.css"], "scripts": ["AV/Pointers/LocalHeapintptr42.js"], "mod_name": "HeapMem"}}}, "PointersJava/Links1": {"long_name": "Link Nodes", "sections": {"Link Nodes": {"linkNodes1CON": {"long_name": "linkNodes1CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/linkNodes1CON.css"], "scripts": ["AV/Pointers/linkNodes1CON.js"], "mod_name": "Links1"}, "linkNodes2CON": {"long_name": "linkNodes2CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/linkNodes2CON.css"], "scripts": ["AV/Pointers/linkNodes2CON.js"], "mod_name": "Links1"}, "PointerEX3PRO": {"long_name": "PointerEX3PRO", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Pointers/PointerEX3PRO.html", "mod_name": "Links1", "threshold": 1}}}, "exercises": {"linkNodes1CON": {"long_name": "linkNodes1CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/linkNodes1CON.css"], "scripts": ["AV/Pointers/linkNodes1CON.js"], "mod_name": "Links1"}, "linkNodes2CON": {"long_name": "linkNodes2CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Pointers/linkNodes2CON.css"], "scripts": ["AV/Pointers/linkNodes2CON.js"], "mod_name": "Links1"}, "PointerEX3PRO": {"long_name": "PointerEX3PRO", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Pointers/PointerEX3PRO.html", "mod_name": "Links1", "threshold": 1}}}, "PointersJava/Links2": {"long_name": "Link Nodes Practice Exercises", "sections": {"createList": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "createList", "long_name": "createList", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "type": "extr", "mod_name": "Links2"}, "iterateOverList": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "iterateOverList", "long_name": "iterateOverList", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "type": "extr", "mod_name": "Links2"}, "changePointeeNext1": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changePointeeNext1", "long_name": "changePointeeNext1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "type": "extr", "mod_name": "Links2"}, "addNodeAtHead": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "addNodeAtHead", "long_name": "addNodeAtHead", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "429", "type": "extr", "mod_name": "Links2"}}, "exercises": {"createList": {"long_name": "createList", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "iterateOverList": {"long_name": "iterateOverList", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changePointeeNext1": {"long_name": "changePointeeNext1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "addNodeAtHead": {"long_name": "addNodeAtHead", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "PointersJava/Exercises": {"long_name": "Additional Practice Exercises", "sections": {"changeHeadPointer2": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changeHeadPointer2", "long_name": "changeHeadPointer2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "416", "type": "extr", "mod_name": "Exercises"}, "changeQPointer": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changeQPointer", "long_name": "changeQPointer", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "417", "type": "extr", "mod_name": "Exercises"}, "changeRPointer": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changeRPointer", "long_name": "changeRPointer", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "418", "type": "extr", "mod_name": "Exercises"}, "changePointeeDataInDirect": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changePointeeDataInDirect", "long_name": "changePointeeDataInDirect", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "420", "type": "extr", "mod_name": "Exercises"}, "circularList2": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "circularList2", "long_name": "circularList2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "422", "type": "extr", "mod_name": "Exercises"}, "circularList3": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "circularList3", "long_name": "circularList3", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "423", "type": "extr", "mod_name": "Exercises"}, "changePointeeNext2": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changePointeeNext2", "long_name": "changePointeeNext2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "425", "type": "extr", "mod_name": "Exercises"}, "findValueInList": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "findValueInList", "long_name": "findValueInList", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "427", "type": "extr", "mod_name": "Exercises"}, "addNodeAtTail": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "addNodeAtTail", "long_name": "addNodeAtTail", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "430", "type": "extr", "mod_name": "Exercises"}, "changeNodesOrder1": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changeNodesOrder1", "long_name": "changeNodesOrder1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "431", "type": "extr", "mod_name": "Exercises"}, "changeNodesOrder2": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "changeNodesOrder2", "long_name": "changeNodesOrder2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "432", "type": "extr", "mod_name": "Exercises"}}, "exercises": {"changeHeadPointer2": {"long_name": "changeHeadPointer2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changeQPointer": {"long_name": "changeQPointer", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changeRPointer": {"long_name": "changeRPointer", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changePointeeDataInDirect": {"long_name": "changePointeeDataInDirect", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "circularList2": {"long_name": "circularList2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "circularList3": {"long_name": "circularList3", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changePointeeNext2": {"long_name": "changePointeeNext2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "findValueInList": {"long_name": "findValueInList", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "addNodeAtTail": {"long_name": "addNodeAtTail", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changeNodesOrder1": {"long_name": "changeNodesOrder1", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "changeNodesOrder2": {"long_name": "changeNodesOrder2", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "Background/MathpreIntro": {"long_name": "Chapter Introduction", "sections": {}, "exercises": {}}, "Background/SetDef": {"long_name": "Sets and Relations", "sections": {"Set Notation": {"SetTFrelation": {"long_name": "Relations Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Background/SetTFrelation.html", "mod_name": "SetDef", "threshold": 5}}, "Equivalence Relations": {"SetTFequivrel": {"long_name": "Equivalence Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/SetTFequivrel.html", "mod_name": "SetDef", "threshold": 3}}, "Partial Orders": {"SetTFpartialorder": {"long_name": "PartialOrder Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/SetTFpartialorder.html", "mod_name": "SetDef", "threshold": 3}}}, "exercises": {"SetTFrelation": {"long_name": "Relations Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Background/SetTFrelation.html", "mod_name": "SetDef", "threshold": 5}, "SetTFequivrel": {"long_name": "Equivalence Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/SetTFequivrel.html", "mod_name": "SetDef", "threshold": 3}, "SetTFpartialorder": {"long_name": "PartialOrder Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/SetTFpartialorder.html", "mod_name": "SetDef", "threshold": 3}}}, "Background/MiscMath": {"long_name": "Miscellaneous Notation", "sections": {}, "exercises": {}}, "Background/Logarithms": {"long_name": "Logarithms", "sections": {"Logarithms": {"MathLogSumm": {"long_name": "Logarithms Practice Questions", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Background/MathLogSumm.html", "mod_name": "Logarithms", "threshold": 10}}}, "exercises": {"MathLogSumm": {"long_name": "Logarithms Practice Questions", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Background/MathLogSumm.html", "mod_name": "Logarithms", "threshold": 10}}}, "Background/Summations": {"long_name": "Summations", "sections": {"Summations": {"SummationOneToNCON": {"long_name": "Summation of the first N Integers visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/SummationOneToNCON.css"], "scripts": ["AV/Background/SummationOneToNCON.js"], "mod_name": "Summations"}, "SummationTwoPowerICON": {"long_name": "Summation Two Power I visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/SummationTwoPowerICON.css"], "scripts": ["AV/Background/SummationTwoPowerICON.js"], "mod_name": "Summations"}}}, "exercises": {"SummationOneToNCON": {"long_name": "Summation of the first N Integers visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/SummationOneToNCON.css"], "scripts": ["AV/Background/SummationOneToNCON.js"], "mod_name": "Summations"}, "SummationTwoPowerICON": {"long_name": "Summation Two Power I visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/SummationTwoPowerICON.css"], "scripts": ["AV/Background/SummationTwoPowerICON.js"], "mod_name": "Summations"}}}, "Background/RecurrenceIntro": {"long_name": "Recurrence Relations", "sections": {"Recurrence Relations": {"LinearRecurrencesCON": {"long_name": "Linear Recurrences Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/LinearRecurrencesCON.css"], "scripts": ["AV/Background/LinearRecurrencesCON.js"], "mod_name": "RecurrenceIntro"}, "LinearRecurrencesNCON": {"long_name": "Linear Recurrences Slideshow (n)", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/LinearRecurrencesNCON.css"], "scripts": ["AV/Background/LinearRecurrencesNCON.js"], "mod_name": "RecurrenceIntro"}}}, "exercises": {"LinearRecurrencesCON": {"long_name": "Linear Recurrences Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/LinearRecurrencesCON.css"], "scripts": ["AV/Background/LinearRecurrencesCON.js"], "mod_name": "RecurrenceIntro"}, "LinearRecurrencesNCON": {"long_name": "Linear Recurrences Slideshow (n)", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/LinearRecurrencesNCON.css"], "scripts": ["AV/Background/LinearRecurrencesNCON.js"], "mod_name": "RecurrenceIntro"}}}, "Background/Proofs": {"long_name": "Mathematical Proof Techniques", "sections": {"Mathematical Proof Techniques": {"twoColorCON": {"type": "dgm", "mod_name": "Proofs"}, "TwoColoringProofCON": {"long_name": "Two Coloring Proof Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/TwoColoringProofCON.css"], "scripts": ["AV/Background/TwoColoringProofCON.js"], "mod_name": "Proofs"}}}, "exercises": {"twoColorCON": {"type": "dgm", "mod_name": "Proofs"}, "TwoColoringProofCON": {"long_name": "Two Coloring Proof Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Background/TwoColoringProofCON.css"], "scripts": ["AV/Background/TwoColoringProofCON.js"], "mod_name": "Proofs"}}}, "Background/Estimation": {"long_name": "Estimation", "sections": {}, "exercises": {}}, "Background/MathpreSumm": {"long_name": "Chapter Summary Questions", "sections": {"Chapter Summary Questions": {"MathBgSumm": {"long_name": "Math Background Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/MathBgSumm.html", "mod_name": "MathpreSumm", "threshold": 5}}}, "exercises": {"MathBgSumm": {"long_name": "Math Background Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Background/MathBgSumm.html", "mod_name": "MathpreSumm", "threshold": 5}}}, "Searching/BinarySearch": {"long_name": "Searching in an Array", "sections": {"Searching in an Array": {"binarySearchCON": {"long_name": "Binary Search Algorithm Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/binarySearchCON.css"], "scripts": ["AV/Searching/binarySearchCON.js"], "mod_name": "BinarySearch"}, "binarySearchPRO": {"long_name": "Binary Search Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Searching/binarySearchPRO.html", "mod_name": "BinarySearch", "threshold": 1.0}}}, "exercises": {"binarySearchCON": {"long_name": "Binary Search Algorithm Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/binarySearchCON.css"], "scripts": ["AV/Searching/binarySearchCON.js"], "mod_name": "BinarySearch"}, "binarySearchPRO": {"long_name": "Binary Search Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Searching/binarySearchPRO.html", "mod_name": "BinarySearch", "threshold": 1.0}}}, "AlgAnal/AnalChap": {"long_name": "Chapter Introduction", "sections": {}, "exercises": {}}, "AlgAnal/AnalPrelim": {"long_name": "Problems, Algorithms, and Programs", "sections": {"Problems, Algorithms, and Programs": {"ProblemAlgorithmCON": {"long_name": "Problem, Algorithm, and Program definitions Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/ProblemAlgorithmCON.css"], "scripts": ["AV/AlgAnal/ProblemAlgorithmCON.js"], "mod_name": "AnalPrelim"}, "AnalPrelimSumm": {"long_name": "Problems, Algorithms, Programs Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AnalPrelimSumm.html", "mod_name": "AnalPrelim", "threshold": 4}}}, "exercises": {"ProblemAlgorithmCON": {"long_name": "Problem, Algorithm, and Program definitions Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/ProblemAlgorithmCON.css"], "scripts": ["AV/AlgAnal/ProblemAlgorithmCON.js"], "mod_name": "AnalPrelim"}, "AnalPrelimSumm": {"long_name": "Problems, Algorithms, Programs Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AnalPrelimSumm.html", "mod_name": "AnalPrelim", "threshold": 4}}}, "AlgAnal/AnalIntro": {"long_name": "Comparing Algorithms", "sections": {"Comparing Algorithms": {"GrowthRatesCON": {"type": "dgm", "mod_name": "AnalIntro"}, "GrowthRatesZoomCON": {"type": "dgm", "mod_name": "AnalIntro"}, "CompareGrowth": {"long_name": "Comparing Growth Rates Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/AlgAnal/CompareGrowth.html", "mod_name": "AnalIntro", "threshold": 3}}, "Growth Rates Ordering Exercise": {"GrowthRatesPRO": {"long_name": "Growth Rates Ordering Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/GrowthRatesPRO.html", "mod_name": "AnalIntro", "threshold": 3}}}, "exercises": {"GrowthRatesCON": {"type": "dgm", "mod_name": "AnalIntro"}, "GrowthRatesZoomCON": {"type": "dgm", "mod_name": "AnalIntro"}, "CompareGrowth": {"long_name": "Comparing Growth Rates Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/AlgAnal/CompareGrowth.html", "mod_name": "AnalIntro", "threshold": 3}, "GrowthRatesPRO": {"long_name": "Growth Rates Ordering Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/GrowthRatesPRO.html", "mod_name": "AnalIntro", "threshold": 3}}}, "AlgAnal/AnalCases": {"long_name": "Best, Worst, and Average Cases", "sections": {"Best, Worst, and Average Cases": {"AnalCasesSameCON": {"long_name": "Simple analysis cases slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/AnalCasesCON.css"], "scripts": ["AV/AlgAnal/AnalCasesSameCON.js"], "mod_name": "AnalCases"}, "AnalCasesDiffCON": {"long_name": "Best, Worst, and Average cases slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/AnalCasesCON.css"], "scripts": ["AV/AlgAnal/AnalCasesDiffCON.js"], "mod_name": "AnalCases"}}}, "exercises": {"AnalCasesSameCON": {"long_name": "Simple analysis cases slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/AnalCasesCON.css"], "scripts": ["AV/AlgAnal/AnalCasesSameCON.js"], "mod_name": "AnalCases"}, "AnalCasesDiffCON": {"long_name": "Best, Worst, and Average cases slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/AnalCasesCON.css"], "scripts": ["AV/AlgAnal/AnalCasesDiffCON.js"], "mod_name": "AnalCases"}}}, "AlgAnal/AnalCompvsAlg": {"long_name": "Faster Computer, or Faster Algorithm?", "sections": {"Faster Computer, or Faster Algorithm?": {"FasterCorASumm": {"long_name": "Faster Computer or Faster Algorithm Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/FasterCorASumm.html", "mod_name": "AnalCompvsAlg", "threshold": 2}}}, "exercises": {"FasterCorASumm": {"long_name": "Faster Computer or Faster Algorithm Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/FasterCorASumm.html", "mod_name": "AnalCompvsAlg", "threshold": 2}}}, "AlgAnal/AnalAsymptotic": {"long_name": "Asymptotic Analysis and Upper Bounds", "sections": {"Asymptotic Analysis and Upper Bounds": {"GrowthRatesCON": {"type": "dgm", "mod_name": "AnalAsymptotic"}, "GrowthRatesZoomCON": {"type": "dgm", "mod_name": "AnalAsymptotic"}, "UpperBoundCON": {"long_name": "Upper Bounds visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/UpperBoundCON.css"], "scripts": ["AV/AlgAnal/UpperBoundCON.js"], "mod_name": "AnalAsymptotic"}, "SimpleCostsCON": {"type": "dgm", "mod_name": "AnalAsymptotic"}, "UpperBoundsSumm": {"long_name": "Asymptotic Analysis and Upper Bounds Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/UpperBoundsSumm.html", "mod_name": "AnalAsymptotic", "threshold": 4}}}, "exercises": {"GrowthRatesCON": {"type": "dgm", "mod_name": "AnalAsymptotic"}, "GrowthRatesZoomCON": {"type": "dgm", "mod_name": "AnalAsymptotic"}, "UpperBoundCON": {"long_name": "Upper Bounds visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/UpperBoundCON.css"], "scripts": ["AV/AlgAnal/UpperBoundCON.js"], "mod_name": "AnalAsymptotic"}, "SimpleCostsCON": {"type": "dgm", "mod_name": "AnalAsymptotic"}, "UpperBoundsSumm": {"long_name": "Asymptotic Analysis and Upper Bounds Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/UpperBoundsSumm.html", "mod_name": "AnalAsymptotic", "threshold": 4}}}, "AlgAnal/AnalLower": {"long_name": "Lower Bounds and Theta Notation", "sections": {"Lower Bounds and Theta Notation": {"LowerBoundCON": {"long_name": "Lower Bounds visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/LowerBoundCON.css"], "scripts": ["AV/AlgAnal/LowerBoundCON.js"], "mod_name": "AnalLower"}, "LowerThetaSumm": {"long_name": "Lower Bounds and Theta Notation Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/AlgAnal/LowerThetaSumm.html", "mod_name": "AnalLower", "threshold": 5}}}, "exercises": {"LowerBoundCON": {"long_name": "Lower Bounds visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/LowerBoundCON.css"], "scripts": ["AV/AlgAnal/LowerBoundCON.js"], "mod_name": "AnalLower"}, "LowerThetaSumm": {"long_name": "Lower Bounds and Theta Notation Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/AlgAnal/LowerThetaSumm.html", "mod_name": "AnalLower", "threshold": 5}}}, "AlgAnal/AnalProgram": {"long_name": "Calculating Program Running Time", "sections": {"Calculating Program Running Time": {"binarySearchCON": {"long_name": "Binary Search Algorithm Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/binarySearchCON.css"], "scripts": ["AV/Searching/binarySearchCON.js"], "mod_name": "AnalProgram"}, "binarySearchPRO": {"long_name": "Binary Search Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Searching/binarySearchPRO.html", "mod_name": "AnalProgram", "threshold": 1.0, "exer_options": {"JXOP-code": "none"}}, "BsearchDandCRecurCON": {"long_name": "Binary Search recurrence slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/BsearchDandCRecurCON.css"], "scripts": ["AV/AlgAnal/BsearchDandCRecurCON.js"], "mod_name": "AnalProgram"}}, "Summary Exercise": {"AnalProgramSumm": {"long_name": "Program Code Analysis Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AnalProgramSumm.html", "mod_name": "AnalProgram", "threshold": 5}}}, "exercises": {"binarySearchCON": {"long_name": "Binary Search Algorithm Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/binarySearchCON.css"], "scripts": ["AV/Searching/binarySearchCON.js"], "mod_name": "AnalProgram"}, "binarySearchPRO": {"long_name": "Binary Search Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Searching/binarySearchPRO.html", "mod_name": "AnalProgram", "threshold": 1.0, "exer_options": {"JXOP-code": "none"}}, "BsearchDandCRecurCON": {"long_name": "Binary Search recurrence slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/BsearchDandCRecurCON.css"], "scripts": ["AV/AlgAnal/BsearchDandCRecurCON.js"], "mod_name": "AnalProgram"}, "AnalProgramSumm": {"long_name": "Program Code Analysis Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AnalProgramSumm.html", "mod_name": "AnalProgram", "threshold": 5}}}, "AlgAnal/AnalProblem": {"long_name": "Analyzing Problems", "sections": {"Analyzing Problems": {"AnalProblemSumm": {"long_name": "Problem Analysis Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AnalProblemSumm.html", "mod_name": "AnalProblem", "threshold": 5}}}, "exercises": {"AnalProblemSumm": {"long_name": "Problem Analysis Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AnalProblemSumm.html", "mod_name": "AnalProblem", "threshold": 5}}}, "AlgAnal/AnalMisunderstanding": {"long_name": "Common Misunderstandings", "sections": {"Common Misunderstandings": {"MisunderstandingsGraphCON": {"long_name": "Example's graph Visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/MisunderstandingsGraphCON.css"], "scripts": ["AV/AlgAnal/MisunderstandingsGraphCON.js"], "mod_name": "AnalMisunderstanding"}, "MisSumm": {"long_name": "Common Misconceptions Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/MisSumm.html", "mod_name": "AnalMisunderstanding", "threshold": 4}}}, "exercises": {"MisunderstandingsGraphCON": {"long_name": "Example's graph Visualization", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/AlgAnal/MisunderstandingsGraphCON.css"], "scripts": ["AV/AlgAnal/MisunderstandingsGraphCON.js"], "mod_name": "AnalMisunderstanding"}, "MisSumm": {"long_name": "Common Misconceptions Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/MisSumm.html", "mod_name": "AnalMisunderstanding", "threshold": 4}}}, "AlgAnal/AnalMultiple": {"long_name": "Multiple Parameters", "sections": {}, "exercises": {}}, "AlgAnal/AnalSpace": {"long_name": "Space Bounds", "sections": {}, "exercises": {}}, "AlgAnal/AnalTuning": {"long_name": "Code Tuning and Empirical Analysis", "sections": {"Code Tuning and Empirical Analysis": {}}, "exercises": {}}, "AlgAnal/AlgAnalSummCS2": {"long_name": "Algorithm Analysis Summary Exercises", "sections": {"Summary Exercise: CS2": {"AlgAnalCS2Summ": {"long_name": "Algorithm Analysis Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AlgAnalCS2Summ.html", "mod_name": "AlgAnalSummCS2", "threshold": 5}}}, "exercises": {"AlgAnalCS2Summ": {"long_name": "Algorithm Analysis Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AlgAnalCS2Summ.html", "mod_name": "AlgAnalSummCS2", "threshold": 5}}}, "AlgAnal/AlgAnalSummCS3": {"long_name": "Algorithm Analysis Summary Exercises", "sections": {"Summary Exercise: CS3": {"AlgAnalCS3Summ": {"long_name": "Algorithm Analysis Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AlgAnalCS3Summ.html", "mod_name": "AlgAnalSummCS3", "threshold": 5}}}, "exercises": {"AlgAnalCS3Summ": {"long_name": "Algorithm Analysis Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/AlgAnal/AlgAnalCS3Summ.html", "mod_name": "AlgAnalSummCS3", "threshold": 5}}}, "List/ListIntro": {"long_name": "Chapter Introduction: Lists", "sections": {}, "exercises": {}}, "List/ListADT": {"long_name": "The List ADT", "sections": {"The List ADT": {"listADTposCON": {"long_name": "List ADT Positions Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listADTCON.css"], "scripts": ["AV/List/listADTposCON.js"], "mod_name": "ListADT"}}, "List ADT Programming Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "List ADT Programming Exercise", "long_name": "List ADT Programming Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "type": "extr", "mod_name": "ListADT"}}, "exercises": {"listADTposCON": {"long_name": "List ADT Positions Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listADTCON.css"], "scripts": ["AV/List/listADTposCON.js"], "mod_name": "ListADT"}, "List ADT Programming Exercise": {"long_name": "List ADT Programming Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "List/ListArray": {"long_name": "Array-Based List Implementation", "sections": {"Array-Based List Implementation": {"alistVarsCON": {"long_name": "Array-based List Variables Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistVarsCON.js"], "mod_name": "ListArray"}, "alistIntroCON": {"long_name": "Array-based List Intro Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistIntroCON.js"], "mod_name": "ListArray"}, "alistInsertCON": {"long_name": "Array-based List Insertion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistInsertCON.js"], "mod_name": "ListArray"}, "AlistInsertPRO": {"long_name": "Array-based List Insert Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AlistInsertPRO.html", "mod_name": "ListArray", "threshold": 3}}, "Append and Remove": {"alistAppendCON": {"long_name": "Array-based List Append Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistAppendCON.js"], "mod_name": "ListArray"}, "alistRemoveCON": {"long_name": "Array-based List Remove", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistRemoveCON.js"], "mod_name": "ListArray"}, "AlistRemovePRO": {"long_name": "Array-based List Remove Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AlistRemovePRO.html", "mod_name": "ListArray", "threshold": 4}}, "Array-based List Practice Questions": {"ALSumm": {"long_name": "Array-based List Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/ALSumm.html", "mod_name": "ListArray", "threshold": 3}}}, "exercises": {"alistVarsCON": {"long_name": "Array-based List Variables Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistVarsCON.js"], "mod_name": "ListArray"}, "alistIntroCON": {"long_name": "Array-based List Intro Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistIntroCON.js"], "mod_name": "ListArray"}, "alistInsertCON": {"long_name": "Array-based List Insertion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistInsertCON.js"], "mod_name": "ListArray"}, "AlistInsertPRO": {"long_name": "Array-based List Insert Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AlistInsertPRO.html", "mod_name": "ListArray", "threshold": 3}, "alistAppendCON": {"long_name": "Array-based List Append Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistAppendCON.js"], "mod_name": "ListArray"}, "alistRemoveCON": {"long_name": "Array-based List Remove", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/alistCON.css"], "scripts": ["AV/List/alistRemoveCON.js"], "mod_name": "ListArray"}, "AlistRemovePRO": {"long_name": "Array-based List Remove Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AlistRemovePRO.html", "mod_name": "ListArray", "threshold": 4}, "ALSumm": {"long_name": "Array-based List Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/ALSumm.html", "mod_name": "ListArray", "threshold": 3}}}, "List/ListLinked": {"long_name": "Linked Lists", "sections": {"Linked Lists": {"llistRepCON": {"type": "dgm", "mod_name": "ListLinked"}, "llistBadCON": {"long_name": "Linked List Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistBadCON.js"], "mod_name": "ListLinked"}, "llistBadDelCON": {"long_name": "Linked List Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistBadDelCON.js"], "mod_name": "ListLinked"}, "llistInitCON": {"type": "dgm", "mod_name": "ListLinked"}, "llistHeaderCON": {"type": "dgm", "mod_name": "ListLinked"}, "llistVarsCON": {"long_name": "Linked List Variables Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistVarsCON.js"], "mod_name": "ListLinked"}, "llistConsCON": {"long_name": "Linked List Constructors Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistConsCON.js"], "mod_name": "ListLinked"}, "llistInsertCON": {"long_name": "Linked List Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistInsertCON.js"], "mod_name": "ListLinked"}, "llistSpecialCON": {"long_name": "Linked List Special Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistSpecialCON.js"], "mod_name": "ListLinked"}, "LlistInsertPRO": {"long_name": "Linked List Insert Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LlistInsertPRO.html", "mod_name": "ListLinked", "threshold": 5}}, "Linked List Remove": {"llistRemoveCON": {"long_name": "Linked List Remove Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistRemoveCON.js"], "mod_name": "ListLinked"}, "LlistRemovePRO": {"long_name": "Linked List Remove Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/LlistRemovePRO.html", "mod_name": "ListLinked", "threshold": 5}, "llistOtherCON": {"long_name": "Linked List Position Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistOtherCON.js"], "mod_name": "ListLinked"}}}, "exercises": {"llistRepCON": {"type": "dgm", "mod_name": "ListLinked"}, "llistBadCON": {"long_name": "Linked List Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistBadCON.js"], "mod_name": "ListLinked"}, "llistBadDelCON": {"long_name": "Linked List Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistBadDelCON.js"], "mod_name": "ListLinked"}, "llistInitCON": {"type": "dgm", "mod_name": "ListLinked"}, "llistHeaderCON": {"type": "dgm", "mod_name": "ListLinked"}, "llistVarsCON": {"long_name": "Linked List Variables Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistVarsCON.js"], "mod_name": "ListLinked"}, "llistConsCON": {"long_name": "Linked List Constructors Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistConsCON.js"], "mod_name": "ListLinked"}, "llistInsertCON": {"long_name": "Linked List Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistInsertCON.js"], "mod_name": "ListLinked"}, "llistSpecialCON": {"long_name": "Linked List Special Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistSpecialCON.js"], "mod_name": "ListLinked"}, "LlistInsertPRO": {"long_name": "Linked List Insert Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LlistInsertPRO.html", "mod_name": "ListLinked", "threshold": 5}, "llistRemoveCON": {"long_name": "Linked List Remove Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistRemoveCON.js"], "mod_name": "ListLinked"}, "LlistRemovePRO": {"long_name": "Linked List Remove Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/LlistRemovePRO.html", "mod_name": "ListLinked", "threshold": 5}, "llistOtherCON": {"long_name": "Linked List Position Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/llistCON.css"], "scripts": ["AV/List/llist.js", "AV/List/llistOtherCON.js"], "mod_name": "ListLinked"}}}, "List/ListAnalysis": {"long_name": "Comparison of List Implementations", "sections": {"Space Comparison": {"ListOverhead": {"long_name": "Breakeven Point Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/ListOverhead.html", "mod_name": "ListAnalysis", "threshold": 3}}, "Time Comparison": {"LLSumm": {"long_name": "Linked List Summary Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/LLSumm.html", "mod_name": "ListAnalysis", "threshold": 6}}}, "exercises": {"ListOverhead": {"long_name": "Breakeven Point Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/ListOverhead.html", "mod_name": "ListAnalysis", "threshold": 3}, "LLSumm": {"long_name": "Linked List Summary Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/LLSumm.html", "mod_name": "ListAnalysis", "threshold": 6}}}, "List/ListDouble": {"long_name": "Doubly Linked Lists", "sections": {"Doubly Linked Lists": {"dlistDiagramCON": {"type": "dgm", "mod_name": "ListDouble"}, "dlistInsertCON": {"long_name": "Doubly Linked List Insert", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistInsertCON.js"], "mod_name": "ListDouble"}, "dlistAppendCON": {"long_name": "Doubly Linked List Append", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistAppendCON.js"], "mod_name": "ListDouble"}, "dlistRemoveCON": {"long_name": "Doubly Linked List Remove", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistRemoveCON.js"], "mod_name": "ListDouble"}, "dlistPrevCON": {"long_name": "Doubly Linked List Prev", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistPrevCON.js"], "mod_name": "ListDouble"}}}, "exercises": {"dlistDiagramCON": {"type": "dgm", "mod_name": "ListDouble"}, "dlistInsertCON": {"long_name": "Doubly Linked List Insert", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistInsertCON.js"], "mod_name": "ListDouble"}, "dlistAppendCON": {"long_name": "Doubly Linked List Append", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistAppendCON.js"], "mod_name": "ListDouble"}, "dlistRemoveCON": {"long_name": "Doubly Linked List Remove", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistRemoveCON.js"], "mod_name": "ListDouble"}, "dlistPrevCON": {"long_name": "Doubly Linked List Prev", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/DoubleLinkList.css", "AV/List/dlistCON.css"], "scripts": ["DataStructures/DoubleLinkList.js", "AV/List/dlist.js", "AV/List/dlistPrevCON.js"], "mod_name": "ListDouble"}}}, "List/ListElement": {"long_name": "List Element Implementations", "sections": {"List Element Implementations": {"listElementDataCON": {"long_name": "List Element Data", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listElementCON.css"], "scripts": ["AV/List/listElementDataCON.js"], "mod_name": "ListElement"}, "listElementTypeCON": {"long_name": "List Element Type", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listElementCON.css"], "scripts": ["AV/List/listElementTypeCON.js"], "mod_name": "ListElement"}, "listElementDeleteCON": {"long_name": "List Element Delete", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listElementCON.css"], "scripts": ["AV/List/listElementDeleteCON.js"], "mod_name": "ListElement"}, "ListSumm": {"long_name": "List Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/ListSumm.html", "mod_name": "ListElement", "threshold": 3}}}, "exercises": {"listElementDataCON": {"long_name": "List Element Data", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listElementCON.css"], "scripts": ["AV/List/listElementDataCON.js"], "mod_name": "ListElement"}, "listElementTypeCON": {"long_name": "List Element Type", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listElementCON.css"], "scripts": ["AV/List/listElementTypeCON.js"], "mod_name": "ListElement"}, "listElementDeleteCON": {"long_name": "List Element Delete", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listElementCON.css"], "scripts": ["AV/List/listElementDeleteCON.js"], "mod_name": "ListElement"}, "ListSumm": {"long_name": "List Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/ListSumm.html", "mod_name": "ListElement", "threshold": 3}}}, "List/StackArray": {"long_name": "Stacks", "sections": {"Stack Terminology and Implementation": {"astackVarCON": {"long_name": "Array stack variables slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackVarCON.js"], "mod_name": "StackArray"}, "astackTopCON": {"long_name": "Array stack top position slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackTopCON.js"], "mod_name": "StackArray"}, "astackPushCON": {"long_name": "Array stack push slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackPushCON.js"], "mod_name": "StackArray"}, "AstackPushPRO": {"long_name": "Array-based Stack Push Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AstackPushPRO.html", "mod_name": "StackArray", "threshold": 5}}, "Pop": {"astackPopCON": {"long_name": "Array stack pop slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackPopCON.js"], "mod_name": "StackArray"}, "AstackPopPRO": {"long_name": "Array-based Stack Pop Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AstackPopPRO.html", "mod_name": "StackArray", "threshold": 5}}}, "exercises": {"astackVarCON": {"long_name": "Array stack variables slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackVarCON.js"], "mod_name": "StackArray"}, "astackTopCON": {"long_name": "Array stack top position slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackTopCON.js"], "mod_name": "StackArray"}, "astackPushCON": {"long_name": "Array stack push slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackPushCON.js"], "mod_name": "StackArray"}, "AstackPushPRO": {"long_name": "Array-based Stack Push Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AstackPushPRO.html", "mod_name": "StackArray", "threshold": 5}, "astackPopCON": {"long_name": "Array stack pop slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/astackCON.css"], "scripts": ["AV/List/astackPopCON.js"], "mod_name": "StackArray"}, "AstackPopPRO": {"long_name": "Array-based Stack Pop Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AstackPopPRO.html", "mod_name": "StackArray", "threshold": 5}}}, "List/StackLinked": {"long_name": "Linked Stacks", "sections": {"Linked Stack Implementation": {"lstackDiagramCON": {"type": "dgm", "mod_name": "StackLinked"}, "lstackPushCON": {"long_name": "Linked stack push", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lstackCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lstackPushCON.js"], "mod_name": "StackLinked"}, "LstackPushPRO": {"long_name": "Linked Stack Push Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LstackPushPRO.html", "mod_name": "StackLinked", "threshold": 5}}, "Linked Stack Pop": {"lstackPopCON": {"long_name": "Linked stack pop", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lstackCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lstackPopCON.js"], "mod_name": "StackLinked"}, "LstackPopPRO": {"long_name": "Linked Stack Pop Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LstackPopPRO.html", "mod_name": "StackLinked", "threshold": 5}, "lstackTwostackCON": {"type": "dgm", "mod_name": "StackLinked"}}}, "exercises": {"lstackDiagramCON": {"type": "dgm", "mod_name": "StackLinked"}, "lstackPushCON": {"long_name": "Linked stack push", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lstackCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lstackPushCON.js"], "mod_name": "StackLinked"}, "LstackPushPRO": {"long_name": "Linked Stack Push Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LstackPushPRO.html", "mod_name": "StackLinked", "threshold": 5}, "lstackPopCON": {"long_name": "Linked stack pop", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lstackCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lstackPopCON.js"], "mod_name": "StackLinked"}, "LstackPopPRO": {"long_name": "Linked Stack Pop Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LstackPopPRO.html", "mod_name": "StackLinked", "threshold": 5}, "lstackTwostackCON": {"type": "dgm", "mod_name": "StackLinked"}}}, "List/Freelist": {"long_name": "Freelists", "sections": {"Freelists": {"listFreeCON": {"long_name": "Freelist Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listFreeCON.css"], "scripts": ["AV/List/llist.js", "AV/List/listFreeCON.js"], "mod_name": "Freelist"}}}, "exercises": {"listFreeCON": {"long_name": "Freelist Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/listFreeCON.css"], "scripts": ["AV/List/llist.js", "AV/List/listFreeCON.js"], "mod_name": "Freelist"}}}, "List/StackRecur": {"long_name": "Implementing Recursion", "sections": {}, "exercises": {}}, "List/Queue": {"long_name": "Queues", "sections": {"Queue Terminology and Implementation": {"aqueueFirstCON": {"long_name": "Array-based Queue Positions Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueFirstCON.js"], "mod_name": "Queue"}, "aqueueDriftCON": {"long_name": "Array-based Queue Drift Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueDriftCON.js"], "mod_name": "Queue"}, "aqueueBadCON": {"long_name": "Array-based Queue Bad Representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueBadCON.js"], "mod_name": "Queue"}, "aqueueCircularCON": {"long_name": "Circular Array-based Queue Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["DataStructures/CircularQueue.js", "AV/List/aqueueCircularCON.js"], "mod_name": "Queue"}, "aqueueEmptyCON": {"long_name": "Empty Circular Array-based Queue Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["DataStructures/CircularQueue.js", "AV/List/aqueueEmptyCON.js"], "mod_name": "Queue"}, "aqueueVarCON": {"long_name": "Array-based Queue Variables Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueVarCON.js"], "mod_name": "Queue"}, "AqueueEnqueuePRO": {"long_name": "Array-based Queue Enqueue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AqueueEnqueuePRO.html", "mod_name": "Queue", "threshold": 5}}, "Array-based Dequeue Practice": {"AqueueDequeuePRO": {"long_name": "Array-based Queue Dequeue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AqueueDequeuePRO.html", "mod_name": "Queue", "threshold": 5}}}, "exercises": {"aqueueFirstCON": {"long_name": "Array-based Queue Positions Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueFirstCON.js"], "mod_name": "Queue"}, "aqueueDriftCON": {"long_name": "Array-based Queue Drift Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueDriftCON.js"], "mod_name": "Queue"}, "aqueueBadCON": {"long_name": "Array-based Queue Bad Representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueBadCON.js"], "mod_name": "Queue"}, "aqueueCircularCON": {"long_name": "Circular Array-based Queue Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["DataStructures/CircularQueue.js", "AV/List/aqueueCircularCON.js"], "mod_name": "Queue"}, "aqueueEmptyCON": {"long_name": "Empty Circular Array-based Queue Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["DataStructures/CircularQueue.js", "AV/List/aqueueEmptyCON.js"], "mod_name": "Queue"}, "aqueueVarCON": {"long_name": "Array-based Queue Variables Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/aqueueCON.css"], "scripts": ["AV/List/aqueueVarCON.js"], "mod_name": "Queue"}, "AqueueEnqueuePRO": {"long_name": "Array-based Queue Enqueue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AqueueEnqueuePRO.html", "mod_name": "Queue", "threshold": 5}, "AqueueDequeuePRO": {"long_name": "Array-based Queue Dequeue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/AqueueDequeuePRO.html", "mod_name": "Queue", "threshold": 5}}}, "List/QueueLinked": {"long_name": "Linked Queues", "sections": {"Linked Queues": {"lqueueIntroCON": {"long_name": "Linked Queue Intro", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lqueueCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lqueueIntroCON.js"], "mod_name": "QueueLinked"}, "lqueueEnqueueCON": {"long_name": "Linked Queue Enqueue", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lqueueCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lqueueEnqueueCON.js"], "mod_name": "QueueLinked"}, "LqueueEnqueuePRO": {"long_name": "Linked Queue Enqueue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LqueueEnqueuePRO.html", "mod_name": "QueueLinked", "threshold": 5}}, "Linked Dequeue": {"lqueueDequeueCON": {"long_name": "Linked Queue Dequeue", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lqueueCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lqueueDequeueCON.js"], "mod_name": "QueueLinked"}, "LqueueDequeuePRO": {"long_name": "Linked Queue Dequeue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LqueueDequeuePRO.html", "mod_name": "QueueLinked", "threshold": 5}}, "Comparison of Array-Based and Linked Queues": {"StackQSumm": {"long_name": "Stack/Queue Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/StackQSumm.html", "mod_name": "QueueLinked", "threshold": 5}}}, "exercises": {"lqueueIntroCON": {"long_name": "Linked Queue Intro", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lqueueCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lqueueIntroCON.js"], "mod_name": "QueueLinked"}, "lqueueEnqueueCON": {"long_name": "Linked Queue Enqueue", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lqueueCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lqueueEnqueueCON.js"], "mod_name": "QueueLinked"}, "LqueueEnqueuePRO": {"long_name": "Linked Queue Enqueue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LqueueEnqueuePRO.html", "mod_name": "QueueLinked", "threshold": 5}, "lqueueDequeueCON": {"long_name": "Linked Queue Dequeue", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/List/lqueueCON.css"], "scripts": ["AV/List/llist.js", "AV/List/lqueueDequeueCON.js"], "mod_name": "QueueLinked"}, "LqueueDequeuePRO": {"long_name": "Linked Queue Dequeue Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/LqueueDequeuePRO.html", "mod_name": "QueueLinked", "threshold": 5}, "StackQSumm": {"long_name": "Stack/Queue Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/List/StackQSumm.html", "mod_name": "QueueLinked", "threshold": 5}}}, "List/ListSumm": {"long_name": "Linear Structure Summary Exercises", "sections": {"Practice Questions": {"ListdsSumm": {"long_name": "List Data Structures General Questions", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/ListdsSumm.html", "mod_name": "ListSumm", "threshold": 5}}, "Chapter Review Questions": {"ListChapterSumm": {"long_name": "List Chapter Summary", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/ListChapterSumm.html", "mod_name": "ListSumm", "threshold": 10}}}, "exercises": {"ListdsSumm": {"long_name": "List Data Structures General Questions", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/ListdsSumm.html", "mod_name": "ListSumm", "threshold": 5}, "ListChapterSumm": {"long_name": "List Chapter Summary", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/List/ListChapterSumm.html", "mod_name": "ListSumm", "threshold": 10}}}, "RecurTutor/RecIntro": {"long_name": "Introduction", "sections": {"Introduction": {"recurIntroDelegateCON": {"long_name": "Recursion Introduction Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurIntroCON.css"], "scripts": ["AV/RecurTutor/recurIntroDelegateCON.js"], "mod_name": "RecIntro"}, "recurIntroDetailsCON": {"long_name": "Recursion Introduction Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurIntroCON.css"], "scripts": ["AV/RecurTutor/recurIntroDetailsCON.js"], "mod_name": "RecIntro"}}}, "exercises": {"recurIntroDelegateCON": {"long_name": "Recursion Introduction Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurIntroCON.css"], "scripts": ["AV/RecurTutor/recurIntroDelegateCON.js"], "mod_name": "RecIntro"}, "recurIntroDetailsCON": {"long_name": "Recursion Introduction Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurIntroCON.css"], "scripts": ["AV/RecurTutor/recurIntroDetailsCON.js"], "mod_name": "RecIntro"}}}, "RecurTutor/Write": {"long_name": "Writing a recursive function", "sections": {"Writing a recursive function": {"recurWriteStepsCON": {"long_name": "Recursion Code Writing Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurWriteCON.css"], "scripts": ["AV/RecurTutor/recurWriteStepsCON.js"], "mod_name": "Write"}, "recurWriteSumCON": {"long_name": "Recursion Code Writing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurWriteCON.css"], "scripts": ["AV/RecurTutor/recurWriteSumCON.js"], "mod_name": "Write"}}}, "exercises": {"recurWriteStepsCON": {"long_name": "Recursion Code Writing Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurWriteCON.css"], "scripts": ["AV/RecurTutor/recurWriteStepsCON.js"], "mod_name": "Write"}, "recurWriteSumCON": {"long_name": "Recursion Code Writing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurWriteCON.css"], "scripts": ["AV/RecurTutor/recurWriteSumCON.js"], "mod_name": "Write"}}}, "RecurTutor/CodeCompletionEx": {"long_name": "Code Completion Practice Exercises", "sections": {"Introduction": {}, "Recursion Programming Exercise: Largest": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Largest", "long_name": "Recursion Programming Exercise: Largest", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "46", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: Multiply": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Multiply", "long_name": "Recursion Programming Exercise: Multiply", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "47", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: GCD": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: GCD", "long_name": "Recursion Programming Exercise: GCD", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "48", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: log": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: log", "long_name": "Recursion Programming Exercise: log", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "49", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: Cummulative Sum": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Cummulative Sum", "long_name": "Recursion Programming Exercise: Cummulative Sum", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "51", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: Add odd values": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Add odd values", "long_name": "Recursion Programming Exercise: Add odd values", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "52", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: Sum Of the Digits": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Sum Of the Digits", "long_name": "Recursion Programming Exercise: Sum Of the Digits", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "53", "type": "extr", "mod_name": "CodeCompletionEx"}, "Recursion Programming Exercise: Count Characters": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Count Characters", "long_name": "Recursion Programming Exercise: Count Characters", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "54", "type": "extr", "mod_name": "CodeCompletionEx"}}, "exercises": {"Recursion Programming Exercise: Largest": {"long_name": "Recursion Programming Exercise: Largest", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Multiply": {"long_name": "Recursion Programming Exercise: Multiply", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: GCD": {"long_name": "Recursion Programming Exercise: GCD", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: log": {"long_name": "Recursion Programming Exercise: log", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Cummulative Sum": {"long_name": "Recursion Programming Exercise: Cummulative Sum", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Add odd values": {"long_name": "Recursion Programming Exercise: Add odd values", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Sum Of the Digits": {"long_name": "Recursion Programming Exercise: Sum Of the Digits", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Count Characters": {"long_name": "Recursion Programming Exercise: Count Characters", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "RecurTutor/HarderWrite": {"long_name": "Writing More Sophisticated Recursive Functions", "sections": {}, "exercises": {}}, "RecurTutor/HarderCodeCompletionEx": {"long_name": "Harder Code Completion Practice Exercises", "sections": {"Recursion Programming Exercise: Minimum of array": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Minimum of array", "long_name": "Recursion Programming Exercise: Minimum of array", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "55", "type": "extr", "mod_name": "HarderCodeCompletionEx"}, "Recursion Programming Exercise: Is Reverse": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Is Reverse", "long_name": "Recursion Programming Exercise: Is Reverse", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "56", "type": "extr", "mod_name": "HarderCodeCompletionEx"}, "Recursion Programming Exercise: Decimal to Binary": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Decimal to Binary", "long_name": "Recursion Programming Exercise: Decimal to Binary", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "57", "type": "extr", "mod_name": "HarderCodeCompletionEx"}}, "exercises": {"Recursion Programming Exercise: Minimum of array": {"long_name": "Recursion Programming Exercise: Minimum of array", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Is Reverse": {"long_name": "Recursion Programming Exercise: Is Reverse", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Decimal to Binary": {"long_name": "Recursion Programming Exercise: Decimal to Binary", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "RecurTutor/WritingEx": {"long_name": "Writing Practice Exercises", "sections": {"Recursion Programming Exercise: Cannonballs": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Cannonballs", "long_name": "Recursion Programming Exercise: Cannonballs", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "58", "type": "extr", "mod_name": "WritingEx"}, "Recursion Programming Exercise: Check Palindrome": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Check Palindrome", "long_name": "Recursion Programming Exercise: Check Palindrome", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "59", "type": "extr", "mod_name": "WritingEx"}, "Recursion Programming Exercise: Subset Sum": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Subset Sum", "long_name": "Recursion Programming Exercise: Subset Sum", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "60", "type": "extr", "mod_name": "WritingEx"}, "Recursion Programming Exercise: Pascal Triangle": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Recursion Programming Exercise: Pascal Triangle", "long_name": "Recursion Programming Exercise: Pascal Triangle", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "61", "type": "extr", "mod_name": "WritingEx"}}, "exercises": {"Recursion Programming Exercise: Cannonballs": {"long_name": "Recursion Programming Exercise: Cannonballs", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Check Palindrome": {"long_name": "Recursion Programming Exercise: Check Palindrome", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Subset Sum": {"long_name": "Recursion Programming Exercise: Subset Sum", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Recursion Programming Exercise: Pascal Triangle": {"long_name": "Recursion Programming Exercise: Pascal Triangle", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "RecurTutor/Trace": {"long_name": "Tracing Recursive Code", "sections": {"Tracing Recursive Code": {"recurTraceWindCON": {"long_name": "Recursion Tracing Winding and Unwinding", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceWindCON.js"], "mod_name": "Trace"}, "recurTraceFactCON": {"long_name": "Recursion Tracing Factorial Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceFactCON.js"], "mod_name": "Trace"}, "recurTraceSumCON": {"long_name": "Recursion Tracing Sum Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceSumCON.js"], "mod_name": "Trace"}, "recurTraceDmnCON": {"long_name": "Recursion Tracing General Domino Effect", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceDmnCON.js"], "mod_name": "Trace"}, "TOHfigCON": {"type": "dgm", "mod_name": "Trace"}, "recurTraceTOHCON": {"long_name": "Recursion Tracing Towers of Hanoi", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceTOHCON.js"], "mod_name": "Trace"}}}, "exercises": {"recurTraceWindCON": {"long_name": "Recursion Tracing Winding and Unwinding", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceWindCON.js"], "mod_name": "Trace"}, "recurTraceFactCON": {"long_name": "Recursion Tracing Factorial Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceFactCON.js"], "mod_name": "Trace"}, "recurTraceSumCON": {"long_name": "Recursion Tracing Sum Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceSumCON.js"], "mod_name": "Trace"}, "recurTraceDmnCON": {"long_name": "Recursion Tracing General Domino Effect", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceDmnCON.js"], "mod_name": "Trace"}, "TOHfigCON": {"type": "dgm", "mod_name": "Trace"}, "recurTraceTOHCON": {"long_name": "Recursion Tracing Towers of Hanoi", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/RecurTutor/recurTraceCON.css"], "scripts": ["AV/RecurTutor/recurTraceTOHCON.js"], "mod_name": "Trace"}}}, "RecurTutor/TracingEx": {"long_name": "Tracing Practice Exercises", "sections": {"Forward Flow Tracing Exercises": {"RecTraceSummFwdFlow": {"long_name": "Recursion Tracing Exercises Set 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummFwdFlow.html", "mod_name": "TracingEx", "threshold": 1.0}}, "Backward Flow Tracing Exercises": {"RecTraceSummbckwrdFlow": {"long_name": "Recursion Tracing Exercises Set 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummbckwrdFlow.html", "mod_name": "TracingEx", "threshold": 1.0}}, "Find Error Tracing Exercises": {"RecTraceSummFuncErr": {"long_name": "Recursion Tracing Exercises Set 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummFuncErr.html", "mod_name": "TracingEx", "threshold": 1.0}}, "Two Recursive Calls Tracing Exercises": {"RecTraceSummTwoRC": {"long_name": "Recursion Tracing Exercises Set 4", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummTwoRC.html", "mod_name": "TracingEx", "threshold": 1.0}}, "How Many Times Tracing Exercises": {"RecTraceSummHowmany": {"long_name": "Recursion Tracing Exercises Set 5", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummHowmany.html", "mod_name": "TracingEx", "threshold": 1.0}}, "Harder Tracing Exercises": {"RecTraceSummHard": {"long_name": "Recursion Tracing Exercises Set 6", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummHard.html", "mod_name": "TracingEx", "threshold": 1.0}}}, "exercises": {"RecTraceSummFwdFlow": {"long_name": "Recursion Tracing Exercises Set 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummFwdFlow.html", "mod_name": "TracingEx", "threshold": 1.0}, "RecTraceSummbckwrdFlow": {"long_name": "Recursion Tracing Exercises Set 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummbckwrdFlow.html", "mod_name": "TracingEx", "threshold": 1.0}, "RecTraceSummFuncErr": {"long_name": "Recursion Tracing Exercises Set 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummFuncErr.html", "mod_name": "TracingEx", "threshold": 1.0}, "RecTraceSummTwoRC": {"long_name": "Recursion Tracing Exercises Set 4", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummTwoRC.html", "mod_name": "TracingEx", "threshold": 1.0}, "RecTraceSummHowmany": {"long_name": "Recursion Tracing Exercises Set 5", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummHowmany.html", "mod_name": "TracingEx", "threshold": 1.0}, "RecTraceSummHard": {"long_name": "Recursion Tracing Exercises Set 6", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecTraceSummHard.html", "mod_name": "TracingEx", "threshold": 1.0}}}, "RecurTutor/RecSummaryEx": {"long_name": "Summary Exercises", "sections": {"Summary Questions": {"RecChapterSumm": {"long_name": "Recursion Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecChapterSumm.html", "mod_name": "RecSummaryEx", "threshold": 5}}}, "exercises": {"RecChapterSumm": {"long_name": "Recursion Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/RecurTutor/RecChapterSumm.html", "mod_name": "RecSummaryEx", "threshold": 5}}}, "Design/DesignPatterns": {"long_name": "Design Patterns", "sections": {"Design Patterns": {"DesignPatternSumm": {"long_name": "Design Patterns Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/DesignPatternSumm.html", "mod_name": "DesignPatterns", "threshold": 4}}}, "exercises": {"DesignPatternSumm": {"long_name": "Design Patterns Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/DesignPatternSumm.html", "mod_name": "DesignPatterns", "threshold": 4}}}, "Design/DesignAltList": {"long_name": "Alternative List ADT Designs", "sections": {}, "exercises": {}}, "Design/Comparison": {"long_name": "Comparing Records", "sections": {"Comparing Records": {"CompareSumm": {"long_name": "Record Comparison Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/CompareSumm.html", "mod_name": "Comparison", "threshold": 5}}}, "exercises": {"CompareSumm": {"long_name": "Record Comparison Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/CompareSumm.html", "mod_name": "Comparison", "threshold": 5}}}, "Design/Dictionary": {"long_name": "The Dictionary ADT", "sections": {"The Dictionary ADT": {"DesignDictionarySumm": {"long_name": "Dictionary Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/DesignDictionarySumm.html", "mod_name": "Dictionary", "threshold": 3}}}, "exercises": {"DesignDictionarySumm": {"long_name": "Dictionary Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Design/DesignDictionarySumm.html", "mod_name": "Dictionary", "threshold": 3}}}, "Binary/BinaryTreeIntro": {"long_name": "Binary Trees Chapter Introduction", "sections": {}, "exercises": {}}, "Binary/BinaryTree": {"long_name": "Binary Trees", "sections": {"Definitions and Properties": {"BinExampCON": {"type": "dgm", "mod_name": "BinaryTree"}, "BinDiffCON": {"type": "dgm", "mod_name": "BinaryTree"}, "FullCompCON": {"type": "dgm", "mod_name": "BinaryTree"}, "DefSumm": {"long_name": "Tree Definition Summary Exercises", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Binary/DefSumm.html", "mod_name": "BinaryTree", "threshold": 8}}, "Practice Questions": {"Treeprobs": {"long_name": "Tree/Node Exercises", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/Treeprobs.html", "mod_name": "BinaryTree", "threshold": 4}}}, "exercises": {"BinExampCON": {"type": "dgm", "mod_name": "BinaryTree"}, "BinDiffCON": {"type": "dgm", "mod_name": "BinaryTree"}, "FullCompCON": {"type": "dgm", "mod_name": "BinaryTree"}, "DefSumm": {"long_name": "Tree Definition Summary Exercises", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Binary/DefSumm.html", "mod_name": "BinaryTree", "threshold": 8}, "Treeprobs": {"long_name": "Tree/Node Exercises", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/Treeprobs.html", "mod_name": "BinaryTree", "threshold": 4}}}, "Binary/RecursiveDS": {"long_name": "Binary Tree as a Recursive Data Structure", "sections": {"Binary Tree as a Recursive Data Structure": {"ListRecDSCON": {"type": "dgm", "mod_name": "RecursiveDS"}, "BinRecDSCON": {"type": "dgm", "mod_name": "RecursiveDS"}, "SumBinaryTreeCON": {"long_name": "Sum values in a Binary Tree Slide Show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/RecursiveDSCON.css"], "scripts": ["AV/Binary/SumBinaryTreeCON.js"], "mod_name": "RecursiveDS"}}}, "exercises": {"ListRecDSCON": {"type": "dgm", "mod_name": "RecursiveDS"}, "BinRecDSCON": {"type": "dgm", "mod_name": "RecursiveDS"}, "SumBinaryTreeCON": {"long_name": "Sum values in a Binary Tree Slide Show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/RecursiveDSCON.css"], "scripts": ["AV/Binary/SumBinaryTreeCON.js"], "mod_name": "RecursiveDS"}}}, "Binary/BinaryTreeFullThm": {"long_name": "The Full Binary Tree Theorem", "sections": {}, "exercises": {}}, "Binary/BinaryTreeTraversal": {"long_name": "Binary Tree Traversals", "sections": {"Binary Tree Traversals": {"BinExampCON": {"type": "dgm", "mod_name": "BinaryTreeTraversal"}, "preorderCON": {"long_name": "Preorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/preorderCON.js"], "mod_name": "BinaryTreeTraversal"}, "postorderCON": {"long_name": "Postorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/postorderCON.js"], "mod_name": "BinaryTreeTraversal"}, "inorderCON": {"long_name": "Inorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/inorderCON.js"], "mod_name": "BinaryTreeTraversal"}, "btTravPreorderPRO": {"long_name": "Binary Tree Preorder Traversal Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/btTravPreorderPRO.html", "mod_name": "BinaryTreeTraversal", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}}, "Postorder Traversal Practice": {"btTravPostorderPRO": {"long_name": "Binary Tree Postorder Traversal Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/btTravPostorderPRO.html", "mod_name": "BinaryTreeTraversal", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}}, "Inorder Traversal Practice": {"btTravInorderPRO": {"long_name": "Binary Tree Inorder Traversal Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/btTravInorderPRO.html", "mod_name": "BinaryTreeTraversal", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}}, "Summary Questions": {"TravSumm": {"long_name": "Tree Traversal Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/TravSumm.html", "mod_name": "BinaryTreeTraversal", "threshold": 3}}}, "exercises": {"BinExampCON": {"type": "dgm", "mod_name": "BinaryTreeTraversal"}, "preorderCON": {"long_name": "Preorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/preorderCON.js"], "mod_name": "BinaryTreeTraversal"}, "postorderCON": {"long_name": "Postorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/postorderCON.js"], "mod_name": "BinaryTreeTraversal"}, "inorderCON": {"long_name": "Inorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/inorderCON.js"], "mod_name": "BinaryTreeTraversal"}, "btTravPreorderPRO": {"long_name": "Binary Tree Preorder Traversal Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/btTravPreorderPRO.html", "mod_name": "BinaryTreeTraversal", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "btTravPostorderPRO": {"long_name": "Binary Tree Postorder Traversal Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/btTravPostorderPRO.html", "mod_name": "BinaryTreeTraversal", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "btTravInorderPRO": {"long_name": "Binary Tree Inorder Traversal Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/btTravInorderPRO.html", "mod_name": "BinaryTreeTraversal", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "TravSumm": {"long_name": "Tree Traversal Summary Questions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/TravSumm.html", "mod_name": "BinaryTreeTraversal", "threshold": 3}}}, "Binary/WritingTraversals": {"long_name": "Implementing Tree Traversals", "sections": {"Implementing Tree Traversals": {}, "Binary Tree Increment By One Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Increment By One Exercise", "long_name": "Binary Tree Increment By One Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 1.0, "workout_id": "80", "type": "extr", "mod_name": "WritingTraversals"}}, "exercises": {"Binary Tree Increment By One Exercise": {"long_name": "Binary Tree Increment By One Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "BTRecurTutor/BinaryTreeInfFlw": {"long_name": "Information Flow in Recursive Functions", "sections": {"Information Flow in Recursive Functions": {}, "Binary Tree Set Depth Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Set Depth Exercise", "long_name": "Binary Tree Set Depth Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "66", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Collect-and-return": {"BinaryTreeMistakesCON": {"long_name": "Binary Tree Common Mistakes Slideshow", "required": false, "points": 1.0, "threshold": 0.9, "type": "ss", "links": ["AV/Binary/WriteTrav.css"], "scripts": ["AV/Binary/BinaryTreeMistakesCON.js"], "mod_name": "BinaryTreeInfFlw"}}, "Binary Tree Check Sum Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Check Sum Exercise", "long_name": "Binary Tree Check Sum Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "71", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Binary Tree Leaf Nodes Count Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Leaf Nodes Count Exercise", "long_name": "Binary Tree Leaf Nodes Count Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "72", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Binary Tree Sum Nodes Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Sum Nodes Exercise", "long_name": "Binary Tree Sum Nodes Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "68", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Combining Information Flows": {}, "Binary Tree Check Value Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Check Value Exercise", "long_name": "Binary Tree Check Value Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "65", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Combination Problems": {}, "Binary Tree Height Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Height Exercise", "long_name": "Binary Tree Height Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "70", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Binary Tree Get Difference Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Get Difference Exercise", "long_name": "Binary Tree Get Difference Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "73", "type": "extr", "mod_name": "BinaryTreeInfFlw"}, "Binary Tree Has Path Sum Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Tree Has Path Sum Exercise", "long_name": "Binary Tree Has Path Sum Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "67", "type": "extr", "mod_name": "BinaryTreeInfFlw"}}, "exercises": {"Binary Tree Set Depth Exercise": {"long_name": "Binary Tree Set Depth Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "BinaryTreeMistakesCON": {"long_name": "Binary Tree Common Mistakes Slideshow", "required": false, "points": 1.0, "threshold": 0.9, "type": "ss", "links": ["AV/Binary/WriteTrav.css"], "scripts": ["AV/Binary/BinaryTreeMistakesCON.js"], "mod_name": "BinaryTreeInfFlw"}, "Binary Tree Check Sum Exercise": {"long_name": "Binary Tree Check Sum Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Binary Tree Leaf Nodes Count Exercise": {"long_name": "Binary Tree Leaf Nodes Count Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Binary Tree Sum Nodes Exercise": {"long_name": "Binary Tree Sum Nodes Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Binary Tree Check Value Exercise": {"long_name": "Binary Tree Check Value Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Binary Tree Height Exercise": {"long_name": "Binary Tree Height Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Binary Tree Get Difference Exercise": {"long_name": "Binary Tree Get Difference Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Binary Tree Has Path Sum Exercise": {"long_name": "Binary Tree Has Path Sum Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "Binary/BinaryTreeImpl": {"long_name": "Binary Tree Node Implementations", "sections": {"Binary Tree Node Implementations": {"BTnullpointerCON": {"type": "dgm", "mod_name": "BinaryTreeImpl"}, "expressionTreeCON": {"type": "dgm", "mod_name": "BinaryTreeImpl"}, "expressionTraversalCON": {"long_name": "Expression Tree Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/expressionTraversalCON.js"], "mod_name": "BinaryTreeImpl"}}}, "exercises": {"BTnullpointerCON": {"type": "dgm", "mod_name": "BinaryTreeImpl"}, "expressionTreeCON": {"type": "dgm", "mod_name": "BinaryTreeImpl"}, "expressionTraversalCON": {"long_name": "Expression Tree Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BTCON.css"], "scripts": ["AV/Binary/expressionTraversalCON.js"], "mod_name": "BinaryTreeImpl"}}}, "Binary/Composite": {"long_name": "Composite-based Expression Tree", "sections": {"Composite-based Expression Tree": {}}, "exercises": {}}, "Binary/BinaryTreeNodeSpace": {"long_name": "Binary Tree Space Requirements", "sections": {"Binary Tree Space Requirements": {"TreeOverheadFIB": {"long_name": "Tree Overhead Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Binary/TreeOverheadFIB.html", "mod_name": "BinaryTreeNodeSpace", "threshold": 5}}}, "exercises": {"TreeOverheadFIB": {"long_name": "Tree Overhead Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Binary/TreeOverheadFIB.html", "mod_name": "BinaryTreeNodeSpace", "threshold": 5}}}, "Binary/BST": {"long_name": "Binary Search Trees", "sections": {"Binary Search Tree Definition": {"BSTShapeCON": {"type": "dgm", "mod_name": "BST"}, "BSTsearchCON": {"long_name": "BST Search Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTsearchCON.js"], "mod_name": "BST"}, "BSTsearchPRO": {"long_name": "BST Search Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/BSTsearchPRO.html", "mod_name": "BST", "threshold": 0.9, "exer_options": {"JXOP-code": "none", "JXOP-feedback": "continuous", "JXOP-fixmode": "undo"}}}, "BST Insert": {"BSTinsertCON": {"long_name": "BST Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTinsertCON.js"], "mod_name": "BST"}, "BSTinsertPRO": {"long_name": "BST Insert Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/BSTinsertPRO.html", "mod_name": "BST", "threshold": 0.9, "exer_options": {"JXOP-code": "none", "JXOP-feedback": "continuous", "JXOP-fixmode": "undo"}}}, "BST Remove": {"BSTdeletemaxCON": {"long_name": "BST deletemax Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTdeletemaxCON.js"], "mod_name": "BST"}, "BSTremoveCON": {"long_name": "BST remove Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTremoveCON.js"], "mod_name": "BST"}, "BSTremovePRO": {"long_name": "BST Remove Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Binary/BSTremovePRO.html", "mod_name": "BST", "threshold": 0.9, "exer_options": {"JXOP-code": "none", "JXOP-feedback": "continuous", "JXOP-fixmode": "undo"}}}, "BST Analysis": {"BSTSumm": {"long_name": "BST Question Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/BSTSumm.html", "mod_name": "BST", "threshold": 2}}}, "exercises": {"BSTShapeCON": {"type": "dgm", "mod_name": "BST"}, "BSTsearchCON": {"long_name": "BST Search Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTsearchCON.js"], "mod_name": "BST"}, "BSTsearchPRO": {"long_name": "BST Search Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/BSTsearchPRO.html", "mod_name": "BST", "threshold": 0.9, "exer_options": {"JXOP-code": "none", "JXOP-feedback": "continuous", "JXOP-fixmode": "undo"}}, "BSTinsertCON": {"long_name": "BST Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTinsertCON.js"], "mod_name": "BST"}, "BSTinsertPRO": {"long_name": "BST Insert Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/BSTinsertPRO.html", "mod_name": "BST", "threshold": 0.9, "exer_options": {"JXOP-code": "none", "JXOP-feedback": "continuous", "JXOP-fixmode": "undo"}}, "BSTdeletemaxCON": {"long_name": "BST deletemax Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTdeletemaxCON.js"], "mod_name": "BST"}, "BSTremoveCON": {"long_name": "BST remove Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/BSTCON.css"], "scripts": ["AV/Binary/BSTremoveCON.js"], "mod_name": "BST"}, "BSTremovePRO": {"long_name": "BST Remove Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Binary/BSTremovePRO.html", "mod_name": "BST", "threshold": 0.9, "exer_options": {"JXOP-code": "none", "JXOP-feedback": "continuous", "JXOP-fixmode": "undo"}}, "BSTSumm": {"long_name": "BST Question Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/BSTSumm.html", "mod_name": "BST", "threshold": 2}}}, "Binary/BSTDict": {"long_name": "Dictionary Implementation Using a BST", "sections": {}, "exercises": {}}, "BTRecurTutor/BinaryTreeGuidedInfFlw": {"long_name": "Binary Tree Guided Information Flow", "sections": {"Binary Tree Guided Information Flow": {"IneffBinaryTreeRangeCON": {"long_name": "Inefficient Binary Tree Traversal on Range Slide Show", "required": false, "points": 1.0, "threshold": 0.9, "type": "ss", "links": [], "scripts": ["AV/BTRecurTutor/IneffBinaryTreeRangeCON.js"], "mod_name": "BinaryTreeGuidedInfFlw"}}, "Binary Search Tree Small Count Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Binary Search Tree Small Count Exercise", "long_name": "Binary Search Tree Small Count Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "64", "type": "extr", "mod_name": "BinaryTreeGuidedInfFlw"}}, "exercises": {"IneffBinaryTreeRangeCON": {"long_name": "Inefficient Binary Tree Traversal on Range Slide Show", "required": false, "points": 1.0, "threshold": 0.9, "type": "ss", "links": [], "scripts": ["AV/BTRecurTutor/IneffBinaryTreeRangeCON.js"], "mod_name": "BinaryTreeGuidedInfFlw"}, "Binary Search Tree Small Count Exercise": {"long_name": "Binary Search Tree Small Count Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "BTRecurTutor/MultipleBinaryTrees": {"long_name": "Multiple Binary Trees", "sections": {"Mirror Image Binary Trees Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Mirror Image Binary Trees Exercise", "long_name": "Mirror Image Binary Trees Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "74", "type": "extr", "mod_name": "MultipleBinaryTrees"}, "Same Binary Tree Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Same Binary Tree Exercise", "long_name": "Same Binary Tree Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "69", "type": "extr", "mod_name": "MultipleBinaryTrees"}, "Structurally Identical Binary Trees Exercise": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Structurally Identical Binary Trees Exercise", "long_name": "Structurally Identical Binary Trees Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "partial_credit": "False", "points": 2.0, "workout_id": "75", "type": "extr", "mod_name": "MultipleBinaryTrees"}}, "exercises": {"Mirror Image Binary Trees Exercise": {"long_name": "Mirror Image Binary Trees Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Same Binary Tree Exercise": {"long_name": "Same Binary Tree Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Structurally Identical Binary Trees Exercise": {"long_name": "Structurally Identical Binary Trees Exercise", "enable_scrolling": "False", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "BTRecurTutor/BSTCheck": {"long_name": "A Hard Information Flow Problem", "sections": {}, "exercises": {}}, "Binary/CompleteTree": {"long_name": "Array Implementation for Complete Binary Trees", "sections": {"Array Implementation for Complete Binary Trees": {"CompleteFIB": {"long_name": "Complete Tree Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/CompleteFIB.html", "mod_name": "CompleteTree", "threshold": 5}}}, "exercises": {"CompleteFIB": {"long_name": "Complete Tree Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/CompleteFIB.html", "mod_name": "CompleteTree", "threshold": 5}}}, "Binary/Heaps": {"long_name": "Heaps and Priority Queues", "sections": {"Heaps and Priority Queues": {"heapinsertCON": {"long_name": "Heap insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapinsertCON.js"], "mod_name": "Heaps"}, "heapinsertPRO": {"long_name": "Heap Insert Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Binary/heapinsertPRO.html", "mod_name": "Heaps", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}}, "Building a Heap": {"HeapBldChoiceCON": {"long_name": "Heap Build Choices", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/HeapBldChoiceCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/HeapBldChoiceCON.js"], "mod_name": "Heaps"}, "HeapsIndCON": {"type": "dgm", "mod_name": "Heaps"}, "heapbuildCON": {"long_name": "Heapbuild Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapbuildCON.js"], "mod_name": "Heaps"}, "heapbuildPRO": {"long_name": "Heap Build Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/heapbuildPRO.html", "mod_name": "Heaps", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "heapbuildProofCON": {"long_name": "Heap build analysis proof Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/heapbuildProofCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapbuildProofCON.js"], "mod_name": "Heaps"}}, "Removing from the heap or updating an object's priority": {"heapmaxCON": {"long_name": "Remove Max Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapmaxCON.js"], "mod_name": "Heaps"}, "heapremovePRO": {"long_name": "Heap Remove Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Binary/heapremovePRO.html", "mod_name": "Heaps", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "heapremoveCON": {"long_name": "Remove Any Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapremoveCON.js"], "mod_name": "Heaps"}}, "Priority Queues": {"HeapSumm": {"long_name": "Heap Question Summary", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Binary/HeapSumm.html", "mod_name": "Heaps", "threshold": 5}}}, "exercises": {"heapinsertCON": {"long_name": "Heap insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapinsertCON.js"], "mod_name": "Heaps"}, "heapinsertPRO": {"long_name": "Heap Insert Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Binary/heapinsertPRO.html", "mod_name": "Heaps", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "HeapBldChoiceCON": {"long_name": "Heap Build Choices", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/HeapBldChoiceCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/HeapBldChoiceCON.js"], "mod_name": "Heaps"}, "HeapsIndCON": {"type": "dgm", "mod_name": "Heaps"}, "heapbuildCON": {"long_name": "Heapbuild Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapbuildCON.js"], "mod_name": "Heaps"}, "heapbuildPRO": {"long_name": "Heap Build Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Binary/heapbuildPRO.html", "mod_name": "Heaps", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "heapbuildProofCON": {"long_name": "Heap build analysis proof Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Binary/heapbuildProofCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapbuildProofCON.js"], "mod_name": "Heaps"}, "heapmaxCON": {"long_name": "Remove Max Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapmaxCON.js"], "mod_name": "Heaps"}, "heapremovePRO": {"long_name": "Heap Remove Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Binary/heapremovePRO.html", "mod_name": "Heaps", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}, "heapremoveCON": {"long_name": "Remove Any Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Binary/heapremoveCON.js"], "mod_name": "Heaps"}, "HeapSumm": {"long_name": "Heap Question Summary", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Binary/HeapSumm.html", "mod_name": "Heaps", "threshold": 5}}}, "Binary/Huffman": {"long_name": "Huffman Coding Trees", "sections": {"Huffman Coding Trees": {"huffmanBuildCON": {"long_name": "Huffman Coding Tree Slideshow: Build", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanBuildCON.js"], "mod_name": "Huffman"}, "huffmanLabelCON": {"long_name": "Huffman Coding Tree Slideshow: Label Edges", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanLabelCON.js"], "mod_name": "Huffman"}, "huffmanCodesCON": {"long_name": "Huffman Coding Tree Slideshow: Setting Codes", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanCodesCON.js"], "mod_name": "Huffman"}, "huffmanDecodeCON": {"long_name": "Huffman Coding Tree Slideshow: Decoding", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanDecodeCON.js"], "mod_name": "Huffman"}, "HuffmanDecodePRO": {"long_name": "Huffman Decoding Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/HuffmanDecodePRO.html", "mod_name": "Huffman", "threshold": 5}, "huffmanCustomBuildAV": {"long_name": "huffmanCustomBuildAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Binary/huffmanCustomBuildAV.html", "mod_name": "Huffman", "threshold": 1}}}, "exercises": {"huffmanBuildCON": {"long_name": "Huffman Coding Tree Slideshow: Build", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanBuildCON.js"], "mod_name": "Huffman"}, "huffmanLabelCON": {"long_name": "Huffman Coding Tree Slideshow: Label Edges", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanLabelCON.js"], "mod_name": "Huffman"}, "huffmanCodesCON": {"long_name": "Huffman Coding Tree Slideshow: Setting Codes", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanCodesCON.js"], "mod_name": "Huffman"}, "huffmanDecodeCON": {"long_name": "Huffman Coding Tree Slideshow: Decoding", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/huffman.css", "AV/Binary/huffmanCON.css"], "scripts": ["DataStructures/huffman.js", "AV/Binary/huffmanDecodeCON.js"], "mod_name": "Huffman"}, "HuffmanDecodePRO": {"long_name": "Huffman Decoding Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Binary/HuffmanDecodePRO.html", "mod_name": "Huffman", "threshold": 5}, "huffmanCustomBuildAV": {"long_name": "huffmanCustomBuildAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Binary/huffmanCustomBuildAV.html", "mod_name": "Huffman", "threshold": 1}}}, "Binary/TreeTrie": {"long_name": "Trees versus Tries", "sections": {"Trees versus Tries": {"TreeTimelineCON": {"long_name": "Tree timeline Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Development/TreeTrieCON.css"], "scripts": ["AV/Development/TreeTimelineCON.js"], "mod_name": "TreeTrie"}, "TrieTimelineCON": {"long_name": "Trie timeline Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Development/TreeTrieCON.css"], "scripts": ["AV/Development/TrieTimelineCON.js"], "mod_name": "TreeTrie"}}}, "exercises": {"TreeTimelineCON": {"long_name": "Tree timeline Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Development/TreeTrieCON.css"], "scripts": ["AV/Development/TreeTimelineCON.js"], "mod_name": "TreeTrie"}, "TrieTimelineCON": {"long_name": "Trie timeline Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Development/TreeTrieCON.css"], "scripts": ["AV/Development/TrieTimelineCON.js"], "mod_name": "TreeTrie"}}}, "Binary/HuffProof": {"long_name": "Proof of Optimality for Huffman Coding", "sections": {"Proof of Optimality for Huffman Coding": {"HuffProofCON": {"type": "dgm", "mod_name": "HuffProof"}}}, "exercises": {"HuffProofCON": {"type": "dgm", "mod_name": "HuffProof"}}}, "Binary/BinaryChapSumm": {"long_name": "Binary Tree Chapter Summary", "sections": {"Summary Questions": {"BinaryChapSumm": {"long_name": "BinaryChapSumm", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Binary/BinaryChapSumm.html", "mod_name": "BinaryChapSumm", "threshold": 10}}}, "exercises": {"BinaryChapSumm": {"long_name": "BinaryChapSumm", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Binary/BinaryChapSumm.html", "mod_name": "BinaryChapSumm", "threshold": 10}}}, "Sorting/InSort": {"long_name": "Chapter Introduction: Sorting", "sections": {}, "exercises": {}}, "Sorting/SortNotation": {"long_name": "Sorting Terminology and Notation", "sections": {"Sorting Terminology and Notation": {"SortNotationS1CON": {"long_name": "Sorting Terminology and Notation Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/SortNotationS1CON.css"], "scripts": ["AV/Sorting/SortNotationS1CON.js"], "mod_name": "SortNotation"}, "SortIntroSumm": {"long_name": "Sorting Intro Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SortIntroSumm.html", "mod_name": "SortNotation", "threshold": 3}}}, "exercises": {"SortNotationS1CON": {"long_name": "Sorting Terminology and Notation Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/SortNotationS1CON.css"], "scripts": ["AV/Sorting/SortNotationS1CON.js"], "mod_name": "SortNotation"}, "SortIntroSumm": {"long_name": "Sorting Intro Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SortIntroSumm.html", "mod_name": "SortNotation", "threshold": 3}}}, "Sorting/InsertionSort": {"long_name": "Insertion Sort", "sections": {"Insertion Sort": {"insertionsortCON": {"long_name": "Insertion Sort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/insertionsortCON.js"], "mod_name": "InsertionSort"}, "insertionsortAV": {"long_name": "Insertion Sort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/insertionsortAV.html", "mod_name": "InsertionSort", "threshold": 1}, "InssortPRO": {"long_name": "Insertion Sort Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/InssortPRO.html", "mod_name": "InsertionSort", "threshold": 5}}, "Insertion Sort Analysis": {"InsertionSortWorstCaseCON": {"long_name": "Insertion Sort Worst Case Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/InsertionSortWorstCaseCON.css"], "scripts": ["AV/Sorting/InsertionSortWorstCaseCON.js"], "mod_name": "InsertionSort"}, "InsertionSortBestCaseCON": {"long_name": "Insertion Sort Best Case Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/InsertionSortBestCaseCON.css"], "scripts": ["AV/Sorting/InsertionSortBestCaseCON.js"], "mod_name": "InsertionSort"}, "InsertionSortAverageCaseCON": {"long_name": "Insertion Sort Average Case Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/InsertionSortAverageCaseCON.css"], "scripts": ["AV/Sorting/InsertionSortAverageCaseCON.js"], "mod_name": "InsertionSort"}, "InssortSumm": {"long_name": "Insertion Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/InssortSumm.html", "mod_name": "InsertionSort", "threshold": 5}}}, "exercises": {"insertionsortCON": {"long_name": "Insertion Sort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/insertionsortCON.js"], "mod_name": "InsertionSort"}, "insertionsortAV": {"long_name": "Insertion Sort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/insertionsortAV.html", "mod_name": "InsertionSort", "threshold": 1}, "InssortPRO": {"long_name": "Insertion Sort Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/InssortPRO.html", "mod_name": "InsertionSort", "threshold": 5}, "InsertionSortWorstCaseCON": {"long_name": "Insertion Sort Worst Case Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/InsertionSortWorstCaseCON.css"], "scripts": ["AV/Sorting/InsertionSortWorstCaseCON.js"], "mod_name": "InsertionSort"}, "InsertionSortBestCaseCON": {"long_name": "Insertion Sort Best Case Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/InsertionSortBestCaseCON.css"], "scripts": ["AV/Sorting/InsertionSortBestCaseCON.js"], "mod_name": "InsertionSort"}, "InsertionSortAverageCaseCON": {"long_name": "Insertion Sort Average Case Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/InsertionSortAverageCaseCON.css"], "scripts": ["AV/Sorting/InsertionSortAverageCaseCON.js"], "mod_name": "InsertionSort"}, "InssortSumm": {"long_name": "Insertion Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/InssortSumm.html", "mod_name": "InsertionSort", "threshold": 5}}}, "Sorting/BubbleSort": {"long_name": "Bubble Sort", "sections": {"Bubble Sort": {"bubblesortS1CON": {"long_name": "Bubble Sort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/bubblesortS1CON.js"], "mod_name": "BubbleSort"}, "bubblesortS2CON": {"long_name": "Bubble Sort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/bubblesortS2CON.js"], "mod_name": "BubbleSort"}, "bubblesortAV": {"long_name": "Bubble Sort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/bubblesortAV.html", "mod_name": "BubbleSort", "threshold": 1}, "BubsortPRO": {"long_name": "Bubble Sort Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/BubsortPRO.html", "mod_name": "BubbleSort", "threshold": 3}}, "Bubble Sort Analysis": {"BubbleSortAnalysisCON": {"long_name": "Bubble Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/BubbleSortAnalysisCON.css"], "scripts": ["AV/Sorting/BubbleSortAnalysisCON.js"], "mod_name": "BubbleSort"}, "BubsortSumm": {"long_name": "Bubble Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/BubsortSumm.html", "mod_name": "BubbleSort", "threshold": 5}}}, "exercises": {"bubblesortS1CON": {"long_name": "Bubble Sort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/bubblesortS1CON.js"], "mod_name": "BubbleSort"}, "bubblesortS2CON": {"long_name": "Bubble Sort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/bubblesortS2CON.js"], "mod_name": "BubbleSort"}, "bubblesortAV": {"long_name": "Bubble Sort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/bubblesortAV.html", "mod_name": "BubbleSort", "threshold": 1}, "BubsortPRO": {"long_name": "Bubble Sort Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/BubsortPRO.html", "mod_name": "BubbleSort", "threshold": 3}, "BubbleSortAnalysisCON": {"long_name": "Bubble Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/BubbleSortAnalysisCON.css"], "scripts": ["AV/Sorting/BubbleSortAnalysisCON.js"], "mod_name": "BubbleSort"}, "BubsortSumm": {"long_name": "Bubble Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/BubsortSumm.html", "mod_name": "BubbleSort", "threshold": 5}}}, "Sorting/SelectionSort": {"long_name": "Selection Sort", "sections": {"Selection Sort": {"selectionsortS1CON": {"long_name": "Selection Sort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/selectionsortS1CON.js"], "mod_name": "SelectionSort"}, "selectionsortS2CON": {"long_name": "Selection Sort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/selectionsortS2CON.js"], "mod_name": "SelectionSort"}, "selectionsortAV": {"long_name": "Selection Sort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/selectionsortAV.html", "mod_name": "SelectionSort", "threshold": 1}, "SelsortPRO": {"long_name": "Selection Sort Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/SelsortPRO.html", "mod_name": "SelectionSort", "threshold": 5}}, "Selection Sort Analysis": {"SelectionSortAnalysisCON": {"long_name": "Selection Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/SelectionSortAnalysisCON.css"], "scripts": ["AV/Sorting/SelectionSortAnalysisCON.js"], "mod_name": "SelectionSort"}, "ptrSwapCON": {"long_name": "Selection Sort Pointer Swap", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/ptrSwapCON.css"], "scripts": ["AV/Sorting/ptrSwapCON.js"], "mod_name": "SelectionSort"}, "SelsortSumm": {"long_name": "Selection Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SelsortSumm.html", "mod_name": "SelectionSort", "threshold": 5}}}, "exercises": {"selectionsortS1CON": {"long_name": "Selection Sort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/selectionsortS1CON.js"], "mod_name": "SelectionSort"}, "selectionsortS2CON": {"long_name": "Selection Sort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/selectionsortS2CON.js"], "mod_name": "SelectionSort"}, "selectionsortAV": {"long_name": "Selection Sort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/selectionsortAV.html", "mod_name": "SelectionSort", "threshold": 1}, "SelsortPRO": {"long_name": "Selection Sort Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/SelsortPRO.html", "mod_name": "SelectionSort", "threshold": 5}, "SelectionSortAnalysisCON": {"long_name": "Selection Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/SelectionSortAnalysisCON.css"], "scripts": ["AV/Sorting/SelectionSortAnalysisCON.js"], "mod_name": "SelectionSort"}, "ptrSwapCON": {"long_name": "Selection Sort Pointer Swap", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/ptrSwapCON.css"], "scripts": ["AV/Sorting/ptrSwapCON.js"], "mod_name": "SelectionSort"}, "SelsortSumm": {"long_name": "Selection Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SelsortSumm.html", "mod_name": "SelectionSort", "threshold": 5}}}, "Sorting/ExchangeSort": {"long_name": "The Cost of Exchange Sorting", "sections": {"The Cost of Exchange Sorting": {"FindInversionsPRO": {"long_name": "Inversions Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/FindInversionsPRO.html", "mod_name": "ExchangeSort", "threshold": 5}}, "Analysis": {"ExchangeSortCON": {"long_name": "Exchange Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/ExchangeSortCON.css"], "scripts": ["AV/Sorting/ExchangeSortCON.js"], "mod_name": "ExchangeSort"}, "ExchangeSumm": {"long_name": "Exchange Sorting Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ExchangeSumm.html", "mod_name": "ExchangeSort", "threshold": 5}}}, "exercises": {"FindInversionsPRO": {"long_name": "Inversions Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/FindInversionsPRO.html", "mod_name": "ExchangeSort", "threshold": 5}, "ExchangeSortCON": {"long_name": "Exchange Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/ExchangeSortCON.css"], "scripts": ["AV/Sorting/ExchangeSortCON.js"], "mod_name": "ExchangeSort"}, "ExchangeSumm": {"long_name": "Exchange Sorting Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ExchangeSumm.html", "mod_name": "ExchangeSort", "threshold": 5}}}, "Sorting/SortOpt": {"long_name": "Optimizing Sort Algorithms with Code Tuning", "sections": {"Code Tuning for Simple Sorting Algorithms": {"insertionSortWithoutSwapPRO": {"long_name": "Insertion Sort Without Swap Proficiency Exercise", "required": true, "points": 0.0, "type": "pe", "av_address": "AV/Sorting/insertionSortWithoutSwapPRO.html", "mod_name": "SortOpt", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}}}, "exercises": {"insertionSortWithoutSwapPRO": {"long_name": "Insertion Sort Without Swap Proficiency Exercise", "required": true, "points": 0.0, "type": "pe", "av_address": "AV/Sorting/insertionSortWithoutSwapPRO.html", "mod_name": "SortOpt", "threshold": 0.9, "exer_options": {"JXOP-code": "none"}}}}, "Sorting/Shellsort": {"long_name": "Shellsort", "sections": {"Shellsort": {"shellsortCON1": {"long_name": "Shellsort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCON1.js"], "mod_name": "Shellsort"}, "shellsortCON2": {"long_name": "Shellsort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON2.js"], "mod_name": "Shellsort"}, "shellsortCON3": {"type": "dgm", "mod_name": "Shellsort"}, "shellsortCON4": {"long_name": "Shellsort Slideshow 3", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCON4.js"], "mod_name": "Shellsort"}, "shellsortCON5": {"long_name": "Shellsort Slideshow 4", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON5.js"], "mod_name": "Shellsort"}, "shellsortCON6": {"type": "dgm", "mod_name": "Shellsort"}, "shellsortCON7": {"long_name": "Shellsort Slideshow 5", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON7.js"], "mod_name": "Shellsort"}, "shellsortCON8": {"type": "dgm", "mod_name": "Shellsort"}, "shellsortCON9": {"long_name": "Shellsort Slideshow 6", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON9.js"], "mod_name": "Shellsort"}, "ShellsortSublistSumm": {"long_name": "Shellsort Sublist Proficency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ShellsortSublistSumm.html", "mod_name": "Shellsort", "threshold": 5}}, "Putting It Together": {"shellsortAV": {"long_name": "Shellsort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/shellsortAV.html", "mod_name": "Shellsort", "threshold": 1}, "ShellsortSeries": {"long_name": "Shellsort Series Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ShellsortSeries.html", "mod_name": "Shellsort", "threshold": 5}}, "Shellsort Practice Exercise": {"shellsortPRO": {"long_name": "Shellsort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/shellsortPRO.html", "mod_name": "Shellsort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}, "Optimizing Shellsort": {"shellsortPerf": {"long_name": "Shellsort Performance Activity", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/shellsortPerf.html", "mod_name": "Shellsort", "threshold": 1.0}}, "Shellsort Summary Questions": {"ShellsortSumm": {"long_name": "Shellsort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ShellsortSumm.html", "mod_name": "Shellsort", "threshold": 5}}}, "exercises": {"shellsortCON1": {"long_name": "Shellsort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCON1.js"], "mod_name": "Shellsort"}, "shellsortCON2": {"long_name": "Shellsort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON2.js"], "mod_name": "Shellsort"}, "shellsortCON3": {"type": "dgm", "mod_name": "Shellsort"}, "shellsortCON4": {"long_name": "Shellsort Slideshow 3", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCON4.js"], "mod_name": "Shellsort"}, "shellsortCON5": {"long_name": "Shellsort Slideshow 4", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON5.js"], "mod_name": "Shellsort"}, "shellsortCON6": {"type": "dgm", "mod_name": "Shellsort"}, "shellsortCON7": {"long_name": "Shellsort Slideshow 5", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON7.js"], "mod_name": "Shellsort"}, "shellsortCON8": {"type": "dgm", "mod_name": "Shellsort"}, "shellsortCON9": {"long_name": "Shellsort Slideshow 6", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/shellsortCODE.js", "AV/Sorting/shellsortCON9.js"], "mod_name": "Shellsort"}, "ShellsortSublistSumm": {"long_name": "Shellsort Sublist Proficency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ShellsortSublistSumm.html", "mod_name": "Shellsort", "threshold": 5}, "shellsortAV": {"long_name": "Shellsort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/shellsortAV.html", "mod_name": "Shellsort", "threshold": 1}, "ShellsortSeries": {"long_name": "Shellsort Series Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ShellsortSeries.html", "mod_name": "Shellsort", "threshold": 5}, "shellsortPRO": {"long_name": "Shellsort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/shellsortPRO.html", "mod_name": "Shellsort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "shellsortPerf": {"long_name": "Shellsort Performance Activity", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/shellsortPerf.html", "mod_name": "Shellsort", "threshold": 1.0}, "ShellsortSumm": {"long_name": "Shellsort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/ShellsortSumm.html", "mod_name": "Shellsort", "threshold": 5}}}, "Sorting/Mergesort": {"long_name": "Mergesort Concepts", "sections": {"Mergesort Concepts": {"mergesortAV": {"long_name": "Mergesort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/mergesortAV.html", "mod_name": "Mergesort", "threshold": 1}, "mergesortCON": {"long_name": "Merging Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/mergesortCON.js"], "mod_name": "Mergesort"}, "MergesortMergePRO": {"long_name": "Mergesort Merging Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/MergesortMergePRO.html", "mod_name": "Mergesort", "threshold": 5}}, "Mergesort Practice Exercise": {"mergesortPRO": {"long_name": "Mergesort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/mergesortPRO.html", "mod_name": "Mergesort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "MergeSortAnalysisCON": {"long_name": "Mergesort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/MergeSortAnalysisCON.css"], "scripts": ["AV/Sorting/MergeSortAnalysisCON.js"], "mod_name": "Mergesort"}}}, "exercises": {"mergesortAV": {"long_name": "Mergesort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/mergesortAV.html", "mod_name": "Mergesort", "threshold": 1}, "mergesortCON": {"long_name": "Merging Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/mergesortCON.js"], "mod_name": "Mergesort"}, "MergesortMergePRO": {"long_name": "Mergesort Merging Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/MergesortMergePRO.html", "mod_name": "Mergesort", "threshold": 5}, "mergesortPRO": {"long_name": "Mergesort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/mergesortPRO.html", "mod_name": "Mergesort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "MergeSortAnalysisCON": {"long_name": "Mergesort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/MergeSortAnalysisCON.css"], "scripts": ["AV/Sorting/MergeSortAnalysisCON.js"], "mod_name": "Mergesort"}}}, "Sorting/MergesortImpl": {"long_name": "Implementing Mergesort", "sections": {"Implementing Mergesort": {"mergeImplS1CON": {"long_name": "Mergesort Implementation Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/mergeImplS1CON.js"], "mod_name": "MergesortImpl"}, "mergeImplS2CON": {"long_name": "Mergesort Implementation Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/mergeImplS2CON.js"], "mod_name": "MergesortImpl"}, "MergesortSumm": {"long_name": "Mergesort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/MergesortSumm.html", "mod_name": "MergesortImpl", "threshold": 5}}}, "exercises": {"mergeImplS1CON": {"long_name": "Mergesort Implementation Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/mergeImplS1CON.js"], "mod_name": "MergesortImpl"}, "mergeImplS2CON": {"long_name": "Mergesort Implementation Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/mergeImplS2CON.js"], "mod_name": "MergesortImpl"}, "MergesortSumm": {"long_name": "Mergesort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/MergesortSumm.html", "mod_name": "MergesortImpl", "threshold": 5}}}, "Sorting/Quicksort": {"long_name": "Quicksort", "sections": {"Introduction": {"QuicksortPivotPRO": {"long_name": "Quicksort Pivot Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/QuicksortPivotPRO.html", "mod_name": "Quicksort", "threshold": 5}}, "Partition": {"quicksortCON": {"long_name": "Quicksort Partition Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/quicksortCON.css"], "scripts": ["AV/Sorting/quicksortCODE.js", "AV/Sorting/quicksortCON.js"], "mod_name": "Quicksort"}, "QuicksortPartitPRO": {"long_name": "Quicksort Partition Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/QuicksortPartitPRO.html", "mod_name": "Quicksort", "threshold": 5}, "QuickSortPartitionAnalysisCON": {"long_name": "Quicksort Partition Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortPartitionAnalysisCON.css"], "scripts": ["AV/Sorting/QuickSortPartitionAnalysisCON.js"], "mod_name": "Quicksort"}}, "Putting It Together": {"quicksortAV": {"long_name": "Quicksort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/quicksortAV.html", "mod_name": "Quicksort", "threshold": 1}, "quicksortPRO": {"long_name": "Quicksort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/quicksortPRO.html", "mod_name": "Quicksort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}, "Quicksort Analysis": {"QuickSortWorstCaseCON": {"long_name": "Quicksort Worst Case Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortWorstCaseCON.css"], "scripts": ["AV/Sorting/QuickSortWorstCaseCON.js"], "mod_name": "Quicksort"}, "QuickSortBestCaseCON": {"long_name": "Quicksort Best Case Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortBestCaseCON.css"], "scripts": ["AV/Sorting/QuickSortBestCaseCON.js"], "mod_name": "Quicksort"}, "QuickSortAverageCaseCON": {"long_name": "Quicksort Average Case Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortAverageCaseCON.css"], "scripts": ["AV/Sorting/QuickSortAverageCaseCON.js"], "mod_name": "Quicksort"}, "QuicksortSumm": {"long_name": "Quicksort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/QuicksortSumm.html", "mod_name": "Quicksort", "threshold": 5}}}, "exercises": {"QuicksortPivotPRO": {"long_name": "Quicksort Pivot Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/QuicksortPivotPRO.html", "mod_name": "Quicksort", "threshold": 5}, "quicksortCON": {"long_name": "Quicksort Partition Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/quicksortCON.css"], "scripts": ["AV/Sorting/quicksortCODE.js", "AV/Sorting/quicksortCON.js"], "mod_name": "Quicksort"}, "QuicksortPartitPRO": {"long_name": "Quicksort Partition Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/QuicksortPartitPRO.html", "mod_name": "Quicksort", "threshold": 5}, "QuickSortPartitionAnalysisCON": {"long_name": "Quicksort Partition Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortPartitionAnalysisCON.css"], "scripts": ["AV/Sorting/QuickSortPartitionAnalysisCON.js"], "mod_name": "Quicksort"}, "quicksortAV": {"long_name": "Quicksort Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/quicksortAV.html", "mod_name": "Quicksort", "threshold": 1}, "quicksortPRO": {"long_name": "Quicksort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/quicksortPRO.html", "mod_name": "Quicksort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "QuickSortWorstCaseCON": {"long_name": "Quicksort Worst Case Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortWorstCaseCON.css"], "scripts": ["AV/Sorting/QuickSortWorstCaseCON.js"], "mod_name": "Quicksort"}, "QuickSortBestCaseCON": {"long_name": "Quicksort Best Case Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortBestCaseCON.css"], "scripts": ["AV/Sorting/QuickSortBestCaseCON.js"], "mod_name": "Quicksort"}, "QuickSortAverageCaseCON": {"long_name": "Quicksort Average Case Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/QuickSortAverageCaseCON.css"], "scripts": ["AV/Sorting/QuickSortAverageCaseCON.js"], "mod_name": "Quicksort"}, "QuicksortSumm": {"long_name": "Quicksort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/QuicksortSumm.html", "mod_name": "Quicksort", "threshold": 5}}}, "Sorting/Heapsort": {"long_name": "Heapsort", "sections": {"Heapsort": {"heapsortCON": {"long_name": "Heapsort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Sorting/heapsortCON.js"], "mod_name": "Heapsort"}, "HeapsortStepPRO": {"long_name": "Heapsort RemoveMax Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/HeapsortStepPRO.html", "mod_name": "Heapsort", "threshold": 5}}, "Heapsort Proficiency Practice": {"heapsortPRO": {"long_name": "Heapsort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/heapsortPRO.html", "mod_name": "Heapsort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}, "Heapsort Analysis": {"HeapSortAnalysisCON": {"long_name": "Heapsort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/HeapSortAnalysisCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Sorting/HeapSortAnalysisCON.js"], "mod_name": "Heapsort"}, "HeapsortSumm": {"long_name": "Heapsort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/HeapsortSumm.html", "mod_name": "Heapsort", "threshold": 5}}}, "exercises": {"heapsortCON": {"long_name": "Heapsort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/binaryheap.js", "AV/Sorting/heapsortCON.js"], "mod_name": "Heapsort"}, "HeapsortStepPRO": {"long_name": "Heapsort RemoveMax Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/HeapsortStepPRO.html", "mod_name": "Heapsort", "threshold": 5}, "heapsortPRO": {"long_name": "Heapsort Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Sorting/heapsortPRO.html", "mod_name": "Heapsort", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "HeapSortAnalysisCON": {"long_name": "Heapsort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/HeapSortAnalysisCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Sorting/HeapSortAnalysisCON.js"], "mod_name": "Heapsort"}, "HeapsortSumm": {"long_name": "Heapsort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/HeapsortSumm.html", "mod_name": "Heapsort", "threshold": 5}}}, "Sorting/BinSort": {"long_name": "Binsort", "sections": {"Binsort": {"binsortS1CON": {"long_name": "Binsort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/binsortS1CON.js"], "mod_name": "BinSort"}, "binsortS2CON": {"long_name": "Binsort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/binsortS2CON.js"], "mod_name": "BinSort"}}}, "exercises": {"binsortS1CON": {"long_name": "Binsort Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/binsortS1CON.js"], "mod_name": "BinSort"}, "binsortS2CON": {"long_name": "Binsort Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Sorting/binsortS2CON.js"], "mod_name": "BinSort"}}}, "Sorting/RadixSort": {"long_name": "Radix Sort", "sections": {"Radix Sort": {"radixLinkAV": {"long_name": "Radix Sort Linked Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/radixLinkAV.html", "mod_name": "RadixSort", "threshold": 1}, "RadixsortPRO": {"long_name": "Radix Sort Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/RadixsortPRO.html", "mod_name": "RadixSort", "threshold": 4}}, "Array-based Radix Sort": {"radixArrayAV": {"long_name": "Radix Sort Array Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/radixArrayAV.html", "mod_name": "RadixSort", "threshold": 1}, "RadixSortAnalysisCON": {"long_name": "Radix Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/RadixSortAnalysisCON.css"], "scripts": ["AV/Sorting/RadixSortAnalysisCON.js"], "mod_name": "RadixSort"}, "RadixSortSumm": {"long_name": "Radix Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/RadixSortSumm.html", "mod_name": "RadixSort", "threshold": 5}}}, "exercises": {"radixLinkAV": {"long_name": "Radix Sort Linked Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/radixLinkAV.html", "mod_name": "RadixSort", "threshold": 1}, "RadixsortPRO": {"long_name": "Radix Sort Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Sorting/RadixsortPRO.html", "mod_name": "RadixSort", "threshold": 4}, "radixArrayAV": {"long_name": "Radix Sort Array Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Sorting/radixArrayAV.html", "mod_name": "RadixSort", "threshold": 1}, "RadixSortAnalysisCON": {"long_name": "Radix Sort Analysis Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/RadixSortAnalysisCON.css"], "scripts": ["AV/Sorting/RadixSortAnalysisCON.js"], "mod_name": "RadixSort"}, "RadixSortSumm": {"long_name": "Radix Sort Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/RadixSortSumm.html", "mod_name": "RadixSort", "threshold": 5}}}, "Sorting/SortingEmpirical": {"long_name": "An Empirical Comparison of Sorting Algorithms", "sections": {"An Empirical Comparison of Sorting Algorithms": {"SortAlgCompSumm": {"long_name": "Sort Comparison Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SortAlgCompSumm.html", "mod_name": "SortingEmpirical", "threshold": 5}}}, "exercises": {"SortAlgCompSumm": {"long_name": "Sort Comparison Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SortAlgCompSumm.html", "mod_name": "SortingEmpirical", "threshold": 5}}}, "Sorting/SortingLowerBound": {"long_name": "Lower Bounds for Sorting", "sections": {"Lower Bounds for Sorting": {"SortingLowerBoundCON": {"long_name": "Sorting Lower Bound Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/SortingLowerBoundCON.css"], "scripts": ["AV/Sorting/SortingLowerBoundCON.js"], "mod_name": "SortingLowerBound"}, "SortBoundSumm": {"long_name": "Lower Bounds Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SortBoundSumm.html", "mod_name": "SortingLowerBound", "threshold": 4}}}, "exercises": {"SortingLowerBoundCON": {"long_name": "Sorting Lower Bound Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Sorting/SortingLowerBoundCON.css"], "scripts": ["AV/Sorting/SortingLowerBoundCON.js"], "mod_name": "SortingLowerBound"}, "SortBoundSumm": {"long_name": "Lower Bounds Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Sorting/SortBoundSumm.html", "mod_name": "SortingLowerBound", "threshold": 4}}}, "Sorting/SortSumm": {"long_name": "Sorting Summary Exercises", "sections": {"Sorting Summary Exercises": {"SortChapterSumm": {"long_name": "Sorting Chapter Summary Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Sorting/SortChapterSumm.html", "mod_name": "SortSumm", "threshold": 10}}}, "exercises": {"SortChapterSumm": {"long_name": "Sorting Chapter Summary Exercise", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Sorting/SortChapterSumm.html", "mod_name": "SortSumm", "threshold": 10}}}, "Files/FileProc": {"long_name": "Chapter Introduction: File Processing", "sections": {}, "exercises": {}}, "Files/Secondary": {"long_name": "Primary versus Secondary Storage", "sections": {}, "exercises": {}}, "Files/Diskdrive": {"long_name": "Disk Drives", "sections": {"Disk Drives": {"diskSector": {"type": "dgm", "mod_name": "Diskdrive"}}}, "exercises": {"diskSector": {"type": "dgm", "mod_name": "Diskdrive"}}}, "Files/BuffPool": {"long_name": "Buffer Pools", "sections": {"Buffer Pools": {"buffintroCON": {"long_name": "Buffer Pool Introduction Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/buffpoolCON.css"], "scripts": ["AV/Files/buffintroCON.js"], "mod_name": "BuffPool"}, "LRUCON": {"long_name": "LRU Replacement Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/buffpoolCON.css"], "scripts": ["AV/Files/LRUCON.js"], "mod_name": "BuffPool"}, "LRUwriteCON": {"long_name": "LRU Replacement with write Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/buffpoolCON.css"], "scripts": ["AV/Files/LRUwriteCON.js"], "mod_name": "BuffPool"}, "BufferPoolAV": {"long_name": "Buffer Pool Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Files/BufferPoolAV.html", "mod_name": "BuffPool", "threshold": 1}}}, "exercises": {"buffintroCON": {"long_name": "Buffer Pool Introduction Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/buffpoolCON.css"], "scripts": ["AV/Files/buffintroCON.js"], "mod_name": "BuffPool"}, "LRUCON": {"long_name": "LRU Replacement Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/buffpoolCON.css"], "scripts": ["AV/Files/LRUCON.js"], "mod_name": "BuffPool"}, "LRUwriteCON": {"long_name": "LRU Replacement with write Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/buffpoolCON.css"], "scripts": ["AV/Files/LRUwriteCON.js"], "mod_name": "BuffPool"}, "BufferPoolAV": {"long_name": "Buffer Pool Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Files/BufferPoolAV.html", "mod_name": "BuffPool", "threshold": 1}}}, "Files/FileProg": {"long_name": "The Programmer's View of Files", "sections": {}, "exercises": {}}, "Files/ExternalSort": {"long_name": "External Sorting", "sections": {"External Sorting": {"extMergeSortCON": {"long_name": "External Merge Sort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extMergeSortCON.js"], "mod_name": "ExternalSort"}, "extMergeSortExampCON": {"long_name": "External Merge Sort Example Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extMergeSortExampCON.js"], "mod_name": "ExternalSort"}, "extSortOverCON": {"type": "dgm", "mod_name": "ExternalSort"}, "extRSCON": {"long_name": "External Replacement Selection Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extRSCON.js"], "mod_name": "ExternalSort"}, "extSortSnowCON": {"type": "dgm", "mod_name": "ExternalSort"}, "extRSPRO": {"long_name": "Replacement Selection Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Files/extRSPRO.html", "mod_name": "ExternalSort", "threshold": 1.0}}, "Multiway Merging": {"extMultiMergeCON": {"long_name": "Multiway Merge Example Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extMultiMergeCON.js"], "mod_name": "ExternalSort"}, "extMultiMergePRO": {"long_name": "Multi-way Merge Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Files/extMultiMergePRO.html", "mod_name": "ExternalSort", "threshold": 0.9}}}, "exercises": {"extMergeSortCON": {"long_name": "External Merge Sort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extMergeSortCON.js"], "mod_name": "ExternalSort"}, "extMergeSortExampCON": {"long_name": "External Merge Sort Example Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extMergeSortExampCON.js"], "mod_name": "ExternalSort"}, "extSortOverCON": {"type": "dgm", "mod_name": "ExternalSort"}, "extRSCON": {"long_name": "External Replacement Selection Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extRSCON.js"], "mod_name": "ExternalSort"}, "extSortSnowCON": {"type": "dgm", "mod_name": "ExternalSort"}, "extRSPRO": {"long_name": "Replacement Selection Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Files/extRSPRO.html", "mod_name": "ExternalSort", "threshold": 1.0}, "extMultiMergeCON": {"long_name": "Multiway Merge Example Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Files/extsortCON.css"], "scripts": ["DataStructures/binaryheap.js", "AV/Files/extMultiMergeCON.js"], "mod_name": "ExternalSort"}, "extMultiMergePRO": {"long_name": "Multi-way Merge Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Files/extMultiMergePRO.html", "mod_name": "ExternalSort", "threshold": 0.9}}}, "Hashing/HashIntro": {"long_name": "Introduction", "sections": {"Introduction": {"hashIntroCON": {"long_name": "Hashing Intro Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/hashIntroCON.css"], "scripts": ["AV/Hashing/hashIntroCON.js"], "mod_name": "HashIntro"}}}, "exercises": {"hashIntroCON": {"long_name": "Hashing Intro Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/hashIntroCON.css"], "scripts": ["AV/Hashing/hashIntroCON.js"], "mod_name": "HashIntro"}}}, "Hashing/HashFunc": {"long_name": "Hash Function Principles", "sections": {"Hash Function Principles": {"Birthday": {"long_name": "Birthday Problem Calculator", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Hashing/Birthday.html", "mod_name": "HashFunc", "threshold": 1}, "BirthdayFIB": {"long_name": "Birthday Problem Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/BirthdayFIB.html", "mod_name": "HashFunc", "threshold": 3}}}, "exercises": {"Birthday": {"long_name": "Birthday Problem Calculator", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Hashing/Birthday.html", "mod_name": "HashFunc", "threshold": 1}, "BirthdayFIB": {"long_name": "Birthday Problem Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/BirthdayFIB.html", "mod_name": "HashFunc", "threshold": 3}}}, "Hashing/HashFuncExamp": {"long_name": "Sample Hash Functions", "sections": {"Sample Hash Functions": {"hashFuncExCON1": {"long_name": "Hash Function Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Hashing/hashFuncExCON1.js"], "mod_name": "HashFuncExamp"}, "hashFuncExCON2": {"long_name": "Hash Function Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Hashing/hashFuncExCON2.js"], "mod_name": "HashFuncExamp"}, "MidSquare": {"long_name": "Mid-Square Calculator", "required": true, "points": 0.5, "type": "pe", "av_address": "AV/Hashing/MidSquare.html", "mod_name": "HashFuncExamp", "threshold": 1.0}}, "A Simple Hash Function for Strings": {"StringSimple": {"long_name": "Simple String Folding Calculator", "required": true, "points": 0.5, "type": "pe", "av_address": "AV/Hashing/StringSimple.html", "mod_name": "HashFuncExamp", "threshold": 1.0}}, "String Folding": {"StringSfold": {"long_name": "Improved String Folding Calculator", "required": true, "points": 0.5, "type": "pe", "av_address": "AV/Hashing/StringSfold.html", "mod_name": "HashFuncExamp", "threshold": 1.0}}, "Hash Function Practice": {"HashFuncFIBSumm": {"long_name": "Hash Function Pick Slot Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashFuncFIBSumm.html", "mod_name": "HashFuncExamp", "threshold": 5}}, "Hash Function Review Questions": {"HashFuncSumm": {"long_name": "Hash Function Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashFuncSumm.html", "mod_name": "HashFuncExamp", "threshold": 5}}}, "exercises": {"hashFuncExCON1": {"long_name": "Hash Function Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Hashing/hashFuncExCON1.js"], "mod_name": "HashFuncExamp"}, "hashFuncExCON2": {"long_name": "Hash Function Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Hashing/hashFuncExCON2.js"], "mod_name": "HashFuncExamp"}, "MidSquare": {"long_name": "Mid-Square Calculator", "required": true, "points": 0.5, "type": "pe", "av_address": "AV/Hashing/MidSquare.html", "mod_name": "HashFuncExamp", "threshold": 1.0}, "StringSimple": {"long_name": "Simple String Folding Calculator", "required": true, "points": 0.5, "type": "pe", "av_address": "AV/Hashing/StringSimple.html", "mod_name": "HashFuncExamp", "threshold": 1.0}, "StringSfold": {"long_name": "Improved String Folding Calculator", "required": true, "points": 0.5, "type": "pe", "av_address": "AV/Hashing/StringSfold.html", "mod_name": "HashFuncExamp", "threshold": 1.0}, "HashFuncFIBSumm": {"long_name": "Hash Function Pick Slot Summary", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashFuncFIBSumm.html", "mod_name": "HashFuncExamp", "threshold": 5}, "HashFuncSumm": {"long_name": "Hash Function Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashFuncSumm.html", "mod_name": "HashFuncExamp", "threshold": 5}}}, "Hashing/OpenHash": {"long_name": "Open Hashing", "sections": {"Open Hashing": {"openhashCON": {"type": "dgm", "mod_name": "OpenHash"}, "OpenHashPRO": {"long_name": "Open Hashing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/OpenHashPRO.html", "mod_name": "OpenHash", "threshold": 5}}}, "exercises": {"openhashCON": {"type": "dgm", "mod_name": "OpenHash"}, "OpenHashPRO": {"long_name": "Open Hashing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/OpenHashPRO.html", "mod_name": "OpenHash", "threshold": 5}}}, "Hashing/BucketHash": {"long_name": "Bucket Hashing", "sections": {"Bucket Hashing": {"buckethashCON1": {"long_name": "Bucket Hashing Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/buckethashCON.css"], "scripts": ["AV/Hashing/buckethashCON1.js"], "mod_name": "BucketHash"}, "HashBucketPRO": {"long_name": "Bucket Hashing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashBucketPRO.html", "mod_name": "BucketHash", "threshold": 5}}, "An Alternate Approach": {"buckethashCON2": {"long_name": "Bucket Hashing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/buckethashCON.css"], "scripts": ["AV/Hashing/buckethashCON2.js"], "mod_name": "BucketHash"}, "HashBucket2PRO": {"long_name": "Alternate Bucket Hashing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashBucket2PRO.html", "mod_name": "BucketHash", "threshold": 5}}}, "exercises": {"buckethashCON1": {"long_name": "Bucket Hashing Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/buckethashCON.css"], "scripts": ["AV/Hashing/buckethashCON1.js"], "mod_name": "BucketHash"}, "HashBucketPRO": {"long_name": "Bucket Hashing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashBucketPRO.html", "mod_name": "BucketHash", "threshold": 5}, "buckethashCON2": {"long_name": "Bucket Hashing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/buckethashCON.css"], "scripts": ["AV/Hashing/buckethashCON2.js"], "mod_name": "BucketHash"}, "HashBucket2PRO": {"long_name": "Alternate Bucket Hashing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashBucket2PRO.html", "mod_name": "BucketHash", "threshold": 5}}}, "Hashing/HashCSimple": {"long_name": "Collision Resolution", "sections": {"Collision Resolution": {"linProbeCON1": {"long_name": "Linear Probing Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/linProbeCON.css"], "scripts": ["AV/Hashing/linProbeCON1.js"], "mod_name": "HashCSimple"}, "linProbeCON2": {"long_name": "Linear Probing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/linProbeCON.css"], "scripts": ["AV/Hashing/linProbeCON2.js"], "mod_name": "HashCSimple"}, "HashLinearPPRO": {"long_name": "Linear Probing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashLinearPPRO.html", "mod_name": "HashCSimple", "threshold": 5}}}, "exercises": {"linProbeCON1": {"long_name": "Linear Probing Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/linProbeCON.css"], "scripts": ["AV/Hashing/linProbeCON1.js"], "mod_name": "HashCSimple"}, "linProbeCON2": {"long_name": "Linear Probing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/linProbeCON.css"], "scripts": ["AV/Hashing/linProbeCON2.js"], "mod_name": "HashCSimple"}, "HashLinearPPRO": {"long_name": "Linear Probing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashLinearPPRO.html", "mod_name": "HashCSimple", "threshold": 5}}}, "Hashing/HashCImproved": {"long_name": "Improved Collision Resolution", "sections": {"Linear Probing by Steps": {"collisionCON1": {"long_name": "Linear Probing By Steps Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON1.js"], "mod_name": "HashCImproved"}, "collisionCON2": {"long_name": "Linear Probing By Steps Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON2.js"], "mod_name": "HashCImproved"}, "HashLinearStepPPRO": {"long_name": "Linear Probing By Steps Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashLinearStepPPRO.html", "mod_name": "HashCImproved", "threshold": 5}}, "Pseudo-Random Probing": {"collisionCON3": {"long_name": "Pseudo-Random Probing Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON3.js"], "mod_name": "HashCImproved"}, "HashPseudoRandomPPRO": {"long_name": "Pseudo-Random Probing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashPseudoRandomPPRO.html", "mod_name": "HashCImproved", "threshold": 5}, "collisionCON4": {"long_name": "Avoiding the Train", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON4.js"], "mod_name": "HashCImproved"}}, "Quadratic Probing": {"collisionCON5": {"long_name": "Quadratic Probing Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON5.js"], "mod_name": "HashCImproved"}, "HashQuadraticPPRO": {"long_name": "Quadratic Probing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashQuadraticPPRO.html", "mod_name": "HashCImproved", "threshold": 5}, "collisionCON6": {"long_name": "Quadratic Probing Problem", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON6.js"], "mod_name": "HashCImproved"}}, "Double Hashing": {"collisionCON7": {"long_name": "Double Hashing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON7.js"], "mod_name": "HashCImproved"}, "collisionCON8": {"long_name": "Double Hashing Slideshow 3", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON8.js"], "mod_name": "HashCImproved"}, "HashDoublePPRO": {"long_name": "Double Hashing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashDoublePPRO.html", "mod_name": "HashCImproved", "threshold": 5}}}, "exercises": {"collisionCON1": {"long_name": "Linear Probing By Steps Slideshow 1", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON1.js"], "mod_name": "HashCImproved"}, "collisionCON2": {"long_name": "Linear Probing By Steps Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON2.js"], "mod_name": "HashCImproved"}, "HashLinearStepPPRO": {"long_name": "Linear Probing By Steps Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashLinearStepPPRO.html", "mod_name": "HashCImproved", "threshold": 5}, "collisionCON3": {"long_name": "Pseudo-Random Probing Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON3.js"], "mod_name": "HashCImproved"}, "HashPseudoRandomPPRO": {"long_name": "Pseudo-Random Probing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashPseudoRandomPPRO.html", "mod_name": "HashCImproved", "threshold": 5}, "collisionCON4": {"long_name": "Avoiding the Train", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON4.js"], "mod_name": "HashCImproved"}, "collisionCON5": {"long_name": "Quadratic Probing Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON5.js"], "mod_name": "HashCImproved"}, "HashQuadraticPPRO": {"long_name": "Quadratic Probing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashQuadraticPPRO.html", "mod_name": "HashCImproved", "threshold": 5}, "collisionCON6": {"long_name": "Quadratic Probing Problem", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON6.js"], "mod_name": "HashCImproved"}, "collisionCON7": {"long_name": "Double Hashing Slideshow 2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON7.js"], "mod_name": "HashCImproved"}, "collisionCON8": {"long_name": "Double Hashing Slideshow 3", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Hashing/collisionCON.css"], "scripts": ["AV/Hashing/collisionCON8.js"], "mod_name": "HashCImproved"}, "HashDoublePPRO": {"long_name": "Double Hashing Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashDoublePPRO.html", "mod_name": "HashCImproved", "threshold": 5}}}, "Hashing/HashAnal": {"long_name": "Analysis of Closed Hashing", "sections": {"Analysis of Closed Hashing": {"HashAnalSumm": {"long_name": "Analysis of Closed Hashing Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashAnalSumm.html", "mod_name": "HashAnal", "threshold": 5}}}, "exercises": {"HashAnalSumm": {"long_name": "Analysis of Closed Hashing Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashAnalSumm.html", "mod_name": "HashAnal", "threshold": 5}}}, "Hashing/HashDel": {"long_name": "Deletion", "sections": {"Deletion": {"hashdelCON": {"long_name": "Hash Deletion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Hashing/hashdelCON.js"], "mod_name": "HashDel"}, "HashingDelPRO": {"long_name": "Hash Deletion Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Hashing/HashingDelPRO.html", "mod_name": "HashDel", "threshold": 0.9}}, "Hashing Deletion Summary Questions": {"HashDelSumm": {"long_name": "Hash Deletion Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashDelSumm.html", "mod_name": "HashDel", "threshold": 3}}}, "exercises": {"hashdelCON": {"long_name": "Hash Deletion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/Hashing/hashdelCON.js"], "mod_name": "HashDel"}, "HashingDelPRO": {"long_name": "Hash Deletion Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Hashing/HashingDelPRO.html", "mod_name": "HashDel", "threshold": 0.9}, "HashDelSumm": {"long_name": "Hash Deletion Summary Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Hashing/HashDelSumm.html", "mod_name": "HashDel", "threshold": 3}}}, "Hashing/HashSumm": {"long_name": "Hashing Chapter Summary Exercises", "sections": {"Hashing Review": {"HashChapterSumm": {"long_name": "Hashing Chapter Summary Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashChapterSumm.html", "mod_name": "HashSumm", "threshold": 10}}}, "exercises": {"HashChapterSumm": {"long_name": "Hashing Chapter Summary Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Hashing/HashChapterSumm.html", "mod_name": "HashSumm", "threshold": 10}}}, "MemManage/MemmanIntro": {"long_name": "Chapter Introduction: Memory Management", "sections": {}, "exercises": {}}, "MemManage/Dynamic": {"long_name": "Dynamic Storage Allocation", "sections": {"Dynamic Storage Allocation": {"freeblocklistCON": {"type": "dgm", "mod_name": "Dynamic"}, "fragCON": {"type": "dgm", "mod_name": "Dynamic"}}}, "exercises": {"freeblocklistCON": {"type": "dgm", "mod_name": "Dynamic"}, "fragCON": {"type": "dgm", "mod_name": "Dynamic"}}}, "MemManage/SequentialFit": {"long_name": "Sequential-Fit Methods", "sections": {"Sequential-Fit Methods": {"seqFitCON": {"type": "dgm", "mod_name": "SequentialFit"}}}, "exercises": {"seqFitCON": {"type": "dgm", "mod_name": "SequentialFit"}}}, "MemManage/FirstFit": {"long_name": "First Fit", "sections": {"First Fit": {"firstFitAV": {"long_name": "First Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "FirstFit", "threshold": 1}, "firstFitPRO": {"long_name": "First Fit Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/MemManage/firstFitPRO.html", "mod_name": "FirstFit", "threshold": 0.9}}}, "exercises": {"firstFitAV": {"long_name": "First Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "FirstFit", "threshold": 1}, "firstFitPRO": {"long_name": "First Fit Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/MemManage/firstFitPRO.html", "mod_name": "FirstFit", "threshold": 0.9}}}, "MemManage/CircularFit": {"long_name": "Circular First Fit", "sections": {"Circular First Fit": {"firstFitAV": {"long_name": "Circular First Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "CircularFit", "threshold": 1}}}, "exercises": {"firstFitAV": {"long_name": "Circular First Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "CircularFit", "threshold": 1}}}, "MemManage/BestFit": {"long_name": "Best Fit", "sections": {"Best Fit": {"firstFitAV": {"long_name": "Best Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "BestFit", "threshold": 1}}}, "exercises": {"firstFitAV": {"long_name": "Best Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "BestFit", "threshold": 1}}}, "MemManage/WorstFit": {"long_name": "Worst Fit", "sections": {"Worst Fit": {"firstFitAV": {"long_name": "Worst Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "WorstFit", "threshold": 1}}}, "exercises": {"firstFitAV": {"long_name": "Worst Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "WorstFit", "threshold": 1}}}, "MemManage/MMPerformance": {"long_name": "Sequential Fit Peformance", "sections": {"Sequential Fit Peformance": {"firstFitAV": {"long_name": "Sequential Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "MMPerformance", "threshold": 1}}}, "exercises": {"firstFitAV": {"long_name": "Sequential Fit Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/firstFitAV.html", "mod_name": "MMPerformance", "threshold": 1}}}, "MemManage/Buddy": {"long_name": "Other Memory Allocation Methods", "sections": {"Other Memory Allocation Methods": {"buddyCON": {"type": "dgm", "mod_name": "Buddy"}, "BuddyAV": {"long_name": "Buddy Method Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/BuddyAV.html", "mod_name": "Buddy", "threshold": 1}}}, "exercises": {"buddyCON": {"type": "dgm", "mod_name": "Buddy"}, "BuddyAV": {"long_name": "Buddy Method Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/MemManage/BuddyAV.html", "mod_name": "Buddy", "threshold": 1}}}, "MemManage/Garbage": {"long_name": "Failure Policies and Garbage Collection", "sections": {}, "exercises": {}}, "Indexing/IndexIntro": {"long_name": "Indexing Chapter Introduction", "sections": {}, "exercises": {}}, "Indexing/LinearIndexing": {"long_name": "Linear Indexing", "sections": {"Linear Indexing": {"varindexCON": {"long_name": "Simple linear index Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/linearIndexingCON.css"], "scripts": ["AV/Indexing/varindexCON.js"], "mod_name": "LinearIndexing"}, "linindexCON": {"long_name": "Two-level linear index Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/linearIndexingCON.css"], "scripts": ["AV/Indexing/linindexCON.js"], "mod_name": "LinearIndexing"}, "linearIndexingPRO": {"long_name": "Linear Indexing Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Indexing/linearIndexingPRO.html", "mod_name": "LinearIndexing", "threshold": 0.9}, "TwoDArrCON": {"type": "dgm", "mod_name": "LinearIndexing"}, "InvertedCON": {"type": "dgm", "mod_name": "LinearIndexing"}, "InvListCON": {"type": "dgm", "mod_name": "LinearIndexing"}}}, "exercises": {"varindexCON": {"long_name": "Simple linear index Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/linearIndexingCON.css"], "scripts": ["AV/Indexing/varindexCON.js"], "mod_name": "LinearIndexing"}, "linindexCON": {"long_name": "Two-level linear index Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/linearIndexingCON.css"], "scripts": ["AV/Indexing/linindexCON.js"], "mod_name": "LinearIndexing"}, "linearIndexingPRO": {"long_name": "Linear Indexing Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Indexing/linearIndexingPRO.html", "mod_name": "LinearIndexing", "threshold": 0.9}, "TwoDArrCON": {"type": "dgm", "mod_name": "LinearIndexing"}, "InvertedCON": {"type": "dgm", "mod_name": "LinearIndexing"}, "InvListCON": {"type": "dgm", "mod_name": "LinearIndexing"}}}, "Indexing/ISAM": {"long_name": "ISAM", "sections": {}, "exercises": {}}, "Indexing/TreeIndexing": {"long_name": "Tree-based Indexing", "sections": {"Tree-based Indexing": {"pagedBSTCON": {"long_name": "Paged BST Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/treeIndexingCON.css"], "scripts": ["AV/Indexing/pagedBSTCON.js"], "mod_name": "TreeIndexing"}, "rebalanceBSTCON": {"long_name": "Paged BST With Disk Accesses Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/treeIndexingCON.css"], "scripts": ["AV/Indexing/rebalanceBSTCON.js"], "mod_name": "TreeIndexing"}, "TreeIndexing": {"long_name": "Tree Indexing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Indexing/TreeIndexing.html", "mod_name": "TreeIndexing", "threshold": 5}}}, "exercises": {"pagedBSTCON": {"long_name": "Paged BST Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/treeIndexingCON.css"], "scripts": ["AV/Indexing/pagedBSTCON.js"], "mod_name": "TreeIndexing"}, "rebalanceBSTCON": {"long_name": "Paged BST With Disk Accesses Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/treeIndexingCON.css"], "scripts": ["AV/Indexing/rebalanceBSTCON.js"], "mod_name": "TreeIndexing"}, "TreeIndexing": {"long_name": "Tree Indexing Proficiency Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Indexing/TreeIndexing.html", "mod_name": "TreeIndexing", "threshold": 5}}}, "Indexing/TwoThreeTree": {"long_name": "2-3 Trees", "sections": {"2-3 Trees": {"twoThreedgmCON": {"type": "dgm", "mod_name": "TwoThreeTree"}, "simpleInsertCON": {"long_name": "2-3 Tree Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/twoThreeTreeCON.css"], "scripts": ["AV/Indexing/twoThreeTreeCON.js", "AV/Indexing/simpleInsertCON.js"], "mod_name": "TwoThreeTree"}, "promoteCON": {"long_name": "2-3 Tree Insert Promotion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/twoThreeTreeCON.css"], "scripts": ["AV/Indexing/twoThreeTreeCON.js", "AV/Indexing/promoteCON.js"], "mod_name": "TwoThreeTree"}, "splitCON": {"long_name": "2-3 Tree Insert Split Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/twoThreeTreeCON.css"], "scripts": ["AV/Indexing/twoThreeTreeCON.js", "AV/Indexing/splitCON.js"], "mod_name": "TwoThreeTree"}}}, "exercises": {"twoThreedgmCON": {"type": "dgm", "mod_name": "TwoThreeTree"}, "simpleInsertCON": {"long_name": "2-3 Tree Insert Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/twoThreeTreeCON.css"], "scripts": ["AV/Indexing/twoThreeTreeCON.js", "AV/Indexing/simpleInsertCON.js"], "mod_name": "TwoThreeTree"}, "promoteCON": {"long_name": "2-3 Tree Insert Promotion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/twoThreeTreeCON.css"], "scripts": ["AV/Indexing/twoThreeTreeCON.js", "AV/Indexing/promoteCON.js"], "mod_name": "TwoThreeTree"}, "splitCON": {"long_name": "2-3 Tree Insert Split Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/twoThreeTreeCON.css"], "scripts": ["AV/Indexing/twoThreeTreeCON.js", "AV/Indexing/splitCON.js"], "mod_name": "TwoThreeTree"}}}, "Indexing/BTree": {"long_name": "B-Trees", "sections": {"B-Trees": {"BTreedgmCON": {"type": "dgm", "mod_name": "BTree"}, "TTPbuildCON": {"long_name": "TTPbuildCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/TTPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/TTPbuildCON.js"], "mod_name": "BTree"}, "TTPfindCON": {"long_name": "TTPfindCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/TTPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/TTPfindCON.js"], "mod_name": "BTree"}, "TTPdeleteCON": {"long_name": "TTPdeleteCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/TTPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/TTPdeleteCON.js"], "mod_name": "BTree"}, "BPfindCON": {"long_name": "BPfindCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPfindCON.js"], "mod_name": "BTree"}, "BPbuildCON": {"long_name": "BPbuildCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPbuildCON.js"], "mod_name": "BTree"}, "bPlusTreeInsertPRO": {"long_name": "B+ Tree Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Indexing/bPlusTreeInsertPRO.html", "mod_name": "BTree", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous"}}, "BPdeleteCON": {"long_name": "BPdeleteCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPdeleteCON.js"], "mod_name": "BTree"}, "BPbuild5CON": {"long_name": "BPbuild5CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPbuild5CON.js"], "mod_name": "BTree"}}}, "exercises": {"BTreedgmCON": {"type": "dgm", "mod_name": "BTree"}, "TTPbuildCON": {"long_name": "TTPbuildCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/TTPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/TTPbuildCON.js"], "mod_name": "BTree"}, "TTPfindCON": {"long_name": "TTPfindCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/TTPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/TTPfindCON.js"], "mod_name": "BTree"}, "TTPdeleteCON": {"long_name": "TTPdeleteCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/TTPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/TTPdeleteCON.js"], "mod_name": "BTree"}, "BPfindCON": {"long_name": "BPfindCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPfindCON.js"], "mod_name": "BTree"}, "BPbuildCON": {"long_name": "BPbuildCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPbuildCON.js"], "mod_name": "BTree"}, "bPlusTreeInsertPRO": {"long_name": "B+ Tree Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Indexing/bPlusTreeInsertPRO.html", "mod_name": "BTree", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous"}}, "BPdeleteCON": {"long_name": "BPdeleteCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPdeleteCON.js"], "mod_name": "BTree"}, "BPbuild5CON": {"long_name": "BPbuild5CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Indexing/BPTree.css", "AV/Indexing/BPTreeCON.css"], "scripts": ["AV/Indexing/BPlusTreeNode.js", "AV/Indexing/BPlusTree.js", "AV/Indexing/BPbuild5CON.js"], "mod_name": "BTree"}}}, "Indexing/IndexingSumm": {"long_name": "Indexing Summary Exercises", "sections": {"Indexing Summary": {"IndexChoice": {"long_name": "Choosing an Index", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Indexing/IndexChoice.html", "mod_name": "IndexingSumm", "threshold": 5}}}, "exercises": {"IndexChoice": {"long_name": "Choosing an Index", "required": true, "points": 2, "type": "ka", "av_address": "Exercises/Indexing/IndexChoice.html", "mod_name": "IndexingSumm", "threshold": 5}}}, "General/GenTreeIntro": {"long_name": "General Trees", "sections": {"General Trees": {"GenTreeCON": {"type": "dgm", "mod_name": "GenTreeIntro"}, "GenTreePreTravCON": {"long_name": "General Tree Preorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/GenTreeCON.css"], "scripts": ["AV/General/GenTreePreTravCON.js"], "mod_name": "GenTreeIntro"}, "GenTreePostTravCON": {"long_name": "General Tree Postorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/GenTreeCON.css"], "scripts": ["AV/General/GenTreePostTravCON.js"], "mod_name": "GenTreeIntro"}}}, "exercises": {"GenTreeCON": {"type": "dgm", "mod_name": "GenTreeIntro"}, "GenTreePreTravCON": {"long_name": "General Tree Preorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/GenTreeCON.css"], "scripts": ["AV/General/GenTreePreTravCON.js"], "mod_name": "GenTreeIntro"}, "GenTreePostTravCON": {"long_name": "General Tree Postorder Traversal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/GenTreeCON.css"], "scripts": ["AV/General/GenTreePostTravCON.js"], "mod_name": "GenTreeIntro"}}}, "General/UnionFind": {"long_name": "Union/Find and the Parent Pointer Implementation", "sections": {"The Union/Find Problem": {"UFfigCON": {"type": "dgm", "mod_name": "UnionFind"}, "UFconcomCON": {"type": "dgm", "mod_name": "UnionFind"}, "ufCON": {"long_name": "Union/Find Example", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/UFCON.css"], "scripts": ["AV/General/ufCON.js"], "mod_name": "UnionFind"}, "pathcompCON": {"long_name": "Union/Find Path Compression Example", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/UFCON.css"], "scripts": ["AV/General/pathcompCON.js"], "mod_name": "UnionFind"}, "UnionFindPRO": {"long_name": "Union/Find Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/General/UnionFindPRO.html", "mod_name": "UnionFind", "threshold": 0.9}}}, "exercises": {"UFfigCON": {"type": "dgm", "mod_name": "UnionFind"}, "UFconcomCON": {"type": "dgm", "mod_name": "UnionFind"}, "ufCON": {"long_name": "Union/Find Example", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/UFCON.css"], "scripts": ["AV/General/ufCON.js"], "mod_name": "UnionFind"}, "pathcompCON": {"long_name": "Union/Find Path Compression Example", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/UFCON.css"], "scripts": ["AV/General/pathcompCON.js"], "mod_name": "UnionFind"}, "UnionFindPRO": {"long_name": "Union/Find Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/General/UnionFindPRO.html", "mod_name": "UnionFind", "threshold": 0.9}}}, "General/SequentialRep": {"long_name": "Sequential Tree Representations", "sections": {"Sequential Tree Representations": {"BinExampCON": {"type": "dgm", "mod_name": "SequentialRep"}, "SequentialTreeCON": {"long_name": "First sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialTreeCON.js"], "mod_name": "SequentialRep"}, "SequentialTreePRO": {"long_name": "First Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreePRO.html", "mod_name": "SequentialRep", "threshold": 5}}, "Alternative Sequential Representation": {"SequentialTreeAltCON": {"long_name": "Second sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialTreeAltCON.js"], "mod_name": "SequentialRep"}, "SequentialTreeAltPRO": {"long_name": "Alternate Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreeAltPRO.html", "mod_name": "SequentialRep", "threshold": 5}}, "Bit Vector Representation": {"SequentialTreeBitsCON": {"long_name": "Bit vector sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialTreeBitsCON.js"], "mod_name": "SequentialRep"}, "SequentialTreeBitVectorPRO": {"long_name": "Bit Vector Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreeBitVectorPRO.html", "mod_name": "SequentialRep", "threshold": 5}}, "General Tree Sequential Representation": {"SequentialGenTreeCON": {"long_name": "General Tree sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialGenTreeCON.js"], "mod_name": "SequentialRep"}, "SequentialTreeGenTreePRO": {"long_name": "General Tree Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreeGenTreePRO.html", "mod_name": "SequentialRep", "threshold": 5}}}, "exercises": {"BinExampCON": {"type": "dgm", "mod_name": "SequentialRep"}, "SequentialTreeCON": {"long_name": "First sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialTreeCON.js"], "mod_name": "SequentialRep"}, "SequentialTreePRO": {"long_name": "First Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreePRO.html", "mod_name": "SequentialRep", "threshold": 5}, "SequentialTreeAltCON": {"long_name": "Second sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialTreeAltCON.js"], "mod_name": "SequentialRep"}, "SequentialTreeAltPRO": {"long_name": "Alternate Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreeAltPRO.html", "mod_name": "SequentialRep", "threshold": 5}, "SequentialTreeBitsCON": {"long_name": "Bit vector sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialTreeBitsCON.js"], "mod_name": "SequentialRep"}, "SequentialTreeBitVectorPRO": {"long_name": "Bit Vector Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreeBitVectorPRO.html", "mod_name": "SequentialRep", "threshold": 5}, "SequentialGenTreeCON": {"long_name": "General Tree sequential representation Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/General/SequentialTreeCON.css"], "scripts": ["AV/General/SequentialGenTreeCON.js"], "mod_name": "SequentialRep"}, "SequentialTreeGenTreePRO": {"long_name": "General Tree Sequential Representation Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/General/SequentialTreeGenTreePRO.html", "mod_name": "SequentialRep", "threshold": 5}}}, "Graph/GraphIntro": {"long_name": "Graphs Chapter Introduction", "sections": {"Graph Terminology and Implementation": {"GdirundirCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GneighborCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GpathDefCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GconcomCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GsparseDefCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GacyclicDefCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GdirRepCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GundirRepCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GweightedCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GspaceCalcSumm": {"long_name": "Graph Space Requirements Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Graph/GspaceCalcSumm.html", "mod_name": "GraphIntro", "threshold": 5}}, "Graph Terminology Questions": {"GraphIntroSumm": {"long_name": "Graph Terminology Summary Exercise", "required": true, "points": 3.0, "type": "ka", "av_address": "Exercises/Graph/GraphIntroSumm.html", "mod_name": "GraphIntro", "threshold": 10}}}, "exercises": {"GdirundirCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GneighborCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GpathDefCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GconcomCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GsparseDefCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GacyclicDefCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GdirRepCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GundirRepCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GweightedCON": {"type": "dgm", "mod_name": "GraphIntro"}, "GspaceCalcSumm": {"long_name": "Graph Space Requirements Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Graph/GspaceCalcSumm.html", "mod_name": "GraphIntro", "threshold": 5}, "GraphIntroSumm": {"long_name": "Graph Terminology Summary Exercise", "required": true, "points": 3.0, "type": "ka", "av_address": "Exercises/Graph/GraphIntroSumm.html", "mod_name": "GraphIntro", "threshold": 10}}}, "Graph/GraphImpl": {"long_name": "Graph Implementations", "sections": {}, "exercises": {}}, "Graph/GraphTraversal": {"long_name": "Graph Traversals", "sections": {"Graph Traversals": {"DFSCON": {"long_name": "Depth-First Search Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/DFSCON.css"], "scripts": ["AV/Graph/DFSCON.js"], "mod_name": "GraphTraversal"}, "DFSPE": {"long_name": "DFS Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/DFSPE.html", "mod_name": "GraphTraversal", "threshold": 0.9}}, "Breadth-First Search": {"BFSCON": {"long_name": "Breadth-First Search Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/BFSCON.css"], "scripts": ["AV/Graph/BFSCON.js"], "mod_name": "GraphTraversal"}, "BFSAV": {"long_name": "BFS AV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Graph/BFSAV.html", "mod_name": "GraphTraversal", "threshold": 1}, "BFSPE": {"long_name": "BFS Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/BFSPE.html", "mod_name": "GraphTraversal", "threshold": 0.9}}}, "exercises": {"DFSCON": {"long_name": "Depth-First Search Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/DFSCON.css"], "scripts": ["AV/Graph/DFSCON.js"], "mod_name": "GraphTraversal"}, "DFSPE": {"long_name": "DFS Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/DFSPE.html", "mod_name": "GraphTraversal", "threshold": 0.9}, "BFSCON": {"long_name": "Breadth-First Search Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/BFSCON.css"], "scripts": ["AV/Graph/BFSCON.js"], "mod_name": "GraphTraversal"}, "BFSAV": {"long_name": "BFS AV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Graph/BFSAV.html", "mod_name": "GraphTraversal", "threshold": 1}, "BFSPE": {"long_name": "BFS Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/BFSPE.html", "mod_name": "GraphTraversal", "threshold": 0.9}}}, "Graph/GraphTopsort": {"long_name": "Topological Sort", "sections": {"Topological Sort": {"topSortCON": {"type": "dgm", "mod_name": "GraphTopsort"}, "topSortDFSCON": {"long_name": "TopSort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/topSortDFSCON.css"], "scripts": ["AV/Graph/topSortDFSCON.js"], "mod_name": "GraphTopsort"}, "topSortQCON": {"long_name": "topSortQCON Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/topSortQCON.css"], "scripts": ["AV/Graph/topSortQCON.js"], "mod_name": "GraphTopsort"}}}, "exercises": {"topSortCON": {"type": "dgm", "mod_name": "GraphTopsort"}, "topSortDFSCON": {"long_name": "TopSort Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/topSortDFSCON.css"], "scripts": ["AV/Graph/topSortDFSCON.js"], "mod_name": "GraphTopsort"}, "topSortQCON": {"long_name": "topSortQCON Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/topSortQCON.css"], "scripts": ["AV/Graph/topSortQCON.js"], "mod_name": "GraphTopsort"}}}, "Graph/GraphShortest": {"long_name": "Shortest-Paths Problems", "sections": {"Shortest-Paths Problems": {"DistanceExampCON": {"type": "dgm", "mod_name": "GraphShortest"}, "DijkstraCON": {"long_name": "Dijkstra Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/DijkstraCON.css"], "scripts": ["AV/Graph/DijkstraCON.js"], "mod_name": "GraphShortest"}, "DijkstraPE": {"long_name": "Dijkstra's Algorithm Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/DijkstraPE.html", "mod_name": "GraphShortest", "threshold": 0.9}}}, "exercises": {"DistanceExampCON": {"type": "dgm", "mod_name": "GraphShortest"}, "DijkstraCON": {"long_name": "Dijkstra Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/DijkstraCON.css"], "scripts": ["AV/Graph/DijkstraCON.js"], "mod_name": "GraphShortest"}, "DijkstraPE": {"long_name": "Dijkstra's Algorithm Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/DijkstraPE.html", "mod_name": "GraphShortest", "threshold": 0.9}}}, "Graph/MCST": {"long_name": "Minimal Cost Spanning Trees", "sections": {"Minimal Cost Spanning Trees": {"MCSTCON": {"type": "dgm", "mod_name": "MCST"}, "primCON": {"long_name": "Prim's Minimum Cost Spanning Tree Algorithm Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/primCON.css"], "scripts": ["AV/Graph/primCON.js"], "mod_name": "MCST"}, "PrimPE": {"long_name": "Prim's Algorithm Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/PrimPE.html", "mod_name": "MCST", "threshold": 0.9}}}, "exercises": {"MCSTCON": {"type": "dgm", "mod_name": "MCST"}, "primCON": {"long_name": "Prim's Minimum Cost Spanning Tree Algorithm Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/primCON.css"], "scripts": ["AV/Graph/primCON.js"], "mod_name": "MCST"}, "PrimPE": {"long_name": "Prim's Algorithm Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/PrimPE.html", "mod_name": "MCST", "threshold": 0.9}}}, "Graph/Kruskal": {"long_name": "Kruskal's Algorithm", "sections": {"Kruskal's Algorithm": {"kruskalCON": {"long_name": "Kruskal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/kruskalCON.css"], "scripts": ["AV/Graph/kruskalCON.js"], "mod_name": "Kruskal"}, "KruskalPE": {"long_name": "Kruskal's Algorithm Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/KruskalPE.html", "mod_name": "Kruskal", "threshold": 0.9}}}, "exercises": {"kruskalCON": {"long_name": "Kruskal Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Graph/kruskalCON.css"], "scripts": ["AV/Graph/kruskalCON.js"], "mod_name": "Kruskal"}, "KruskalPE": {"long_name": "Kruskal's Algorithm Proficiency Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/Graph/KruskalPE.html", "mod_name": "Kruskal", "threshold": 0.9}}}, "Graph/Floyd": {"long_name": "All-Pairs Shortest Paths", "sections": {}, "exercises": {}}, "Spatial/Spatial": {"long_name": "Spatial Data Structures", "sections": {"Spatial Data Structures": {}}, "exercises": {}}, "Spatial/PRquadtree": {"long_name": "The PR Quadtree", "sections": {"The PR Quadtree": {"PRquadtreeAV": {"long_name": "PRquadtreeAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/PRquadtreeAV.html", "mod_name": "PRquadtree", "threshold": 1}, "PRquadtree2ptAV": {"long_name": "PRquadtree2ptAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/PRquadtree2ptAV.html", "mod_name": "PRquadtree", "threshold": 1}, "PRquadtreeInter": {"long_name": "PRquadtreeInter", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/PRquadtreeInter.html", "mod_name": "PRquadtree", "threshold": 1}}}, "exercises": {"PRquadtreeAV": {"long_name": "PRquadtreeAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/PRquadtreeAV.html", "mod_name": "PRquadtree", "threshold": 1}, "PRquadtree2ptAV": {"long_name": "PRquadtree2ptAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/PRquadtree2ptAV.html", "mod_name": "PRquadtree", "threshold": 1}, "PRquadtreeInter": {"long_name": "PRquadtreeInter", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/PRquadtreeInter.html", "mod_name": "PRquadtree", "threshold": 1}}}, "Spatial/KDtree": {"long_name": "KD Trees", "sections": {"KD Trees": {"kd-treeAV": {"long_name": "kd-treeAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/kd-treeAV.html", "mod_name": "KDtree", "threshold": 1}}}, "exercises": {"kd-treeAV": {"long_name": "kd-treeAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/kd-treeAV.html", "mod_name": "KDtree", "threshold": 1}}}, "Spatial/Bintree": {"long_name": "The Bintree", "sections": {"The Bintree": {"bintreeCON": {"type": "dgm", "mod_name": "Bintree"}, "BintreeAV": {"long_name": "BintreeAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/BintreeAV.html", "mod_name": "Bintree", "threshold": 1}, "BintreeInter": {"long_name": "BintreeInter", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/BintreeInter.html", "mod_name": "Bintree", "threshold": 1}}}, "exercises": {"bintreeCON": {"type": "dgm", "mod_name": "Bintree"}, "BintreeAV": {"long_name": "BintreeAV", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/BintreeAV.html", "mod_name": "Bintree", "threshold": 1}, "BintreeInter": {"long_name": "BintreeInter", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Spatial/BintreeInter.html", "mod_name": "Bintree", "threshold": 1}}}, "Spatial/OtherSpatial": {"long_name": "Other Spatial Data Structures", "sections": {}, "exercises": {}}, "SeniorAlgAnal/AAIntro": {"long_name": "Data and Algorithm Analysis", "sections": {"Introduction": {}}, "exercises": {}}, "SeniorAlgAnal/ProblemSolving": {"long_name": "An Introduction to Problem Solving", "sections": {"An Introduction to Problem Solving": {}}, "exercises": {}}, "SeniorAlgAnal/AAOverview": {"long_name": "Semester Overview", "sections": {"Semester Overview": {}}, "exercises": {}}, "SeniorAlgAnal/TOH": {"long_name": "Introduction to Analyzing a Problem", "sections": {"Towers of Hanoi": {"TOHfigCON": {"type": "dgm", "mod_name": "TOH"}}}, "exercises": {"TOHfigCON": {"type": "dgm", "mod_name": "TOH"}}}, "SeniorAlgAnal/BoundsReview": {"long_name": "Bounds Review", "sections": {"Bounds Review": {"SimpleCostsCON": {"type": "dgm", "mod_name": "BoundsReview"}}}, "exercises": {"SimpleCostsCON": {"type": "dgm", "mod_name": "BoundsReview"}}}, "SeniorAlgAnal/GrowthRate": {"long_name": "Growth Rates Review", "sections": {"Growth Rates Review": {}}, "exercises": {}}, "SeniorAlgAnal/AdvSumm": {"long_name": "Summation Techniques", "sections": {}, "exercises": {}}, "SeniorAlgAnal/Recurrence": {"long_name": "Solving Recurrence Relations", "sections": {"Solving Recurrence Relations": {"ExpandRecurrenceCON": {"long_name": "Divide-and-Conquer Expansion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV//SeniorAlgAnal/ExpandRecurrenceCON.css"], "scripts": ["AV/SeniorAlgAnal/ExpandRecurrenceCON.js"], "mod_name": "Recurrence"}, "DandCRecurrenceCON": {"long_name": "Divide-and-Conquer Expansion Slideshow2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/DandCRecurrenceCON.css"], "scripts": ["AV/SeniorAlgAnal/DandCRecurrenceCON.js"], "mod_name": "Recurrence"}}}, "exercises": {"ExpandRecurrenceCON": {"long_name": "Divide-and-Conquer Expansion Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV//SeniorAlgAnal/ExpandRecurrenceCON.css"], "scripts": ["AV/SeniorAlgAnal/ExpandRecurrenceCON.js"], "mod_name": "Recurrence"}, "DandCRecurrenceCON": {"long_name": "Divide-and-Conquer Expansion Slideshow2", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/DandCRecurrenceCON.css"], "scripts": ["AV/SeniorAlgAnal/DandCRecurrenceCON.js"], "mod_name": "Recurrence"}}}, "Searching/SearchIntro": {"long_name": "Chapter Introduction: Search", "sections": {}, "exercises": {}}, "Searching/UnsortedSearch": {"long_name": "Analyzing Search in Unsorted Lists", "sections": {"Analyzing Search in Unsorted Lists": {"PosetCON": {"long_name": "PosetCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/PosetCON.css"], "scripts": ["AV/SeniorAlgAnal/PosetCON.js"], "mod_name": "UnsortedSearch"}}}, "exercises": {"PosetCON": {"long_name": "PosetCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/PosetCON.css"], "scripts": ["AV/SeniorAlgAnal/PosetCON.js"], "mod_name": "UnsortedSearch"}}}, "Searching/SortedSearch": {"long_name": "Search in Sorted Arrays", "sections": {"Analysis": {"binarySearchCON": {"long_name": "binarySearchCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/binarySearchCON.css"], "scripts": ["AV/Searching/binarySearchCON.js"], "mod_name": "SortedSearch"}}}, "exercises": {"binarySearchCON": {"long_name": "binarySearchCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/binarySearchCON.css"], "scripts": ["AV/Searching/binarySearchCON.js"], "mod_name": "SortedSearch"}}}, "Searching/SelfOrg": {"long_name": "Self-Organizing Lists", "sections": {"Introduction": {"SelforgCON1": {"long_name": "Self-organizing List Slideshow: Frequency Count", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/selforgCON.css"], "scripts": ["AV/Searching/selforgCON.js"], "mod_name": "SelfOrg"}, "SelfOrgCounterPRO": {"long_name": "Self-organizing List Counter Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Searching/SelfOrgCounterPRO.html", "mod_name": "SelfOrg", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}, "Move to Front": {"SelforgCON2": {"long_name": "Self-organizing List Slideshow: Move-to-front", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/selforgCON.css"], "scripts": ["AV/Searching/selforgCON.js"], "mod_name": "SelfOrg"}, "SelfOrgM2FPRO": {"long_name": "Self-organizing List Move-to-front Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Searching/SelfOrgM2FPRO.html", "mod_name": "SelfOrg", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}, "Transpose": {"SelforgCON3": {"long_name": "Self-organizing List Slideshow: Transpose", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/selforgCON.css"], "scripts": ["AV/Searching/selforgCON.js"], "mod_name": "SelfOrg"}, "SelfOrgTransposePRO": {"long_name": "Self-organizing List Transpose Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Searching/SelfOrgTransposePRO.html", "mod_name": "SelfOrg", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}}, "exercises": {"SelforgCON1": {"long_name": "Self-organizing List Slideshow: Frequency Count", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/selforgCON.css"], "scripts": ["AV/Searching/selforgCON.js"], "mod_name": "SelfOrg"}, "SelfOrgCounterPRO": {"long_name": "Self-organizing List Counter Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Searching/SelfOrgCounterPRO.html", "mod_name": "SelfOrg", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "SelforgCON2": {"long_name": "Self-organizing List Slideshow: Move-to-front", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/selforgCON.css"], "scripts": ["AV/Searching/selforgCON.js"], "mod_name": "SelfOrg"}, "SelfOrgM2FPRO": {"long_name": "Self-organizing List Move-to-front Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Searching/SelfOrgM2FPRO.html", "mod_name": "SelfOrg", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}, "SelforgCON3": {"long_name": "Self-organizing List Slideshow: Transpose", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/Searching/selforgCON.css"], "scripts": ["AV/Searching/selforgCON.js"], "mod_name": "SelfOrg"}, "SelfOrgTransposePRO": {"long_name": "Self-organizing List Transpose Proficiency Exercise", "required": true, "points": 2.0, "type": "ka", "av_address": "Exercises/Searching/SelfOrgTransposePRO.html", "mod_name": "SelfOrg", "threshold": 0.9, "exer_options": {"JXOP-feedback": "continuous", "JXOP-fixmode": "fix"}}}}, "Development/SetSearch": {"long_name": "Bit Vectors for Representing Sets", "sections": {}, "exercises": {}}, "Development/PerfectHash": {"long_name": "Perfect Hashing", "sections": {"Perfect Hashing": {"perfectHashAV": {"long_name": "Perfect Hashing Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/perfectHashAV.html", "mod_name": "PerfectHash", "threshold": 1}}}, "exercises": {"perfectHashAV": {"long_name": "Perfect Hashing Visualization", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/perfectHashAV.html", "mod_name": "PerfectHash", "threshold": 1}}}, "Bounds/BoundMax": {"long_name": "Finding the Maximum Value", "sections": {"Finding the Maximum Value": {}}, "exercises": {}}, "Bounds/BoundAdversary": {"long_name": "Adversarial Lower Bounds Proofs", "sections": {}, "exercises": {}}, "Bounds/BoundState": {"long_name": "State Space Lower Bounds Proofs", "sections": {}, "exercises": {}}, "Bounds/BoundiBest": {"long_name": "Finding the i th Best Element", "sections": {}, "exercises": {}}, "Bounds/SortingOptimal": {"long_name": "Optimal Sorting", "sections": {}, "exercises": {}}, "SeniorAlgAnal/Numeric": {"long_name": "Number Problems", "sections": {"Number Problems": {}}, "exercises": {}}, "SeniorAlgAnal/Transform": {"long_name": "The Transformation Concept", "sections": {"The Transformation Concept: Integer Multiplication": {}, "Polynomial Multiplication": {"polynomialCON": {"long_name": "fft slideshow 1 polynomial", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/polynomialCON.css"], "scripts": ["DataStructures/Plot.js", "AV/SeniorAlgAnal/polynomialCON.js"], "mod_name": "Transform"}, "EvalandInterpolationCON": {"long_name": "fft slideshow 2 evaluation and interpolation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/EvalandInterpolationCON.css"], "scripts": ["DataStructures/Plot.js", "AV/SeniorAlgAnal/EvalandInterpolationCON.js"], "mod_name": "Transform"}, "ProductCON": {"long_name": "fft slideshow 3 polynomial product", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/ProductCON.css"], "scripts": ["AV/SeniorAlgAnal/ProductCON.js"], "mod_name": "Transform"}, "EvaluationCON": {"long_name": "fft slideshow 4 evaluation of polynomial product", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/EvaluationCON.css"], "scripts": ["AV/SeniorAlgAnal/EvaluationCON.js"], "mod_name": "Transform"}, "Polynomial_multiplication": {"long_name": "Polynomial_multiplication", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/SeniorAlgAnal/Polynomial_multiplication.html", "mod_name": "Transform", "threshold": 5}}}, "exercises": {"polynomialCON": {"long_name": "fft slideshow 1 polynomial", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/polynomialCON.css"], "scripts": ["DataStructures/Plot.js", "AV/SeniorAlgAnal/polynomialCON.js"], "mod_name": "Transform"}, "EvalandInterpolationCON": {"long_name": "fft slideshow 2 evaluation and interpolation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/EvalandInterpolationCON.css"], "scripts": ["DataStructures/Plot.js", "AV/SeniorAlgAnal/EvalandInterpolationCON.js"], "mod_name": "Transform"}, "ProductCON": {"long_name": "fft slideshow 3 polynomial product", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/ProductCON.css"], "scripts": ["AV/SeniorAlgAnal/ProductCON.js"], "mod_name": "Transform"}, "EvaluationCON": {"long_name": "fft slideshow 4 evaluation of polynomial product", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/EvaluationCON.css"], "scripts": ["AV/SeniorAlgAnal/EvaluationCON.js"], "mod_name": "Transform"}, "Polynomial_multiplication": {"long_name": "Polynomial_multiplication", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/SeniorAlgAnal/Polynomial_multiplication.html", "mod_name": "Transform", "threshold": 5}}}, "SeniorAlgAnal/FFT": {"long_name": "The Fast Fourier Transform", "sections": {"The Fast Fourier Transform": {"EvenOddCON": {"long_name": "fft slideshow 1 even and odd polynomials", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/EvenOddCON.css"], "scripts": ["AV/SeniorAlgAnal/EvenOddCON.js"], "mod_name": "FFT"}, "fftCON": {"type": "dgm", "mod_name": "FFT"}, "Nth_root": {"long_name": "Nth_root", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/SeniorAlgAnal/Nth_root.html", "mod_name": "FFT", "threshold": 5}, "arrayCON": {"type": "dgm", "mod_name": "FFT"}, "DFTmatrixCON": {"long_name": "fft slideshow 4 DFT matrix", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/DFTmatrixCON.css"], "scripts": ["DataStructures/Plot.js", "AV/SeniorAlgAnal/DFTmatrixCON.js"], "mod_name": "FFT"}, "DFTpropCON": {"long_name": "DFT matrix properties", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/DFTpropCON.css"], "scripts": ["AV/SeniorAlgAnal/DFTpropCON.js"], "mod_name": "FFT"}, "FFTprocedureCON": {"long_name": "fft slideshow 6 FFT procedure", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/FFTprocedureCON.css", "AV/SeniorAlgAnal/FFTprocedureCON.json"], "scripts": ["lib/complex.js", "AV/SeniorAlgAnal/FFTprocedureCON.js"], "mod_name": "FFT"}, "FFTAlg": {"long_name": "FFTAlg", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/SeniorAlgAnal/FFTAlg.html", "mod_name": "FFT", "threshold": 5}}}, "exercises": {"EvenOddCON": {"long_name": "fft slideshow 1 even and odd polynomials", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/EvenOddCON.css"], "scripts": ["AV/SeniorAlgAnal/EvenOddCON.js"], "mod_name": "FFT"}, "fftCON": {"type": "dgm", "mod_name": "FFT"}, "Nth_root": {"long_name": "Nth_root", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/SeniorAlgAnal/Nth_root.html", "mod_name": "FFT", "threshold": 5}, "arrayCON": {"type": "dgm", "mod_name": "FFT"}, "DFTmatrixCON": {"long_name": "fft slideshow 4 DFT matrix", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/DFTmatrixCON.css"], "scripts": ["DataStructures/Plot.js", "AV/SeniorAlgAnal/DFTmatrixCON.js"], "mod_name": "FFT"}, "DFTpropCON": {"long_name": "DFT matrix properties", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/DFTpropCON.css"], "scripts": ["AV/SeniorAlgAnal/DFTpropCON.js"], "mod_name": "FFT"}, "FFTprocedureCON": {"long_name": "fft slideshow 6 FFT procedure", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/SeniorAlgAnal/FFTprocedureCON.css", "AV/SeniorAlgAnal/FFTprocedureCON.json"], "scripts": ["lib/complex.js", "AV/SeniorAlgAnal/FFTprocedureCON.js"], "mod_name": "FFT"}, "FFTAlg": {"long_name": "FFTAlg", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/SeniorAlgAnal/FFTAlg.html", "mod_name": "FFT", "threshold": 5}}}, "SeniorAlgAnal/Probabilistic": {"long_name": "Introduction to Probabilistic Algorithms", "sections": {"Probabilistic Algorithms": {}}, "exercises": {}}, "SeniorAlgAnal/Primes": {"long_name": "Finding Prime Numbers", "sections": {}, "exercises": {}}, "SeniorAlgAnal/RandomNums": {"long_name": "Random Numbers", "sections": {"Random Numbers": {}}, "exercises": {}}, "SearchStruct/SkipList": {"long_name": "Skip Lists", "sections": {"Skip Lists": {"SkipListIntroCON": {"long_name": "SkipListIntroCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/SkipList.css", "AV/SearchStruct/SkipListIntroCON.css"], "scripts": ["DataStructures/SkipList.js", "AV/SearchStruct/SkipListIntroCON.js"], "mod_name": "SkipList"}, "SkipListInsertCON": {"long_name": "SkipListInsertCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/SkipList.css", "AV/SearchStruct/SkipListInsertCON.css"], "scripts": ["DataStructures/SkipList.js", "AV/SearchStruct/SkipListInsertCON.js"], "mod_name": "SkipList"}, "SkipListRmvCON": {"long_name": "SkipListRmvCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/SkipList.css", "AV/SearchStruct/SkipListRmvCON.css"], "scripts": ["DataStructures/SkipList.js", "AV/SearchStruct/SkipListRmvCON.js"], "mod_name": "SkipList"}}}, "exercises": {"SkipListIntroCON": {"long_name": "SkipListIntroCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/SkipList.css", "AV/SearchStruct/SkipListIntroCON.css"], "scripts": ["DataStructures/SkipList.js", "AV/SearchStruct/SkipListIntroCON.js"], "mod_name": "SkipList"}, "SkipListInsertCON": {"long_name": "SkipListInsertCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/SkipList.css", "AV/SearchStruct/SkipListInsertCON.css"], "scripts": ["DataStructures/SkipList.js", "AV/SearchStruct/SkipListInsertCON.js"], "mod_name": "SkipList"}, "SkipListRmvCON": {"long_name": "SkipListRmvCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/SkipList.css", "AV/SearchStruct/SkipListRmvCON.css"], "scripts": ["DataStructures/SkipList.js", "AV/SearchStruct/SkipListRmvCON.js"], "mod_name": "SkipList"}}}, "SearchStruct/BalancedTree": {"long_name": "Balanced Trees", "sections": {}, "exercises": {}}, "SearchStruct/AVL": {"long_name": "The AVL Tree", "sections": {}, "exercises": {}}, "SearchStruct/Splay": {"long_name": "The Splay Tree", "sections": {}, "exercises": {}}, "SearchStruct/RedBlack": {"long_name": "The Red-Black Tree", "sections": {"Exercise 1": {"redBlackTreeColoring": {"long_name": "Red-Black Tree Coloring Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Development/redBlackTreeColoring.html", "mod_name": "RedBlack", "threshold": 0.9}}, "Exercise 2": {"redBlackTreePRO": {"long_name": "Red-Black Tree Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Development/redBlackTreePRO.html", "mod_name": "RedBlack", "threshold": 0.9}}}, "exercises": {"redBlackTreeColoring": {"long_name": "Red-Black Tree Coloring Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Development/redBlackTreeColoring.html", "mod_name": "RedBlack", "threshold": 0.9}, "redBlackTreePRO": {"long_name": "Red-Black Tree Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/Development/redBlackTreePRO.html", "mod_name": "RedBlack", "threshold": 0.9}}}, "SearchStruct/Sparse": {"long_name": "The Sparse Matrix", "sections": {}, "exercises": {}}, "SeniorAlgAnal/DynamicProgramming": {"long_name": "Dynamic Programming", "sections": {"Dynamic Programming": {}, "Computing Fibonacci Numbers": {"FibTreeCON": {"long_name": "FibTreeCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["/AV/SeniorAlgAnal/FibTreeCON.css"], "scripts": ["/AV/SeniorAlgAnal/FibTreeCON.js"], "mod_name": "DynamicProgramming"}, "FibGraphCON": {"type": "dgm", "mod_name": "DynamicProgramming"}}, "The Knapsack Problem": {"KnapGraphCON": {"type": "dgm", "mod_name": "DynamicProgramming"}}, "Chained Matrix Multiplication": {"MatMulCON": {"long_name": "MatMulCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["/AV/SeniorAlgAnal/MatMulCON.css"], "scripts": ["/AV/SeniorAlgAnal/MatMulCON.js"], "mod_name": "DynamicProgramming"}}}, "exercises": {"FibTreeCON": {"long_name": "FibTreeCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["/AV/SeniorAlgAnal/FibTreeCON.css"], "scripts": ["/AV/SeniorAlgAnal/FibTreeCON.js"], "mod_name": "DynamicProgramming"}, "FibGraphCON": {"type": "dgm", "mod_name": "DynamicProgramming"}, "KnapGraphCON": {"type": "dgm", "mod_name": "DynamicProgramming"}, "MatMulCON": {"long_name": "MatMulCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["/AV/SeniorAlgAnal/MatMulCON.css"], "scripts": ["/AV/SeniorAlgAnal/MatMulCON.js"], "mod_name": "DynamicProgramming"}}}, "SeniorAlgAnal/AmortAnal": {"long_name": "Amortized Analysis", "sections": {}, "exercises": {}}, "Development/Knapsack": {"long_name": "0/1 Knapsack Problem", "sections": {"0/1 Knapsack Problem": {"sackCallTree": {"long_name": "Knapsack Call Tree", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/sackCallTree.html", "mod_name": "Knapsack", "threshold": 1}, "sackTreePluck": {"long_name": "Knapsack Call Tree Pluck", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/sackTreePluck.html", "mod_name": "Knapsack", "threshold": 1}, "sackTraceBack": {"long_name": "Knapsack Tree Reduction", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/sackTraceBack.html", "mod_name": "Knapsack", "threshold": 1}, "knapsackSelect": {"long_name": "Knapsack Select", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/knapsackSelect.html", "mod_name": "Knapsack", "threshold": 5}}, "Exercise 2": {"knapsackFillRow": {"long_name": "Knapsack Fill Row", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/knapsackFillRow.html", "mod_name": "Knapsack", "threshold": 5}}, "Exercise 3": {"knapsackSolution": {"long_name": "Knapsack Solution", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/knapsackSolution.html", "mod_name": "Knapsack", "threshold": 5}}, "Exercise 4": {"sackProficiency": {"long_name": "Knapsack Proficiency", "required": true, "points": 1, "type": "pe", "av_address": "AV/Development/sackProficiency.html", "mod_name": "Knapsack", "threshold": 0.9}}}, "exercises": {"sackCallTree": {"long_name": "Knapsack Call Tree", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/sackCallTree.html", "mod_name": "Knapsack", "threshold": 1}, "sackTreePluck": {"long_name": "Knapsack Call Tree Pluck", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/sackTreePluck.html", "mod_name": "Knapsack", "threshold": 1}, "sackTraceBack": {"long_name": "Knapsack Tree Reduction", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/sackTraceBack.html", "mod_name": "Knapsack", "threshold": 1}, "knapsackSelect": {"long_name": "Knapsack Select", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/knapsackSelect.html", "mod_name": "Knapsack", "threshold": 5}, "knapsackFillRow": {"long_name": "Knapsack Fill Row", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/knapsackFillRow.html", "mod_name": "Knapsack", "threshold": 5}, "knapsackSolution": {"long_name": "Knapsack Solution", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/knapsackSolution.html", "mod_name": "Knapsack", "threshold": 5}, "sackProficiency": {"long_name": "Knapsack Proficiency", "required": true, "points": 1, "type": "pe", "av_address": "AV/Development/sackProficiency.html", "mod_name": "Knapsack", "threshold": 0.9}}}, "Development/EditDistance": {"long_name": "Edit Distance", "sections": {"Edit Distance": {"editRCT": {"long_name": "Edit RCT", "required": false, "points": 1, "type": "ss", "av_address": "AV/Development/StringMatch/editRCT.html", "mod_name": "EditDistance", "threshold": 0.9}, "editPrune": {"long_name": "Edit Prune", "required": false, "points": 1, "type": "ss", "av_address": "AV/Development/StringMatch/editPrune.html", "mod_name": "EditDistance", "threshold": 0.9}, "editOptimal": {"long_name": "Edit Optimal", "required": false, "points": 1, "type": "ss", "av_address": "AV/Development/StringMatch/editOptimal.html", "mod_name": "EditDistance", "threshold": 0.9}}, "Exercise 1": {"edit-KA1": {"long_name": "Edit KA1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/edit-KA1.html", "mod_name": "EditDistance", "threshold": 5}}, "Exercise 2": {"edit-KA2": {"long_name": "Edit KA2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/edit-KA2.html", "mod_name": "EditDistance", "threshold": 5}}}, "exercises": {"editRCT": {"long_name": "Edit RCT", "required": false, "points": 1, "type": "ss", "av_address": "AV/Development/StringMatch/editRCT.html", "mod_name": "EditDistance", "threshold": 0.9}, "editPrune": {"long_name": "Edit Prune", "required": false, "points": 1, "type": "ss", "av_address": "AV/Development/StringMatch/editPrune.html", "mod_name": "EditDistance", "threshold": 0.9}, "editOptimal": {"long_name": "Edit Optimal", "required": false, "points": 1, "type": "ss", "av_address": "AV/Development/StringMatch/editOptimal.html", "mod_name": "EditDistance", "threshold": 0.9}, "edit-KA1": {"long_name": "Edit KA1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/edit-KA1.html", "mod_name": "EditDistance", "threshold": 5}, "edit-KA2": {"long_name": "Edit KA2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/edit-KA2.html", "mod_name": "EditDistance", "threshold": 5}}}, "Development/StringSearchKMP": {"long_name": "KMP String Search Algorithm", "sections": {"KMP String Search Algorithm": {"KMP_Slideshow": {"long_name": "KMP_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/KMP_Slideshow.html", "mod_name": "StringSearchKMP", "threshold": 1}, "KMP_Exercise": {"long_name": "KMP_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Exercise.html", "mod_name": "StringSearchKMP", "threshold": 5}, "KMP_align_array_slideshow": {"long_name": "KMP_align_array_slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/KMP_align_array_slideshow.html", "mod_name": "StringSearchKMP", "threshold": 1}, "KMP_Alignment_Array_Exercise": {"long_name": "KMP_Alignment_Array_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Alignment_Array_Exercise.html", "mod_name": "StringSearchKMP", "threshold": 5}, "KMP_Compares_Shifts_Exercise": {"long_name": "KMP_Compares_Shifts_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Compares_Shifts_Exercise.html", "mod_name": "StringSearchKMP", "threshold": 5}, "KMP_Users_Choice": {"long_name": "KMP_Users_Choice", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Users_Choice.html", "mod_name": "StringSearchKMP", "threshold": 5}}}, "exercises": {"KMP_Slideshow": {"long_name": "KMP_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/KMP_Slideshow.html", "mod_name": "StringSearchKMP", "threshold": 1}, "KMP_Exercise": {"long_name": "KMP_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Exercise.html", "mod_name": "StringSearchKMP", "threshold": 5}, "KMP_align_array_slideshow": {"long_name": "KMP_align_array_slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/KMP_align_array_slideshow.html", "mod_name": "StringSearchKMP", "threshold": 1}, "KMP_Alignment_Array_Exercise": {"long_name": "KMP_Alignment_Array_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Alignment_Array_Exercise.html", "mod_name": "StringSearchKMP", "threshold": 5}, "KMP_Compares_Shifts_Exercise": {"long_name": "KMP_Compares_Shifts_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Compares_Shifts_Exercise.html", "mod_name": "StringSearchKMP", "threshold": 5}, "KMP_Users_Choice": {"long_name": "KMP_Users_Choice", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/KMP_Users_Choice.html", "mod_name": "StringSearchKMP", "threshold": 5}}}, "Development/StringSearchBoyerMoore": {"long_name": "Boyer-Moore String Search Algorithm", "sections": {"Boyer-Moore String Search Algorithm": {"Boyer_Moore_Algorithm_Slideshow": {"long_name": "Boyer_Moore_Algorithm_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Boyer_Moore_Algorithm_Slideshow.html", "mod_name": "StringSearchBoyerMoore", "threshold": 1}, "Boyer_Moore_MMC_Slideshow": {"long_name": "Boyer_Moore_MMC_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Boyer_Moore_MMC_Slideshow.html", "mod_name": "StringSearchBoyerMoore", "threshold": 1}, "Boyer_Moore_Align_Table_Slideshow": {"long_name": "Boyer_Moore_Align_Table_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Boyer_Moore_Align_Table_Slideshow.html", "mod_name": "StringSearchBoyerMoore", "threshold": 1}, "Boyer_Moore_Next_Step_Exercise": {"long_name": "Boyer_Moore_Next_Step_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Boyer_Moore_Next_Step_Exercise.html", "mod_name": "StringSearchBoyerMoore", "threshold": 5}, "Boyer_Moore_MMC_Exercise": {"long_name": "Boyer_Moore_MMC_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Boyer_Moore_MMC_Exercise.html", "mod_name": "StringSearchBoyerMoore", "threshold": 5}, "Boyer_Moore_Alignment_Exercise": {"long_name": "Boyer_Moore_Alignment_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Boyer_Moore_Alignment_Exercise.html", "mod_name": "StringSearchBoyerMoore", "threshold": 5}}}, "exercises": {"Boyer_Moore_Algorithm_Slideshow": {"long_name": "Boyer_Moore_Algorithm_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Boyer_Moore_Algorithm_Slideshow.html", "mod_name": "StringSearchBoyerMoore", "threshold": 1}, "Boyer_Moore_MMC_Slideshow": {"long_name": "Boyer_Moore_MMC_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Boyer_Moore_MMC_Slideshow.html", "mod_name": "StringSearchBoyerMoore", "threshold": 1}, "Boyer_Moore_Align_Table_Slideshow": {"long_name": "Boyer_Moore_Align_Table_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Boyer_Moore_Align_Table_Slideshow.html", "mod_name": "StringSearchBoyerMoore", "threshold": 1}, "Boyer_Moore_Next_Step_Exercise": {"long_name": "Boyer_Moore_Next_Step_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Boyer_Moore_Next_Step_Exercise.html", "mod_name": "StringSearchBoyerMoore", "threshold": 5}, "Boyer_Moore_MMC_Exercise": {"long_name": "Boyer_Moore_MMC_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Boyer_Moore_MMC_Exercise.html", "mod_name": "StringSearchBoyerMoore", "threshold": 5}, "Boyer_Moore_Alignment_Exercise": {"long_name": "Boyer_Moore_Alignment_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Boyer_Moore_Alignment_Exercise.html", "mod_name": "StringSearchBoyerMoore", "threshold": 5}}}, "Development/StringSearchRabinKarp": {"long_name": "Rabin-Karp String Search Algorithm [Draft]", "sections": {"Rabin-Karp String Search Algorithm [Draft]": {"Rabin_Karp_Horner_Slideshow": {"long_name": "Rabin_Karp_Horner_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Rabin_Karp_Horner_Slideshow.html", "mod_name": "StringSearchRabinKarp", "threshold": 1}, "Rabin_Karp_Horners_Exercise": {"long_name": "Rabin_Karp_Horners_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Rabin_Karp_Horners_Exercise.html", "mod_name": "StringSearchRabinKarp", "threshold": 5}, "Rabin_Karp_Algorithm_Slideshow": {"long_name": "Rabin_Karp_Algorithm_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Rabin_Karp_Algorithm_Slideshow.html", "mod_name": "StringSearchRabinKarp", "threshold": 1}, "Rabin_Karp_Next_Step": {"long_name": "Rabin_Karp_Next_Step", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Rabin_Karp_Next_Step.html", "mod_name": "StringSearchRabinKarp", "threshold": 5}}}, "exercises": {"Rabin_Karp_Horner_Slideshow": {"long_name": "Rabin_Karp_Horner_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Rabin_Karp_Horner_Slideshow.html", "mod_name": "StringSearchRabinKarp", "threshold": 1}, "Rabin_Karp_Horners_Exercise": {"long_name": "Rabin_Karp_Horners_Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Rabin_Karp_Horners_Exercise.html", "mod_name": "StringSearchRabinKarp", "threshold": 5}, "Rabin_Karp_Algorithm_Slideshow": {"long_name": "Rabin_Karp_Algorithm_Slideshow", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/Development/StringMatch/Rabin_Karp_Algorithm_Slideshow.html", "mod_name": "StringSearchRabinKarp", "threshold": 1}, "Rabin_Karp_Next_Step": {"long_name": "Rabin_Karp_Next_Step", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/Development/StringMatch/Rabin_Karp_Next_Step.html", "mod_name": "StringSearchRabinKarp", "threshold": 5}}}, "Development/GenTreeImplement": {"long_name": "General Tree Implementations", "sections": {"General Tree Implementations": {}}, "exercises": {}}, "Development/Kary": {"long_name": "K-ary Tree Implementations", "sections": {"K-ary Tree Implementations": {}}, "exercises": {}}, "NP/LimComp": {"long_name": "Limits to Computing", "sections": {"Limits to Computing": {}}, "exercises": {}}, "NP/Reduction": {"long_name": "Reductions", "sections": {"Reductions": {"SortingProblemCON": {"long_name": "Sorting Problem", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/SortingProblemCON.css"], "scripts": ["AV/NP/SortingProblemCON.js"], "mod_name": "Reduction"}, "pairToSortCON": {"long_name": "Pair to Sorting Reduction Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/pairToSortCON.css"], "scripts": ["AV/NP/pairToSortCON.js"], "mod_name": "Reduction"}, "sortToPairCON": {"long_name": "Sorting to Pairing Reduction Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/sortToPairCON.css"], "scripts": ["AV/NP/sortToPairCON.js"], "mod_name": "Reduction"}, "matrixMulCON": {"long_name": "Matrix Multiplication", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/matrixMulCON.css"], "scripts": ["AV/NP/matrixMulCON.js"], "mod_name": "Reduction"}, "ReduceSimpPCON": {"type": "dgm", "mod_name": "Reduction"}}}, "exercises": {"SortingProblemCON": {"long_name": "Sorting Problem", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/SortingProblemCON.css"], "scripts": ["AV/NP/SortingProblemCON.js"], "mod_name": "Reduction"}, "pairToSortCON": {"long_name": "Pair to Sorting Reduction Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/pairToSortCON.css"], "scripts": ["AV/NP/pairToSortCON.js"], "mod_name": "Reduction"}, "sortToPairCON": {"long_name": "Sorting to Pairing Reduction Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/sortToPairCON.css"], "scripts": ["AV/NP/sortToPairCON.js"], "mod_name": "Reduction"}, "matrixMulCON": {"long_name": "Matrix Multiplication", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/matrixMulCON.css"], "scripts": ["AV/NP/matrixMulCON.js"], "mod_name": "Reduction"}, "ReduceSimpPCON": {"type": "dgm", "mod_name": "Reduction"}}}, "NP/NPComplete": {"long_name": "NP-Completeness", "sections": {"NP-Completeness": {"SalesCON": {"type": "dgm", "mod_name": "NPComplete"}, "cliqueCON": {"long_name": "Clique Problem", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/cliqueCON.css"], "scripts": ["AV/NP/cliqueCON.js"], "mod_name": "NPComplete"}, "ComplexCON": {"type": "dgm", "mod_name": "NPComplete"}}}, "exercises": {"SalesCON": {"type": "dgm", "mod_name": "NPComplete"}, "cliqueCON": {"long_name": "Clique Problem", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/cliqueCON.css"], "scripts": ["AV/NP/cliqueCON.js"], "mod_name": "NPComplete"}, "ComplexCON": {"type": "dgm", "mod_name": "NPComplete"}}}, "NP/circuitSAT": {"long_name": "Circuit Satisfiability", "sections": {"Circuit Satisfiability": {"circuitSATCON": {"long_name": "Circuit Satisfiability", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/circuitSATCON.css"], "scripts": ["AV/NP/circuit.js", "AV/NP/circuitSATCON.js"], "mod_name": "circuitSAT"}}}, "exercises": {"circuitSATCON": {"long_name": "Circuit Satisfiability", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/circuitSATCON.css"], "scripts": ["AV/NP/circuit.js", "AV/NP/circuitSATCON.js"], "mod_name": "circuitSAT"}}}, "NP/SAT": {"long_name": "Formula Satisfiability", "sections": {"Formula Satisfiability": {"SATCON": {"long_name": "Formula Satisfiability", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV//NP/SATCON.css"], "scripts": ["AV/NP/SATCON.js"], "mod_name": "SAT"}}}, "exercises": {"SATCON": {"long_name": "Formula Satisfiability", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV//NP/SATCON.css"], "scripts": ["AV/NP/SATCON.js"], "mod_name": "SAT"}}}, "NP/threeSAT": {"long_name": "3-CNF Satisfiability", "sections": {"3-CNF Satisfiability": {"threeSATCON": {"long_name": "3-Satisfiability", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/threeSATCON.css"], "scripts": ["AV/NP/threeSATCON.js"], "mod_name": "threeSAT"}, "threeSATPRO": {"long_name": "Practice Exercise for 3-SAT", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/threeSATPRO.html", "mod_name": "threeSAT", "threshold": 1.0}}}, "exercises": {"threeSATCON": {"long_name": "3-Satisfiability", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/threeSATCON.css"], "scripts": ["AV/NP/threeSATCON.js"], "mod_name": "threeSAT"}, "threeSATPRO": {"long_name": "Practice Exercise for 3-SAT", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/threeSATPRO.html", "mod_name": "threeSAT", "threshold": 1.0}}}, "NP/clique": {"long_name": "The Clique Problem", "sections": {"The Clique Problem": {"cliqueCON": {"long_name": "Clique", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/cliqueCON.css"], "scripts": ["AV/NP/cliqueCON.js"], "mod_name": "clique"}, "cliquePRO": {"long_name": "Practice Exercise for Clique", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/cliquePRO.html", "mod_name": "clique", "threshold": 1.0}}}, "exercises": {"cliqueCON": {"long_name": "Clique", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/cliqueCON.css"], "scripts": ["AV/NP/cliqueCON.js"], "mod_name": "clique"}, "cliquePRO": {"long_name": "Practice Exercise for Clique", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/cliquePRO.html", "mod_name": "clique", "threshold": 1.0}}}, "NP/independentSet": {"long_name": "The Independent Set Problem", "sections": {"Independent Set": {"independentSetCON": {"long_name": "Independent Set", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/independentSetCON.css"], "scripts": ["AV/NP/independentSetCON.js"], "mod_name": "independentSet"}, "independentSetPRO": {"long_name": "Practice Exercise for Independent Set", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/independentSetPRO.html", "mod_name": "independentSet", "threshold": 1.0}}}, "exercises": {"independentSetCON": {"long_name": "Independent Set", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/independentSetCON.css"], "scripts": ["AV/NP/independentSetCON.js"], "mod_name": "independentSet"}, "independentSetPRO": {"long_name": "Practice Exercise for Independent Set", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/independentSetPRO.html", "mod_name": "independentSet", "threshold": 1.0}}}, "NP/vertexCover": {"long_name": "The Vertex Cover Problem", "sections": {"Vertex Cover": {"vertexCoverCON": {"long_name": "Vertex Cover", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/vertexCoverCON.css"], "scripts": ["AV/NP/vertexCoverCON.js"], "mod_name": "vertexCover"}, "vertexCoverPRO": {"long_name": "Practice Exercise for Vertex Cover", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/vertexCoverPRO.html", "mod_name": "vertexCover", "threshold": 1.0}}}, "exercises": {"vertexCoverCON": {"long_name": "Vertex Cover", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/vertexCoverCON.css"], "scripts": ["AV/NP/vertexCoverCON.js"], "mod_name": "vertexCover"}, "vertexCoverPRO": {"long_name": "Practice Exercise for Vertex Cover", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/vertexCoverPRO.html", "mod_name": "vertexCover", "threshold": 1.0}}}, "NP/hamiltonianCycle": {"long_name": "The Hamiltonian Cycle Problem", "sections": {"Hamiltonian Cycle": {"hamiltonianCycleCON": {"long_name": "Hamiltonian Cycle", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/hamiltonianCycleCON.css"], "scripts": ["AV/NP/hamiltonianCycleCON.js"], "mod_name": "hamiltonianCycle"}, "hamiltonianCycPRO": {"long_name": "Practice Exercise for Hamiltonian Cycle", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/hamiltonianCycPRO.html", "mod_name": "hamiltonianCycle", "threshold": 1.0}}}, "exercises": {"hamiltonianCycleCON": {"long_name": "Hamiltonian Cycle", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/hamiltonianCycleCON.css"], "scripts": ["AV/NP/hamiltonianCycleCON.js"], "mod_name": "hamiltonianCycle"}, "hamiltonianCycPRO": {"long_name": "Practice Exercise for Hamiltonian Cycle", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/hamiltonianCycPRO.html", "mod_name": "hamiltonianCycle", "threshold": 1.0}}}, "NP/TSP": {"long_name": "The Traveling Salesman Problem", "sections": {"Traveling Salesman": {"TSPCON": {"long_name": "Traveling Salesman", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/TSPCON.css"], "scripts": ["AV/NP/TSPCON.js"], "mod_name": "TSP"}, "TSPPRO": {"long_name": "Practice Exercise for Traveling Salesman Problem", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/TSPPRO.html", "mod_name": "TSP", "threshold": 1.0}}}, "exercises": {"TSPCON": {"long_name": "Traveling Salesman", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/TSPCON.css"], "scripts": ["AV/NP/TSPCON.js"], "mod_name": "TSP"}, "TSPPRO": {"long_name": "Practice Exercise for Traveling Salesman Problem", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/NP/TSPPRO.html", "mod_name": "TSP", "threshold": 1.0}}}, "NP/provingNPC": {"long_name": "NP-Completeness Proofs", "sections": {"NP-Completeness Proofs": {"NPCProofDiagramCON": {"type": "dgm", "mod_name": "provingNPC"}}}, "exercises": {"NPCProofDiagramCON": {"type": "dgm", "mod_name": "provingNPC"}}}, "NP/circuitSAT_to_SAT": {"long_name": "Reduction of Circuit SAT to SAT", "sections": {"Reduction of Circuit SAT to SAT": {"circuitSATtoSATCON": {"long_name": "Circuit SAT to SAT", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/circuitSATtoSATCON.css"], "scripts": ["AV/NP/circuit.js", "AV/NP/circuitSATtoSATCON.js"], "mod_name": "circuitSAT_to_SAT"}}}, "exercises": {"circuitSATtoSATCON": {"long_name": "Circuit SAT to SAT", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/circuitSATtoSATCON.css"], "scripts": ["AV/NP/circuit.js", "AV/NP/circuitSATtoSATCON.js"], "mod_name": "circuitSAT_to_SAT"}}}, "NP/SAT_to_threeSAT": {"long_name": "Reduction of SAT to 3-SAT", "sections": {"Reduction of SAT to 3-SAT": {"SATto3SATCON": {"long_name": "SATto3SATCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/SATto3SATCON.css"], "scripts": ["AV/NP/SATto3SATCON.js"], "mod_name": "SAT_to_threeSAT"}}}, "exercises": {"SATto3SATCON": {"long_name": "SATto3SATCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/SATto3SATCON.css"], "scripts": ["AV/NP/SATto3SATCON.js"], "mod_name": "SAT_to_threeSAT"}}}, "NP/threeSAT_to_clique": {"long_name": "Reduction of 3-SAT to Clique", "sections": {"Reduction of 3-SAT to Clique": {"threeSATtoCliqueCON": {"long_name": "threeSATtoCliqueCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/threeSATtoCliqueCON.css"], "scripts": ["AV/NP/threeSATtoCliqueCON.js"], "mod_name": "threeSAT_to_clique"}}}, "exercises": {"threeSATtoCliqueCON": {"long_name": "threeSATtoCliqueCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/threeSATtoCliqueCON.css"], "scripts": ["AV/NP/threeSATtoCliqueCON.js"], "mod_name": "threeSAT_to_clique"}}}, "NP/clique_to_independentSet": {"long_name": "Reduction of Clique to Independent Set", "sections": {"Clique to Independent Set": {"cliqueToISCON": {"long_name": "Clique to IS Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/cliqueToISCON.css"], "scripts": ["AV/NP/cliqueToISCON.js"], "mod_name": "clique_to_independentSet"}}}, "exercises": {"cliqueToISCON": {"long_name": "Clique to IS Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/cliqueToISCON.css"], "scripts": ["AV/NP/cliqueToISCON.js"], "mod_name": "clique_to_independentSet"}}}, "NP/independentSet_to_vertexCover": {"long_name": "Reduction of Independent Set to Vertex Cover", "sections": {"Independent Set to Vertex Cover": {"IStoVCCON": {"long_name": "IS to VC Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/IStoVCCON.css"], "scripts": ["AV/NP/IStoVCCON.js"], "mod_name": "independentSet_to_vertexCover"}}}, "exercises": {"IStoVCCON": {"long_name": "IS to VC Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/IStoVCCON.css"], "scripts": ["AV/NP/IStoVCCON.js"], "mod_name": "independentSet_to_vertexCover"}}}, "NP/threeSAT_to_hamiltonianCycle": {"long_name": "Reduction of 3-SAT to Hamiltonian Cycle", "sections": {"3-SAT to Hamiltonian Cycle": {"threeSATtoHCCON": {"long_name": "3-SAT to HC Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/threeSATtoHCCON.css"], "scripts": ["AV/NP/threeSATtoHCCON.js"], "mod_name": "threeSAT_to_hamiltonianCycle"}}}, "exercises": {"threeSATtoHCCON": {"long_name": "3-SAT to HC Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/threeSATtoHCCON.css"], "scripts": ["AV/NP/threeSATtoHCCON.js"], "mod_name": "threeSAT_to_hamiltonianCycle"}}}, "NP/hamiltonianCycle_to_TSP": {"long_name": "Reduction of Hamiltonian Cycle to Traveling Salesman", "sections": {"Hamiltonian Cycle to Traveling Salesman": {"HCtoTSPCON": {"long_name": "HC to TSP Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/HCtoTSPCON.css"], "scripts": ["AV/NP/HCtoTSPCON.js"], "mod_name": "hamiltonianCycle_to_TSP"}}}, "exercises": {"HCtoTSPCON": {"long_name": "HC to TSP Reduction", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/NP/HCtoTSPCON.css"], "scripts": ["AV/NP/HCtoTSPCON.js"], "mod_name": "hamiltonianCycle_to_TSP"}}}, "NP/NPCoping": {"long_name": "Coping with NP-Complete Problems", "sections": {}, "exercises": {}}, "SeniorAlgAnal/Impossible": {"long_name": "Unsolveable Problems", "sections": {"Unsolveable Problems": {"FuncBinCON": {"type": "dgm", "mod_name": "Impossible"}, "FuncDiagCON": {"type": "dgm", "mod_name": "Impossible"}}}, "exercises": {"FuncBinCON": {"type": "dgm", "mod_name": "Impossible"}, "FuncDiagCON": {"type": "dgm", "mod_name": "Impossible"}}}, "SeniorAlgAnal/Turing": {"long_name": "Turing Machines", "sections": {"Turing Machines": {"Turing1CON": {"type": "dgm", "mod_name": "Turing"}, "Turing2CON": {"type": "dgm", "mod_name": "Turing"}, "Turing3CON": {"type": "dgm", "mod_name": "Turing"}, "TuringCopyCON": {"type": "dgm", "mod_name": "Turing"}, "TuringShiftCON": {"type": "dgm", "mod_name": "Turing"}}}, "exercises": {"Turing1CON": {"type": "dgm", "mod_name": "Turing"}, "Turing2CON": {"type": "dgm", "mod_name": "Turing"}, "Turing3CON": {"type": "dgm", "mod_name": "Turing"}, "TuringCopyCON": {"type": "dgm", "mod_name": "Turing"}, "TuringShiftCON": {"type": "dgm", "mod_name": "Turing"}}}, "PL/Grammars1": {"long_name": "Derivations and Parse Trees", "sections": {"Parse Trees": {"parseTree4": {"long_name": "parseTree4", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/main.css", "AV/PL/AV/parseTree.css"], "scripts": ["AV/PL/AV/parseTree4.js"], "mod_name": "Grammars1"}, "NumParseTreeNodes": {"long_name": "Determine Number of nodes", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTreeNodes.html", "mod_name": "Grammars1", "threshold": 1}}, "Strings Generated by a Grammar": {"StringGenFromGmr": {"long_name": "String Generated By a Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/StringGenFromGmr.html", "mod_name": "Grammars1", "threshold": 1}}, "Characterizing a Language: Example 1": {"CharacterizeLang1": {"long_name": "Characterizing a Language, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CharacterizeLang1.html", "mod_name": "Grammars1", "threshold": 1}}, "Characterizing a Language: Example 2": {"CharacterizeLang2": {"long_name": "Characterizing a Language, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CharacterizeLang2.html", "mod_name": "Grammars1", "threshold": 1}}}, "exercises": {"parseTree4": {"long_name": "parseTree4", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/main.css", "AV/PL/AV/parseTree.css"], "scripts": ["AV/PL/AV/parseTree4.js"], "mod_name": "Grammars1"}, "NumParseTreeNodes": {"long_name": "Determine Number of nodes", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTreeNodes.html", "mod_name": "Grammars1", "threshold": 1}, "StringGenFromGmr": {"long_name": "String Generated By a Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/StringGenFromGmr.html", "mod_name": "Grammars1", "threshold": 1}, "CharacterizeLang1": {"long_name": "Characterizing a Language, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CharacterizeLang1.html", "mod_name": "Grammars1", "threshold": 1}, "CharacterizeLang2": {"long_name": "Characterizing a Language, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CharacterizeLang2.html", "mod_name": "Grammars1", "threshold": 1}}}, "PL/Grammars2": {"long_name": "Ambiguous Grammars", "sections": {"Second Sample Grammar": {"parseTree5a": {"long_name": "parseTree5a", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/parseTree.css"], "scripts": ["AV/PL/AV/parseTree5a.js"], "mod_name": "Grammars2"}, "parseTree5b": {"long_name": "parseTree5b", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/parseTree.css"], "scripts": ["AV/PL/AV/parseTree5b.js"], "mod_name": "Grammars2"}}, "Ambiguity in Grammars": {}, "Ambiguous Grammar - Part 1": {"NumParseTrees1": {"long_name": "Number Of Parse Trees, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTrees1.html", "mod_name": "Grammars2", "threshold": 1}}, "Ambiguous Grammar - Part 2": {"NumParseTrees2": {"long_name": "Number Of Parse Trees, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTrees2.html", "mod_name": "Grammars2", "threshold": 1}}, "Ambiguous Grammar - Part 3": {"NumParseTrees3": {"long_name": "Number Of Parse Trees, Problem 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTrees3.html", "mod_name": "Grammars2", "threshold": 1}}, "Discovering Ambiguity": {"DeterminingAmbiguities": {"long_name": "Determining Ambiguities", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeterminingAmbiguities.html", "mod_name": "Grammars2", "threshold": 1}}}, "exercises": {"parseTree5a": {"long_name": "parseTree5a", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/parseTree.css"], "scripts": ["AV/PL/AV/parseTree5a.js"], "mod_name": "Grammars2"}, "parseTree5b": {"long_name": "parseTree5b", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/parseTree.css"], "scripts": ["AV/PL/AV/parseTree5b.js"], "mod_name": "Grammars2"}, "NumParseTrees1": {"long_name": "Number Of Parse Trees, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTrees1.html", "mod_name": "Grammars2", "threshold": 1}, "NumParseTrees2": {"long_name": "Number Of Parse Trees, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTrees2.html", "mod_name": "Grammars2", "threshold": 1}, "NumParseTrees3": {"long_name": "Number Of Parse Trees, Problem 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/NumParseTrees3.html", "mod_name": "Grammars2", "threshold": 1}, "DeterminingAmbiguities": {"long_name": "Determining Ambiguities", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeterminingAmbiguities.html", "mod_name": "Grammars2", "threshold": 1}}}, "PL/Grammars3": {"long_name": "Enforcing Order of Operations", "sections": {"Evaluation of Expressions": {"parseTree3": {"long_name": "parseTree3", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/PL/AV/parseTree3.js"], "mod_name": "Grammars3"}, "parseTree3a": {"long_name": "parseTree3a", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/AV/parseTree3a.html", "mod_name": "Grammars3", "threshold": 1}}, "Expression Evaluation": {"EvalExp": {"long_name": "Evaluating Expression Based on Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/EvalExp.html", "mod_name": "Grammars3", "threshold": 3}}, "Associativity": {"Associativity": {"long_name": "Associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Associativity.html", "mod_name": "Grammars3", "threshold": 1}}, "Precedence and Associativity": {"PrecedenceAndAssociativity": {"long_name": "Precedence and associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/PrecedenceAndAssociativity.html", "mod_name": "Grammars3", "threshold": 1}}, "Characterizing a Language Given a BNF Grammar": {"CharacterizeLang3": {"long_name": "Characterizing Language 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CharacterizeLang3.html", "mod_name": "Grammars3", "threshold": 1}}, "Extended BNF": {"ExtendedBNF": {"long_name": "Extended BNF", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ExtendedBNF.html", "mod_name": "Grammars3", "threshold": 1}}}, "exercises": {"parseTree3": {"long_name": "parseTree3", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["AV/PL/AV/parseTree3.js"], "mod_name": "Grammars3"}, "parseTree3a": {"long_name": "parseTree3a", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/AV/parseTree3a.html", "mod_name": "Grammars3", "threshold": 1}, "EvalExp": {"long_name": "Evaluating Expression Based on Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/EvalExp.html", "mod_name": "Grammars3", "threshold": 3}, "Associativity": {"long_name": "Associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Associativity.html", "mod_name": "Grammars3", "threshold": 1}, "PrecedenceAndAssociativity": {"long_name": "Precedence and associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/PrecedenceAndAssociativity.html", "mod_name": "Grammars3", "threshold": 1}, "CharacterizeLang3": {"long_name": "Characterizing Language 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CharacterizeLang3.html", "mod_name": "Grammars3", "threshold": 1}, "ExtendedBNF": {"long_name": "Extended BNF", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ExtendedBNF.html", "mod_name": "Grammars3", "threshold": 1}}}, "PL/Grammars4": {"long_name": "Parser Generators", "sections": {"Jison": {"Jison1": {"long_name": "Jison Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Jison1.html", "mod_name": "Grammars4", "threshold": 3}}, "More practice with Jison": {"Jison2": {"long_name": "Jison Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Jison2.html", "mod_name": "Grammars4", "threshold": 1}}}, "exercises": {"Jison1": {"long_name": "Jison Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Jison1.html", "mod_name": "Grammars4", "threshold": 3}, "Jison2": {"long_name": "Jison Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Jison2.html", "mod_name": "Grammars4", "threshold": 1}}}, "PL/Grammars5": {"long_name": "Using Parser Generators to Interpret a Language", "sections": {"Annotating Jison Grammars": {"AnnotatingJison": {"long_name": "Annotating Jison", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AnnotatingJison.html", "mod_name": "Grammars5", "threshold": 1}}}, "exercises": {"AnnotatingJison": {"long_name": "Annotating Jison", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AnnotatingJison.html", "mod_name": "Grammars5", "threshold": 1}}}, "PL/FP1": {"long_name": "List Construction and Deconstruction", "sections": {"Constructing Lists with fp.cons": {"FPcons": {"long_name": "Using cons", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPcons.html", "mod_name": "FP1", "threshold": 1}}, "Deconstructing Lists with fp.hd and fp.tl": {"FPHdTlCons1": {"long_name": "Head, Tail, and Cons 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPHdTlCons1.html", "mod_name": "FP1", "threshold": 3}}, "Practicing List Manipulations with the fp module": {"FPHdTlCons2": {"long_name": "Head, Tail, and Cons 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPHdTlCons2.html", "mod_name": "FP1", "threshold": 1}}, "fp.isNull, fp.isEq, and fp.isZero": {"FPisEq": {"long_name": "Using isEq test", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPisEq.html", "mod_name": "FP1", "threshold": 1}}}, "exercises": {"FPcons": {"long_name": "Using cons", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPcons.html", "mod_name": "FP1", "threshold": 1}, "FPHdTlCons1": {"long_name": "Head, Tail, and Cons 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPHdTlCons1.html", "mod_name": "FP1", "threshold": 3}, "FPHdTlCons2": {"long_name": "Head, Tail, and Cons 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPHdTlCons2.html", "mod_name": "FP1", "threshold": 1}, "FPisEq": {"long_name": "Using isEq test", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FPisEq.html", "mod_name": "FP1", "threshold": 1}}}, "PL/FP2": {"long_name": "Developing Basic, Recursive List-processing Functions", "sections": {"Recursive List Processing Example: sum( list )": {"FP2Code1CON": {"long_name": "Illustrate Simple Recursion On List To Return Numeric Value", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP2CON.css"], "scripts": ["AV/PL/FP/FP2Code1CON.js"], "mod_name": "FP2"}, "RecListProc1": {"long_name": "Recursion on Flat lists 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/RecListProc1.html", "mod_name": "FP2", "threshold": 3}}, "Recursive List Processing Example: isMember( num, list )": {"FP2Code2CON": {"long_name": "Illustrate Simple Recursion On List To Define IsMember", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP2CON.css"], "scripts": ["AV/PL/FP/FP2Code2CON.js"], "mod_name": "FP2"}, "RecListProc2": {"long_name": "Recursion on Flat Lists 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/RecListProc2.html", "mod_name": "FP2", "threshold": 1}}, "Recursive List Processing Example: subst( new, old, list )": {"FP2Code3CON": {"long_name": "Illustrate Simple Recursion On List To Do Substitution", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP2CON.css"], "scripts": ["AV/PL/FP/FP2Code3CON.js"], "mod_name": "FP2"}, "RecListProc3": {"long_name": "Recursion on Flat Lists 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/RecListProc3.html", "mod_name": "FP2", "threshold": 1}}}, "exercises": {"FP2Code1CON": {"long_name": "Illustrate Simple Recursion On List To Return Numeric Value", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP2CON.css"], "scripts": ["AV/PL/FP/FP2Code1CON.js"], "mod_name": "FP2"}, "RecListProc1": {"long_name": "Recursion on Flat lists 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/RecListProc1.html", "mod_name": "FP2", "threshold": 3}, "FP2Code2CON": {"long_name": "Illustrate Simple Recursion On List To Define IsMember", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP2CON.css"], "scripts": ["AV/PL/FP/FP2Code2CON.js"], "mod_name": "FP2"}, "RecListProc2": {"long_name": "Recursion on Flat Lists 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/RecListProc2.html", "mod_name": "FP2", "threshold": 1}, "FP2Code3CON": {"long_name": "Illustrate Simple Recursion On List To Do Substitution", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP2CON.css"], "scripts": ["AV/PL/FP/FP2Code3CON.js"], "mod_name": "FP2"}, "RecListProc3": {"long_name": "Recursion on Flat Lists 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/RecListProc3.html", "mod_name": "FP2", "threshold": 1}}}, "PL/FP3": {"long_name": "Recurring On Lists That Aren't Flat", "sections": {"Deep Recursion in FP": {"FP3Code1CON": {"long_name": "Illustrate Deep Recursion On List To Return Numeric Value", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP3CON.css"], "scripts": ["AV/PL/FP/FP3Code1CON.js"], "mod_name": "FP3"}, "DeepRecur1": {"long_name": "Deep Recursion 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur1.html", "mod_name": "FP3", "threshold": 1}}, "Deep Recursion on Binary Search Trees": {"FP3Code2CON": {"long_name": "Illustrate Deep Recursion On BST", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP3CON.css"], "scripts": ["AV/PL/FP/FP3Code2CON.js"], "mod_name": "FP3"}, "DeepRecur2": {"long_name": "Deep Recursion 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur2.html", "mod_name": "FP3", "threshold": 1}}, "Practice with Deep Recursion": {"DeepRecur3": {"long_name": "Deep Recursion 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur3.html", "mod_name": "FP3", "threshold": 1}}, "More Practice with Deep Recursion": {"DeepRecur4": {"long_name": "Deep Recursion 4", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur4.html", "mod_name": "FP3", "threshold": 3}}}, "exercises": {"FP3Code1CON": {"long_name": "Illustrate Deep Recursion On List To Return Numeric Value", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP3CON.css"], "scripts": ["AV/PL/FP/FP3Code1CON.js"], "mod_name": "FP3"}, "DeepRecur1": {"long_name": "Deep Recursion 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur1.html", "mod_name": "FP3", "threshold": 1}, "FP3Code2CON": {"long_name": "Illustrate Deep Recursion On BST", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP3CON.css"], "scripts": ["AV/PL/FP/FP3Code2CON.js"], "mod_name": "FP3"}, "DeepRecur2": {"long_name": "Deep Recursion 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur2.html", "mod_name": "FP3", "threshold": 1}, "DeepRecur3": {"long_name": "Deep Recursion 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur3.html", "mod_name": "FP3", "threshold": 1}, "DeepRecur4": {"long_name": "Deep Recursion 4", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/DeepRecur4.html", "mod_name": "FP3", "threshold": 3}}}, "PL/FP4": {"long_name": "Using Helper Functions with Accumulators", "sections": {"Using Helpers to Write reverse and split Functions": {"FP4Code1CON": {"long_name": "Illustrate Use of Accumulator in Developing Reverse Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP4CON.css"], "scripts": ["AV/PL/FP/FP4Code1CON.js"], "mod_name": "FP4"}, "FP4Code2CON": {"long_name": "Illustrate Use of Accumulator in Developing Split Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP4CON.css"], "scripts": ["AV/PL/FP/FP4Code2CON.js"], "mod_name": "FP4"}, "SplitAndJoin": {"long_name": "Split and Join with accumulators", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SplitAndJoin.html", "mod_name": "FP4", "threshold": 1}}, "Using the split Function to Develop a Sorting Function": {"QuickSort": {"long_name": "Using split to define quick sort", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/QuickSort.html", "mod_name": "FP4", "threshold": 1}}, "Additional Practice with the Accumulator Pattern": {"AccumulatorPatternPractice": {"long_name": "Accumulator Pattern Practice", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AccumulatorPatternPractice.html", "mod_name": "FP4", "threshold": 3}}}, "exercises": {"FP4Code1CON": {"long_name": "Illustrate Use of Accumulator in Developing Reverse Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP4CON.css"], "scripts": ["AV/PL/FP/FP4Code1CON.js"], "mod_name": "FP4"}, "FP4Code2CON": {"long_name": "Illustrate Use of Accumulator in Developing Split Function", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP4CON.css"], "scripts": ["AV/PL/FP/FP4Code2CON.js"], "mod_name": "FP4"}, "SplitAndJoin": {"long_name": "Split and Join with accumulators", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SplitAndJoin.html", "mod_name": "FP4", "threshold": 1}, "QuickSort": {"long_name": "Using split to define quick sort", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/QuickSort.html", "mod_name": "FP4", "threshold": 1}, "AccumulatorPatternPractice": {"long_name": "Accumulator Pattern Practice", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AccumulatorPatternPractice.html", "mod_name": "FP4", "threshold": 3}}}, "PL/FP5": {"long_name": "Scope, Closures, Higher-order Functions, Static vs. Dynamic Binding", "sections": {"Scope, Closures, Higher-order Functions": {"FP5Code1CON": {"long_name": "Illustrate Scope", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code1CON.js"], "mod_name": "FP5"}, "FP5Code2CON": {"long_name": "Illustrate Variable Hoisting", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code2CON.js"], "mod_name": "FP5"}, "FP5Code3CON": {"long_name": "Illustrate Nested Scopes", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code3CON.js"], "mod_name": "FP5"}, "FP5Code4CON": {"long_name": "Illustrate Static vs Dynamic Binding", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code4CON.js"], "mod_name": "FP5"}, "FP5Code5CON": {"long_name": "Illustrate Closures", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code5CON.js"], "mod_name": "FP5"}, "HigherOrderFuncs1": {"long_name": "Higher Order Function 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/HigherOrderFuncs1.html", "mod_name": "FP5", "threshold": 3}}, "Practice with Higher-order Functions and Anonymous Functions": {"HigherOrderFuncs2": {"long_name": "Higher Order Functions 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/HigherOrderFuncs2.html", "mod_name": "FP5", "threshold": 1}}, "More Practice with Higher-order Functions and Anonymous Functions": {"HigherOrderFuncs3": {"long_name": "Higher Order Functions 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/HigherOrderFuncs3.html", "mod_name": "FP5", "threshold": 1}}, "Practice with Static vs. Dynamic Binding Rules": {"StaticDynamic": {"long_name": "Static vs. Dynamic Binding", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/StaticDynamic.html", "mod_name": "FP5", "threshold": 1}}}, "exercises": {"FP5Code1CON": {"long_name": "Illustrate Scope", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code1CON.js"], "mod_name": "FP5"}, "FP5Code2CON": {"long_name": "Illustrate Variable Hoisting", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code2CON.js"], "mod_name": "FP5"}, "FP5Code3CON": {"long_name": "Illustrate Nested Scopes", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code3CON.js"], "mod_name": "FP5"}, "FP5Code4CON": {"long_name": "Illustrate Static vs Dynamic Binding", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code4CON.js"], "mod_name": "FP5"}, "FP5Code5CON": {"long_name": "Illustrate Closures", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP5CON.css"], "scripts": ["AV/PL/FP/FP5Code5CON.js"], "mod_name": "FP5"}, "HigherOrderFuncs1": {"long_name": "Higher Order Function 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/HigherOrderFuncs1.html", "mod_name": "FP5", "threshold": 3}, "HigherOrderFuncs2": {"long_name": "Higher Order Functions 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/HigherOrderFuncs2.html", "mod_name": "FP5", "threshold": 1}, "HigherOrderFuncs3": {"long_name": "Higher Order Functions 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/HigherOrderFuncs3.html", "mod_name": "FP5", "threshold": 1}, "StaticDynamic": {"long_name": "Static vs. Dynamic Binding", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/StaticDynamic.html", "mod_name": "FP5", "threshold": 1}}}, "PL/FP6": {"long_name": "Procedural Abstraction: Map, Curry, and Compose", "sections": {"The Mapping Pattern": {"FP6Code1CON": {"long_name": "Illustrate Mapping Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP6CON.css"], "scripts": ["AV/PL/FP/FP6Code1CON.js"], "mod_name": "FP6"}, "Map": {"long_name": "Mapping Pattern", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Map.html", "mod_name": "FP6", "threshold": 1}}, "Function Composition": {"FP6Code2CON": {"long_name": "Illustrate Function Composition", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP6CON.css"], "scripts": ["AV/PL/FP/FP6Code2CON.js"], "mod_name": "FP6"}, "Compose": {"long_name": "Function Composition", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Compose.html", "mod_name": "FP6", "threshold": 1}}, "Currying": {"FP6Code3CON": {"long_name": "Illustrate Currying", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP6CON.css"], "scripts": ["AV/PL/FP/FP6Code3CON.js"], "mod_name": "FP6"}, "Curry1": {"long_name": "Curry and compose 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Curry1.html", "mod_name": "FP6", "threshold": 1}}, "More currying": {"Curry2": {"long_name": "Curry and compose 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Curry2.html", "mod_name": "FP6", "threshold": 3}}}, "exercises": {"FP6Code1CON": {"long_name": "Illustrate Mapping Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP6CON.css"], "scripts": ["AV/PL/FP/FP6Code1CON.js"], "mod_name": "FP6"}, "Map": {"long_name": "Mapping Pattern", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Map.html", "mod_name": "FP6", "threshold": 1}, "FP6Code2CON": {"long_name": "Illustrate Function Composition", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP6CON.css"], "scripts": ["AV/PL/FP/FP6Code2CON.js"], "mod_name": "FP6"}, "Compose": {"long_name": "Function Composition", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Compose.html", "mod_name": "FP6", "threshold": 1}, "FP6Code3CON": {"long_name": "Illustrate Currying", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP6CON.css"], "scripts": ["AV/PL/FP/FP6Code3CON.js"], "mod_name": "FP6"}, "Curry1": {"long_name": "Curry and compose 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Curry1.html", "mod_name": "FP6", "threshold": 1}, "Curry2": {"long_name": "Curry and compose 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Curry2.html", "mod_name": "FP6", "threshold": 3}}}, "PL/FP7": {"long_name": "Procedural Abstraction: The Filtering and Folding (or Reduce) Patterns", "sections": {"The Filtering Pattern": {"FP7Code1CON": {"long_name": "Illustrate Filtering Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP7CON.css"], "scripts": ["AV/PL/FP/FP7Code1CON.js"], "mod_name": "FP7"}, "Filter": {"long_name": "Filtering Pattern", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Filter.html", "mod_name": "FP7", "threshold": 1}}, "The Folding/Reduce Pattern": {"FP7Code2CON": {"long_name": "Illustrate Reduce/Folding Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP7CON.css"], "scripts": ["AV/PL/FP/FP7Code2CON.js"], "mod_name": "FP7"}, "FP7Code3CON": {"long_name": "Illustrate ReduceRight Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP7CON.css"], "scripts": ["AV/PL/FP/FP7Code3CON.js"], "mod_name": "FP7"}, "Reduce1": {"long_name": "Reduce 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Reduce1.html", "mod_name": "FP7", "threshold": 1}}, "Practice with the Mapping and Reduce Patterns": {"Reduce2": {"long_name": "Reduce and Map", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Reduce2.html", "mod_name": "FP7", "threshold": 1}}, "More Practice with the Reduce Pattern": {"Reduce3": {"long_name": "Reduce 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Reduce3.html", "mod_name": "FP7", "threshold": 3}}}, "exercises": {"FP7Code1CON": {"long_name": "Illustrate Filtering Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP7CON.css"], "scripts": ["AV/PL/FP/FP7Code1CON.js"], "mod_name": "FP7"}, "Filter": {"long_name": "Filtering Pattern", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Filter.html", "mod_name": "FP7", "threshold": 1}, "FP7Code2CON": {"long_name": "Illustrate Reduce/Folding Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP7CON.css"], "scripts": ["AV/PL/FP/FP7Code2CON.js"], "mod_name": "FP7"}, "FP7Code3CON": {"long_name": "Illustrate ReduceRight Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP7CON.css"], "scripts": ["AV/PL/FP/FP7Code3CON.js"], "mod_name": "FP7"}, "Reduce1": {"long_name": "Reduce 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Reduce1.html", "mod_name": "FP7", "threshold": 1}, "Reduce2": {"long_name": "Reduce and Map", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Reduce2.html", "mod_name": "FP7", "threshold": 1}, "Reduce3": {"long_name": "Reduce 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Reduce3.html", "mod_name": "FP7", "threshold": 3}}}, "PL/FP8": {"long_name": "Combining Map and Reduce", "sections": {"The MapReduce Paradigm": {"FP8Code1CON": {"long_name": "Illustrate MapReduce Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP8CON.css"], "scripts": ["AV/PL/FP/FP8Code1CON.js"], "mod_name": "FP8"}, "MapReduce": {"long_name": "Map Reduce", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/MapReduce.html", "mod_name": "FP8", "threshold": 3}}}, "exercises": {"FP8Code1CON": {"long_name": "Illustrate MapReduce Pattern", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP8CON.css"], "scripts": ["AV/PL/FP/FP8Code1CON.js"], "mod_name": "FP8"}, "MapReduce": {"long_name": "Map Reduce", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/MapReduce.html", "mod_name": "FP8", "threshold": 3}}}, "PL/FP9": {"long_name": "Continuations and Continuation Passing", "sections": {"Tail recursive functions": {"TailRecursion": {"long_name": "Tail Recursion", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/TailRecursion.html", "mod_name": "FP9", "threshold": 1}}, "Continuation-Passing Style": {"FP9Code1CON": {"long_name": "Illustrate Continuation Passing", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP9CON.css"], "scripts": ["AV/PL/FP/FP9Code1CON.js"], "mod_name": "FP9"}, "FP9Code2CON": {"long_name": "Compare CPS with non-tail recursive and accumulation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP9CON.css"], "scripts": ["AV/PL/FP/FP9Code2CON.js"], "mod_name": "FP9"}}, "Continuation-Passing Style Practice Problem (Part 1)": {"ContinuationPassing1": {"long_name": "CPS Style 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing1.html", "mod_name": "FP9", "threshold": 1}}, "Continuation-Passing Style Practice Problem (Part 2)": {"ContinuationPassing2": {"long_name": "CPS Style 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing2.html", "mod_name": "FP9", "threshold": 1}}, "Continuation-Passing Style Practice Problem (Part 3)": {"ContinuationPassing3": {"long_name": "CPS Style 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing3.html", "mod_name": "FP9", "threshold": 1}}, "More CPS Practice": {"ContinuationPassing4": {"long_name": "Randomized CPS practice", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing4.html", "mod_name": "FP9", "threshold": 3}}}, "exercises": {"TailRecursion": {"long_name": "Tail Recursion", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/TailRecursion.html", "mod_name": "FP9", "threshold": 1}, "FP9Code1CON": {"long_name": "Illustrate Continuation Passing", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP9CON.css"], "scripts": ["AV/PL/FP/FP9Code1CON.js"], "mod_name": "FP9"}, "FP9Code2CON": {"long_name": "Compare CPS with non-tail recursive and accumulation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/FP/FP9CON.css"], "scripts": ["AV/PL/FP/FP9Code2CON.js"], "mod_name": "FP9"}, "ContinuationPassing1": {"long_name": "CPS Style 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing1.html", "mod_name": "FP9", "threshold": 1}, "ContinuationPassing2": {"long_name": "CPS Style 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing2.html", "mod_name": "FP9", "threshold": 1}, "ContinuationPassing3": {"long_name": "CPS Style 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing3.html", "mod_name": "FP9", "threshold": 1}, "ContinuationPassing4": {"long_name": "Randomized CPS practice", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ContinuationPassing4.html", "mod_name": "FP9", "threshold": 3}}}, "PL/Syntax": {"long_name": "Syntax of the Lambda Calculus", "sections": {"Lambda Calculus": {"parseTree": {"long_name": "Slide show for how to build a parse tree", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/parseTree.css", "AV/PL/main.css"], "scripts": ["AV/PL/AV/parseTree.js"], "mod_name": "Syntax"}}, "Practice with Lambda Calculus Syntax": {"LambdaCalcSyntax1": {"long_name": "Lambda Calc Syntax 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LambdaCalcSyntax1.html", "mod_name": "Syntax", "threshold": 3}}, "More Practice with Lambda Calculus Syntax": {"LambdaCalcSyntax2": {"long_name": "Lambda Calc Syntax 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LambdaCalcSyntax2.html", "mod_name": "Syntax", "threshold": 3}}}, "exercises": {"parseTree": {"long_name": "Slide show for how to build a parse tree", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/parseTree.css", "AV/PL/main.css"], "scripts": ["AV/PL/AV/parseTree.js"], "mod_name": "Syntax"}, "LambdaCalcSyntax1": {"long_name": "Lambda Calc Syntax 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LambdaCalcSyntax1.html", "mod_name": "Syntax", "threshold": 3}, "LambdaCalcSyntax2": {"long_name": "Lambda Calc Syntax 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LambdaCalcSyntax2.html", "mod_name": "Syntax", "threshold": 3}}}, "PL/Semantics": {"long_name": "Semantics of the Lambda Calculus", "sections": {"Semantics of the Lambda Calculus": {}, "Practice with Lambda Calculus Semantics": {"LambdaCalcSemantics": {"long_name": "Semantics of lambda calculus", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LambdaCalcSemantics.html", "mod_name": "Semantics", "threshold": 1}}}, "exercises": {"LambdaCalcSemantics": {"long_name": "Semantics of lambda calculus", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LambdaCalcSemantics.html", "mod_name": "Semantics", "threshold": 1}}}, "PL/FreeBoundVariables": {"long_name": "Free and Bound Variables", "sections": {"Free and Bound Variables": {}, "Identifying Free Variables": {"IdentifyingFreeVars": {"long_name": "Identifying Free Variables", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/IdentifyingFreeVars.html", "mod_name": "FreeBoundVariables", "threshold": 3}}, "Identifying Bound Variables": {"IdentifyingBoundVars": {"long_name": "Identifying Bound Variables", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/IdentifyingBoundVars.html", "mod_name": "FreeBoundVariables", "threshold": 3}}, "Formal Definition of Free Variables": {}}, "exercises": {"IdentifyingFreeVars": {"long_name": "Identifying Free Variables", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/IdentifyingFreeVars.html", "mod_name": "FreeBoundVariables", "threshold": 3}, "IdentifyingBoundVars": {"long_name": "Identifying Bound Variables", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/IdentifyingBoundVars.html", "mod_name": "FreeBoundVariables", "threshold": 3}}}, "PL/AlphaConversion": {"long_name": "Alpha-Conversion", "sections": {"Alpha-Conversion Rule": {}, "Practice with Alpha Conversion": {"AlphaConversionNew": {"long_name": "Alpha Conversion", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AlphaConversionNew.html", "mod_name": "AlphaConversion", "threshold": 3}}}, "exercises": {"AlphaConversionNew": {"long_name": "Alpha Conversion", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AlphaConversionNew.html", "mod_name": "AlphaConversion", "threshold": 3}}}, "PL/Substitution": {"long_name": "The Substitution-Based Model of Evaluation", "sections": {"Substitution Algorithm": {}, "Identifying Substitution Subcases of Case 1": {"SubstitutionCase1": {"long_name": "Identifying Substitution Subcases of Case 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SubstitutionCase1.html", "mod_name": "Substitution", "threshold": 3}}, "Identifying Substitution Subcases of Case 2": {"SubstitutionCase2": {"long_name": "Identifying Substitution Subcases of Case 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SubstitutionCase2.html", "mod_name": "Substitution", "threshold": 3}}, "Identifying Substitution Case 3": {"SubstitutionCase3": {"long_name": "Identifying Substitution Case 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SubstitutionCase3.html", "mod_name": "Substitution", "threshold": 3}}, "Identifying Substitution Cases and Subcases": {"Substitution1": {"long_name": "Identifying Substitution Cases and Subcases", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Substitution1.html", "mod_name": "Substitution", "threshold": 3}}, "Performing the Substitution Algorithm": {"Substitution2": {"long_name": "Performing the full substitution algorithm", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Substitution2.html", "mod_name": "Substitution", "threshold": 3}}}, "exercises": {"SubstitutionCase1": {"long_name": "Identifying Substitution Subcases of Case 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SubstitutionCase1.html", "mod_name": "Substitution", "threshold": 3}, "SubstitutionCase2": {"long_name": "Identifying Substitution Subcases of Case 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SubstitutionCase2.html", "mod_name": "Substitution", "threshold": 3}, "SubstitutionCase3": {"long_name": "Identifying Substitution Case 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SubstitutionCase3.html", "mod_name": "Substitution", "threshold": 3}, "Substitution1": {"long_name": "Identifying Substitution Cases and Subcases", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Substitution1.html", "mod_name": "Substitution", "threshold": 3}, "Substitution2": {"long_name": "Performing the full substitution algorithm", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Substitution2.html", "mod_name": "Substitution", "threshold": 3}}}, "PL/BetaReduction": {"long_name": "Beta-Reduction", "sections": {"Beta-Redexes": {}, "Identifying Beta-Redexes": {"BetaRedex1": {"long_name": "Identifying Beta Redexes 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaRedex1.html", "mod_name": "BetaReduction", "threshold": 3}}, "Beta-Reduction is a Substitution": {}, "Some Beta-Reductions Require Alpha-Conversion": {"BetaRedex2": {"long_name": "Identifying Beta Redexes 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaRedex2.html", "mod_name": "BetaReduction", "threshold": 3}}, "Performing Beta-Reductions": {"BetaReduction": {"long_name": "Performing Beta Reductions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaReduction.html", "mod_name": "BetaReduction", "threshold": 3}}}, "exercises": {"BetaRedex1": {"long_name": "Identifying Beta Redexes 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaRedex1.html", "mod_name": "BetaReduction", "threshold": 3}, "BetaRedex2": {"long_name": "Identifying Beta Redexes 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaRedex2.html", "mod_name": "BetaReduction", "threshold": 3}, "BetaReduction": {"long_name": "Performing Beta Reductions", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaReduction.html", "mod_name": "BetaReduction", "threshold": 3}}}, "PL/ReductionStrategies": {"long_name": "Reduction Strategies", "sections": {"Applicative Order": {}, "Normal Order": {"LCPractice": {"long_name": "LCPractice", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/LCPractice.html", "mod_name": "ReductionStrategies", "threshold": 1}}, "Beta-Reduction Order (1)": {"BetaReductionOrder1": {"long_name": "Beta Reduction Order 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaReductionOrder1.html", "mod_name": "ReductionStrategies", "threshold": 3}}, "Beta-Reduction Order (2)": {"BetaReductionOrder2": {"long_name": "Beta Reduction Order 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaReductionOrder2.html", "mod_name": "ReductionStrategies", "threshold": 3}}, "Applicative Order Proficiency Exercise": {"applicativeOrderPRO": {"long_name": "Applicative-order reduction Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/applicativeOrderPRO.html", "mod_name": "ReductionStrategies", "threshold": 1.0}}, "Normal Order Proficiency Exercise": {"tempNormalOrderPRO": {"long_name": "Normal-order reduction Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/tempNormalOrderPRO.html", "mod_name": "ReductionStrategies", "threshold": 1.0}}}, "exercises": {"LCPractice": {"long_name": "LCPractice", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/LCPractice.html", "mod_name": "ReductionStrategies", "threshold": 1}, "BetaReductionOrder1": {"long_name": "Beta Reduction Order 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaReductionOrder1.html", "mod_name": "ReductionStrategies", "threshold": 3}, "BetaReductionOrder2": {"long_name": "Beta Reduction Order 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/BetaReductionOrder2.html", "mod_name": "ReductionStrategies", "threshold": 3}, "applicativeOrderPRO": {"long_name": "Applicative-order reduction Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/applicativeOrderPRO.html", "mod_name": "ReductionStrategies", "threshold": 1.0}, "tempNormalOrderPRO": {"long_name": "Normal-order reduction Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/tempNormalOrderPRO.html", "mod_name": "ReductionStrategies", "threshold": 1.0}}}, "PL/ChurchNumerals": {"long_name": "Church Numerals and Booleans", "sections": {"Church Booleans": {"church_boolCON": {"long_name": "Church boolean slide show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/church_string.css"], "scripts": ["AV/PL/AV/church_boolCON.js"], "mod_name": "ChurchNumerals"}}, "Encoding If-Then-Else": {"ChurchIfThen": {"long_name": "If Then Else in Church Encoding", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ChurchIfThen.html", "mod_name": "ChurchNumerals", "threshold": 1}}, "Encoding OR": {"ChurchOR": {"long_name": "Church Encoding for OR", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ChurchOR.html", "mod_name": "ChurchNumerals", "threshold": 1}}, "Church Numerals": {"church_numeralCON": {"long_name": "Church numeral slide show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/church_string.css"], "scripts": ["AV/PL/AV/church_numeralCON.js"], "mod_name": "ChurchNumerals"}, "church_multCON": {"long_name": "Church multiplication slide show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/church_string.css"], "scripts": ["AV/PL/AV/church_multCON.js"], "mod_name": "ChurchNumerals"}}, "Church Numerals with Addition and Multiplication": {"ChurchNumerals": {"long_name": "Church Numerals", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ChurchNumerals.html", "mod_name": "ChurchNumerals", "threshold": 3}}}, "exercises": {"church_boolCON": {"long_name": "Church boolean slide show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/church_string.css"], "scripts": ["AV/PL/AV/church_boolCON.js"], "mod_name": "ChurchNumerals"}, "ChurchIfThen": {"long_name": "If Then Else in Church Encoding", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ChurchIfThen.html", "mod_name": "ChurchNumerals", "threshold": 1}, "ChurchOR": {"long_name": "Church Encoding for OR", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ChurchOR.html", "mod_name": "ChurchNumerals", "threshold": 1}, "church_numeralCON": {"long_name": "Church numeral slide show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/church_string.css"], "scripts": ["AV/PL/AV/church_numeralCON.js"], "mod_name": "ChurchNumerals"}, "church_multCON": {"long_name": "Church multiplication slide show", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/AV/church_string.css"], "scripts": ["AV/PL/AV/church_multCON.js"], "mod_name": "ChurchNumerals"}, "ChurchNumerals": {"long_name": "Church Numerals", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ChurchNumerals.html", "mod_name": "ChurchNumerals", "threshold": 3}}}, "PL/RecursiveFunctions": {"long_name": "Recursive Functions", "sections": {"Fixed-points of Functions": {}, "The Y Fixed-point Combinator": {}, "Using Y to Implement Factorial": {}, "Identifying Fixed Point Combinators": {"FixedPointCombinators": {"long_name": "Identifying Fixed Point Combinators", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FixedPointCombinators.html", "mod_name": "RecursiveFunctions", "threshold": 3}}}, "exercises": {"FixedPointCombinators": {"long_name": "Identifying Fixed Point Combinators", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/FixedPointCombinators.html", "mod_name": "RecursiveFunctions", "threshold": 3}}}, "PL/SLang1": {"long_name": "Defining SLang 1", "sections": {"Syntax of SLang 1": {}, "Concrete Syntax of SLang 1": {"ConcreteSynSLang1_new": {"long_name": "SLang 1 Concrete Syntax", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ConcreteSynSLang1_new.html", "mod_name": "SLang1", "threshold": 3}}, "More Practice with the Concrete Syntax of SLang 1": {"ConcreteSynSLang1": {"long_name": "More SLang 1 Concrete Syntax", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ConcreteSynSLang1.html", "mod_name": "SLang1", "threshold": 3}}, "Abstract Syntax of SLang 1": {"AbstractSynSLang1": {"long_name": "SLang 1 Abstract Syntax", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AbstractSynSLang1.html", "mod_name": "SLang1", "threshold": 1}}, "Curry in SLang 1": {"CurryInSLang1": {"long_name": "Curry in SLang 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CurryInSLang1.html", "mod_name": "SLang1", "threshold": 1}}, "Semantics of SLang 1": {"SemanticsSLang1": {"long_name": "SLang 1 Semantics", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SemanticsSLang1.html", "mod_name": "SLang1", "threshold": 1}}}, "exercises": {"ConcreteSynSLang1_new": {"long_name": "SLang 1 Concrete Syntax", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ConcreteSynSLang1_new.html", "mod_name": "SLang1", "threshold": 3}, "ConcreteSynSLang1": {"long_name": "More SLang 1 Concrete Syntax", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/ConcreteSynSLang1.html", "mod_name": "SLang1", "threshold": 3}, "AbstractSynSLang1": {"long_name": "SLang 1 Abstract Syntax", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/AbstractSynSLang1.html", "mod_name": "SLang1", "threshold": 1}, "CurryInSLang1": {"long_name": "Curry in SLang 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CurryInSLang1.html", "mod_name": "SLang1", "threshold": 1}, "SemanticsSLang1": {"long_name": "SLang 1 Semantics", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/SemanticsSLang1.html", "mod_name": "SLang1", "threshold": 1}}}, "PL/Environment": {"long_name": "Environment-based Model of Evaluation", "sections": {"Environment Data Structure": {}, "Determining Values Bound to a Variable": {"Environment1": {"long_name": "Determine values bound to a variable in environment", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Environment1.html", "mod_name": "Environment", "threshold": 3}}, "Evaluation of Expression Within an Environment": {"Environment2": {"long_name": "Expression Evaluation within Environment", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Environment2.html", "mod_name": "Environment", "threshold": 3}}, "Determining Denoted Values in SLang 1": {"Environment3": {"long_name": "Denoted Values in SLang 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Environment3.html", "mod_name": "Environment", "threshold": 3}}}, "exercises": {"Environment1": {"long_name": "Determine values bound to a variable in environment", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Environment1.html", "mod_name": "Environment", "threshold": 3}, "Environment2": {"long_name": "Expression Evaluation within Environment", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Environment2.html", "mod_name": "Environment", "threshold": 3}, "Environment3": {"long_name": "Denoted Values in SLang 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Environment3.html", "mod_name": "Environment", "threshold": 3}}}, "PL/SLang1withLetExpressions": {"long_name": "Let Expressions", "sections": {"Let Blocks": {}, "Let Blocks As Syntactic Sugar": {"LetSynSugar": {"long_name": "Let As Syntactic Sugar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LetSynSugar.html", "mod_name": "SLang1withLetExpressions", "threshold": 3}}, "Nested Lets": {"LetNested": {"long_name": "Nested Lets", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LetNested.html", "mod_name": "SLang1withLetExpressions", "threshold": 3}}, "Nested Lets with Closures": {"LetNestedWithClosures": {"long_name": "Nested Lets with Closures", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LetNestedWithClosures.html", "mod_name": "SLang1withLetExpressions", "threshold": 3}}}, "exercises": {"LetSynSugar": {"long_name": "Let As Syntactic Sugar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LetSynSugar.html", "mod_name": "SLang1withLetExpressions", "threshold": 3}, "LetNested": {"long_name": "Nested Lets", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LetNested.html", "mod_name": "SLang1withLetExpressions", "threshold": 3}, "LetNestedWithClosures": {"long_name": "Nested Lets with Closures", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/LetNestedWithClosures.html", "mod_name": "SLang1withLetExpressions", "threshold": 3}}}, "PL/SLang2": {"long_name": "Defining SLang 2", "sections": {"SLang 2: An Imperative Language": {}, "Output of SLang 2 Program": {"OutputOfSLang2Prog": {"long_name": "Output of SLang 2 Program", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/OutputOfSLang2Prog.html", "mod_name": "SLang2", "threshold": 3}}}, "exercises": {"OutputOfSLang2Prog": {"long_name": "Output of SLang 2 Program", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/OutputOfSLang2Prog.html", "mod_name": "SLang2", "threshold": 3}}}, "PL/SLang2TTK": {"long_name": "Tying The Knot", "sections": {"Implementing Recursion Efficiently": {}, "Practice TTK": {"TyingTheKnot": {"long_name": "Tying the Knot", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/TyingTheKnot.html", "mod_name": "SLang2TTK", "threshold": 3}}}, "exercises": {"TyingTheKnot": {"long_name": "Tying the Knot", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/TyingTheKnot.html", "mod_name": "SLang2TTK", "threshold": 3}}}, "PL/SLang2ParameterPassing": {"long_name": "Parameter-Passing Mechanisms", "sections": {"Call By Value vs. Call By Reference": {"paramPassingByVal": {"long_name": "paramPassingByVal", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingByVal.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingByValPRO": {"long_name": "Pass-by-value Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingByValPRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "paramPassingByRef": {"long_name": "paramPassingByRef", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingByRef.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingByRefPRO": {"long_name": "Pass-by-reference Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingByRefPRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByValVsRef": {"long_name": "Call By Value Vs Reference", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByValVsRef.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}}, "Copy-Restore": {"paramPassingCopyRestore": {"long_name": "Copy Restore Slide Show", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingCopyRestore.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingCopyRestorePRO": {"long_name": "Copy-restore Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingCopyRestorePRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByValVsRefVsCR": {"long_name": "Call By Value vs Reference vs CR", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByValVsRefVsCR.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}}, "Macro Expansion": {"paramPassingMacro": {"long_name": "Macro Slide Show", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingMacro.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingMacroPRO": {"long_name": "Macro Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingMacroPRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByRefVsCRVsMacro": {"long_name": "Ref vs CR vs Macro", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByRefVsCRVsMacro.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}}, "Call By Name": {"paramPassingByName": {"long_name": "By-name Slide Show", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingByName.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingByNamePRO": {"long_name": "ByName Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingByNamePRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByCRVsMacroVsName": {"long_name": "ByCR vs ByMacro vs ByName", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByCRVsMacroVsName.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}}, "Comprehensive Review of the Five Methods Studied So Far": {"CallByAllFive": {"long_name": "ByVal, ByRef, ByCR, ByMacro, ByName", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByAllFive.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}}}, "exercises": {"paramPassingByVal": {"long_name": "paramPassingByVal", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingByVal.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingByValPRO": {"long_name": "Pass-by-value Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingByValPRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "paramPassingByRef": {"long_name": "paramPassingByRef", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingByRef.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingByRefPRO": {"long_name": "Pass-by-reference Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingByRefPRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByValVsRef": {"long_name": "Call By Value Vs Reference", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByValVsRef.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}, "paramPassingCopyRestore": {"long_name": "Copy Restore Slide Show", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingCopyRestore.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingCopyRestorePRO": {"long_name": "Copy-restore Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingCopyRestorePRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByValVsRefVsCR": {"long_name": "Call By Value vs Reference vs CR", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByValVsRefVsCR.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}, "paramPassingMacro": {"long_name": "Macro Slide Show", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingMacro.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingMacroPRO": {"long_name": "Macro Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingMacroPRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByRefVsCRVsMacro": {"long_name": "Ref vs CR vs Macro", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByRefVsCRVsMacro.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}, "paramPassingByName": {"long_name": "By-name Slide Show", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/PL/paramPassingByName.html", "mod_name": "SLang2ParameterPassing", "threshold": 1}, "paramPassingByNamePRO": {"long_name": "ByName Proficiency Exercise", "required": true, "points": 1.0, "type": "pe", "av_address": "AV/PL/paramPassingByNamePRO.html", "mod_name": "SLang2ParameterPassing", "threshold": 1.0}, "CallByCRVsMacroVsName": {"long_name": "ByCR vs ByMacro vs ByName", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByCRVsMacroVsName.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}, "CallByAllFive": {"long_name": "ByVal, ByRef, ByCR, ByMacro, ByName", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/CallByAllFive.html", "mod_name": "SLang2ParameterPassing", "threshold": 3}}}, "PL/LazyLists": {"long_name": "Lazy Lists", "sections": {"Infinite Sequences": {"LazyLists1CON": {"long_name": "Illustrate Basic Lazy List Operations", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists1CON.js"], "mod_name": "LazyLists"}, "LazyLists2CON": {"long_name": "Illustrate from operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists2CON.js"], "mod_name": "LazyLists"}, "LazyLists3CON": {"long_name": "Illustrate map operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists3CON.js"], "mod_name": "LazyLists"}, "LazyLists4CON": {"long_name": "Illustrate filter operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists4CON.js"], "mod_name": "LazyLists"}, "LazyLists5CON": {"long_name": "Illustrate drop operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists5CON.js"], "mod_name": "LazyLists"}, "LazyLists6CON": {"long_name": "Illustrate iterates operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists6CON.js"], "mod_name": "LazyLists"}, "LazyLists7CON": {"long_name": "Illustrate sieve of Erastosthenes with eager evaluation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists7CON.js"], "mod_name": "LazyLists"}, "LazyLists8CON": {"long_name": "Illustrate sieve of Erastosthenes with lazy evaluation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists8CON.js"], "mod_name": "LazyLists"}, "InfSeq1": {"long_name": "Matching sequence to code that produced it", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq1.html", "mod_name": "LazyLists", "threshold": 1}}, "Practice With Infinite Sequences": {"InfSeq2": {"long_name": "RP set #32, question #2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq2.html", "mod_name": "LazyLists", "threshold": 3}}, "Practice With Infinite Sequences (2)": {"InfSeq3": {"long_name": "Matching sequence to code that produced it (2)", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq3.html", "mod_name": "LazyLists", "threshold": 3}}, "Practice With Infinite Sequences (3)": {"InfSeq4": {"long_name": "Matching sequence to code that produced it (3)", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq4.html", "mod_name": "LazyLists", "threshold": 1}}}, "exercises": {"LazyLists1CON": {"long_name": "Illustrate Basic Lazy List Operations", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists1CON.js"], "mod_name": "LazyLists"}, "LazyLists2CON": {"long_name": "Illustrate from operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists2CON.js"], "mod_name": "LazyLists"}, "LazyLists3CON": {"long_name": "Illustrate map operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists3CON.js"], "mod_name": "LazyLists"}, "LazyLists4CON": {"long_name": "Illustrate filter operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists4CON.js"], "mod_name": "LazyLists"}, "LazyLists5CON": {"long_name": "Illustrate drop operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists5CON.js"], "mod_name": "LazyLists"}, "LazyLists6CON": {"long_name": "Illustrate iterates operation in is module", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists6CON.js"], "mod_name": "LazyLists"}, "LazyLists7CON": {"long_name": "Illustrate sieve of Erastosthenes with eager evaluation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists7CON.js"], "mod_name": "LazyLists"}, "LazyLists8CON": {"long_name": "Illustrate sieve of Erastosthenes with lazy evaluation", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/PL/LazyLists/LazyListsCON.css"], "scripts": ["AV/PL/LazyLists/LazyLists8CON.js"], "mod_name": "LazyLists"}, "InfSeq1": {"long_name": "Matching sequence to code that produced it", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq1.html", "mod_name": "LazyLists", "threshold": 1}, "InfSeq2": {"long_name": "RP set #32, question #2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq2.html", "mod_name": "LazyLists", "threshold": 3}, "InfSeq3": {"long_name": "Matching sequence to code that produced it (2)", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq3.html", "mod_name": "LazyLists", "threshold": 3}, "InfSeq4": {"long_name": "Matching sequence to code that produced it (3)", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/InfSeq4.html", "mod_name": "LazyLists", "threshold": 1}}}, "PL/TypeSystems": {"long_name": "Types in Programming Languages", "sections": {"Motivating Examples": {}, "Type System: Definition": {}, "Type System: Static Versus  Dynamic": {}, "Type System: Safe Versus Unsafe": {}, "Type System: Strong Versus Weak": {}, "Type System: Typed Variables or Values": {}, "Type System: Explicit Versus Implicit typing": {}, "The Many Uses of Type Systems": {}}, "exercises": {}}, "PL/TypeInference": {"long_name": "Type Inference", "sections": {"Type Environments": {}, "Typing Rules Expressed as Post Systems": {}, "Typing in a Scaled-down ML": {}, "Using Post System Rules to Describe Type Inferencing in ML": {}, "Parametric Polymorphism in ML": {}, "Type inferencing in ML": {}, "Type Inferencing Problem 1": {"Typing1": {"long_name": "ML type inferencing 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing1.html", "mod_name": "TypeInference", "threshold": 1}}, "Type Inferencing Problem 2": {"Typing2": {"long_name": "ML type inferencing 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing2.html", "mod_name": "TypeInference", "threshold": 1}}, "Type Inferencing Problem 3": {"Typing3": {"long_name": "ML type inferencing 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing3.html", "mod_name": "TypeInference", "threshold": 1}}, "Type Inferencing Problem 4": {"Typing4": {"long_name": "ML type inferencing 4", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing4.html", "mod_name": "TypeInference", "threshold": 1}}, "Type Inferencing Problem 5": {"Typing5": {"long_name": "ML type inferencing 5", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing5.html", "mod_name": "TypeInference", "threshold": 1}}, "Type Inferencing Problem 6": {"Typing6": {"long_name": "ML type inferencing 6", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing6.html", "mod_name": "TypeInference", "threshold": 1}}}, "exercises": {"Typing1": {"long_name": "ML type inferencing 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing1.html", "mod_name": "TypeInference", "threshold": 1}, "Typing2": {"long_name": "ML type inferencing 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing2.html", "mod_name": "TypeInference", "threshold": 1}, "Typing3": {"long_name": "ML type inferencing 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing3.html", "mod_name": "TypeInference", "threshold": 1}, "Typing4": {"long_name": "ML type inferencing 4", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing4.html", "mod_name": "TypeInference", "threshold": 1}, "Typing5": {"long_name": "ML type inferencing 5", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing5.html", "mod_name": "TypeInference", "threshold": 1}, "Typing6": {"long_name": "ML type inferencing 6", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/PL/Typing6.html", "mod_name": "TypeInference", "threshold": 1}}}, "PL/PL_Glossary": {"long_name": "GLOSSARY", "sections": {}, "exercises": {}}, "VisFormalLang/FLIntro": {"long_name": "Formal Languages", "sections": {"Introduction": {}, "Prerequisites": {}, "What we will do": {}, "Process": {}}, "exercises": {}}, "VisFormalLang/FLOverview": {"long_name": "Overview", "sections": {"Languages, Grammars, and Machines": {}, "Language Hierarchy": {"HierarchyCON": {"type": "dgm", "mod_name": "FLOverview"}}, "Power of Machines": {}, "Application: Compilers": {"CompileCON": {"type": "dgm", "mod_name": "FLOverview"}, "CompileStagesCON": {"type": "dgm", "mod_name": "FLOverview"}}, "Some Mindbending Ideas": {}}, "exercises": {"HierarchyCON": {"type": "dgm", "mod_name": "FLOverview"}, "CompileCON": {"type": "dgm", "mod_name": "FLOverview"}, "CompileStagesCON": {"type": "dgm", "mod_name": "FLOverview"}}}, "VisFormalLang/FLConcepts": {"long_name": "Major Concepts", "sections": {"Introduction": {}, "Languages": {}, "Grammars": {"CharacterizeLang1": {"long_name": "Characterizing a Language, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/CharacterizeLang1.html", "mod_name": "FLConcepts", "threshold": 5}, "CharacterizeLang2": {"long_name": "Characterizing a Language, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/CharacterizeLang2.html", "mod_name": "FLConcepts", "threshold": 5}}, "Automata": {"AutomataCON": {"type": "dgm", "mod_name": "FLConcepts"}}}, "exercises": {"CharacterizeLang1": {"long_name": "Characterizing a Language, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/CharacterizeLang1.html", "mod_name": "FLConcepts", "threshold": 5}, "CharacterizeLang2": {"long_name": "Characterizing a Language, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/CharacterizeLang2.html", "mod_name": "FLConcepts", "threshold": 5}, "AutomataCON": {"type": "dgm", "mod_name": "FLConcepts"}}}, "VisFormalLang/DFA": {"long_name": "Deterministic Finite Acceptors", "sections": {"DFA: Deterministic Finite Acceptor": {"DFAExampleCON": {"type": "dgm", "mod_name": "DFA"}, "EvenBinaryDFACON": {"type": "dgm", "mod_name": "DFA"}, "MachineTraceCON": {"long_name": "Machine Trace Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/MachineTraceCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/MachineTraceCON.js"], "mod_name": "DFA"}, "TraceEvenBinaryDFACON": {"long_name": "TraceEvenBinaryDFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/TraceEvenBinaryDFACON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/TraceEvenBinaryDFACON.js"], "mod_name": "DFA"}, "DFA_noTrapStateCON": {"type": "dgm", "mod_name": "DFA"}, "DFA_withTrapStateCON": {"type": "dgm", "mod_name": "DFA"}, "EvenBinaryEvenOnesDFACON": {"type": "dgm", "mod_name": "DFA"}}}, "exercises": {"DFAExampleCON": {"type": "dgm", "mod_name": "DFA"}, "EvenBinaryDFACON": {"type": "dgm", "mod_name": "DFA"}, "MachineTraceCON": {"long_name": "Machine Trace Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/MachineTraceCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/MachineTraceCON.js"], "mod_name": "DFA"}, "TraceEvenBinaryDFACON": {"long_name": "TraceEvenBinaryDFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/TraceEvenBinaryDFACON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/TraceEvenBinaryDFACON.js"], "mod_name": "DFA"}, "DFA_noTrapStateCON": {"type": "dgm", "mod_name": "DFA"}, "DFA_withTrapStateCON": {"type": "dgm", "mod_name": "DFA"}, "EvenBinaryEvenOnesDFACON": {"type": "dgm", "mod_name": "DFA"}}}, "VisFormalLang/NFA": {"long_name": "Non-Deterministic Finite Automata", "sections": {"NFA: Non-Deterministic Finite Automata": {"NFAexampleCON": {"type": "dgm", "mod_name": "NFA"}, "NFAexample2CON": {"type": "dgm", "mod_name": "NFA"}}, "NFA vs. DFA: Which is more powerful?": {"NFA2DFAaCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAbCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAEx2aCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAEx2bCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFATraceCON": {"long_name": "NFA2DFATraceCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/NFA2DFATraceCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/NFA2DFATraceCON.js"], "mod_name": "NFA"}}}, "exercises": {"NFAexampleCON": {"type": "dgm", "mod_name": "NFA"}, "NFAexample2CON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAaCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAbCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAEx2aCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFAEx2bCON": {"type": "dgm", "mod_name": "NFA"}, "NFA2DFATraceCON": {"long_name": "NFA2DFATraceCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/NFA2DFATraceCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/NFA2DFATraceCON.js"], "mod_name": "NFA"}}}, "VisFormalLang/Minimization": {"long_name": "Minimizing the Number of States in a DFA", "sections": {"Minimizing the Number of States in a DFA": {"Minimization1CON": {"long_name": "Minimization1CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/Minimization1CON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/Minimization1CON.js"], "mod_name": "Minimization"}, "Minimization2CON": {"long_name": "Minimization2CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/Minimization2CON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/Minimization2CON.js"], "mod_name": "Minimization"}}}, "exercises": {"Minimization1CON": {"long_name": "Minimization1CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/Minimization1CON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/Minimization1CON.js"], "mod_name": "Minimization"}, "Minimization2CON": {"long_name": "Minimization2CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/FA/Minimization2CON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/FA/Minimization2CON.js"], "mod_name": "Minimization"}}}, "VisFormalLang/RegEx": {"long_name": "Regular Expressions", "sections": {"Regular Expressions": {}, "Regular Expressions vs. Regular Languages": {"phiREtoNFACON": {"type": "dgm", "mod_name": "RegEx"}, "lambdaREtoNFACON": {"type": "dgm", "mod_name": "RegEx"}, "aREtoNFACON": {"type": "dgm", "mod_name": "RegEx"}, "schematicRepCON": {"long_name": "schematicRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicRepCON.js"], "mod_name": "RegEx"}, "schematicORRepCON": {"long_name": "schematicORRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicORRepCON.js"], "mod_name": "RegEx"}, "schematicConcatRepCON": {"long_name": "schematicConcatRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicConcatRepCON.js"], "mod_name": "RegEx"}, "schematicStarRepCON": {"long_name": "schematicStarRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicStarRepCON.js"], "mod_name": "RegEx"}, "ABStarOrCCON": {"type": "dgm", "mod_name": "RegEx"}, "RENFAtoDFACON": {"long_name": "RENFAtoDFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/RENFAtoDFACON.js"], "mod_name": "RegEx"}, "GTGExampleCON": {"type": "dgm", "mod_name": "RegEx"}, "GTGtoNFACON": {"long_name": "GTGtoNFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/GTGtoNFACON.js"], "mod_name": "RegEx"}, "REtoMinimizedDFACON": {"long_name": "REtoMinimizedDFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/Regular/REtoMinimizedDFACON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/REtoMinimizedDFACON.js", "lib/paper-core.min.js", "DataStructures/FLA/REtoFAController.js", "lib/underscore.js", "DataStructures/FLA/Discretizer.js"], "mod_name": "RegEx"}}, "Converting Regular Languages to Regular Expressions": {"NFAtoRECON": {"long_name": "NFAtoRECON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/Regular/NFAtoRECON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/NFAtoRECON.js"], "mod_name": "RegEx"}}}, "exercises": {"phiREtoNFACON": {"type": "dgm", "mod_name": "RegEx"}, "lambdaREtoNFACON": {"type": "dgm", "mod_name": "RegEx"}, "aREtoNFACON": {"type": "dgm", "mod_name": "RegEx"}, "schematicRepCON": {"long_name": "schematicRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicRepCON.js"], "mod_name": "RegEx"}, "schematicORRepCON": {"long_name": "schematicORRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicORRepCON.js"], "mod_name": "RegEx"}, "schematicConcatRepCON": {"long_name": "schematicConcatRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicConcatRepCON.js"], "mod_name": "RegEx"}, "schematicStarRepCON": {"long_name": "schematicStarRepCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/schematicStarRepCON.js"], "mod_name": "RegEx"}, "ABStarOrCCON": {"type": "dgm", "mod_name": "RegEx"}, "RENFAtoDFACON": {"long_name": "RENFAtoDFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/RENFAtoDFACON.js"], "mod_name": "RegEx"}, "GTGExampleCON": {"type": "dgm", "mod_name": "RegEx"}, "GTGtoNFACON": {"long_name": "GTGtoNFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": [], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/GTGtoNFACON.js"], "mod_name": "RegEx"}, "REtoMinimizedDFACON": {"long_name": "REtoMinimizedDFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/Regular/REtoMinimizedDFACON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/REtoMinimizedDFACON.js", "lib/paper-core.min.js", "DataStructures/FLA/REtoFAController.js", "lib/underscore.js", "DataStructures/FLA/Discretizer.js"], "mod_name": "RegEx"}, "NFAtoRECON": {"long_name": "NFAtoRECON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/Regular/NFAtoRECON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/NFAtoRECON.js"], "mod_name": "RegEx"}}}, "VisFormalLang/RegGrammar": {"long_name": "Regular Grammars", "sections": {"Regular Grammars": {"REtoFACON": {"long_name": "REtoFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/Regular/REtoFACON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/Discretizer.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/REtoFACON.js"], "mod_name": "RegGrammar"}, "RILinearGramNFACON": {"type": "dgm", "mod_name": "RegGrammar"}, "RlRegGramDFACON": {"type": "dgm", "mod_name": "RegGrammar"}, "FAtoRegGrammmarCON": {"long_name": "FAtoRegGrammmarCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/Regular/FAtoRegGrammmarCON.css"], "scripts": ["AV/VisFormalLang/Regular/FAtoRegGrammmarCON.js"], "mod_name": "RegGrammar"}}}, "exercises": {"REtoFACON": {"long_name": "REtoFACON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/Regular/REtoFACON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/Discretizer.js", "DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/REtoFACON.js"], "mod_name": "RegGrammar"}, "RILinearGramNFACON": {"type": "dgm", "mod_name": "RegGrammar"}, "RlRegGramDFACON": {"type": "dgm", "mod_name": "RegGrammar"}, "FAtoRegGrammmarCON": {"long_name": "FAtoRegGrammmarCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/Regular/FAtoRegGrammmarCON.css"], "scripts": ["AV/VisFormalLang/Regular/FAtoRegGrammmarCON.js"], "mod_name": "RegGrammar"}}}, "VisFormalLang/RegClosure": {"long_name": "Closure Properties of Regular Grammars", "sections": {"Closure Properties of Regular Grammars": {"DFAIntersectionCON": {"long_name": "DFAIntersectionCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/Regular/DFAIntersectionCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/DFAIntersectionCON.js"], "mod_name": "RegClosure"}}}, "exercises": {"DFAIntersectionCON": {"long_name": "DFAIntersectionCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/Regular/DFAIntersectionCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/VisFormalLang/Regular/DFAIntersectionCON.js"], "mod_name": "RegClosure"}}}, "VisFormalLang/NonRegular": {"long_name": "Identifying Non-regular Languages", "sections": {"Identifying Non-regular Languages": {"Proof1NonRegularCON": {"long_name": "Proof 1 Non-Regular Grammar Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/NonReg/Proof1NonRegularCON.css"], "scripts": ["AV/VisFormalLang/NonReg/Proof1NonRegularCON.js"], "mod_name": "NonRegular"}, "PumpingLemmaCON": {"long_name": "Pumping Lemma Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/NonReg/PumpingLemmaCON.css"], "scripts": ["AV/VisFormalLang/NonReg/PumpingLemmaCON.js"], "mod_name": "NonRegular"}, "PLGame": {"long_name": "Regular Pumping Lemmma", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/VisFormalLang/NonReg/PLGame.html", "mod_name": "NonRegular", "threshold": 1}}}, "exercises": {"Proof1NonRegularCON": {"long_name": "Proof 1 Non-Regular Grammar Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/NonReg/Proof1NonRegularCON.css"], "scripts": ["AV/VisFormalLang/NonReg/Proof1NonRegularCON.js"], "mod_name": "NonRegular"}, "PumpingLemmaCON": {"long_name": "Pumping Lemma Slideshow", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/NonReg/PumpingLemmaCON.css"], "scripts": ["AV/VisFormalLang/NonReg/PumpingLemmaCON.js"], "mod_name": "NonRegular"}, "PLGame": {"long_name": "Regular Pumping Lemmma", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/VisFormalLang/NonReg/PLGame.html", "mod_name": "NonRegular", "threshold": 1}}}, "VisFormalLang/DFAproperties": {"long_name": "Properties", "sections": {"Introduction": {}, "Properties and Proving: Problem 1": {}, "Properties and Proving - Problem 2": {}}, "exercises": {}}, "VisFormalLang/CFL": {"long_name": "Context-Free Languages", "sections": {"Context-Free Languages": {"ParseTree1CON": {"long_name": "ParseTree1CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/ParseTree1CON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/CFG/ParseTree1CON.js"], "mod_name": "CFL"}, "NumParseTreeNodes": {"long_name": "Determine Number of nodes", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTreeNodes.html", "mod_name": "CFL", "threshold": 5}, "StringGenFromGmr": {"long_name": "String Generated By a Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/StringGenFromGmr.html", "mod_name": "CFL", "threshold": 5}}, "Ambiguity": {"NumParseTrees1": {"long_name": "Number Of Parse Trees, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTrees1.html", "mod_name": "CFL", "threshold": 5}, "NumParseTrees2": {"long_name": "Number Of Parse Trees, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTrees2.html", "mod_name": "CFL", "threshold": 5}, "NumParseTrees3": {"long_name": "Number Of Parse Trees, Problem 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTrees3.html", "mod_name": "CFL", "threshold": 5}, "DeterminingAmbiguities": {"long_name": "Determining Ambiguities", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/DeterminingAmbiguities.html", "mod_name": "CFL", "threshold": 5}}, "Eliminating Grammar Ambiguity": {"EvalExp": {"long_name": "Evaluating Expression Based on Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/EvalExp.html", "mod_name": "CFL", "threshold": 5}, "ParseTreeForExpCON": {"long_name": "ParseTreeForExpCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/ParseTreeForExpCON.css"], "scripts": ["AV/VisFormalLang/CFG/ParseTreeForExpCON.js"], "mod_name": "CFL"}, "Associativity": {"long_name": "Associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/Associativity.html", "mod_name": "CFL", "threshold": 5}, "PrecedenceAndAssociativity": {"long_name": "Precedence and associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/PrecedenceAndAssociativity.html", "mod_name": "CFL", "threshold": 5}, "CharacterizeLang3": {"long_name": "Characterizing Language 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/CharacterizeLang3.html", "mod_name": "CFL", "threshold": 5}}, "Extended BNF": {"ExtendedBNF": {"long_name": "Extended BNF", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/ExtendedBNF.html", "mod_name": "CFL", "threshold": 5}}}, "exercises": {"ParseTree1CON": {"long_name": "ParseTree1CON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/ParseTree1CON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/CFG/ParseTree1CON.js"], "mod_name": "CFL"}, "NumParseTreeNodes": {"long_name": "Determine Number of nodes", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTreeNodes.html", "mod_name": "CFL", "threshold": 5}, "StringGenFromGmr": {"long_name": "String Generated By a Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/StringGenFromGmr.html", "mod_name": "CFL", "threshold": 5}, "NumParseTrees1": {"long_name": "Number Of Parse Trees, Problem 1", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTrees1.html", "mod_name": "CFL", "threshold": 5}, "NumParseTrees2": {"long_name": "Number Of Parse Trees, Problem 2", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTrees2.html", "mod_name": "CFL", "threshold": 5}, "NumParseTrees3": {"long_name": "Number Of Parse Trees, Problem 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/NumParseTrees3.html", "mod_name": "CFL", "threshold": 5}, "DeterminingAmbiguities": {"long_name": "Determining Ambiguities", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/DeterminingAmbiguities.html", "mod_name": "CFL", "threshold": 5}, "EvalExp": {"long_name": "Evaluating Expression Based on Grammar", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/EvalExp.html", "mod_name": "CFL", "threshold": 5}, "ParseTreeForExpCON": {"long_name": "ParseTreeForExpCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/ParseTreeForExpCON.css"], "scripts": ["AV/VisFormalLang/CFG/ParseTreeForExpCON.js"], "mod_name": "CFL"}, "Associativity": {"long_name": "Associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/Associativity.html", "mod_name": "CFL", "threshold": 5}, "PrecedenceAndAssociativity": {"long_name": "Precedence and associativity", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/PrecedenceAndAssociativity.html", "mod_name": "CFL", "threshold": 5}, "CharacterizeLang3": {"long_name": "Characterizing Language 3", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/CharacterizeLang3.html", "mod_name": "CFL", "threshold": 5}, "ExtendedBNF": {"long_name": "Extended BNF", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/FLA/ExtendedBNF.html", "mod_name": "CFL", "threshold": 5}}}, "VisFormalLang/CFLSimp": {"long_name": "Transforming Grammars", "sections": {"Transforming Grammars": {"RemoveUselessCON": {"long_name": "RemoveUselessCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/RemoveUselessCON.css"], "scripts": ["lib/underscore.js", "lib/dagre.min.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/CFG/RemoveUselessCON.js"], "mod_name": "CFLSimp"}, "RemoveLambdaCON": {"long_name": "RemoveLambdaCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/RemoveLambdaCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/CFG/RemoveLambdaCON.js"], "mod_name": "CFLSimp"}, "RemoveUnitCON": {"long_name": "RemoveUnitCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/RemoveUnitCON.css"], "scripts": ["AV/VisFormalLang/CFG/RemoveUnitCON.js"], "mod_name": "CFLSimp"}, "ChomskyCON": {"long_name": "ChomskyCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/ChomskyCON.css"], "scripts": ["AV/VisFormalLang/CFG/ChomskyCON.js"], "mod_name": "CFLSimp"}}}, "exercises": {"RemoveUselessCON": {"long_name": "RemoveUselessCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/RemoveUselessCON.css"], "scripts": ["lib/underscore.js", "lib/dagre.min.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/CFG/RemoveUselessCON.js"], "mod_name": "CFLSimp"}, "RemoveLambdaCON": {"long_name": "RemoveLambdaCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/RemoveLambdaCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/CFG/RemoveLambdaCON.js"], "mod_name": "CFLSimp"}, "RemoveUnitCON": {"long_name": "RemoveUnitCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/RemoveUnitCON.css"], "scripts": ["AV/VisFormalLang/CFG/RemoveUnitCON.js"], "mod_name": "CFLSimp"}, "ChomskyCON": {"long_name": "ChomskyCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/CFG/ChomskyCON.css"], "scripts": ["AV/VisFormalLang/CFG/ChomskyCON.js"], "mod_name": "CFLSimp"}}}, "VisFormalLang/PDA": {"long_name": "Pushdown Automata", "sections": {"Pushdown Automata": {"PDAAnBnTraceCON": {"long_name": "PDAAnBnTraceCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/PDA/PDAAnBnTraceCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/PDA/PDAAnBnTraceCON.js"], "mod_name": "PDA"}, "example_7_1_2": {"type": "dgm", "mod_name": "PDA"}, "PDADeterministic": {"type": "dgm", "mod_name": "PDA"}, "PDAProbDeterministic": {"type": "dgm", "mod_name": "PDA"}, "PDANonDeterministic": {"type": "dgm", "mod_name": "PDA"}}}, "exercises": {"PDAAnBnTraceCON": {"long_name": "PDAAnBnTraceCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/PDA/PDAAnBnTraceCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/PDA/PDAAnBnTraceCON.js"], "mod_name": "PDA"}, "example_7_1_2": {"type": "dgm", "mod_name": "PDA"}, "PDADeterministic": {"type": "dgm", "mod_name": "PDA"}, "PDAProbDeterministic": {"type": "dgm", "mod_name": "PDA"}, "PDANonDeterministic": {"type": "dgm", "mod_name": "PDA"}}}, "VisFormalLang/PDACFL": {"long_name": "PDAs and Context Free Languages", "sections": {"PDAs and Context Free Languages": {"PDAtoCFLCON": {"long_name": "PDAtoCFLCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/PDA/PDAtoCFLCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/PDA/PDAtoCFLCON.js"], "mod_name": "PDACFL"}}}, "exercises": {"PDAtoCFLCON": {"long_name": "PDAtoCFLCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/PDA/PDAtoCFLCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "DataStructures/FLA/PDA.js", "AV/VisFormalLang/PDA/PDAtoCFLCON.js"], "mod_name": "PDACFL"}}}, "VisFormalLang/DPDA": {"long_name": "Deterministic Pushdown Automata", "sections": {"Deterministic Pushdown Automata": {}, "Grammars for Deterministic Context-free Languages": {}}, "exercises": {}}, "VisFormalLang/CFLProp": {"long_name": "Properties of Context-Free Languages", "sections": {"Properties of Context-Free Languages": {"CFPumpingLemma": {"long_name": "Context Free Pumping Lemma", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/VisFormalLang/CFG/CFPumpingLemma.html", "mod_name": "CFLProp", "threshold": 1}}}, "exercises": {"CFPumpingLemma": {"long_name": "Context Free Pumping Lemma", "required": false, "points": 0.0, "type": "ss", "av_address": "AV/VisFormalLang/CFG/CFPumpingLemma.html", "mod_name": "CFLProp", "threshold": 1}}}, "VisFormalLang/TuringIntro": {"long_name": "Models of Computation", "sections": {"Models of Computation": {}}, "exercises": {}}, "VisFormalLang/Turing": {"long_name": "Turing Machines", "sections": {"Turing Machines": {"RClearCON": {"long_name": "Turing Machine RClear", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/RClearCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/Yinwen/TuringMachine.js", "AV/VisFormalLang/TM/RClearCON.js"], "mod_name": "Turing"}, "addOnea": {"long_name": "Sheet 2 Exercise 1 NFAtoDFA exercise", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/TMexercise/addOnea.html", "mod_name": "Turing", "threshold": 1.0}, "eraseABC": {"long_name": "Sheet 2 Exercise 1 NFAtoDFA exercise", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/TMexercise/eraseABC.html", "mod_name": "Turing", "threshold": 1.0}, "keepABC": {"long_name": "Sheet 2 Exercise 1 NFAtoDFA exercise", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/TMexercise/keepABC.html", "mod_name": "Turing", "threshold": 1.0}, "TMabcCON": {"long_name": "TMabcCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/TMabcCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/Yinwen/TuringMachine.js", "AV/VisFormalLang/TM/TMabcCON.js"], "mod_name": "Turing"}, "TMabCON": {"type": "dgm", "mod_name": "Turing"}, "TMPlusoneCON": {"long_name": "Turing Machine Replace", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/TMPlusoneCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/Development/formal_language/TuringMachine.js", "AV/VisFormalLang/TM/TMPlusoneCON.js"], "mod_name": "Turing"}, "TManbncnCON": {"long_name": "TManbncnCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/TManbncnCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/Development/formal_language/TuringMachine.js", "AV/VisFormalLang/TM/TManbncnCON.js"], "mod_name": "Turing"}, "Turing1CON": {"type": "dgm", "mod_name": "Turing"}, "Turing2CON": {"type": "dgm", "mod_name": "Turing"}, "Turing3CON": {"type": "dgm", "mod_name": "Turing"}, "TMcopy": {"long_name": "TMcopy", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/TM/TMcopy.css"], "scripts": ["AV/VisFormalLang/TM/TMcopy.js", "AV/Juwon/FAcopy.js"], "mod_name": "Turing"}, "TuringShiftCON": {"type": "dgm", "mod_name": "Turing"}}}, "exercises": {"RClearCON": {"long_name": "Turing Machine RClear", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/RClearCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/Yinwen/TuringMachine.js", "AV/VisFormalLang/TM/RClearCON.js"], "mod_name": "Turing"}, "addOnea": {"long_name": "Sheet 2 Exercise 1 NFAtoDFA exercise", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/TMexercise/addOnea.html", "mod_name": "Turing", "threshold": 1.0}, "eraseABC": {"long_name": "Sheet 2 Exercise 1 NFAtoDFA exercise", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/TMexercise/eraseABC.html", "mod_name": "Turing", "threshold": 1.0}, "keepABC": {"long_name": "Sheet 2 Exercise 1 NFAtoDFA exercise", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/TMexercise/keepABC.html", "mod_name": "Turing", "threshold": 1.0}, "TMabcCON": {"long_name": "TMabcCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/TMabcCON.css"], "scripts": ["DataStructures/FLA/FA.js", "AV/Yinwen/TuringMachine.js", "AV/VisFormalLang/TM/TMabcCON.js"], "mod_name": "Turing"}, "TMabCON": {"type": "dgm", "mod_name": "Turing"}, "TMPlusoneCON": {"long_name": "Turing Machine Replace", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/TMPlusoneCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/Development/formal_language/TuringMachine.js", "AV/VisFormalLang/TM/TMPlusoneCON.js"], "mod_name": "Turing"}, "TManbncnCON": {"long_name": "TManbncnCON", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["DataStructures/FLA/FLA.css", "AV/VisFormalLang/TM/TManbncnCON.css"], "scripts": ["lib/underscore.js", "DataStructures/FLA/FA.js", "AV/Development/formal_language/TuringMachine.js", "AV/VisFormalLang/TM/TManbncnCON.js"], "mod_name": "Turing"}, "Turing1CON": {"type": "dgm", "mod_name": "Turing"}, "Turing2CON": {"type": "dgm", "mod_name": "Turing"}, "Turing3CON": {"type": "dgm", "mod_name": "Turing"}, "TMcopy": {"long_name": "TMcopy", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/VisFormalLang/TM/TMcopy.css"], "scripts": ["AV/VisFormalLang/TM/TMcopy.js", "AV/Juwon/FAcopy.js"], "mod_name": "Turing"}, "TuringShiftCON": {"type": "dgm", "mod_name": "Turing"}}}, "VisFormalLang/ParseIntro": {"long_name": "Parsing Introduction", "sections": {"Introduction": {}}, "exercises": {}}, "VisFormalLang/LLParsing": {"long_name": "LL Parsing", "sections": {"LL Parsing": {}}, "exercises": {}}, "VisFormalLang/LRParsing": {"long_name": "LR Parsing", "sections": {"LR Parsing": {"LRparseDFA2CON": {"type": "dgm", "mod_name": "LRParsing"}}}, "exercises": {"LRparseDFA2CON": {"type": "dgm", "mod_name": "LRParsing"}}}, "VisFormalLang/CYKParsing": {"long_name": "CYK Parsing", "sections": {"CYK Parsing": {}}, "exercises": {}}, "VisFormalLang/Compiler": {"long_name": "Structure of a Compiler", "sections": {"What is a compiler?": {}, "Language Processing System": {}, "Overview of General Compiler": {}, "Phases of Compilation": {}}, "exercises": {}}, "VisFormalLang/RecEnum": {"long_name": "Recursively Enumerable Languages", "sections": {"Recursively Enumerable Languages": {}}, "exercises": {}}, "VisFormalLang/IntroEx": {"long_name": "Intro Exercises", "sections": {"Exercise 1": {"GramIntro3str": {"long_name": "Three string grammar", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntro3str.html", "mod_name": "IntroEx", "threshold": 1.0}}, "Exercise 2": {"GramIntroanbm": {"long_name": "anbm grammar", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanbm.html", "mod_name": "IntroEx", "threshold": 1.0}}, "Exercise 3": {"GramIntroanb2n": {"long_name": "anb2n grammar", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanb2n.html", "mod_name": "IntroEx", "threshold": 1.0}}, "Exercise 4": {"DFAodda": {"long_name": "Odd number of a's", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda.html", "mod_name": "IntroEx", "threshold": 1.0}}, "Exercise 5": {"DFAoddaevenb": {"long_name": "Odd number of a's, even number of b's", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAoddaevenb.html", "mod_name": "IntroEx", "threshold": 1.0}}, "Exercise 6": {"DFAodda3b": {"long_name": "Odd number of a's, at most 3 b's", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda3b.html", "mod_name": "IntroEx", "threshold": 1.0}}, "Exercise 7": {"DFAno3a": {"long_name": "No string with 3 consecutive a's", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAno3a.html", "mod_name": "IntroEx", "threshold": 1.0}}}, "exercises": {"GramIntro3str": {"long_name": "Three string grammar", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntro3str.html", "mod_name": "IntroEx", "threshold": 1.0}, "GramIntroanbm": {"long_name": "anbm grammar", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanbm.html", "mod_name": "IntroEx", "threshold": 1.0}, "GramIntroanb2n": {"long_name": "anb2n grammar", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanb2n.html", "mod_name": "IntroEx", "threshold": 1.0}, "DFAodda": {"long_name": "Odd number of a's", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda.html", "mod_name": "IntroEx", "threshold": 1.0}, "DFAoddaevenb": {"long_name": "Odd number of a's, even number of b's", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAoddaevenb.html", "mod_name": "IntroEx", "threshold": 1.0}, "DFAodda3b": {"long_name": "Odd number of a's, at most 3 b's", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda3b.html", "mod_name": "IntroEx", "threshold": 1.0}, "DFAno3a": {"long_name": "No string with 3 consecutive a's", "required": true, "points": 2.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAno3a.html", "mod_name": "IntroEx", "threshold": 1.0}}}, "VisFormalLang/FAEx": {"long_name": "FA Exercises", "sections": {"Exercise 1": {"NFAtoDFAex1long": {"long_name": "NFAtoDFA exercise 1 long version", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAtoDFAex1long.html", "mod_name": "FAEx", "threshold": 1.0}}, "Exercise 2": {"DFAMinEx1": {"long_name": "Sheet 1 Exercise 2 DFA minimization", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAMinEx1.html", "mod_name": "FAEx", "threshold": 1.0}}, "Exercise 3": {"DFANotevena3b": {"long_name": "Sheet 2 Exercise 3 Construct DFA that accepts a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFANotevena3b.html", "mod_name": "FAEx", "threshold": 1.0}}, "Exercise 4": {"NFAex1": {"long_name": "Create a NFA 1", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAex1.html", "mod_name": "FAEx", "threshold": 1.0}}}, "exercises": {"NFAtoDFAex1long": {"long_name": "NFAtoDFA exercise 1 long version", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAtoDFAex1long.html", "mod_name": "FAEx", "threshold": 1.0}, "DFAMinEx1": {"long_name": "Sheet 1 Exercise 2 DFA minimization", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAMinEx1.html", "mod_name": "FAEx", "threshold": 1.0}, "DFANotevena3b": {"long_name": "Sheet 2 Exercise 3 Construct DFA that accepts a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFANotevena3b.html", "mod_name": "FAEx", "threshold": 1.0}, "NFAex1": {"long_name": "Create a NFA 1", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAex1.html", "mod_name": "FAEx", "threshold": 1.0}}}, "VisFormalLang/RegLangEx": {"long_name": "Regular Language Exercises", "sections": {"Exercise 1": {"RegExbbaeven": {"long_name": "Regular Expression construction: bba in even position", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExbbaeven.html", "mod_name": "RegLangEx", "threshold": 1.0}}, "Exercise 2": {"RegExnoaa": {"long_name": "Regular Expression construction: no aa", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExnoaa.html", "mod_name": "RegLangEx", "threshold": 1.0}}, "Exercise 3": {"RegExonebbb": {"long_name": "Regular Expression construction: one bbb", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExonebbb.html", "mod_name": "RegLangEx", "threshold": 1.0}}, "Exercise 4": {"RegGramNFA1": {"long_name": "Regular Grammar: right-linear grammar for NFA", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramNFA1.html", "mod_name": "RegLangEx", "threshold": 1.0}}, "Exercise 5": {"RegGrambbbaaaa": {"long_name": "Regular Grammar: left-linear grammar for bbbsaaaas", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGrambbbaaaa.html", "mod_name": "RegLangEx", "threshold": 1.0}}, "Exercise 6": {"RegGramaby3": {"long_name": "Regular Grammar: regular grammar for a divisible by 3", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramaby3.html", "mod_name": "RegLangEx", "threshold": 1.0}}}, "exercises": {"RegExbbaeven": {"long_name": "Regular Expression construction: bba in even position", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExbbaeven.html", "mod_name": "RegLangEx", "threshold": 1.0}, "RegExnoaa": {"long_name": "Regular Expression construction: no aa", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExnoaa.html", "mod_name": "RegLangEx", "threshold": 1.0}, "RegExonebbb": {"long_name": "Regular Expression construction: one bbb", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExonebbb.html", "mod_name": "RegLangEx", "threshold": 1.0}, "RegGramNFA1": {"long_name": "Regular Grammar: right-linear grammar for NFA", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramNFA1.html", "mod_name": "RegLangEx", "threshold": 1.0}, "RegGrambbbaaaa": {"long_name": "Regular Grammar: left-linear grammar for bbbsaaaas", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGrambbbaaaa.html", "mod_name": "RegLangEx", "threshold": 1.0}, "RegGramaby3": {"long_name": "Regular Grammar: regular grammar for a divisible by 3", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramaby3.html", "mod_name": "RegLangEx", "threshold": 1.0}}}, "VisFormalLang/Sheet5": {"long_name": "Sheet 5", "sections": {"Exercise 1": {"sheet5exercise1": {"long_name": "Sheet 5 Exercise 1 Grammer Exercise 1", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/sheet5exercise1.html", "mod_name": "Sheet5", "threshold": 1.0}}, "Exercise 2": {"sheet5exercise2": {"long_name": "Sheet 5 Exercise 1 Grammer Exercise 2", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/sheet5exercise2.html", "mod_name": "Sheet5", "threshold": 1.0}}}, "exercises": {"sheet5exercise1": {"long_name": "Sheet 5 Exercise 1 Grammer Exercise 1", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/sheet5exercise1.html", "mod_name": "Sheet5", "threshold": 1.0}, "sheet5exercise2": {"long_name": "Sheet 5 Exercise 1 Grammer Exercise 2", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/sheet5exercise2.html", "mod_name": "Sheet5", "threshold": 1.0}}}, "VisFormalLang/Sheet6": {"long_name": "Sheet 6", "sections": {"Exercise 1": {"sheet6exercise1": {"long_name": "Sheet 6 Exercise 1 Draw a DFA for a language", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise1.html", "mod_name": "Sheet6", "threshold": 1.0}}, "Exercise 2": {"sheet6exercise2": {"long_name": "Sheet 6 Exercise 1 Grammer Exercise 1", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise2.html", "mod_name": "Sheet6", "threshold": 1.0}}, "Exercise 3": {"sheet6exercise3": {"long_name": "Sheet 6 Exercise 1 Grammer Exercise 2", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise3.html", "mod_name": "Sheet6", "threshold": 1.0}}, "Exercise 4": {"sheet6exercise4": {"long_name": "Sheet 6 Exercise 1 Grammer Exercise 2", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise4.html", "mod_name": "Sheet6", "threshold": 0.9}}}, "exercises": {"sheet6exercise1": {"long_name": "Sheet 6 Exercise 1 Draw a DFA for a language", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise1.html", "mod_name": "Sheet6", "threshold": 1.0}, "sheet6exercise2": {"long_name": "Sheet 6 Exercise 1 Grammer Exercise 1", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise2.html", "mod_name": "Sheet6", "threshold": 1.0}, "sheet6exercise3": {"long_name": "Sheet 6 Exercise 1 Grammer Exercise 2", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise3.html", "mod_name": "Sheet6", "threshold": 1.0}, "sheet6exercise4": {"long_name": "Sheet 6 Exercise 1 Grammer Exercise 2", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_6/sheet6exercise4.html", "mod_name": "Sheet6", "threshold": 0.9}}}, "VisFormalLang/Sheet7": {"long_name": "Sheet 7", "sections": {"Exercise 1": {"sheet7exercise1": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise1.html", "mod_name": "Sheet7", "threshold": 1.0}}, "Exercise 2": {"sheet7exercise2": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise2.html", "mod_name": "Sheet7", "threshold": 1.0}}, "Exercise 3": {"sheet7exercise3": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise3.html", "mod_name": "Sheet7", "threshold": 1.0}}, "Exercise 4": {"sheet7exercise4": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise4.html", "mod_name": "Sheet7", "threshold": 1.0}}}, "exercises": {"sheet7exercise1": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise1.html", "mod_name": "Sheet7", "threshold": 1.0}, "sheet7exercise2": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise2.html", "mod_name": "Sheet7", "threshold": 1.0}, "sheet7exercise3": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise3.html", "mod_name": "Sheet7", "threshold": 1.0}, "sheet7exercise4": {"long_name": "Sheet 7 Exercise 1 Draw a PDA for a language", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_7/sheet7exercise4.html", "mod_name": "Sheet7", "threshold": 1.0}}}, "VisFormalLang/IntroExMore": {"long_name": "Intro Exercise Practice", "sections": {"Exercise 1": {"GramIntro3str": {"long_name": "Three string grammar", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntro3str.html", "mod_name": "IntroExMore", "threshold": 1.0}}, "Exercise 2": {"GramIntroanbm": {"long_name": "anbm grammar", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanbm.html", "mod_name": "IntroExMore", "threshold": 1.0}}, "Exercise 3": {"GramIntroanb2n": {"long_name": "anb2n grammar", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanb2n.html", "mod_name": "IntroExMore", "threshold": 1.0}}, "Exercise 4": {"DFAodda": {"long_name": "Odd number of a's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda.html", "mod_name": "IntroExMore", "threshold": 1.0}}, "Exercise 5": {"DFAoddaevenb": {"long_name": "Odd number of a's, even number of b's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAoddaevenb.html", "mod_name": "IntroExMore", "threshold": 1.0}}, "Exercise 6": {"DFAodda3b": {"long_name": "Odd number of a's, at most 3 b's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda3b.html", "mod_name": "IntroExMore", "threshold": 1.0}}, "Exercise 7": {"DFAno3a": {"long_name": "No string with 3 consecutive a's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAno3a.html", "mod_name": "IntroExMore", "threshold": 1.0}}}, "exercises": {"GramIntro3str": {"long_name": "Three string grammar", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntro3str.html", "mod_name": "IntroExMore", "threshold": 1.0}, "GramIntroanbm": {"long_name": "anbm grammar", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanbm.html", "mod_name": "IntroExMore", "threshold": 1.0}, "GramIntroanb2n": {"long_name": "anb2n grammar", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Grammar/GramIntroanb2n.html", "mod_name": "IntroExMore", "threshold": 1.0}, "DFAodda": {"long_name": "Odd number of a's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda.html", "mod_name": "IntroExMore", "threshold": 1.0}, "DFAoddaevenb": {"long_name": "Odd number of a's, even number of b's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAoddaevenb.html", "mod_name": "IntroExMore", "threshold": 1.0}, "DFAodda3b": {"long_name": "Odd number of a's, at most 3 b's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAodda3b.html", "mod_name": "IntroExMore", "threshold": 1.0}, "DFAno3a": {"long_name": "No string with 3 consecutive a's", "required": true, "points": 10.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAno3a.html", "mod_name": "IntroExMore", "threshold": 1.0}}}, "VisFormalLang/FAExMore": {"long_name": "FA Exercise Practice", "sections": {"Exercise 1": {"DFAevena": {"long_name": "DFA exercise even a", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAevena.html", "mod_name": "FAExMore", "threshold": 1.0}}, "Exercise 2": {"DFAevenaoddb": {"long_name": "DFA exercise even a odd b", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAevenaoddb.html", "mod_name": "FAExMore", "threshold": 1.0}}, "Exercise 3": {"DFAevenamin3b": {"long_name": "DFA exercise even a min 3 b", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAevenamin3b.html", "mod_name": "FAExMore", "threshold": 1.0}}, "Exercise 4": {"DFAbotheo": {"long_name": "DFA exercise both even or odd", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAbotheo.html", "mod_name": "FAExMore", "threshold": 1.0}}, "NFA to DFA 1": {"NFAtoDFAex1long": {"long_name": "NFAtoDFA exercise 1 long version", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAtoDFAex1long.html", "mod_name": "FAExMore", "threshold": 1.0}}, "NFA to DFA 2": {"NFAtoDFAex2": {"long_name": "NFAtoDFA exercise 2", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAtoDFAex2.html", "mod_name": "FAExMore", "threshold": 1.0}}, "Create NFA": {"NFAex2": {"long_name": "Create a NFA 2", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAex2.html", "mod_name": "FAExMore", "threshold": 1.0}}}, "exercises": {"DFAevena": {"long_name": "DFA exercise even a", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAevena.html", "mod_name": "FAExMore", "threshold": 1.0}, "DFAevenaoddb": {"long_name": "DFA exercise even a odd b", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAevenaoddb.html", "mod_name": "FAExMore", "threshold": 1.0}, "DFAevenamin3b": {"long_name": "DFA exercise even a min 3 b", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAevenamin3b.html", "mod_name": "FAExMore", "threshold": 1.0}, "DFAbotheo": {"long_name": "DFA exercise both even or odd", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/DFAbotheo.html", "mod_name": "FAExMore", "threshold": 1.0}, "NFAtoDFAex1long": {"long_name": "NFAtoDFA exercise 1 long version", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAtoDFAex1long.html", "mod_name": "FAExMore", "threshold": 1.0}, "NFAtoDFAex2": {"long_name": "NFAtoDFA exercise 2", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAtoDFAex2.html", "mod_name": "FAExMore", "threshold": 1.0}, "NFAex2": {"long_name": "Create a NFA 2", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/FA/NFAex2.html", "mod_name": "FAExMore", "threshold": 1.0}}}, "VisFormalLang/RegLangExMore": {"long_name": "Regular Language Exercise Practice", "sections": {"Exercise 1": {"RegExaby3": {"long_name": "Regular Expression construction: a divisible by 3", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExaby3.html", "mod_name": "RegLangExMore", "threshold": 1.0}}, "Exercise 2": {"RegGramNFA2": {"long_name": "Regular Grammar: left-linear grammar for NFA", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramNFA2.html", "mod_name": "RegLangExMore", "threshold": 1.0}}, "Exercise 3": {"RegGramaaabba": {"long_name": "Regular Grammar: left-linear grammar for aaabsbas", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramaaabba.html", "mod_name": "RegLangExMore", "threshold": 1.0}}, "Exercise 4": {"RegGramanbmodd": {"long_name": "Regular Grammar: regular grammar for anbm odd length", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramanbmodd.html", "mod_name": "RegLangExMore", "threshold": 1.0}}}, "exercises": {"RegExaby3": {"long_name": "Regular Expression construction: a divisible by 3", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegExaby3.html", "mod_name": "RegLangExMore", "threshold": 1.0}, "RegGramNFA2": {"long_name": "Regular Grammar: left-linear grammar for NFA", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramNFA2.html", "mod_name": "RegLangExMore", "threshold": 1.0}, "RegGramaaabba": {"long_name": "Regular Grammar: left-linear grammar for aaabsbas", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramaaabba.html", "mod_name": "RegLangExMore", "threshold": 1.0}, "RegGramanbmodd": {"long_name": "Regular Grammar: regular grammar for anbm odd length", "required": true, "points": 5.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Regular/RegGramanbmodd.html", "mod_name": "RegLangExMore", "threshold": 1.0}}}, "VisFormalLang/Sheet5Practice": {"long_name": "Sheet 5 Practice", "sections": {"Exercise 1": {"sheet5Practice1": {"long_name": "Sheet 5 Grammer Practice 1", "required": true, "points": 0.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/Spring19/sheet5Practice1.html", "mod_name": "Sheet5Practice", "threshold": 1.0}}, "Exercise 2": {"sheet5Practice2": {"long_name": "Sheet 5 Grammer Practice 2", "required": true, "points": 0.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/Spring19/sheet5Practice2.html", "mod_name": "Sheet5Practice", "threshold": 1.0}}}, "exercises": {"sheet5Practice1": {"long_name": "Sheet 5 Grammer Practice 1", "required": true, "points": 0.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/Spring19/sheet5Practice1.html", "mod_name": "Sheet5Practice", "threshold": 1.0}, "sheet5Practice2": {"long_name": "Sheet 5 Grammer Practice 2", "required": true, "points": 0.0, "type": "pe", "av_address": "AV/OpenFLAP/exercises/FLAssignments/Sheet_5/Spring19/sheet5Practice2.html", "mod_name": "Sheet5Practice", "threshold": 1.0}}}, "CT/Iteration": {"long_name": "List Iteration", "sections": {"List Iteration": {}}, "exercises": {}}, "CT/IterationAV": {"long_name": "List Iteration Visualizations", "sections": {"List Iteration Visualizations": {"iteration1CON": {"long_name": "Iteration Slide 1: Basic", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration1CON.js"], "mod_name": "IterationAV"}, "iteration2CON": {"long_name": "Iteration Slide 2: State of Price", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration2CON.js"], "mod_name": "IterationAV"}, "iteration3CON": {"long_name": "Iteration Slide 3: Calculate Total", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration3CON.js"], "mod_name": "IterationAV"}, "iteration4CON": {"long_name": "Iteration Slide 4: Average", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration4CON.js"], "mod_name": "IterationAV"}}}, "exercises": {"iteration1CON": {"long_name": "Iteration Slide 1: Basic", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration1CON.js"], "mod_name": "IterationAV"}, "iteration2CON": {"long_name": "Iteration Slide 2: State of Price", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration2CON.js"], "mod_name": "IterationAV"}, "iteration3CON": {"long_name": "Iteration Slide 3: Calculate Total", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration3CON.js"], "mod_name": "IterationAV"}, "iteration4CON": {"long_name": "Iteration Slide 4: Average", "required": false, "points": 0.0, "threshold": 1.0, "type": "ss", "links": ["AV/CT/iterationCON.css"], "scripts": ["AV/CT/iteration4CON.js"], "mod_name": "IterationAV"}}}, "CT/IterationEX1": {"long_name": "Classwork 8", "sections": {"List Exercise 1": {"IterationStateEXPRO": {"long_name": "Iteration Khan Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/CT/IterationStateEXPRO.html", "mod_name": "IterationEX1", "threshold": 5}}}, "exercises": {"IterationStateEXPRO": {"long_name": "Iteration Khan Exercise", "required": true, "points": 1.0, "type": "ka", "av_address": "Exercises/CT/IterationStateEXPRO.html", "mod_name": "IterationEX1", "threshold": 5}}}, "CT/IterationEX2": {"long_name": "Homework 8", "sections": {"List Exercise 2": {"iterationEXPRO": {"long_name": "Iteration JSAV Click-through Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "Exercises/CT/iterationEXPRO.html", "mod_name": "IterationEX2", "threshold": 0.9}}}, "exercises": {"iterationEXPRO": {"long_name": "Iteration JSAV Click-through Exercise", "required": true, "points": 2.0, "type": "pe", "av_address": "Exercises/CT/iterationEXPRO.html", "mod_name": "IterationEX2", "threshold": 0.9}}}, "IntroToSoftwareDesign/CoursePolicies": {"long_name": "Understanding this Course", "sections": {"Read the Course Syllabus": {}, "Who Is This Class For?": {}, "Students of Many Experience Levels": {}, "Online and Face-to-face Sections": {}, "Weekly Schedule": {}, "Reading Activities": {}, "Labs": {}, "Programming Assignments": {}, "Programming Language and Environment": {}, "Cheating and The Honor Code": {}, "Self-Check: Confirm Your Understanding": {"HonorCodeSumm": {"long_name": "Understanding the Honor Code", "required": true, "points": 100, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/HonorCodeSumm.html", "mod_name": "CoursePolicies", "threshold": 10}}}, "exercises": {"HonorCodeSumm": {"long_name": "Understanding the Honor Code", "required": true, "points": 100, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/HonorCodeSumm.html", "mod_name": "CoursePolicies", "threshold": 10}}}, "IntroToSoftwareDesign/GettingStarted": {"long_name": "Getting Started", "sections": {"Installing BlueJ": {}, "Introducing LightBot": {}, "From LightBot to Micro Worlds": {}, "Self Check: Micro-Worlds": {"Week1Quiz1Summ": {"long_name": "Micro-Worlds", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week1Quiz1Summ.html", "mod_name": "GettingStarted", "threshold": 3}}, "A Bit More LightBot": {}, "Textually Representing Programs": {}, "Self-Check: Turning Micro-Worlds into Code": {"Week1Quiz2Summ": {"long_name": "Turning Micro-Worlds into Code", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week1Quiz2Summ.html", "mod_name": "GettingStarted", "threshold": 3}}, "What Does LightBot Say About Programming?": {}, "A Programmable LightBot in Java": {}, "Syntax Practice 1a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 1a", "long_name": "Syntax Practice 1a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1722", "type": "extr", "mod_name": "GettingStarted"}, "Creating New Objects": {}, "Calling Methods on an Object": {}, "Putting it All Together": {}, "A Word on Making Code Easy to Read": {}, "Syntax Practice 1b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 1b", "long_name": "Syntax Practice 1b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1723", "type": "extr", "mod_name": "GettingStarted"}, "Programming Practice 1": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 1", "long_name": "Programming Practice 1", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 30, "workout_id": "1323", "type": "extr", "mod_name": "GettingStarted"}, "Check Your Understanding": {"Week1ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 18, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week1ReadingQuizSumm.html", "mod_name": "GettingStarted", "threshold": 10}}}, "exercises": {"Week1Quiz1Summ": {"long_name": "Micro-Worlds", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week1Quiz1Summ.html", "mod_name": "GettingStarted", "threshold": 3}, "Week1Quiz2Summ": {"long_name": "Turning Micro-Worlds into Code", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week1Quiz2Summ.html", "mod_name": "GettingStarted", "threshold": 3}, "Syntax Practice 1a": {"long_name": "Syntax Practice 1a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice 1b": {"long_name": "Syntax Practice 1b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 1": {"long_name": "Programming Practice 1", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week1ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 18, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week1ReadingQuizSumm.html", "mod_name": "GettingStarted", "threshold": 10}}}, "IntroToSoftwareDesign/InheritanceAndPolymorphism": {"long_name": "Inheritance and Polymorphism: Subclasses and Methods", "sections": {"The Jeroos of Santong Island": {"Week2Quiz1Summ": {"long_name": "Working with Jeroos", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz1Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}}, "Class Hierarchy and Inheritance": {"Week2Quiz2Summ": {"long_name": "Working class hierarchy and inheritance", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz2Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}}, "Summarizing: What is Inheritance?": {}, "Syntax Practice 2a: Jeroo Methods": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 2a: Jeroo Methods", "long_name": "Syntax Practice 2a: Jeroo Methods", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 18, "workout_id": "1342", "type": "extr", "mod_name": "InheritanceAndPolymorphism"}, "Problem Solving and Algorithms": {"Week2Quiz3Summ": {"long_name": "Developing Algorithms", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz3Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}}, "Creating and Using Jeroo Methods": {"Week2Quiz4Summ": {"long_name": "Writing Methods", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz4Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}}, "What is Polymorphism?": {}, "Syntax Practice 2b: Subclass Constructors": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 2b: Subclass Constructors", "long_name": "Syntax Practice 2b: Subclass Constructors", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1343", "type": "extr", "mod_name": "InheritanceAndPolymorphism"}, "Syntax Practice 2c: More Subclass Constructors": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 2c: More Subclass Constructors", "long_name": "Syntax Practice 2c: More Subclass Constructors", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1753", "type": "extr", "mod_name": "InheritanceAndPolymorphism"}, "Programming Practice 2": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 2", "long_name": "Programming Practice 2", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1344", "type": "extr", "mod_name": "InheritanceAndPolymorphism"}, "Check Your Understanding": {"Week2ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 15, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2ReadingQuizSumm.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 10}}}, "exercises": {"Week2Quiz1Summ": {"long_name": "Working with Jeroos", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz1Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}, "Week2Quiz2Summ": {"long_name": "Working class hierarchy and inheritance", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz2Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}, "Syntax Practice 2a: Jeroo Methods": {"long_name": "Syntax Practice 2a: Jeroo Methods", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week2Quiz3Summ": {"long_name": "Developing Algorithms", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz3Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}, "Week2Quiz4Summ": {"long_name": "Writing Methods", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2Quiz4Summ.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 3}, "Syntax Practice 2b: Subclass Constructors": {"long_name": "Syntax Practice 2b: Subclass Constructors", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice 2c: More Subclass Constructors": {"long_name": "Syntax Practice 2c: More Subclass Constructors", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 2": {"long_name": "Programming Practice 2", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week2ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 15, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week2ReadingQuizSumm.html", "mod_name": "InheritanceAndPolymorphism", "threshold": 10}}}, "IntroToSoftwareDesign/ConditionalActions": {"long_name": "Conditional and Repeating Actions", "sections": {"Selection": {}, "Conditions Using Sensor Methods": {}, "An Overview of Conditional Statements": {}, "Java's Syntax for the If-Then-Else Structure": {"Week3Quiz1Summ": {"long_name": "Working with If-Then-Else Statements", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz1Summ.html", "mod_name": "ConditionalActions", "threshold": 3}}, "Syntax Practice 3a: If-Then-Else": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 3a: If-Then-Else", "long_name": "Syntax Practice 3a: If-Then-Else", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 10, "workout_id": "1373", "type": "extr", "mod_name": "ConditionalActions"}, "Creating Optional Statements With If-then": {}, "Java's Syntax for the If-then Structure": {"Week3Quiz2Summ": {"long_name": "Working with If-Then Statements", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz2Summ.html", "mod_name": "ConditionalActions", "threshold": 3}}, "Syntax Practice 3b: If-Then": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 3b: If-Then", "long_name": "Syntax Practice 3b: If-Then", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 10, "workout_id": "1374", "type": "extr", "mod_name": "ConditionalActions"}, "Java's Syntax for the Multi-way Selection Structure (a cascaded if)": {"Week3Quiz3Summ": {"long_name": "Deciding When to Use Each Type of Structure", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz3Summ.html", "mod_name": "ConditionalActions", "threshold": 3}}, "Syntax Practice 3c: Multi-way If": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 3c: Multi-way If", "long_name": "Syntax Practice 3c: Multi-way If", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 10, "workout_id": "1375", "type": "extr", "mod_name": "ConditionalActions"}, "Compound Conditions": {"Week3Quiz4Summ": {"long_name": "AND, OR, and NOT", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz4Summ.html", "mod_name": "ConditionalActions", "threshold": 3}}, "Syntax Practice 3d: Compound Conditions": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 3d: Compound Conditions", "long_name": "Syntax Practice 3d: Compound Conditions", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 10, "workout_id": "1376", "type": "extr", "mod_name": "ConditionalActions"}, "Repeating Actions": {}, "Generic Repetition Structures": {}, "Java's Syntax for the While Loop": {"Week3Quiz5Summ": {"long_name": "Working with While Loops", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz5Summ.html", "mod_name": "ConditionalActions", "threshold": 3}}, "Syntax Practice 3e: While Loops": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 3e: While Loops", "long_name": "Syntax Practice 3e: While Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 10, "workout_id": "1377", "type": "extr", "mod_name": "ConditionalActions"}, "Programming Practice 3": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 3", "long_name": "Programming Practice 3", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 10, "workout_id": "1378", "type": "extr", "mod_name": "ConditionalActions"}, "Check Your Understanding": {"Week3ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 15, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3ReadingQuizSumm.html", "mod_name": "ConditionalActions", "threshold": 12}}}, "exercises": {"Week3Quiz1Summ": {"long_name": "Working with If-Then-Else Statements", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz1Summ.html", "mod_name": "ConditionalActions", "threshold": 3}, "Syntax Practice 3a: If-Then-Else": {"long_name": "Syntax Practice 3a: If-Then-Else", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week3Quiz2Summ": {"long_name": "Working with If-Then Statements", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz2Summ.html", "mod_name": "ConditionalActions", "threshold": 3}, "Syntax Practice 3b: If-Then": {"long_name": "Syntax Practice 3b: If-Then", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week3Quiz3Summ": {"long_name": "Deciding When to Use Each Type of Structure", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz3Summ.html", "mod_name": "ConditionalActions", "threshold": 3}, "Syntax Practice 3c: Multi-way If": {"long_name": "Syntax Practice 3c: Multi-way If", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week3Quiz4Summ": {"long_name": "AND, OR, and NOT", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz4Summ.html", "mod_name": "ConditionalActions", "threshold": 3}, "Syntax Practice 3d: Compound Conditions": {"long_name": "Syntax Practice 3d: Compound Conditions", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week3Quiz5Summ": {"long_name": "Working with While Loops", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3Quiz5Summ.html", "mod_name": "ConditionalActions", "threshold": 3}, "Syntax Practice 3e: While Loops": {"long_name": "Syntax Practice 3e: While Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 3": {"long_name": "Programming Practice 3", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week3ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 15, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week3ReadingQuizSumm.html", "mod_name": "ConditionalActions", "threshold": 12}}}, "IntroToSoftwareDesign/SoftwareTesting": {"long_name": "Software Testing", "sections": {"What Is Software Testing?": {}, "Writing Your First Software Test": {}, "Check Your Understanding: Software Testing Concepts": {"Week4Quiz1Summ": {"long_name": "Software Testing Concepts", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz1Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}}, "More About Methods": {}, "Check Your Understanding: Method Signatures": {"Week4Quiz2Summ": {"long_name": "Understanding Method Signatures", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz2Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}}, "Check Your Understanding: Methods with Parameters": {"Week4Quiz3Summ": {"long_name": "Methods with Parameters", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz3Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}}, "Good Habits for Conditionals": {}, "A Different Type of Complex If-Statement": {}, "Short Circuit Evaluation": {}, "Check Your Understanding: Logical Equivalence": {"Week4Quiz4Summ": {"long_name": "Logical Equivalence", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz4Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}}, "Syntax Practice 4a: Compound Conditionals": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 4a: Compound Conditionals", "long_name": "Syntax Practice 4a: Compound Conditionals", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1403", "type": "extr", "mod_name": "SoftwareTesting"}, "Syntax Practice 4b: Conditionals and Relational Operators": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 4b: Conditionals and Relational Operators", "long_name": "Syntax Practice 4b: Conditionals and Relational Operators", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1768", "type": "extr", "mod_name": "SoftwareTesting"}, "Programming Practice 4": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 4", "long_name": "Programming Practice 4", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 30, "workout_id": "1404", "type": "extr", "mod_name": "SoftwareTesting"}, "Module Review": {"Week4ReadingQuizSumm": {"long_name": "Module Review", "required": true, "points": 16, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4ReadingQuizSumm.html", "mod_name": "SoftwareTesting", "threshold": 10}}}, "exercises": {"Week4Quiz1Summ": {"long_name": "Software Testing Concepts", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz1Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}, "Week4Quiz2Summ": {"long_name": "Understanding Method Signatures", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz2Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}, "Week4Quiz3Summ": {"long_name": "Methods with Parameters", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz3Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}, "Week4Quiz4Summ": {"long_name": "Logical Equivalence", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4Quiz4Summ.html", "mod_name": "SoftwareTesting", "threshold": 3}, "Syntax Practice 4a: Compound Conditionals": {"long_name": "Syntax Practice 4a: Compound Conditionals", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice 4b: Conditionals and Relational Operators": {"long_name": "Syntax Practice 4b: Conditionals and Relational Operators", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 4": {"long_name": "Programming Practice 4", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week4ReadingQuizSumm": {"long_name": "Module Review", "required": true, "points": 16, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week4ReadingQuizSumm.html", "mod_name": "SoftwareTesting", "threshold": 10}}}, "IntroToSoftwareDesign/VariablesFieldsAndParameters": {"long_name": "Variables, Fields, and Parameters", "sections": {"Variables": {}, "Check Your Understanding: Variables": {"Week5Quiz1Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz1Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}}, "Fields Versus Local Variables": {}, "Changing Private Variables: Mutator Methods": {}, "Check your Understanding: Scope": {"Week5Quiz2Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz2Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}}, "Accessor Methods": {}, "Check Your Understanding: Fields, Getters and Setters": {"Week5Quiz3Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz3Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}}, "Syntax Practice 5a: Fields and Accessors": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 5a: Fields and Accessors", "long_name": "Syntax Practice 5a: Fields and Accessors", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1798", "type": "extr", "mod_name": "VariablesFieldsAndParameters"}, "The Return Keyword": {}, "Check your Understanding: Typed Methods and Return Statements": {"Week5Quiz4Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz4Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}}, "Syntax Practice 5b: Mutators and Return Statements": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 5b: Mutators and Return Statements", "long_name": "Syntax Practice 5b: Mutators and Return Statements", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1426", "type": "extr", "mod_name": "VariablesFieldsAndParameters"}, "Using Fields in Testing": {}, "Programming Practice 5a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 5a", "long_name": "Programming Practice 5a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 16, "workout_id": "1427", "type": "extr", "mod_name": "VariablesFieldsAndParameters"}, "Programming Practice 5b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 5b", "long_name": "Programming Practice 5b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 16, "type": "extr", "mod_name": "VariablesFieldsAndParameters"}}, "exercises": {"Week5Quiz1Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz1Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}, "Week5Quiz2Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz2Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}, "Week5Quiz3Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz3Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}, "Syntax Practice 5a: Fields and Accessors": {"long_name": "Syntax Practice 5a: Fields and Accessors", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week5Quiz4Summ": {"long_name": "Variables", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week5Quiz4Summ.html", "mod_name": "VariablesFieldsAndParameters", "threshold": 3}, "Syntax Practice 5b: Mutators and Return Statements": {"long_name": "Syntax Practice 5b: Mutators and Return Statements", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 5a": {"long_name": "Programming Practice 5a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 5b": {"long_name": "Programming Practice 5b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/PicturesAndForEachLoops": {"long_name": "Pictures and For-each Loops", "sections": {"First, the Basics": {}, "For Each Loops": {}, "Check Your Understanding: For-Each Loops": {"Week6Quiz2Summ": {"long_name": "For-Each Loops", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week6Quiz2Summ.html", "mod_name": "PicturesAndForEachLoops", "threshold": 3}}, "Check Your Understanding": {"Week6Quiz3Summ": {"long_name": "Module Review", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week6Quiz3Summ.html", "mod_name": "PicturesAndForEachLoops", "threshold": 3}}, "Syntax Practice 6a: Pixel Loops": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 6a: Pixel Loops", "long_name": "Syntax Practice 6a: Pixel Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1827", "type": "extr", "mod_name": "PicturesAndForEachLoops"}, "Syntax Practice 6b: More For-Each Loops": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 6b: More For-Each Loops", "long_name": "Syntax Practice 6b: More For-Each Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1459", "type": "extr", "mod_name": "PicturesAndForEachLoops"}, "Programming Practice 6a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 6a", "long_name": "Programming Practice 6a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1460", "type": "extr", "mod_name": "PicturesAndForEachLoops"}, "Programming Practice 6b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 6b", "long_name": "Programming Practice 6b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "type": "extr", "mod_name": "PicturesAndForEachLoops"}}, "exercises": {"Week6Quiz2Summ": {"long_name": "For-Each Loops", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week6Quiz2Summ.html", "mod_name": "PicturesAndForEachLoops", "threshold": 3}, "Week6Quiz3Summ": {"long_name": "Module Review", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week6Quiz3Summ.html", "mod_name": "PicturesAndForEachLoops", "threshold": 3}, "Syntax Practice 6a: Pixel Loops": {"long_name": "Syntax Practice 6a: Pixel Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice 6b: More For-Each Loops": {"long_name": "Syntax Practice 6b: More For-Each Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 6a": {"long_name": "Programming Practice 6a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 6b": {"long_name": "Programming Practice 6b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/AggregationStringsandMoreLoops": {"long_name": "Aggregation, Strings and More Loops", "sections": {"Object-Oriented Design: Aggregation, Composition, and Delegation": {}, "Strings and Characters": {}, "Check Your Understanding: Strings": {"Week7Quiz1Summ": {"long_name": "Strings", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz1Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}}, "Counter-controlled Loops": {}, "Check Your Understanding: Counter Controlled Loops": {"Week7Quiz2Summ": {"long_name": "Counter Controlled Loops", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz2Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}}, "Tips on Random Numbers": {}, "Check Your Understanding: Random Numbers": {"Week7Quiz3Summ": {"long_name": "Random Numbers", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz3Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}}, "Method Overriding": {}, "Check Your Understanding: Method Overriding": {"Week7Quiz4Summ": {"long_name": "Method Overriding", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz4Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}}, "Syntax Practice 7a: For Loops and OO Design": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 7a: For Loops and OO Design", "long_name": "Syntax Practice 7a: For Loops and OO Design", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 18, "workout_id": "1479", "type": "extr", "mod_name": "AggregationStringsandMoreLoops"}, "Syntax Practice 7b: toString and Returning Values": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 7b: toString and Returning Values", "long_name": "Syntax Practice 7b: toString and Returning Values", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 18, "workout_id": "1846", "type": "extr", "mod_name": "AggregationStringsandMoreLoops"}, "Programming Practice 7a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 7a", "long_name": "Programming Practice 7a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 18, "workout_id": "1480", "type": "extr", "mod_name": "AggregationStringsandMoreLoops"}, "Programming Practice 7b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 7b", "long_name": "Programming Practice 7b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 18, "type": "extr", "mod_name": "AggregationStringsandMoreLoops"}}, "exercises": {"Week7Quiz1Summ": {"long_name": "Strings", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz1Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}, "Week7Quiz2Summ": {"long_name": "Counter Controlled Loops", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz2Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}, "Week7Quiz3Summ": {"long_name": "Random Numbers", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz3Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}, "Week7Quiz4Summ": {"long_name": "Method Overriding", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week7Quiz4Summ.html", "mod_name": "AggregationStringsandMoreLoops", "threshold": 3}, "Syntax Practice 7a: For Loops and OO Design": {"long_name": "Syntax Practice 7a: For Loops and OO Design", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice 7b: toString and Returning Values": {"long_name": "Syntax Practice 7b: toString and Returning Values", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 7a": {"long_name": "Programming Practice 7a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 7b": {"long_name": "Programming Practice 7b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/GroupingObjectsUsingListsAndNestedForLoops": {"long_name": "Grouping Objects Using Lists and Nested For Loops", "sections": {"Collections of Objects": {}, "Interfaces": {}, "Check Your Understanding: Interfaces": {"Week8Quiz3Summ": {"long_name": "Interfaces", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8Quiz3Summ.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 3}}, "Syntax Practice 8a: Strings": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 8a: Strings", "long_name": "Syntax Practice 8a: Strings", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1491", "type": "extr", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops"}, "The List Interface": {}, "Generics": {}, "ArrayList": {}, "Check Your Understanding: ArrayLists": {"Week8Quiz1Summ": {"long_name": "ArrayLists", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8Quiz1Summ.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 3}}, "Syntax Practice 8b: Lists": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 8b: Lists", "long_name": "Syntax Practice 8b: Lists", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1860", "type": "extr", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops"}, "Nested For Loops": {}, "Check Your Understanding: Nested For Loops": {"Week8Quiz2Summ": {"long_name": "Nested For Loops", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8Quiz2Summ.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 3}}, "Syntax Practice 8c: Nested Loops": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 8c: Nested Loops", "long_name": "Syntax Practice 8c: Nested Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1491", "type": "extr", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops"}, "Check Your Understanding": {"Week8ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 15, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8ReadingQuizSumm.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 10}}, "Programming Practice 8a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 8a", "long_name": "Programming Practice 8a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1492", "type": "extr", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops"}, "Programming Practice 8b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 8b", "long_name": "Programming Practice 8b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "type": "extr", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops"}}, "exercises": {"Week8Quiz3Summ": {"long_name": "Interfaces", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8Quiz3Summ.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 3}, "Syntax Practice 8a: Strings": {"long_name": "Syntax Practice 8a: Strings", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week8Quiz1Summ": {"long_name": "ArrayLists", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8Quiz1Summ.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 3}, "Syntax Practice 8b: Lists": {"long_name": "Syntax Practice 8b: Lists", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week8Quiz2Summ": {"long_name": "Nested For Loops", "required": true, "points": 5, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8Quiz2Summ.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 3}, "Syntax Practice 8c: Nested Loops": {"long_name": "Syntax Practice 8c: Nested Loops", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week8ReadingQuizSumm": {"long_name": "Programming Concepts", "required": true, "points": 15, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week8ReadingQuizSumm.html", "mod_name": "GroupingObjectsUsingListsAndNestedForLoops", "threshold": 10}, "Programming Practice 8a": {"long_name": "Programming Practice 8a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 8b": {"long_name": "Programming Practice 8b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/ListAndLoopsDeepDive": {"long_name": "Lists, Loop Idioms, Generics, and the Null Keyword", "sections": {"Modelling the Contents of a Library": {}, "Looping Idioms": {}, "Check Your Understanding: Loop Idioms": {"Week9Quiz2Summ": {"long_name": "Loop Idioms", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week9Quiz2Summ.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 3}}, "Syntax Practice 9a: Loop Idioms": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 9a: Loop Idioms", "long_name": "Syntax Practice 9a: Loop Idioms", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1513", "type": "extr", "mod_name": "ListAndLoopsDeepDive"}, "Your Opinions on Motivation and Engagement": {"MUSICSurvey": {"long_name": "Survey Completed", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/MUSICSurvey.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 1}}, "Generics Revisited": {}, "Check Your Understanding: Generics": {"Week9Quiz1Summ": {"long_name": "Generics", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week9Quiz1Summ.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 3}}, "Syntax Practice 9b: Generics": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 9b: Generics", "long_name": "Syntax Practice 9b: Generics", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1873", "type": "extr", "mod_name": "ListAndLoopsDeepDive"}, "The Null Keyword": {}, "Diagnosing a Null Pointer Exception": {}, "Check Your Understanding: Null": {"Week9Quiz3Summ": {"long_name": "Null", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week9Quiz3Summ.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 3}}, "Using BlueJ's Debugger": {}, "Using BlueJ's Code Pad": {}, "Programming Practice 9a: Loop Idioms": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 9a: Loop Idioms", "long_name": "Programming Practice 9a: Loop Idioms", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 19, "workout_id": "1514", "type": "extr", "mod_name": "ListAndLoopsDeepDive"}, "Programming Practice 9b: Loops and Generics": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 9b: Loops and Generics", "long_name": "Programming Practice 9b: Loops and Generics", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 19, "type": "extr", "mod_name": "ListAndLoopsDeepDive"}}, "exercises": {"Week9Quiz2Summ": {"long_name": "Loop Idioms", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week9Quiz2Summ.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 3}, "Syntax Practice 9a: Loop Idioms": {"long_name": "Syntax Practice 9a: Loop Idioms", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "MUSICSurvey": {"long_name": "Survey Completed", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/MUSICSurvey.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 1}, "Week9Quiz1Summ": {"long_name": "Generics", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week9Quiz1Summ.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 3}, "Syntax Practice 9b: Generics": {"long_name": "Syntax Practice 9b: Generics", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week9Quiz3Summ": {"long_name": "Null", "required": true, "points": 7, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week9Quiz3Summ.html", "mod_name": "ListAndLoopsDeepDive", "threshold": 3}, "Programming Practice 9a: Loop Idioms": {"long_name": "Programming Practice 9a: Loop Idioms", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 9b: Loops and Generics": {"long_name": "Programming Practice 9b: Loops and Generics", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/Arrays": {"long_name": "Arrays", "sections": {"Creating An Array": {}, "Accessing Items in Arrays": {}, "Setting Items in an Array": {}, "Arrays Compared to Lists (or ArrayList)": {}, "Putting It All Together": {}, "Check Your Understanding: Arrays": {"Week10Quiz1Summ": {"long_name": "Arrays", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week10Quiz1Summ.html", "mod_name": "Arrays", "threshold": 3}}, "Syntax Practice 10a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 10a", "long_name": "Syntax Practice 10a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1525", "type": "extr", "mod_name": "Arrays"}, "Iterating Over Arrays": {}, "Check Your Understanding: Iterating with Arrays": {"Week10Quiz2Summ": {"long_name": "Iterating with Arrays", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week10Quiz2Summ.html", "mod_name": "Arrays", "threshold": 3}}, "Syntax Practice 10b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 10b", "long_name": "Syntax Practice 10b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1880", "type": "extr", "mod_name": "Arrays"}, "Initializing Array Contents": {}, "Printing Arrays": {}, "Copying Array Variables": {}, "Naming Array Variables": {}, "Writing Test Assertions Involving Arrays": {}, "Applying Arrays in a Problem": {}, "Syntax Practice 10c": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice 10c", "long_name": "Syntax Practice 10c", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1881", "type": "extr", "mod_name": "Arrays"}, "Check Your Understanding": {"Week10ReadingQuizSumm": {"long_name": "Arrays Review", "required": true, "points": 22, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week10ReadingQuizSumm.html", "mod_name": "Arrays", "threshold": 11}}, "Programming Practice 10a": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 10a", "long_name": "Programming Practice 10a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "workout_id": "1526", "type": "extr", "mod_name": "Arrays"}, "Programming Practice 10b": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice 10b", "long_name": "Programming Practice 10b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 15, "type": "extr", "mod_name": "Arrays"}}, "exercises": {"Week10Quiz1Summ": {"long_name": "Arrays", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week10Quiz1Summ.html", "mod_name": "Arrays", "threshold": 3}, "Syntax Practice 10a": {"long_name": "Syntax Practice 10a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week10Quiz2Summ": {"long_name": "Iterating with Arrays", "required": true, "points": 6, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week10Quiz2Summ.html", "mod_name": "Arrays", "threshold": 3}, "Syntax Practice 10b": {"long_name": "Syntax Practice 10b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice 10c": {"long_name": "Syntax Practice 10c", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week10ReadingQuizSumm": {"long_name": "Arrays Review", "required": true, "points": 22, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week10ReadingQuizSumm.html", "mod_name": "Arrays", "threshold": 11}, "Programming Practice 10a": {"long_name": "Programming Practice 10a", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice 10b": {"long_name": "Programming Practice 10b", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/MultiDimensionalArrays": {"long_name": "Multi-dimensional Arrays", "sections": {"Dimensions in an Array": {}, "Check Your Understanding: 2D Arrays": {"Week11Quiz1Summ": {"long_name": "2D Arrays", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week11Quiz1Summ.html", "mod_name": "MultiDimensionalArrays", "threshold": 3}}, "Syntax Practice: 2D Array Basics": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: 2D Array Basics", "long_name": "Syntax Practice: 2D Array Basics", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 12, "workout_id": "1549", "type": "extr", "mod_name": "MultiDimensionalArrays"}, "Iterating through a 2D Array": {}, "Check Your Understanding: Iterating with 2D Arrays": {"Week11Quiz2Summ": {"long_name": "Iterating with 2D Arrays", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week11Quiz2Summ.html", "mod_name": "MultiDimensionalArrays", "threshold": 3}}, "Syntax Practice: Looping Over 2D Arrays": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Looping Over 2D Arrays", "long_name": "Syntax Practice: Looping Over 2D Arrays", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 6, "workout_id": "1550", "type": "extr", "mod_name": "MultiDimensionalArrays"}, "Multi-Dimensional Arrays": {}, "Syntax Practice: 3D Arrays": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: 3D Arrays", "long_name": "Syntax Practice: 3D Arrays", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 3, "workout_id": "1551", "type": "extr", "mod_name": "MultiDimensionalArrays"}, "But Can You Have Multi-dimensional Lists?": {}, "Integer Division and Modulus": {}, "Check Your Understanding: Modulus": {"Week11Quiz3Summ": {"long_name": "Modulus", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week11Quiz3Summ.html", "mod_name": "MultiDimensionalArrays", "threshold": 3}}, "Syntax Practice: Modulus": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Modulus", "long_name": "Syntax Practice: Modulus", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1552", "type": "extr", "mod_name": "MultiDimensionalArrays"}, "Programming Practice: Multi-dimensional Arrays": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice: Multi-dimensional Arrays", "long_name": "Programming Practice: Multi-dimensional Arrays", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "workout_id": "1553", "type": "extr", "mod_name": "MultiDimensionalArrays"}, "Programming Practice: Mod": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice: Mod", "long_name": "Programming Practice: Mod", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "type": "extr", "mod_name": "MultiDimensionalArrays"}}, "exercises": {"Week11Quiz1Summ": {"long_name": "2D Arrays", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week11Quiz1Summ.html", "mod_name": "MultiDimensionalArrays", "threshold": 3}, "Syntax Practice: 2D Array Basics": {"long_name": "Syntax Practice: 2D Array Basics", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week11Quiz2Summ": {"long_name": "Iterating with 2D Arrays", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week11Quiz2Summ.html", "mod_name": "MultiDimensionalArrays", "threshold": 3}, "Syntax Practice: Looping Over 2D Arrays": {"long_name": "Syntax Practice: Looping Over 2D Arrays", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice: 3D Arrays": {"long_name": "Syntax Practice: 3D Arrays", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week11Quiz3Summ": {"long_name": "Modulus", "required": true, "points": 10, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week11Quiz3Summ.html", "mod_name": "MultiDimensionalArrays", "threshold": 3}, "Syntax Practice: Modulus": {"long_name": "Syntax Practice: Modulus", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice: Multi-dimensional Arrays": {"long_name": "Programming Practice: Multi-dimensional Arrays", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Programming Practice: Mod": {"long_name": "Programming Practice: Mod", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/FileIO": {"long_name": "Variable Scoping, Input, and Output", "sections": {"Variable Scoping": {}, "Summarizing Scope Concepts": {}, "Check Your Understanding: Scope": {"Week12Quiz4Summ": {"long_name": "Scope", "required": true, "points": 12, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz4Summ.html", "mod_name": "FileIO", "threshold": 3}}, "Syntax Practice: Scoping": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Scoping", "long_name": "Syntax Practice: Scoping", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 40, "workout_id": "1572", "type": "extr", "mod_name": "FileIO"}, "Java Input and Output": {}, "Output Using PrintWriters": {}, "Check Your Understanding: Output": {"Week12Quiz1Summ": {"long_name": "Output", "required": true, "points": 20, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz1Summ.html", "mod_name": "FileIO", "threshold": 5}}, "Input Using Scanners": {}, "A Complete Input Example": {}, "Check Your Understanding: Input": {"Week12Quiz2Summ": {"long_name": "Input", "required": true, "points": 16, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz2Summ.html", "mod_name": "FileIO", "threshold": 4}}, "A Complete Input/Output Example": {}, "Testing I/O-based Operations": {}, "Check Your Understanding: Testing": {"Week12Quiz3Summ": {"long_name": "Testing", "required": true, "points": 12, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz3Summ.html", "mod_name": "FileIO", "threshold": 3}}}, "exercises": {"Week12Quiz4Summ": {"long_name": "Scope", "required": true, "points": 12, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz4Summ.html", "mod_name": "FileIO", "threshold": 3}, "Syntax Practice: Scoping": {"long_name": "Syntax Practice: Scoping", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week12Quiz1Summ": {"long_name": "Output", "required": true, "points": 20, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz1Summ.html", "mod_name": "FileIO", "threshold": 5}, "Week12Quiz2Summ": {"long_name": "Input", "required": true, "points": 16, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz2Summ.html", "mod_name": "FileIO", "threshold": 4}, "Week12Quiz3Summ": {"long_name": "Testing", "required": true, "points": 12, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week12Quiz3Summ.html", "mod_name": "FileIO", "threshold": 3}}}, "IntroToSoftwareDesign/MapsAndSets": {"long_name": "Maps and Sets", "sections": {"The Map and Set Interfaces": {}, "The Map Interface": {}, "Syntax Practice: Making Maps": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Making Maps", "long_name": "Syntax Practice: Making Maps", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1588", "type": "extr", "mod_name": "MapsAndSets"}, "Adding and Accessing Pairs in a Map": {}, "Syntax Practice: Adding to Maps": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Adding to Maps", "long_name": "Syntax Practice: Adding to Maps", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1589", "type": "extr", "mod_name": "MapsAndSets"}, "Checking for and Removing Pairs in a Map": {}, "A Visual Summary of Using Map and HashMap": {}, "Syntax Practice: Map Contains and Remove": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Map Contains and Remove", "long_name": "Syntax Practice: Map Contains and Remove", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1590", "type": "extr", "mod_name": "MapsAndSets"}, "Looping Over Map Contents": {}, "Check Your Understanding: Maps": {"Week13Quiz2Summ": {"long_name": "Maps", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week13Quiz2Summ.html", "mod_name": "MapsAndSets", "threshold": 3}}, "The Set Interface": {}, "Syntax Practice: Making A Set": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Making A Set", "long_name": "Syntax Practice: Making A Set", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 8, "workout_id": "1584", "type": "extr", "mod_name": "MapsAndSets"}, "Adding Values to a Set": {}, "Syntax Practice: Adding to a Set": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Adding to a Set", "long_name": "Syntax Practice: Adding to a Set", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1585", "type": "extr", "mod_name": "MapsAndSets"}, "Checking Values in a Set": {}, "Syntax Practice: Set Contains": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Set Contains", "long_name": "Syntax Practice: Set Contains", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1586", "type": "extr", "mod_name": "MapsAndSets"}, "Removing Values from a Set": {}, "Syntax Practice: Set Remove": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Set Remove", "long_name": "Syntax Practice: Set Remove", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 9, "workout_id": "1587", "type": "extr", "mod_name": "MapsAndSets"}, "Looping Over Sets": {}, "Check Your Understanding: Sets": {"Week13Quiz1Summ": {"long_name": "Sets", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week13Quiz1Summ.html", "mod_name": "MapsAndSets", "threshold": 3}}, "Programming Practice: Maps": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Programming Practice: Maps", "long_name": "Programming Practice: Maps", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 20, "type": "extr", "mod_name": "MapsAndSets"}}, "exercises": {"Syntax Practice: Making Maps": {"long_name": "Syntax Practice: Making Maps", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice: Adding to Maps": {"long_name": "Syntax Practice: Adding to Maps", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice: Map Contains and Remove": {"long_name": "Syntax Practice: Map Contains and Remove", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week13Quiz2Summ": {"long_name": "Maps", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week13Quiz2Summ.html", "mod_name": "MapsAndSets", "threshold": 3}, "Syntax Practice: Making A Set": {"long_name": "Syntax Practice: Making A Set", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice: Adding to a Set": {"long_name": "Syntax Practice: Adding to a Set", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice: Set Contains": {"long_name": "Syntax Practice: Set Contains", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Syntax Practice: Set Remove": {"long_name": "Syntax Practice: Set Remove", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week13Quiz1Summ": {"long_name": "Sets", "required": true, "points": 9, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week13Quiz1Summ.html", "mod_name": "MapsAndSets", "threshold": 3}, "Programming Practice: Maps": {"long_name": "Programming Practice: Maps", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}, "IntroToSoftwareDesign/StaticMainAndExceptions": {"long_name": "Static, Main, and Exceptions", "sections": {"The Main Method": {}, "Check Your Understanding: Main Methods": {"Week14Quiz1Summ": {"long_name": "Main Methods", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz1Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}}, "The Static Keyword": {}, "Check Your Understanding: The Static Keyword": {"Week14Quiz2Summ": {"long_name": "The Static Keyword", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz2Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}}, "Your Opinions on Motivation and Engagement": {"MUSICSurvey": {"long_name": "Survey Completed", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/MUSICSurvey.html", "mod_name": "StaticMainAndExceptions", "threshold": 1}}, "Errors": {}, "Throwing Exceptions": {}, "Check Your Understanding: Throwing Exceptions": {"Week14Quiz3Summ": {"long_name": "Throwing Exceptions", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz3Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}}, "Syntax Practice: Throwing Exceptions": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Throwing Exceptions", "long_name": "Syntax Practice: Throwing Exceptions", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 30, "workout_id": "1614", "type": "extr", "mod_name": "StaticMainAndExceptions"}, "Try/Catch Blocks": {}, "Check Your Understanding: Try/Catch Blocks": {"Week14Quiz4Summ": {"long_name": "Try/Catch Blocks", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz4Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}}, "Syntax Practice: Try-Catch Blocks": {"learning_tool": "code-workout", "resource_type": "external_assignment", "resource_name": "Syntax Practice: Try-Catch Blocks", "long_name": "Syntax Practice: Try-Catch Blocks", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "partial_credit": "True", "points": 30, "type": "extr", "mod_name": "StaticMainAndExceptions"}}, "exercises": {"Week14Quiz1Summ": {"long_name": "Main Methods", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz1Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}, "Week14Quiz2Summ": {"long_name": "The Static Keyword", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz2Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}, "MUSICSurvey": {"long_name": "Survey Completed", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/MUSICSurvey.html", "mod_name": "StaticMainAndExceptions", "threshold": 1}, "Week14Quiz3Summ": {"long_name": "Throwing Exceptions", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz3Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}, "Syntax Practice: Throwing Exceptions": {"long_name": "Syntax Practice: Throwing Exceptions", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}, "Week14Quiz4Summ": {"long_name": "Try/Catch Blocks", "required": true, "points": 8, "type": "ka", "av_address": "Exercises/IntroToSoftwareDesign/Week14Quiz4Summ.html", "mod_name": "StaticMainAndExceptions", "threshold": 3}, "Syntax Practice: Try-Catch Blocks": {"long_name": "Syntax Practice: Try-Catch Blocks", "enable_scrolling": "True", "frame_width": "1000", "frame_height": "900", "learning_tool": "code-workout"}}}}}, "assumes": null, "av_origin": "", "av_root_dir": "/opendsa/", "build_cmap": false, "build_dir": "StandaloneModules", "build_JSAV": false, "code_dir": "/opendsa/SourceCode/", "exercise_origin": null, "exercises_root_dir": "/opendsa/", "glob_mod_options": {"JOP-lang": "en", "JXOP-code": "java"}, "glob_exer_options": {"JXOP-debug": "true", "JOP-lang": "en", "JXOP-code": "java"}, "lang": "en", "req_full_ss": "true", "start_chap_num": 0, "suppress_todo": false, "tabbed_codeinc": true, "theme": "haiku", "theme_dir": "/opendsa/RST/_themes", "dispModComp": true, "tag": null, "local_mode": "true", "title": "OpenDSA Stand-alone Modules", "desc": "OpenDSA Stand-alone Modules (auto-generated config)", "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++"}}, "course_id": null, "LMS_url": null, "module_map": {"IntroDSA": {"module_item_id": null, "assignment_id": null}, "CarlGauss": {"module_item_id": null, "assignment_id": null}, "FrancisBacon": {"module_item_id": null, "assignment_id": null}, "cmdline": {"module_item_id": null, "assignment_id": null}, "parameters": {"module_item_id": null, "assignment_id": null}, "eclipseparameters": {"module_item_id": null, "assignment_id": null}, "webcattools": {"module_item_id": null, "assignment_id": null}, "debugmethods": {"module_item_id": null, "assignment_id": null}, "debug": {"module_item_id": null, "assignment_id": null}, "scanning": {"module_item_id": null, "assignment_id": null}, "randomaccessfile": {"module_item_id": null, "assignment_id": null}, "junitstart": {"module_item_id": null, "assignment_id": null}, "junitbasic": {"module_item_id": null, "assignment_id": null}, "junitcoverage": {"module_item_id": null, "assignment_id": null}, "ADT": {"module_item_id": null, "assignment_id": null}, "IntroOO": {"module_item_id": null, "assignment_id": null}, "IntroUML": {"module_item_id": null, "assignment_id": null}, "IntroProcess": {"module_item_id": null, "assignment_id": null}, "PointerIntro": {"module_item_id": null, "assignment_id": null}, "BasicPointers1": {"module_item_id": null, "assignment_id": null}, "BasicPointers2": {"module_item_id": null, "assignment_id": null}, "Syntax": {"module_item_id": null, "assignment_id": null}, "LocalMem": {"module_item_id": null, "assignment_id": null}, "HeapMem": {"module_item_id": null, "assignment_id": null}, "Links1": {"module_item_id": null, "assignment_id": null}, "Links2": {"module_item_id": null, "assignment_id": null}, "Exercises": {"module_item_id": null, "assignment_id": null}, "MathpreIntro": {"module_item_id": null, "assignment_id": null}, "SetDef": {"module_item_id": null, "assignment_id": null}, "MiscMath": {"module_item_id": null, "assignment_id": null}, "Logarithms": {"module_item_id": null, "assignment_id": null}, "Summations": {"module_item_id": null, "assignment_id": null}, "RecurrenceIntro": {"module_item_id": null, "assignment_id": null}, "Proofs": {"module_item_id": null, "assignment_id": null}, "Estimation": {"module_item_id": null, "assignment_id": null}, "MathpreSumm": {"module_item_id": null, "assignment_id": null}, "BinarySearch": {"module_item_id": null, "assignment_id": null}, "AnalChap": {"module_item_id": null, "assignment_id": null}, "AnalPrelim": {"module_item_id": null, "assignment_id": null}, "AnalIntro": {"module_item_id": null, "assignment_id": null}, "AnalCases": {"module_item_id": null, "assignment_id": null}, "AnalCompvsAlg": {"module_item_id": null, "assignment_id": null}, "AnalAsymptotic": {"module_item_id": null, "assignment_id": null}, "AnalLower": {"module_item_id": null, "assignment_id": null}, "AnalProgram": {"module_item_id": null, "assignment_id": null}, "AnalProblem": {"module_item_id": null, "assignment_id": null}, "AnalMisunderstanding": {"module_item_id": null, "assignment_id": null}, "AnalMultiple": {"module_item_id": null, "assignment_id": null}, "AnalSpace": {"module_item_id": null, "assignment_id": null}, "AnalTuning": {"module_item_id": null, "assignment_id": null}, "AlgAnalSummCS2": {"module_item_id": null, "assignment_id": null}, "AlgAnalSummCS3": {"module_item_id": null, "assignment_id": null}, "ListIntro": {"module_item_id": null, "assignment_id": null}, "ListADT": {"module_item_id": null, "assignment_id": null}, "ListArray": {"module_item_id": null, "assignment_id": null}, "ListLinked": {"module_item_id": null, "assignment_id": null}, "ListAnalysis": {"module_item_id": null, "assignment_id": null}, "ListDouble": {"module_item_id": null, "assignment_id": null}, "ListElement": {"module_item_id": null, "assignment_id": null}, "StackArray": {"module_item_id": null, "assignment_id": null}, "StackLinked": {"module_item_id": null, "assignment_id": null}, "Freelist": {"module_item_id": null, "assignment_id": null}, "StackRecur": {"module_item_id": null, "assignment_id": null}, "Queue": {"module_item_id": null, "assignment_id": null}, "QueueLinked": {"module_item_id": null, "assignment_id": null}, "ListSumm": {"module_item_id": null, "assignment_id": null}, "RecIntro": {"module_item_id": null, "assignment_id": null}, "Write": {"module_item_id": null, "assignment_id": null}, "CodeCompletionEx": {"module_item_id": null, "assignment_id": null}, "HarderWrite": {"module_item_id": null, "assignment_id": null}, "HarderCodeCompletionEx": {"module_item_id": null, "assignment_id": null}, "WritingEx": {"module_item_id": null, "assignment_id": null}, "Trace": {"module_item_id": null, "assignment_id": null}, "TracingEx": {"module_item_id": null, "assignment_id": null}, "RecSummaryEx": {"module_item_id": null, "assignment_id": null}, "DesignPatterns": {"module_item_id": null, "assignment_id": null}, "DesignAltList": {"module_item_id": null, "assignment_id": null}, "Comparison": {"module_item_id": null, "assignment_id": null}, "Dictionary": {"module_item_id": null, "assignment_id": null}, "BinaryTreeIntro": {"module_item_id": null, "assignment_id": null}, "BinaryTree": {"module_item_id": null, "assignment_id": null}, "RecursiveDS": {"module_item_id": null, "assignment_id": null}, "BinaryTreeFullThm": {"module_item_id": null, "assignment_id": null}, "BinaryTreeTraversal": {"module_item_id": null, "assignment_id": null}, "WritingTraversals": {"module_item_id": null, "assignment_id": null}, "BinaryTreeInfFlw": {"module_item_id": null, "assignment_id": null}, "BinaryTreeImpl": {"module_item_id": null, "assignment_id": null}, "Composite": {"module_item_id": null, "assignment_id": null}, "BinaryTreeNodeSpace": {"module_item_id": null, "assignment_id": null}, "BST": {"module_item_id": null, "assignment_id": null}, "BSTDict": {"module_item_id": null, "assignment_id": null}, "BinaryTreeGuidedInfFlw": {"module_item_id": null, "assignment_id": null}, "MultipleBinaryTrees": {"module_item_id": null, "assignment_id": null}, "BSTCheck": {"module_item_id": null, "assignment_id": null}, "CompleteTree": {"module_item_id": null, "assignment_id": null}, "Heaps": {"module_item_id": null, "assignment_id": null}, "Huffman": {"module_item_id": null, "assignment_id": null}, "TreeTrie": {"module_item_id": null, "assignment_id": null}, "HuffProof": {"module_item_id": null, "assignment_id": null}, "BinaryChapSumm": {"module_item_id": null, "assignment_id": null}, "InSort": {"module_item_id": null, "assignment_id": null}, "SortNotation": {"module_item_id": null, "assignment_id": null}, "InsertionSort": {"module_item_id": null, "assignment_id": null}, "BubbleSort": {"module_item_id": null, "assignment_id": null}, "SelectionSort": {"module_item_id": null, "assignment_id": null}, "ExchangeSort": {"module_item_id": null, "assignment_id": null}, "SortOpt": {"module_item_id": null, "assignment_id": null}, "Shellsort": {"module_item_id": null, "assignment_id": null}, "Mergesort": {"module_item_id": null, "assignment_id": null}, "MergesortImpl": {"module_item_id": null, "assignment_id": null}, "Quicksort": {"module_item_id": null, "assignment_id": null}, "Heapsort": {"module_item_id": null, "assignment_id": null}, "BinSort": {"module_item_id": null, "assignment_id": null}, "RadixSort": {"module_item_id": null, "assignment_id": null}, "SortingEmpirical": {"module_item_id": null, "assignment_id": null}, "SortingLowerBound": {"module_item_id": null, "assignment_id": null}, "SortSumm": {"module_item_id": null, "assignment_id": null}, "FileProc": {"module_item_id": null, "assignment_id": null}, "Secondary": {"module_item_id": null, "assignment_id": null}, "Diskdrive": {"module_item_id": null, "assignment_id": null}, "BuffPool": {"module_item_id": null, "assignment_id": null}, "FileProg": {"module_item_id": null, "assignment_id": null}, "ExternalSort": {"module_item_id": null, "assignment_id": null}, "HashIntro": {"module_item_id": null, "assignment_id": null}, "HashFunc": {"module_item_id": null, "assignment_id": null}, "HashFuncExamp": {"module_item_id": null, "assignment_id": null}, "OpenHash": {"module_item_id": null, "assignment_id": null}, "BucketHash": {"module_item_id": null, "assignment_id": null}, "HashCSimple": {"module_item_id": null, "assignment_id": null}, "HashCImproved": {"module_item_id": null, "assignment_id": null}, "HashAnal": {"module_item_id": null, "assignment_id": null}, "HashDel": {"module_item_id": null, "assignment_id": null}, "HashSumm": {"module_item_id": null, "assignment_id": null}, "MemmanIntro": {"module_item_id": null, "assignment_id": null}, "Dynamic": {"module_item_id": null, "assignment_id": null}, "SequentialFit": {"module_item_id": null, "assignment_id": null}, "FirstFit": {"module_item_id": null, "assignment_id": null}, "CircularFit": {"module_item_id": null, "assignment_id": null}, "BestFit": {"module_item_id": null, "assignment_id": null}, "WorstFit": {"module_item_id": null, "assignment_id": null}, "MMPerformance": {"module_item_id": null, "assignment_id": null}, "Buddy": {"module_item_id": null, "assignment_id": null}, "Garbage": {"module_item_id": null, "assignment_id": null}, "IndexIntro": {"module_item_id": null, "assignment_id": null}, "LinearIndexing": {"module_item_id": null, "assignment_id": null}, "ISAM": {"module_item_id": null, "assignment_id": null}, "TreeIndexing": {"module_item_id": null, "assignment_id": null}, "TwoThreeTree": {"module_item_id": null, "assignment_id": null}, "BTree": {"module_item_id": null, "assignment_id": null}, "IndexingSumm": {"module_item_id": null, "assignment_id": null}, "GenTreeIntro": {"module_item_id": null, "assignment_id": null}, "UnionFind": {"module_item_id": null, "assignment_id": null}, "SequentialRep": {"module_item_id": null, "assignment_id": null}, "GraphIntro": {"module_item_id": null, "assignment_id": null}, "GraphImpl": {"module_item_id": null, "assignment_id": null}, "GraphTraversal": {"module_item_id": null, "assignment_id": null}, "GraphTopsort": {"module_item_id": null, "assignment_id": null}, "GraphShortest": {"module_item_id": null, "assignment_id": null}, "MCST": {"module_item_id": null, "assignment_id": null}, "Kruskal": {"module_item_id": null, "assignment_id": null}, "Floyd": {"module_item_id": null, "assignment_id": null}, "Spatial": {"module_item_id": null, "assignment_id": null}, "PRquadtree": {"module_item_id": null, "assignment_id": null}, "KDtree": {"module_item_id": null, "assignment_id": null}, "Bintree": {"module_item_id": null, "assignment_id": null}, "OtherSpatial": {"module_item_id": null, "assignment_id": null}, "AAIntro": {"module_item_id": null, "assignment_id": null}, "ProblemSolving": {"module_item_id": null, "assignment_id": null}, "AAOverview": {"module_item_id": null, "assignment_id": null}, "TOH": {"module_item_id": null, "assignment_id": null}, "BoundsReview": {"module_item_id": null, "assignment_id": null}, "GrowthRate": {"module_item_id": null, "assignment_id": null}, "AdvSumm": {"module_item_id": null, "assignment_id": null}, "Recurrence": {"module_item_id": null, "assignment_id": null}, "SearchIntro": {"module_item_id": null, "assignment_id": null}, "UnsortedSearch": {"module_item_id": null, "assignment_id": null}, "SortedSearch": {"module_item_id": null, "assignment_id": null}, "SelfOrg": {"module_item_id": null, "assignment_id": null}, "SetSearch": {"module_item_id": null, "assignment_id": null}, "PerfectHash": {"module_item_id": null, "assignment_id": null}, "BoundMax": {"module_item_id": null, "assignment_id": null}, "BoundAdversary": {"module_item_id": null, "assignment_id": null}, "BoundState": {"module_item_id": null, "assignment_id": null}, "BoundiBest": {"module_item_id": null, "assignment_id": null}, "SortingOptimal": {"module_item_id": null, "assignment_id": null}, "Numeric": {"module_item_id": null, "assignment_id": null}, "Transform": {"module_item_id": null, "assignment_id": null}, "FFT": {"module_item_id": null, "assignment_id": null}, "Probabilistic": {"module_item_id": null, "assignment_id": null}, "Primes": {"module_item_id": null, "assignment_id": null}, "RandomNums": {"module_item_id": null, "assignment_id": null}, "SkipList": {"module_item_id": null, "assignment_id": null}, "BalancedTree": {"module_item_id": null, "assignment_id": null}, "AVL": {"module_item_id": null, "assignment_id": null}, "Splay": {"module_item_id": null, "assignment_id": null}, "RedBlack": {"module_item_id": null, "assignment_id": null}, "Sparse": {"module_item_id": null, "assignment_id": null}, "DynamicProgramming": {"module_item_id": null, "assignment_id": null}, "AmortAnal": {"module_item_id": null, "assignment_id": null}, "Knapsack": {"module_item_id": null, "assignment_id": null}, "EditDistance": {"module_item_id": null, "assignment_id": null}, "StringSearchKMP": {"module_item_id": null, "assignment_id": null}, "StringSearchBoyerMoore": {"module_item_id": null, "assignment_id": null}, "StringSearchRabinKarp": {"module_item_id": null, "assignment_id": null}, "GenTreeImplement": {"module_item_id": null, "assignment_id": null}, "Kary": {"module_item_id": null, "assignment_id": null}, "LimComp": {"module_item_id": null, "assignment_id": null}, "Reduction": {"module_item_id": null, "assignment_id": null}, "NPComplete": {"module_item_id": null, "assignment_id": null}, "circuitSAT": {"module_item_id": null, "assignment_id": null}, "SAT": {"module_item_id": null, "assignment_id": null}, "threeSAT": {"module_item_id": null, "assignment_id": null}, "clique": {"module_item_id": null, "assignment_id": null}, "independentSet": {"module_item_id": null, "assignment_id": null}, "vertexCover": {"module_item_id": null, "assignment_id": null}, "hamiltonianCycle": {"module_item_id": null, "assignment_id": null}, "TSP": {"module_item_id": null, "assignment_id": null}, "provingNPC": {"module_item_id": null, "assignment_id": null}, "circuitSAT_to_SAT": {"module_item_id": null, "assignment_id": null}, "SAT_to_threeSAT": {"module_item_id": null, "assignment_id": null}, "threeSAT_to_clique": {"module_item_id": null, "assignment_id": null}, "clique_to_independentSet": {"module_item_id": null, "assignment_id": null}, "independentSet_to_vertexCover": {"module_item_id": null, "assignment_id": null}, "threeSAT_to_hamiltonianCycle": {"module_item_id": null, "assignment_id": null}, "hamiltonianCycle_to_TSP": {"module_item_id": null, "assignment_id": null}, "NPCoping": {"module_item_id": null, "assignment_id": null}, "Impossible": {"module_item_id": null, "assignment_id": null}, "Turing": {"module_item_id": null, "assignment_id": null}, "Grammars1": {"module_item_id": null, "assignment_id": null}, "Grammars2": {"module_item_id": null, "assignment_id": null}, "Grammars3": {"module_item_id": null, "assignment_id": null}, "Grammars4": {"module_item_id": null, "assignment_id": null}, "Grammars5": {"module_item_id": null, "assignment_id": null}, "FP1": {"module_item_id": null, "assignment_id": null}, "FP2": {"module_item_id": null, "assignment_id": null}, "FP3": {"module_item_id": null, "assignment_id": null}, "FP4": {"module_item_id": null, "assignment_id": null}, "FP5": {"module_item_id": null, "assignment_id": null}, "FP6": {"module_item_id": null, "assignment_id": null}, "FP7": {"module_item_id": null, "assignment_id": null}, "FP8": {"module_item_id": null, "assignment_id": null}, "FP9": {"module_item_id": null, "assignment_id": null}, "Semantics": {"module_item_id": null, "assignment_id": null}, "FreeBoundVariables": {"module_item_id": null, "assignment_id": null}, "AlphaConversion": {"module_item_id": null, "assignment_id": null}, "Substitution": {"module_item_id": null, "assignment_id": null}, "BetaReduction": {"module_item_id": null, "assignment_id": null}, "ReductionStrategies": {"module_item_id": null, "assignment_id": null}, "ChurchNumerals": {"module_item_id": null, "assignment_id": null}, "RecursiveFunctions": {"module_item_id": null, "assignment_id": null}, "SLang1": {"module_item_id": null, "assignment_id": null}, "Environment": {"module_item_id": null, "assignment_id": null}, "SLang1withLetExpressions": {"module_item_id": null, "assignment_id": null}, "SLang2": {"module_item_id": null, "assignment_id": null}, "SLang2TTK": {"module_item_id": null, "assignment_id": null}, "SLang2ParameterPassing": {"module_item_id": null, "assignment_id": null}, "LazyLists": {"module_item_id": null, "assignment_id": null}, "TypeSystems": {"module_item_id": null, "assignment_id": null}, "TypeInference": {"module_item_id": null, "assignment_id": null}, "PL_Glossary": {"module_item_id": null, "assignment_id": null}, "FLIntro": {"module_item_id": null, "assignment_id": null}, "FLOverview": {"module_item_id": null, "assignment_id": null}, "FLConcepts": {"module_item_id": null, "assignment_id": null}, "DFA": {"module_item_id": null, "assignment_id": null}, "NFA": {"module_item_id": null, "assignment_id": null}, "Minimization": {"module_item_id": null, "assignment_id": null}, "RegEx": {"module_item_id": null, "assignment_id": null}, "RegGrammar": {"module_item_id": null, "assignment_id": null}, "RegClosure": {"module_item_id": null, "assignment_id": null}, "NonRegular": {"module_item_id": null, "assignment_id": null}, "DFAproperties": {"module_item_id": null, "assignment_id": null}, "CFL": {"module_item_id": null, "assignment_id": null}, "CFLSimp": {"module_item_id": null, "assignment_id": null}, "PDA": {"module_item_id": null, "assignment_id": null}, "PDACFL": {"module_item_id": null, "assignment_id": null}, "DPDA": {"module_item_id": null, "assignment_id": null}, "CFLProp": {"module_item_id": null, "assignment_id": null}, "TuringIntro": {"module_item_id": null, "assignment_id": null}, "ParseIntro": {"module_item_id": null, "assignment_id": null}, "LLParsing": {"module_item_id": null, "assignment_id": null}, "LRParsing": {"module_item_id": null, "assignment_id": null}, "CYKParsing": {"module_item_id": null, "assignment_id": null}, "Compiler": {"module_item_id": null, "assignment_id": null}, "RecEnum": {"module_item_id": null, "assignment_id": null}, "IntroEx": {"module_item_id": null, "assignment_id": null}, "FAEx": {"module_item_id": null, "assignment_id": null}, "RegLangEx": {"module_item_id": null, "assignment_id": null}, "Sheet5": {"module_item_id": null, "assignment_id": null}, "Sheet6": {"module_item_id": null, "assignment_id": null}, "Sheet7": {"module_item_id": null, "assignment_id": null}, "IntroExMore": {"module_item_id": null, "assignment_id": null}, "FAExMore": {"module_item_id": null, "assignment_id": null}, "RegLangExMore": {"module_item_id": null, "assignment_id": null}, "Sheet5Practice": {"module_item_id": null, "assignment_id": null}, "Iteration": {"module_item_id": null, "assignment_id": null}, "IterationAV": {"module_item_id": null, "assignment_id": null}, "IterationEX1": {"module_item_id": null, "assignment_id": null}, "IterationEX2": {"module_item_id": null, "assignment_id": null}, "CoursePolicies": {"module_item_id": null, "assignment_id": null}, "GettingStarted": {"module_item_id": null, "assignment_id": null}, "InheritanceAndPolymorphism": {"module_item_id": null, "assignment_id": null}, "ConditionalActions": {"module_item_id": null, "assignment_id": null}, "SoftwareTesting": {"module_item_id": null, "assignment_id": null}, "VariablesFieldsAndParameters": {"module_item_id": null, "assignment_id": null}, "PicturesAndForEachLoops": {"module_item_id": null, "assignment_id": null}, "AggregationStringsandMoreLoops": {"module_item_id": null, "assignment_id": null}, "GroupingObjectsUsingListsAndNestedForLoops": {"module_item_id": null, "assignment_id": null}, "ListAndLoopsDeepDive": {"module_item_id": null, "assignment_id": null}, "Arrays": {"module_item_id": null, "assignment_id": null}, "MultiDimensionalArrays": {"module_item_id": null, "assignment_id": null}, "FileIO": {"module_item_id": null, "assignment_id": null}, "MapsAndSets": {"module_item_id": null, "assignment_id": null}, "StaticMainAndExceptions": {"module_item_id": null, "assignment_id": null}}, "inst_book_id": null, "module_position": null, "inst_exercise_id": null, "inst_chapter_id": null, "options": null, "inst_module_id": null, "id": null, "total_points": null, "last_compiled": null, "narration_enabled": "true", "zeropt_assignments": false, "sphinx_debug": false, "html_theme_options": null, "html_css_files": null, "html_js_files": null, "include_tree_view": false, "chapter_name": "Chapter", "max_toc_depth": null, "text_translated": {"register": "Register", "login": "Login", "logout": "Logout", "about": "About", "close": "Close Window", "tofc": "Table Of Contents", "the_book": "the book", "username": "Username", "password": "Password", "password_confirm": "Confirm Password", "email": "Email", "username_email": "Username or email", "sign_in": "Sign in", "password_forget": "Forgot your password?", "about_msg": "Created as part of the OpenDSA hypertextbook project. For more information, see. JSAV library version", "contact": "Contact Us", "privacy": "Privacy", "license": "License", "report_bug": "Report a bug", "summary": "Summary", "os": "Operating system", "browser": "Browser", "description": "Description", "screenshot": "Attach a screenshot (optional)", "submit": "Submit", "login_warn": "You must be logged in to receive credit", "login_error": "Incorrect username / password combination", "bug_desc": "***BUG** Please enter: (1) a consice description of the problem. (2) steps to reproduce bug. (3) the version of your browser and operating system."}, "lang_file": "/opendsa//tools/language_msg.json", "listed_modules": ["IntroDSA", "CarlGauss", "FrancisBacon", "cmdline", "parameters", "eclipseparameters", "webcattools", "debugmethods", "debug", "scanning", "randomaccessfile", "junitstart", "junitbasic", "junitcoverage", "ADT", "IntroOO", "IntroUML", "IntroProcess", "PointerIntro", "BasicPointers1", "BasicPointers2", "Syntax", "LocalMem", "HeapMem", "Links1", "Links2", "Exercises", "MathpreIntro", "SetDef", "MiscMath", "Logarithms", "Summations", "RecurrenceIntro", "Proofs", "Estimation", "MathpreSumm", "BinarySearch", "AnalChap", "AnalPrelim", "AnalIntro", "AnalCases", "AnalCompvsAlg", "AnalAsymptotic", "AnalLower", "AnalProgram", "AnalProblem", "AnalMisunderstanding", "AnalMultiple", "AnalSpace", "AnalTuning", "AlgAnalSummCS2", "AlgAnalSummCS3", "ListIntro", "ListADT", "ListArray", "ListLinked", "ListAnalysis", "ListDouble", "ListElement", "StackArray", "StackLinked", "Freelist", "StackRecur", "Queue", "QueueLinked", "ListSumm", "RecIntro", "Write", "CodeCompletionEx", "HarderWrite", "HarderCodeCompletionEx", "WritingEx", "Trace", "TracingEx", "RecSummaryEx", "DesignPatterns", "DesignAltList", "Comparison", "Dictionary", "BinaryTreeIntro", "BinaryTree", "RecursiveDS", "BinaryTreeFullThm", "BinaryTreeTraversal", "WritingTraversals", "BinaryTreeInfFlw", "BinaryTreeImpl", "Composite", "BinaryTreeNodeSpace", "BST", "BSTDict", "BinaryTreeGuidedInfFlw", "MultipleBinaryTrees", "BSTCheck", "CompleteTree", "Heaps", "Huffman", "TreeTrie", "HuffProof", "BinaryChapSumm", "InSort", "SortNotation", "InsertionSort", "BubbleSort", "SelectionSort", "ExchangeSort", "SortOpt", "Shellsort", "Mergesort", "MergesortImpl", "Quicksort", "Heapsort", "BinSort", "RadixSort", "SortingEmpirical", "SortingLowerBound", "SortSumm", "FileProc", "Secondary", "Diskdrive", "BuffPool", "FileProg", "ExternalSort", "HashIntro", "HashFunc", "HashFuncExamp", "OpenHash", "BucketHash", "HashCSimple", "HashCImproved", "HashAnal", "HashDel", "HashSumm", "MemmanIntro", "Dynamic", "SequentialFit", "FirstFit", "CircularFit", "BestFit", "WorstFit", "MMPerformance", "Buddy", "Garbage", "IndexIntro", "LinearIndexing", "ISAM", "TreeIndexing", "TwoThreeTree", "BTree", "IndexingSumm", "GenTreeIntro", "UnionFind", "SequentialRep", "GraphIntro", "GraphImpl", "GraphTraversal", "GraphTopsort", "GraphShortest", "MCST", "Kruskal", "Floyd", "Spatial", "PRquadtree", "KDtree", "Bintree", "OtherSpatial", "AAIntro", "ProblemSolving", "AAOverview", "TOH", "BoundsReview", "GrowthRate", "AdvSumm", "Recurrence", "SearchIntro", "UnsortedSearch", "SortedSearch", "SelfOrg", "SetSearch", "PerfectHash", "BoundMax", "BoundAdversary", "BoundState", "BoundiBest", "SortingOptimal", "Numeric", "Transform", "FFT", "Probabilistic", "Primes", "RandomNums", "SkipList", "BalancedTree", "AVL", "Splay", "RedBlack", "Sparse", "DynamicProgramming", "AmortAnal", "Knapsack", "EditDistance", "StringSearchKMP", "StringSearchBoyerMoore", "StringSearchRabinKarp", "GenTreeImplement", "Kary", "LimComp", "Reduction", "NPComplete", "circuitSAT", "SAT", "threeSAT", "clique", "independentSet", "vertexCover", "hamiltonianCycle", "TSP", "provingNPC", "circuitSAT_to_SAT", "SAT_to_threeSAT", "threeSAT_to_clique", "clique_to_independentSet", "independentSet_to_vertexCover", "threeSAT_to_hamiltonianCycle", "hamiltonianCycle_to_TSP", "NPCoping", "Impossible", "Turing", "Grammars1", "Grammars2", "Grammars3", "Grammars4", "Grammars5", "FP1", "FP2", "FP3", "FP4", "FP5", "FP6", "FP7", "FP8", "FP9", "Syntax", "Semantics", "FreeBoundVariables", "AlphaConversion", "Substitution", "BetaReduction", "ReductionStrategies", "ChurchNumerals", "RecursiveFunctions", "SLang1", "Environment", "SLang1withLetExpressions", "SLang2", "SLang2TTK", "SLang2ParameterPassing", "LazyLists", "TypeSystems", "TypeInference", "PL_Glossary", "FLIntro", "FLOverview", "FLConcepts", "DFA", "NFA", "Minimization", "RegEx", "RegGrammar", "RegClosure", "NonRegular", "DFAproperties", "CFL", "CFLSimp", "PDA", "PDACFL", "DPDA", "CFLProp", "TuringIntro", "Turing", "ParseIntro", "LLParsing", "LRParsing", "CYKParsing", "Compiler", "RecEnum", "IntroEx", "FAEx", "RegLangEx", "Sheet5", "Sheet6", "Sheet7", "IntroExMore", "FAExMore", "RegLangExMore", "Sheet5Practice", "Iteration", "IterationAV", "IterationEX1", "IterationEX2", "CoursePolicies", "GettingStarted", "InheritanceAndPolymorphism", "ConditionalActions", "SoftwareTesting", "VariablesFieldsAndParameters", "PicturesAndForEachLoops", "AggregationStringsandMoreLoops", "GroupingObjectsUsingListsAndNestedForLoops", "ListAndLoopsDeepDive", "Arrays", "MultiDimensionalArrays", "FileIO", "MapsAndSets", "StaticMainAndExceptions"], "listed_chapters": ["modules"], "config_file_path": "StandaloneModules/test/config.json", "book_name": "test", "odsa_dir": "/opendsa/", "book_dir": "/opendsa/StandaloneModules/test/", "book_src_dir": "/opendsa/StandaloneModules/test/source/", "rel_book_output_path": "html/", "rel_build_to_odsa_path": "../../../"}