{% set weekly_textbook_topics = [ {week: "1"}, {name: "SE Intro"}, {heading: "SE: Intro"}, {location: ["softwareEngineering", "introduction", "prosAndCons"]}, {week: "2"}, {name: "Design"}, {heading: "Design: Basics"}, {subheading: "Introduction"}, {location: ["design", "introduction", "what"]}, {subheading: "Abstraction"}, {location: ["designFundamentals", "abstraction", "what"]}, {heading: "Design: Models"}, {location: ["modeling", "introduction", "what"]}, {location: ["modeling", "introduction", "how"]}, {heading: "Activity Diagrams", panopto: "49336087-f463-4fd2-ad85-ac4500f2d541"}, {location: ["modeling", "modelingBehaviors", "activityDiagrams"]}, {location: ["modeling", "modelingBehaviors", "activityDiagramsIntermediate"]}, {week: "3"}, {name: "Requirements"}, {heading: "Requirements: Intro"}, {location: ["requirements", "introduction"]}, {location: ["requirements", "nonFunctionalRequirements"]}, {location: ["requirements", "prioritizing"]}, {location: ["requirements", "quality"]}, {heading: "Gathering Requirements", panopto: "e9253486-b36d-4d7f-8044-ac2900bd46d1"}, {location: ["gatheringRequirements", "brainstorming"]}, {location: ["gatheringRequirements", "productSurveys"]}, {location: ["gatheringRequirements", "observation"]}, {location: ["gatheringRequirements", "userSurveys"]}, {location: ["gatheringRequirements", "interviews"]}, {location: ["gatheringRequirements", "focusGroups"]}, {location: ["gatheringRequirements", "prototyping"]}, {heading: "Specifying Requirements", panopto: "37e45832-1d21-43e1-a8fa-ac2900cef5a4"}, {subheading: "Prose"}, {location: ["specifyingRequirements", "prose", "what"]}, {subheading: "Feature Lists"}, {location: ["specifyingRequirements", "featureList", "what"]}, {subheading: "User Stories"}, {location: ["specifyingRequirements", "userStories", "introduction"]}, {location: ["specifyingRequirements", "userStories", "details"]}, {location: ["specifyingRequirements", "userStories", "usage"]}, {subheading: "Glossary"}, {location: ["specifyingRequirements", "glossary", "what"]}, {subheading: "Supplementary Requirements"}, {location: ["specifyingRequirements", "supplementaryRequirements", "what"]}, {week: "4"}, {name: "OOP"}, {heading: "OOP: Objects"}, {location: ["oop", "introduction", "what"], panopto: "ef362e40-854b-4154-90cc-acc3004c1c68"}, {location: ["oop", "objects", "what"], panopto: "5ab57a96-01e3-46e5-ab5a-ac0c00cb212f"}, {location: ["oop", "objects", "abstraction"], panopto: "4b95c852-d083-422c-9853-ac0c00cd8074"}, {location: ["oop", "objects", "encapsulation"], panopto: "d9f2b2b6-35ab-436e-8eee-ac0c00d3faf1"}, {name: "Requirements"}, {heading: "Requirements: Use Cases", panopto: "05bc5da7-263e-4aa3-8d8e-ac3600d2ab6e"}, {location: ["specifyingRequirements", "useCases", "introduction"]}, {location: ["specifyingRequirements", "useCases", "identifying"]}, {location: ["specifyingRequirements", "useCases", "details"]}, {location: ["specifyingRequirements", "useCases", "usage"]}, {week: "5"}, {name: "Implementation"}, {heading: "Exception Handling"}, {location: ["errorHandling", "introduction", "what"]}, {location: ["errorHandling", "exceptions", "what"]}, {location: ["errorHandling", "exceptions", "how"]}, {location: ["errorHandling", "exceptions", "when"]}, {week: "6"}, {name: "Implementation"}, {heading: "IDEs: Basic Features"}, {location: ["ides", "introduction", "what"]}, {location: ["ides", "debugging", "what"]}, {name: "Project Management"}, {heading: "Project Mgt: Scheduling and Tracking", panopto: "e4bdedb1-34a1-4da1-9b57-ac390047588e"}, {location: ["projectPlanning", "milestones"]}, {location: ["projectPlanning", "buffers"]}, {location: ["projectPlanning", "issueTrackers"]}, {location: ["projectPlanning", "workBreakdownStructure"]}, {location: ["projectPlanning", "ganttCharts"]}, {location: ["projectPlanning", "pertCharts"]}, {location: ["teamwork", "teamStructures"]}, {week: "7"}, {name: "Testing"}, {heading: "Automated Testing of Text UIs"}, {location: ["testing", "introduction", "what"], panopto: "48b60ad5-387d-4d2d-a82a-ac0c0091a705"}, {location: ["testing", "testingTypes", "regressionTesting", "what"], panopto: "fc0416bd-b376-417d-9e45-ac0c00a53312"}, {location: ["testing", "testAutomation", "what"]}, {location: ["testing", "testAutomation", "testingTextUis"], panopto: "d01bfad0-e4fd-4d86-9ac7-acdb00b02afe"}, {name: "Implementation"}, {heading: "Code Quality"}, {subheading: "Coding Standards"}, {location: ["codeQuality", "introduction", "basic"]}, {location: ["codeQuality", "followStandard", "introduction"]}, {location: ["codeQuality", "followStandard", "basic"]}, {subheading: "Readability"}, {location: ["codeQuality", "maximizeReadability", "introduction"]}, {location: ["codeQuality", "maximizeReadability", "basic", "avoidLongMethods"]}, {location: ["codeQuality", "maximizeReadability", "basic", "avoidDeepNesting"]}, {location: ["codeQuality", "maximizeReadability", "basic", "avoidComplicatedExpressions"]}, {location: ["codeQuality", "maximizeReadability", "basic", "avoidMagicNumbers"]}, {location: ["codeQuality", "maximizeReadability", "basic", "makeCodeObvious"]}, {subheading: "Naming"}, {location: ["codeQuality", "nameWell", "introduction"]}, {location: ["codeQuality", "nameWell", "basic", "nounsAndVerbsAsNames"]}, {location: ["codeQuality", "nameWell", "basic", "useStandardWords"]}, {subheading: "Unsafe Practices"}, {location: ["codeQuality", "avoidShortcuts", "introduction"]}, {location: ["codeQuality", "avoidShortcuts", "basic", "dontRecycleVarsOrParams"]}, {subheading: "Code Comments"}, {location: ["codeQuality", "commentMinimally", "introduction"]}, {location: ["codeQuality", "commentMinimally", "basic", "dontRepeatObvious"]}, {location: ["codeQuality", "commentMinimally", "basic", "writeToReader"]}, {heading: "Refactoring"}, {location: ["refactoring", "what"]}, {location: ["refactoring", "when"]}, {heading: "Integration Approaches", panopto: "df9241ff-dcbe-4b7c-b9fa-ac3700df5bbe"}, {location: ["integration", "introduction", "what"]}, {location: ["integration", "approaches", "lateVsEarly"]}, {location: ["integration", "approaches", "bigBangVsIncremental"]}, {location: ["integration", "approaches", "topDownVsBottomUp"]}, {week: "8"}, {name: "OOP"}, {heading: "OOP: Basics"}, {location: ["oop", "classes", "what"], panopto: "ebc45dbf-a781-436e-a31a-acdb00ad320b"}, {name: "Implementation"}, {heading: "Reuse: APIs, Libraries, Frameworks, Platforms", panopto: "e47e8dfe-2550-41a6-9566-ab7a0095e5e7"}, {subheading: "Reuse"}, {location: ["reuse", "introduction", "what"]}, {location: ["reuse", "introduction", "when"]}, {subheading: "APIs"}, {location: ["reuse", "apis", "what"]}, {subheading: "Libraries"}, {location: ["reuse", "libraries", "what"]}, {location: ["reuse", "libraries", "how"]}, {subheading: "Frameworks"}, {location: ["reuse", "frameworks", "what"]}, {location: ["reuse", "frameworks", "frameworksVsLibraries"]}, {subheading: "Platforms"}, {location: ["reuse", "platforms", "what"]}, {heading: "Cloud Computing"}, {location: ["reuse", "cloudComputing", "what"]}, {location: ["reuse", "cloudComputing", "services"]}, {name: "Project Management"}, {heading: "SDLC Process Models", panopto: "a1bfa255-292f-4ee6-8e65-ab8200837d82"}, {location: ["processModels", "introduction", "what"]}, {location: ["processModels", "introduction", "sequentialModels"]}, {location: ["processModels", "introduction", "iterativeModels"]}, {location: ["processModels", "introduction", "agileModels"]}, {location: ["processModels", "exampleProcessModels", "scrum"], evidence: "project.md#relate_process"}, {location: ["processModels", "exampleProcessModels", "xp"], evidence: "project.md#relate_process"}, {location: ["processModels", "exampleProcessModels", "unifiedProcess"], evidence: "project.md#relate_process"}, {location: ["processModels", "more", "cmmi"]}, {location: ["processModels", "summary", "recap"]}, {week: "9"}, {name: "OOP"}, {heading: "UML Class and Object Diagrams: Basics", panopto: "c9727e98-4bb6-4de3-b3ec-ab81009c3af2"}, {location: ["uml", "classDiagrams", "introduction", "what"]}, {location: ["uml", "classDiagrams", "classes", "what"]}, {location: ["oop", "classes", "classLevelMembers"]}, {location: ["uml", "classDiagrams", "classLevelMembers", "what"]}, {location: ["oop", "associations", "what"]}, {location: ["uml", "classDiagrams", "associations", "what"]}, {location: ["uml", "classDiagrams", "associations", "labels"]}, {location: ["uml", "classDiagrams", "associations", "roles"]}, {location: ["oop", "associations", "multiplicity"]}, {location: ["uml", "classDiagrams", "associations", "multiplicity"]}, {location: ["oop", "associations", "navigability"]}, {location: ["uml", "classDiagrams", "associations", "navigability"]}, {location: ["uml", "classDiagrams", "associationsAsAttributes", "what"]}, {location: ["uml", "objectDiagrams", "introduction"]}, {location: ["uml", "objectDiagrams", "objects"]}, {location: ["uml", "objectDiagrams", "associations"]}, {location: ["uml", "miscellaneous", "objectVsClassDiagrams"]}, {location: ["uml", "notes", "notes"]}, {location: ["uml", "notes", "constraints"]}, {week: "10"}, {name: "OOP"}, {heading: "OOP and UML Class/Object Diagrams: Inheritance", panopto: "1c82c417-5378-4b7c-84c0-ab88009b476b"}, {location: ["oop", "inheritance", "what"]}, {location: ["uml", "classDiagrams", "classInheritance", "what"]}, {location: ["oop", "inheritance", "overloading"]}, {location: ["oop", "inheritance", "overriding"]}, {heading: "UML Class/Object Diagrams: Composition, Aggregation, Dependencies", panopto: "b29faf7d-b575-4ad9-a43b-ab880073e127"}, {location: ["oop", "associations", "composition"]}, {location: ["uml", "classDiagrams", "composition", "what"]}, {location: ["oop", "associations", "aggregation"]}, {location: ["uml", "classDiagrams", "aggregation", "what"]}, {location: ["oop", "associations", "dependencies"]}, {location: ["uml", "classDiagrams", "dependencies", "what"]}, {name: "Quality Assurance"}, {heading: "Types of Testing", panopto: "f978d66a-214b-487d-8731-ab880081c9ef"}, {subheading: "Developer Testing"}, {location: ["testing", "testingTypes", "developerTesting", "what"]}, {location: ["testing", "testingTypes", "developerTesting", "why"]}, {subheading: "Unit Testing"}, {location: ["testing", "testingTypes", "unitTesting", "what"]}, {subheading: "Integration Testing"}, {location: ["testing", "testingTypes", "integrationTesting", "what"]}, {subheading: "System Testing"}, {location: ["testing", "testingTypes", "systemTesting", "what"]}, {subheading: "Acceptance Testing"}, {location: ["testing", "testingTypes", "acceptanceTesting", "what"]}, {location: ["testing", "testingTypes", "acceptanceTesting", "acceptanceVsSystemTesting"]}, {subheading: "Alpha/Beta Testing"}, {location: ["testing", "testingTypes", "alphaBetaTesting", "what"]}, {week: "11"}, {name: "Quality Assurance"}, {heading: "Test Case Design"}, {location: ["testCaseDesign", "introduction", "what"], panopto: "bd513fd6-8ccb-4bb3-8467-ab8d009a8de0"}, {location: ["testing", "testingTypes", "exploratoryVsScriptedTesting", "what"]}, {location: ["testing", "testingTypes", "exploratoryVsScriptedTesting", "when"]}, {location: ["testCaseDesign", "introduction", "blackVsGlass"], panopto: "8221a124-fe08-4c48-8a72-ab8d00aa53d3"}, {heading: "Equivalence Partitioning"}, {location: ["testCaseDesign", "equivalencePartitions", "what"], panopto: "59a122d2-7170-4aea-9888-ab8d00b850ed"}, {location: ["testCaseDesign", "equivalencePartitions", "basic"], panopto: "83001c05-69fb-4322-b571-ab8d00cd4337"}, {location: ["testCaseDesign", "equivalencePartitions", "intermediate"]}, {heading: "Boundary Value Analysis"}, {location: ["testCaseDesign", "boundaryValueAnalysis", "what"], panopto: "357faa3a-c24a-4ff5-ac10-ab8e00baf4f5"}, {location: ["testCaseDesign", "boundaryValueAnalysis", "how"], panopto: "0edaf584-6ba5-4b05-8f98-ab8e00bfc897"}, {heading: "Other QA Techniques"}, {location: ["qualityAssurance", "introduction", "what"]}, {location: ["qualityAssurance", "codeReviews", "what"], panopto: "e43e6509-74e2-4a5c-9f3d-ab9200c552f6"}, {location: ["qualityAssurance", "staticAnalysis", "what"], panopto: "a44af2d0-85a7-4183-8330-ab9200cfe405"}, {location: ["qualityAssurance", "formalVerification", "what"], panopto: "7b805aba-bb87-41a3-abb6-ab9200d68637"}, {week: "12"}, {name: "Revision Control"}, {heading: "Revision Control"}, {location: ["revisionControl", "what"]}, {location: ["revisionControl", "repositories"]}, {name: "Documentation"}, {heading: "Writing Developer Documents"}, {subheading: "Type of Developer Docs"}, {location: ["documentation", "introduction", "what"]}, {subheading: "Guideline: Aim for Comprehensibility"}, {location: ["documentation", "guidelines", "aimForComprehensibility", "what"]}, {location: ["documentation", "guidelines", "aimForComprehensibility", "how"]}, {subheading: "Guideline: Describe Top-Down"}, {location: ["documentation", "guidelines", "goTopDown", "what"]}, {location: ["documentation", "guidelines", "goTopDown", "why"]}, {location: ["documentation", "guidelines", "goTopDown", "how"]}, {subheading: "Guideline: Minimal but Sufficient"}, {location: ["documentation", "guidelines", "documentMinimally", "what"]}, {location: ["documentation", "guidelines", "documentMinimally", "how"]}, {week: "13"} ]%}
{% set weeks_with_no_topics = ["13"] %}