{
  "title": "Intro To Software Design",
  "desc": "An objects first approach to introductory programming and design in Java.",
  "theme": "haiku",
  "build_dir": "Books",
  "code_dir": "SourceCode/",
  "code_lang": {
    "Java": {
      "ext": [
        "java"
      ],
      "label": "Java",
      "lang": "java"
    },
    "C++": {
      "ext": [
        "cpp",
        "h"
      ],
      "label": "C++",
      "lang": "C++"
    }
  },
  "tabbed_codeinc": false,
  "lang": "en",
  "build_JSAV": false,
  "build_cmap": false,
  "suppress_todo": false,
  "dispModComp": true,
  "tag": "Java;CS1",
  "glob_exer_options": {
    "JXOP-debug": "true"
  },
  "chapters": {
    "Course Policies": {
      "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
            }
          }
        }
      }
    },
    "Getting Started": {
      "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
            }
          }
        }
      }
    },
    "Inheritance and Polymorphism": {
      "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
            }
          }
        }
      }
    },
    "Conditional and Repeating Actions": {
      "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
            }
          }
        }
      }
    },
    "Software Testing": {
      "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
            }
          }
        }
      }
    },
    "Variables, Fields, and Parameters": {
      "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"
          }
        }
      }
    },
    "Pictures and For-each Loops": {
      "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"
          }
        }
      }
    },
    "Aggregation, Strings and More Loops": {
      "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"
          }
        }
      }
    },
    "Grouping Objects Using Lists and Nested For Loops": {
      "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"
          }
        }
      }
    },
    "Lists, Loop Idioms, Generics, and the Null Keyword": {
      "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"
          }
        }
      }
    },
    "Arrays": {
      "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"
          }
        }
      }
    },
    "Multi-dimensional Arrays": {
      "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"
          }
        }
      }
    },
    "Variable Scoping, Input, and Output": {
      "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
            }
          }
        }
      }
    },
    "Maps and Sets": {
      "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"
          }
        }
      }
    },
    "Static, Main, and Exceptions": {
      "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"
          }
        }
      }
    }
  }
}