[{"data":1,"prerenderedAt":2371},["ShallowReactive",2],{"content-page:\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview":3,"content-page-quiz:none":480,"content-navigation-index":510,"toc-page:\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview":2059},{"id":4,"title":5,"audience":6,"body":7,"contentType":478,"course":479,"courseId":480,"description":481,"estimateBasis":482,"estimatedDiscussionMinutes":480,"estimatedLiveMinutes":480,"estimatedRecordingMinutes":483,"estimatedTitleSeconds":480,"estimatedTotalMinutes":480,"estimatedTraceMinutes":484,"extension":485,"meta":486,"module":15,"navigation":494,"order":495,"path":496,"presentationRole":497,"promptAssist":498,"revision":15,"semester":480,"seo":499,"status":500,"stem":501,"syllabus":480,"tags":502,"updated":508,"videoDuration":480,"videoId":480,"videoLink":480,"videoTitle":480,"week":15,"__hash__":509},"content\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview.md","Required Architecture Overview","student",{"type":8,"value":9,"toc":464},"minimark",[10,48,79,104,169,207,255,330,367,402,443],[11,12,16,21,37],"slide",{"estimated-seconds":13,"id":14,"level":15},"45","outcome","2",[17,18,20],"h2",{"id":19},"overview","Overview",[22,23,24,28,31,34],"ul",{},[25,26,27],"li",{},"Required service roles",[25,29,30],{},"RabbitMQ internal boundary",[25,32,33],{},"Jobs and correlation",[25,35,36],{},"Transformed data and runtime evidence",[38,39,40,41,47],"p",{},"Before this lesson, use the instructor-provided team repository and project board; connect assigned Issues to task-branch pull requests and obtain teammate approval before merge. Review ",[42,43,46],"a",{"href":44,"target":45},"\u002F2e\u002Fgeneral\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","_blank","Local Git Workflow And Course Repositories"," for the Git commands",[11,49,52,56,76],{"estimated-seconds":50,"id":51,"level":15},"80","core-idea",[17,53,55],{"id":54},"rabbitmq-is-the-internal-boundary","RabbitMQ Is The Internal Boundary",[22,57,58,61,64,67,70,73],{},[25,59,60],{},"The app server handles the user-facing workflow and publishes internal work",[25,62,63],{},"RabbitMQ routes predictable messages to the service responsible for that work",[25,65,66],{},"Workers consume jobs, perform service-specific processing, and publish results or errors",[25,68,69],{},"The database role stores user data and transformed project data through the queue-centered service path",[25,71,72],{},"External API responses are cleaned into fields the project needs, not stored as raw dumps",[25,74,75],{},"Git and GitHub can hold code and change history; they do not replace runtime routing, promotion, or availability tooling",[38,77,78],{},"Compare the roles and message contract below",[11,80,84,88,96],{"estimated-seconds":81,"id":82,"level":83},"100","architecture-diagram","3",[17,85,87],{"id":86},"required-roles-and-boundary","Required Roles And Boundary",[38,89,90],{},[91,92],"img",{"alt":93,"src":94,"variant":95},"IT490 systems integration architecture diagram","\u002Fimages\u002Fsystems-integration\u002Farchitecture-diagram.png","slide-screenshot",[22,97,98,101],{},[25,99,100],{},"The diagram fixes the App, RabbitMQ, API worker, and database service roles and the queue-only internal communication boundary",[25,102,103],{},"The named PHP app and the visual placement are illustrative; use the approved products and topology for the team project",[11,105,108,112,164],{"estimated-seconds":106,"id":107,"level":83},"70","system-roles",[17,109,111],{"id":110},"separate-constraints-from-choices","Separate Constraints From Choices",[113,114,115,128],"table",{},[116,117,118],"thead",{},[119,120,121,125],"tr",{},[122,123,124],"th",{},"Mandatory course constraint",[122,126,127],{},"Team design choice",[129,130,131,140,148,156],"tbody",{},[119,132,133,137],{},[134,135,136],"td",{},"App, RabbitMQ, API worker, and database service responsibilities remain separated across the required architecture",[134,138,139],{},"Approved backend and database products",[119,141,142,145],{},[134,143,144],{},"Internal VM-to-VM requests, results, status, and errors cross RabbitMQ",[134,146,147],{},"Additional workers, queue topology, and service grouping",[119,149,150,153],{},[134,151,152],{},"Stored external data is transformed into project-relevant fields rather than kept as a raw API dump",[134,154,155],{},"Which approved API and fields support the user workflow",[119,157,158,161],{},[134,159,160],{},"Evidence must show the behavior, failure state, and recovery across the queue boundary",[134,162,163],{},"Log labels, diagram notation, and recovery details not fixed by an assignment",[22,165,166],{},[25,167,168],{},"Docker and container substitutes do not replace required manually configured course infrastructure",[11,170,173,177],{"estimated-seconds":171,"id":172,"level":83},"90","job-contract",[17,174,176],{"id":175},"job-and-message-contract","Job And Message Contract",[22,178,179,182,185,201,204],{},[25,180,181],{},"A job is a small request for another service to perform a specific action",[25,183,184],{},"A predictable request identifies the action, the data needed by the consumer, and a way to correlate the result",[25,186,187,188,192,193,196,197,200],{},"Names such as ",[189,190,191],"code",{},"type",", ",[189,194,195],{},"payload",", and ",[189,198,199],{},"correlationId"," are one acceptable message shape, not required field names",[25,202,203],{},"A success or error result must remain traceable to the original request",[25,205,206],{},"This queue contract reduces direct service coupling and lets work wait for an available consumer",[11,208,211,215,218,252],{"estimated-seconds":209,"id":210,"level":15},"130","worked-example",[17,212,214],{"id":213},"worked-example-fetch-player-stats","Worked Example: Fetch Player Stats",[38,216,217],{},"This fictional path demonstrates the required boundary. Its job name, fields, and service labels are examples rather than a project template",[219,220,221,234,237,240,246,249],"ol",{},[25,222,223,224,227,228,231,232],{},"App publishes an illustrative ",[189,225,226],{},"fetch_player_stats"," job with ",[189,229,230],{},"playerId"," and a new ",[189,233,199],{},[25,235,236],{},"RabbitMQ routes the job to the API worker",[25,238,239],{},"API worker calls the external API and transforms only the project fields",[25,241,242,243,245],{},"API worker publishes the transformed result with the same ",[189,244,199],{}," through RabbitMQ",[25,247,248],{},"Database service consumes the storage request, writes the cleaned record, and publishes an acknowledgement",[25,250,251],{},"App receives the correlated success or error through RabbitMQ and updates the user-facing workflow",[38,253,254],{},"Follow the matching evidence below",[11,256,259,263,325],{"estimated-seconds":257,"id":258,"level":83},"95","evidence-path",[17,260,262],{"id":261},"follow-one-correlation-id","Follow One Correlation ID",[113,264,265,275],{},[116,266,267],{},[119,268,269,272],{},[122,270,271],{},"Boundary",[122,273,274],{},"Observable evidence",[129,276,277,285,293,301,309,317],{},[119,278,279,282],{},[134,280,281],{},"App to RabbitMQ",[134,283,284],{},"Publish observation with the team's action and correlation labels",[119,286,287,290],{},[134,288,289],{},"RabbitMQ to API worker",[134,291,292],{},"Queue, binding, consumer, and delivery state",[119,294,295,298],{},[134,296,297],{},"API worker",[134,299,300],{},"Consume log, external response status, transformed field count",[119,302,303,306],{},[134,304,305],{},"Worker to database service",[134,307,308],{},"Correlated storage request and acknowledgement through RabbitMQ",[119,310,311,314],{},[134,312,313],{},"Database",[134,315,316],{},"Query showing the cleaned project record",[119,318,319,322],{},[134,320,321],{},"Result to app",[134,323,324],{},"Correlated success or error displayed in the workflow",[22,326,327],{},[25,328,329],{},"One correlation value should connect the entire evidence set; the field name is a team choice unless an assignment fixes it",[11,331,333,337],{"estimated-seconds":50,"id":332,"level":15},"check",[17,334,336],{"id":335},"troubleshoot-the-flow","Troubleshoot The Flow",[22,338,339,346,352,358,364],{},[25,340,341,345],{},[342,343,344],"strong",{},"Success:"," Evidence shows the same correlation ID at publish, routing, worker processing, storage, and app result",[25,347,348,351],{},[342,349,350],{},"Failure test:"," Stop the API worker, submit the job, and capture the queued or retryable state plus the app's pending\u002Ferror status",[25,353,354,357],{},[342,355,356],{},"Recovery:"," Restart the worker and show the job completing without a direct app-to-worker fallback",[25,359,360,363],{},[342,361,362],{},"Hard boundary:"," Any direct internal VM request, direct fallback, or raw API dump fails the required architecture",[25,365,366],{},"Keep screenshots or logs readable enough to prove role, timestamp, state, and correlation",[11,368,370,373],{"estimated-seconds":50,"id":369,"level":15},"knowledge-check",[17,371,372],{"id":369},"Knowledge Check",[369,374,375,390],{},[376,377,379],"template",{"v-slot:questions":378},"",[219,380,381,384,387],{},[25,382,383],{},"What must carry internal requests, results, status, and errors between project VMs?",[25,385,386],{},"What connects a job request with its result or error?",[25,388,389],{},"Why does the database service store transformed external data rather than a raw API dump?",[376,391,392,396,399],{"v-slot:answers":378},[393,394,395],"knowledge-answer",{},"RabbitMQ carries those messages; direct internal VM requests do not meet the required boundary",[393,397,398],{},"A correlation value shared by the request and its result or error",[393,400,401],{},"The project stores the relevant fields needed by its user workflow",[11,403,405,408],{"estimated-seconds":13,"id":404,"level":15},"key-terms-and-further-learning",[17,406,407],{"id":404},"Key Terms And Further Learning",[22,409,410,416,422,428],{},[25,411,412,415],{},[342,413,414],{},"Producer:"," publishes a message for another service",[25,417,418,421],{},[342,419,420],{},"Consumer:"," receives and processes a routed message",[25,423,424,427],{},[342,425,426],{},"Correlation value:"," connects a request to its success or error result",[25,429,430,431,437,438],{},"Further learning: ",[42,432,436],{"href":433,"target":45,"rel":434},"https:\u002F\u002Fwww.rabbitmq.com\u002Ftutorials",[435],"nofollow","RabbitMQ tutorials"," and ",[42,439,442],{"href":440,"target":45,"rel":441},"https:\u002F\u002Fwww.rabbitmq.com\u002Fdocs\u002Freliability",[435],"reliability guide",[11,444,447,450],{"estimated-seconds":445,"id":446,"level":15},"35","summary",[17,448,449],{"id":446},"Summary",[22,451,452,455,458,461],{},[25,453,454],{},"The app, workers, and database service communicate across internal VM boundaries through RabbitMQ",[25,456,457],{},"A predictable team-defined message contract and correlation value make the workflow observable; the example field names are not prescribed",[25,459,460],{},"The architecture evidence must prove routing, processing, transformed storage, failure, and recovery",[25,462,463],{},"Before milestone implementation, the team should be able to name each role, expected job, data boundary, and evidence path",{"title":378,"searchDepth":465,"depth":465,"links":466},2,[467,468,469,470,471,472,473,474,475,476,477],{"id":19,"depth":465,"text":20},{"id":54,"depth":465,"text":55},{"id":86,"depth":465,"text":87},{"id":110,"depth":465,"text":111},{"id":175,"depth":465,"text":176},{"id":213,"depth":465,"text":214},{"id":261,"depth":465,"text":262},{"id":335,"depth":465,"text":336},{"id":369,"depth":465,"text":372},{"id":404,"depth":465,"text":407},{"id":446,"depth":465,"text":449},"presentation","Systems Integration",null,"Trace one job through the required RabbitMQ-only service boundary and its evidence","Planned asynchronous Module 2 path, not rehearsed. Session 1 keeps this whole 14-minute orientation before the whole 25-minute RabbitMQ practice lesson, then allows 31 minutes of individual practice and 10 of recovery. Session 2 allows 45 minutes of group communication practice, 25 of proposal decisions, and 10 of handoff\u002Frecovery. Full assignment setup and implementation remain additional self-directed work.","14","0","md",{"sourcePresentations":487,"sourceVideoLink":489,"sourceVideoId":490,"sourceVideoTitle":491,"sourceVideoDuration":492,"revisionStatus":493},[488],"presentations\u002F01-required-architecture-overview.md","https:\u002F\u002Fyoutu.be\u002F6lxqppQi3rE","6lxqppQi3rE","IT90 Architecture Overview","13:43","reviewed",true,"20","\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Core",false,{"title":5,"description":481},"published","systems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview",[503,504,505,506,507],"systems-integration","architecture","rabbitmq","message-queue","dmz","2026-09-28T08:00:25Z","mmIY6uY9H7jOiSjfEhUKHV9oXUcY5aYeraiFb5fZmBU",[511,514,519,522,525,528,531,534,538,541,545,548,552,556,560,564,567,571,575,578,582,585,588,592,595,598,601,604,607,610,613,615,617,619,621,623,625,627,630,633,636,640,643,646,649,652,655,658,661,664,667,670,673,677,680,683,686,689,692,694,698,702,705,707,710,713,716,719,722,725,728,731,734,737,740,743,746,749,752,755,758,761,764,767,770,773,776,779,782,785,788,791,794,797,800,803,806,809,812,815,818,821,824,827,831,834,837,840,843,846,849,852,855,858,861,864,867,870,873,876,879,882,885,888,891,894,897,900,903,906,909,912,915,918,921,924,927,930,933,936,939,942,945,948,951,954,957,960,963,966,969,972,975,978,981,984,987,990,993,996,999,1002,1005,1008,1011,1014,1017,1020,1023,1026,1029,1032,1035,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1189,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273,1276,1279,1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459,1462,1465,1468,1471,1474,1477,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507,1510,1513,1516,1519,1522,1525,1528,1531,1534,1537,1540,1543,1546,1549,1552,1555,1558,1561,1564,1567,1570,1574,1577,1580,1583,1586,1589,1592,1594,1597,1600,1603,1606,1609,1611,1613,1615,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1679,1683,1687,1690,1694,1697,1700,1703,1706,1709,1712,1715,1719,1722,1725,1728,1731,1734,1737,1740,1743,1746,1749,1752,1755,1758,1761,1764,1767,1770,1773,1776,1779,1782,1785,1788,1791,1794,1797,1800,1803,1806,1809,1812,1815,1818,1821,1824,1827,1830,1833,1836,1839,1842,1845,1848,1851,1854,1857,1860,1862,1865,1868,1871,1874,1877,1880,1883,1886,1889,1892,1895,1898,1901,1904,1907,1910,1913,1916,1919,1922,1924,1926,1928,1930,1933,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1963,1966,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2008,2011,2014,2017,2020,2023,2026,2028,2031,2034,2036,2038,2041,2044,2047,2050,2053,2056],{"path":512,"title":513,"order":480,"module":480,"status":480},"\u002Fabout","About Content Version 3",{"path":515,"title":516,"order":517,"module":518,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?","10","1",{"path":520,"title":521,"order":495,"module":518,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?",{"path":523,"title":524,"order":517,"module":15,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-design-journal-and-treatment\u002F01-first-concept","First Concept, Journal, and Treatments",{"path":526,"title":527,"order":495,"module":15,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-design-journal-and-treatment\u002F02-concept-workshop","Concept Workshop: Pitch, Feedback, and Selection",{"path":529,"title":530,"order":517,"module":83,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-game-balance\u002F01-game-balance","Game Balance",{"path":532,"title":533,"order":495,"module":83,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-game-balance\u002F02-case-study-evaluation","Case Study Evaluation",{"path":535,"title":536,"order":517,"module":537,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-look-and-feel\u002F01-color-theory","Game Design: Color Theory","4",{"path":539,"title":540,"order":495,"module":537,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":542,"title":543,"order":517,"module":544,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-game-mechanics\u002F01-game-mechanics","Game Mechanics","5",{"path":546,"title":547,"order":495,"module":544,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":549,"title":550,"order":551,"module":544,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-game-mechanics\u002F03-boards-and-movement","Boards and Movement","30",{"path":553,"title":554,"order":517,"module":555,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness","6",{"path":557,"title":558,"order":517,"module":559,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F07-making-your-first-game\u002F01-planning-and-management","Planning And Managing Your Game","7",{"path":561,"title":562,"order":517,"module":517,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design","draft",{"path":565,"title":566,"order":495,"module":517,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":568,"title":569,"order":517,"module":570,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F11-entity-based-systems\u002F01-ecs","Entity-Based Systems","11",{"path":572,"title":573,"order":517,"module":574,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F12-level-mechanics-and-user-interfaces\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface","12",{"path":576,"title":577,"order":495,"module":574,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F12-level-mechanics-and-user-interfaces\u002F02-digital-prototype-presentation","Digital Prototype Presentation Deck",{"path":579,"title":580,"order":517,"module":581,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F13-actor-representations-and-artificial-intelligence\u002F01-actors-behavior-and-ai","Actors, Behavior, And AI","13",{"path":583,"title":584,"order":517,"module":483,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F14-particles-physics-and-digital-prototype-studio\u002F01-effects-particles-and-physics","Effects, Particle Systems, And Physics",{"path":586,"title":587,"order":495,"module":483,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F14-particles-physics-and-digital-prototype-studio\u002F02-recorded-project-showcase","Recorded Project Showcase",{"path":589,"title":590,"order":517,"module":591,"status":563},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F15-finale\u002F01-final-evaluation-and-postmortem","Final Evaluation And Postmortem","15",{"path":593,"title":594,"order":518,"module":484,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design",{"path":596,"title":597,"order":517,"module":15,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fworksheets\u002Fmodule-02-design-journal","Module 2 Design And Development Journal",{"path":599,"title":600,"order":495,"module":15,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fworksheets\u002Fmodule-02-one-page-treatment","Module 2 One-Page Treatment",{"path":602,"title":603,"order":106,"module":559,"status":500},"\u002Fgame-architecture-and-design\u002F2e\u002Fworksheets\u002Fmodule-07-game-design-treatment","Full Game Design Treatment",{"path":605,"title":606,"order":518,"module":484,"status":563},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":608,"title":609,"order":480,"module":480,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Revision Plan - Superseded Historical Baseline",{"path":611,"title":612,"order":480,"module":480,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Recording Plan - Superseded Historical Baseline",{"path":614,"title":516,"order":517,"module":518,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":616,"title":521,"order":495,"module":518,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":618,"title":530,"order":517,"module":15,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":620,"title":536,"order":517,"module":83,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":622,"title":540,"order":495,"module":83,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":624,"title":543,"order":517,"module":537,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":626,"title":547,"order":495,"module":537,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":628,"title":629,"order":517,"module":544,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":631,"title":632,"order":517,"module":555,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":634,"title":635,"order":495,"module":555,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":637,"title":638,"order":517,"module":639,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design","8",{"path":641,"title":642,"order":495,"module":639,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":644,"title":569,"order":517,"module":645,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","9",{"path":647,"title":648,"order":517,"module":517,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":650,"title":651,"order":495,"module":517,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":653,"title":654,"order":517,"module":570,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces",{"path":656,"title":657,"order":517,"module":574,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations",{"path":659,"title":660,"order":517,"module":581,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI",{"path":662,"title":663,"order":517,"module":483,"status":563},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine",{"path":665,"title":666,"order":518,"module":484,"status":563},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":668,"title":669,"order":517,"module":484,"status":563},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":671,"title":672,"order":495,"module":484,"status":563},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":674,"title":675,"order":676,"module":484,"status":563},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice","40",{"path":678,"title":679,"order":551,"module":484,"status":563},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint",{"path":681,"title":682,"order":484,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F00-learn-courses-platform-and-discord","Learn Courses Platform And Discord",{"path":684,"title":685,"order":517,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":687,"title":688,"order":495,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":690,"title":691,"order":551,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":693,"title":46,"order":676,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories",{"path":695,"title":696,"order":697,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions","50",{"path":699,"title":700,"order":701,"module":518,"status":500},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations","60",{"path":703,"title":704,"order":480,"module":480,"status":480},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":706,"title":704,"order":517,"module":518,"status":480},"\u002Fgeneral\u002Fbasic-command-line",{"path":708,"title":709,"order":480,"module":480,"status":500},"\u002F","Ethereal Lab Course Materials",{"path":711,"title":712,"order":517,"module":518,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","IT202 Setup Path And CLI Readiness",{"path":714,"title":715,"order":495,"module":518,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","IT202 Git And Terminal Handoff",{"path":717,"title":718,"order":551,"module":518,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","IT202 Repository And SSH Extension",{"path":720,"title":721,"order":676,"module":518,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","IT202 Git Workflow Handoff",{"path":723,"title":724,"order":697,"module":518,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Standalone PHP Setup",{"path":726,"title":727,"order":701,"module":518,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":729,"title":730,"order":106,"module":518,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches",{"path":732,"title":733,"order":50,"module":518,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup",{"path":735,"title":736,"order":171,"module":518,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox Or UTM",{"path":738,"title":739,"order":81,"module":518,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware",{"path":741,"title":742,"order":517,"module":15,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":744,"title":745,"order":495,"module":15,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Use Conditions Loops And Functions",{"path":747,"title":748,"order":517,"module":83,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":750,"title":751,"order":495,"module":83,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Intro To Forms And GET\u002FPOST",{"path":753,"title":754,"order":551,"module":83,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates","Understanding CSS\u002FJS Selectors And DOM Updates",{"path":756,"title":757,"order":517,"module":537,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":759,"title":760,"order":495,"module":537,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":762,"title":763,"order":551,"module":537,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":765,"title":766,"order":676,"module":537,"status":500},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":768,"title":769,"order":517,"module":544,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":771,"title":772,"order":495,"module":544,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":774,"title":775,"order":551,"module":544,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":777,"title":778,"order":676,"module":544,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":780,"title":781,"order":517,"module":555,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":783,"title":784,"order":495,"module":555,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":786,"title":787,"order":551,"module":555,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Dynamic Content",{"path":789,"title":790,"order":517,"module":559,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data",{"path":792,"title":793,"order":495,"module":559,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":795,"title":796,"order":551,"module":559,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":798,"title":799,"order":517,"module":639,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":801,"title":802,"order":495,"module":639,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":804,"title":805,"order":551,"module":639,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":807,"title":808,"order":517,"module":645,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":810,"title":811,"order":495,"module":645,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":813,"title":814,"order":517,"module":517,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":816,"title":817,"order":495,"module":517,"status":563},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":819,"title":820,"order":518,"module":484,"status":500},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":822,"title":823,"order":517,"module":518,"status":500},"\u002Finternet-applications\u002F2e\u002Fworksheets\u002Fmodule-01-getting-started","Module 1 Getting Started",{"path":825,"title":826,"order":495,"module":15,"status":500},"\u002Finternet-applications\u002F2e\u002Fworksheets\u002Fmodule-02-php-challenges","Module 2 PHP Challenge Scenarios",{"path":828,"title":829,"order":676,"module":517,"status":830},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":832,"title":833,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":835,"title":836,"order":495,"module":639,"status":830},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":838,"title":839,"order":551,"module":645,"status":830},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":841,"title":842,"order":544,"module":537,"status":500},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":844,"title":845,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":847,"title":848,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":850,"title":851,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02a-basic-cli-commands-for-course-work","Basic CLI Commands For Web Development",{"path":853,"title":854,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":856,"title":857,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03-version-control-with-git-and-github","Version Control With Git And GitHub",{"path":859,"title":860,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":862,"title":863,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F04-adding-the-instructor-template-to-your-repository","Starting From A Starter Template",{"path":865,"title":866,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F05-editing-locally-and-seeing-changes-run","Editing Locally And Seeing Changes Run",{"path":868,"title":869,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F06-building-a-local-ubuntu-web-server","Building A Local Ubuntu Web Server",{"path":871,"title":872,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":874,"title":875,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":877,"title":878,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F09-your-first-php-page-through-apache","Your First PHP Page Through Apache",{"path":880,"title":881,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F10-how-http-works-requests-and-responses","How HTTP Works: Requests And Responses",{"path":883,"title":884,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F11-http-methods-get-post-and-status-codes","HTTP Methods: GET, POST, And Status Codes",{"path":886,"title":887,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":889,"title":890,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F01-how-php-runs-on-the-server","How PHP Runs On The Server",{"path":892,"title":893,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":895,"title":896,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":898,"title":899,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":901,"title":902,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F05-data-types-strings-numbers-booleans-and-null","Data Types: Strings, Numbers, Booleans, And Null",{"path":904,"title":905,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":907,"title":908,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":910,"title":911,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":913,"title":914,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":916,"title":917,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":919,"title":920,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":922,"title":923,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":925,"title":926,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F03-common-html-elements-and-semantic-tags","Common HTML Elements And Semantic Tags",{"path":928,"title":929,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F04-building-forms-inputs-labels-and-buttons","Building Forms: Inputs, Labels, And Buttons",{"path":931,"title":932,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F05-get-requests-and-query-string-data","GET Requests And Query String Data",{"path":934,"title":935,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F06-post-requests-and-form-body-data","POST Requests And Form Body Data",{"path":937,"title":938,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F07-css-fundamentals-selectors-properties-and-values","CSS Fundamentals: Selectors, Properties, And Values",{"path":940,"title":941,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F08-the-box-model-margin-border-padding-and-content","The Box Model: Margin, Border, Padding, And Content",{"path":943,"title":944,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":946,"title":947,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09a-css-positioning-fixed-headers-and-body-offsets","CSS Positioning: Fixed Headers And Body Offsets",{"path":949,"title":950,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F10-selecting-and-changing-elements-with-javascript","Selecting And Changing Elements With JavaScript",{"path":952,"title":953,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F11-inline-validation-and-client-side-feedback","Inline Validation And Client-Side Feedback",{"path":955,"title":956,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":958,"title":959,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":961,"title":962,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F02-relational-concepts-tables-rows-columns-and-primary-keys","Relational Concepts: Tables, Rows, Columns, And Primary Keys",{"path":964,"title":965,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F03-writing-sql-create-insert-select-update-delete","Writing SQL: CREATE, INSERT, SELECT, UPDATE, DELETE",{"path":967,"title":968,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":970,"title":971,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":973,"title":974,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":976,"title":977,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":979,"title":980,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":982,"title":983,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":985,"title":986,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":988,"title":989,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":991,"title":992,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":994,"title":995,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F01-why-client-side-validation-is-not-enough","Why Client-Side Validation Is Not Enough",{"path":997,"title":998,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":1000,"title":1001,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":1003,"title":1004,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":1006,"title":1007,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":1009,"title":1010,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":1012,"title":1013,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":1015,"title":1016,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F08-allowing-login-by-username-or-email","Allowing Login By Username Or Email",{"path":1018,"title":1019,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":1021,"title":1022,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":1024,"title":1025,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F11-review-the-full-account-system-so-far","Review: The Full Account System So Far",{"path":1027,"title":1028,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":1030,"title":1031,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":1033,"title":1034,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F03-protecting-a-page-with-an-access-check","Protecting A Page With An Access Check",{"path":1036,"title":1037,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":1039,"title":1040,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":1042,"title":1043,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":1045,"title":1046,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":1048,"title":1049,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":1051,"title":1052,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":1054,"title":1055,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":1057,"title":1058,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":1060,"title":1061,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":1063,"title":1064,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":1066,"title":1067,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F02-json-a-common-data-format-for-the-web","JSON: A Common Data Format For The Web",{"path":1069,"title":1070,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F03-building-a-php-endpoint-that-returns-json","Building A PHP Endpoint That Returns JSON",{"path":1072,"title":1073,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F04-sending-requests-from-javascript-with-fetch","Sending Requests From JavaScript With Fetch",{"path":1075,"title":1076,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":1078,"title":1079,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F06-updating-the-page-with-returned-data","Updating The Page With Returned Data",{"path":1081,"title":1082,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":1084,"title":1085,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":1087,"title":1088,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F09-making-authenticated-api-calls-from-php","Making Authenticated API Calls From PHP",{"path":1090,"title":1091,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":1093,"title":1094,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F11-cors-and-cross-origin-request-basics","CORS And Cross-Origin Request Basics",{"path":1096,"title":1097,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F12-browser-devtools-for-web-application-debugging","Browser DevTools For Web Application Debugging",{"path":1099,"title":1100,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":1102,"title":1103,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":1105,"title":1106,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F03-responding-to-events-clicks-inputs-and-submissions","Responding To Events: Clicks, Inputs, And Submissions",{"path":1108,"title":1109,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F04-updating-the-dom-after-a-user-action","Updating The DOM After A User Action",{"path":1111,"title":1112,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":1114,"title":1115,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":1117,"title":1118,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":1120,"title":1121,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":1123,"title":1124,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":1126,"title":1127,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":1129,"title":1130,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":1132,"title":1133,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":1135,"title":1136,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":1138,"title":1139,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":1141,"title":1142,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":1144,"title":1145,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":1147,"title":1148,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":1150,"title":1151,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":1153,"title":1154,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":1156,"title":1157,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":1159,"title":1160,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":1162,"title":1163,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":1165,"title":1166,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":1168,"title":1169,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":1171,"title":1172,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":1174,"title":1175,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":1177,"title":1178,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":1180,"title":1181,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":1183,"title":1184,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":1186,"title":1187,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","Quiz - What Internet Applications Build","ready",{"path":1190,"title":1191,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Quiz - Files, Folders, And Project Structure",{"path":1193,"title":1194,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02a-basic-cli-commands-for-course-work","Quiz - Basic CLI Commands For Web Development",{"path":1196,"title":1197,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Quiz - Install Git And Terminal Tools",{"path":1199,"title":1200,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03-version-control-with-git-and-github","Quiz - Version Control With Git And GitHub",{"path":1202,"title":1203,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":1205,"title":1206,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F04-adding-the-instructor-template-to-your-repository","Quiz - Starting From A Starter Template",{"path":1208,"title":1209,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F05-editing-locally-and-seeing-changes-run","Quiz - Editing Locally And Seeing Changes Run",{"path":1211,"title":1212,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F06-building-a-local-ubuntu-web-server","Quiz - Building A Local Ubuntu Web Server",{"path":1214,"title":1215,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Quiz - Git Recovery And Common Mistakes",{"path":1217,"title":1218,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":1220,"title":1221,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F09-your-first-php-page-through-apache","Quiz - Your First PHP Page Through Apache",{"path":1223,"title":1224,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F10-how-http-works-requests-and-responses","Quiz - How HTTP Works: Requests And Responses",{"path":1226,"title":1227,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F11-http-methods-get-post-and-status-codes","Quiz - HTTP Methods: GET, POST, And Status Codes",{"path":1229,"title":1230,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Quiz - Local, QA, And Production Environments",{"path":1232,"title":1233,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F01-how-php-runs-on-the-server","Quiz - How PHP Runs On The Server",{"path":1235,"title":1236,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":1238,"title":1239,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":1241,"title":1242,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Quiz - Variables: Storing And Naming Values",{"path":1244,"title":1245,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F05-data-types-strings-numbers-booleans-and-null","Quiz - Data Types: Strings, Numbers, Booleans, And Null",{"path":1247,"title":1248,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Quiz - Arrays: Storing Lists Of Values",{"path":1250,"title":1251,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":1253,"title":1254,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":1256,"title":1257,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Quiz - Functions: Reusable Blocks Of Logic",{"path":1259,"title":1260,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Quiz - Reading And Debugging Error Messages",{"path":1262,"title":1263,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":1265,"title":1266,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Quiz - Writing A Valid HTML Document",{"path":1268,"title":1269,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F03-common-html-elements-and-semantic-tags","Quiz - Common HTML Elements And Semantic Tags",{"path":1271,"title":1272,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F04-building-forms-inputs-labels-and-buttons","Quiz - Building Forms: Inputs, Labels, And Buttons",{"path":1274,"title":1275,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F05-get-requests-and-query-string-data","Quiz - GET Requests And Query String Data",{"path":1277,"title":1278,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F06-post-requests-and-form-body-data","Quiz - POST Requests And Form Body Data",{"path":1280,"title":1281,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F07-css-fundamentals-selectors-properties-and-values","Quiz - CSS Fundamentals: Selectors, Properties, And Values",{"path":1283,"title":1284,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F08-the-box-model-margin-border-padding-and-content","Quiz - The Box Model: Margin, Border, Padding, And Content",{"path":1286,"title":1287,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":1289,"title":1290,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09a-css-positioning-fixed-headers-and-body-offsets","Quiz - CSS Positioning: Fixed Headers And Body Offsets",{"path":1292,"title":1293,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F10-selecting-and-changing-elements-with-javascript","Quiz - Selecting And Changing Elements With JavaScript",{"path":1295,"title":1296,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F11-inline-validation-and-client-side-feedback","Quiz - Inline Validation And Client-Side Feedback",{"path":1298,"title":1299,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":1301,"title":1302,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Quiz - Why Web Applications Need A Database",{"path":1304,"title":1305,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F02-relational-concepts-tables-rows-columns-and-primary-keys","Quiz - Relational Concepts: Tables, Rows, Columns, And Primary Keys",{"path":1307,"title":1308,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F03-writing-sql-create-insert-select-update-delete","Quiz - Writing SQL: CREATE, INSERT, SELECT, UPDATE, DELETE",{"path":1310,"title":1311,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":1313,"title":1314,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Quiz - Connecting PHP To MySQL With PDO",{"path":1316,"title":1317,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Quiz - Parameterized Queries And SQL Injection Prevention",{"path":1319,"title":1320,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":1322,"title":1323,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":1325,"title":1326,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":1328,"title":1329,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Quiz - Sessions: Remembering The Logged-In User",{"path":1331,"title":1332,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":1334,"title":1335,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Quiz - Navigation That Responds To Login State",{"path":1337,"title":1338,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F01-why-client-side-validation-is-not-enough","Quiz - Why Client-Side Validation Is Not Enough",{"path":1340,"title":1341,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Quiz - Sanitizing And Escaping User Input",{"path":1343,"title":1344,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Quiz - Required Fields And Length Rules",{"path":1346,"title":1347,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Quiz - Regular Expressions For Pattern Matching",{"path":1349,"title":1350,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Quiz - Server-Side Validation In PHP",{"path":1352,"title":1353,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Quiz - Cross-Site Scripting (XSS) Prevention",{"path":1355,"title":1356,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Quiz - Flash Messages And Persistent Feedback",{"path":1358,"title":1359,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F08-allowing-login-by-username-or-email","Quiz - Allowing Login By Username Or Email",{"path":1361,"title":1362,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Quiz - Building A Profile Edit Page",{"path":1364,"title":1365,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Quiz - Debugging Account And Authentication Problems",{"path":1367,"title":1368,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F11-review-the-full-account-system-so-far","Quiz - Review: The Full Account System So Far",{"path":1370,"title":1371,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":1373,"title":1374,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":1376,"title":1377,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F03-protecting-a-page-with-an-access-check","Quiz - Protecting A Page With An Access Check",{"path":1379,"title":1380,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Quiz - Safe Redirects After Login And Logout",{"path":1382,"title":1383,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":1385,"title":1386,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Quiz - Creating New Records With A Form",{"path":1388,"title":1389,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":1391,"title":1392,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":1394,"title":1395,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":1397,"title":1398,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":1400,"title":1401,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":1403,"title":1404,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":1406,"title":1407,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","Quiz - What Asynchronous Requests (AJAX) Solve",{"path":1409,"title":1410,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F02-json-a-common-data-format-for-the-web","Quiz - JSON: A Common Data Format For The Web",{"path":1412,"title":1413,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F03-building-a-php-endpoint-that-returns-json","Quiz - Building A PHP Endpoint That Returns JSON",{"path":1415,"title":1416,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F04-sending-requests-from-javascript-with-fetch","Quiz - Sending Requests From JavaScript With Fetch",{"path":1418,"title":1419,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Quiz - Handling Fetch Responses And Errors",{"path":1421,"title":1422,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F06-updating-the-page-with-returned-data","Quiz - Updating The Page With Returned Data",{"path":1424,"title":1425,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":1427,"title":1428,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":1430,"title":1431,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F09-making-authenticated-api-calls-from-php","Quiz - Making Authenticated API Calls From PHP",{"path":1433,"title":1434,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Quiz - Storing And Caching API Responses",{"path":1436,"title":1437,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F11-cors-and-cross-origin-request-basics","Quiz - CORS And Cross-Origin Request Basics",{"path":1439,"title":1440,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F12-browser-devtools-for-web-application-debugging","Quiz - Browser DevTools For Web Application Debugging",{"path":1442,"title":1443,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","Quiz - jQuery: Simplified DOM And Event Work",{"path":1445,"title":1446,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":1448,"title":1449,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F03-responding-to-events-clicks-inputs-and-submissions","Quiz - Responding To Events: Clicks, Inputs, And Submissions",{"path":1451,"title":1452,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F04-updating-the-dom-after-a-user-action","Quiz - Updating The DOM After A User Action",{"path":1454,"title":1455,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":1457,"title":1458,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Quiz - Saving External API Data Through PHP",{"path":1460,"title":1461,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":1463,"title":1464,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":1466,"title":1467,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":1469,"title":1470,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":1472,"title":1473,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":1475,"title":1476,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Quiz - Joining Tables: INNER JOIN, LEFT JOIN",{"path":1478,"title":1479,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","Quiz - User-Owned Records And Access Enforcement",{"path":1481,"title":1482,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Quiz - Connecting API Data To User Records",{"path":1484,"title":1485,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":1487,"title":1488,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":1490,"title":1491,"order":480,"module":480,"status":480},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":1493,"title":1494,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":1496,"title":1497,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":1499,"title":1500,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":1502,"title":1503,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":1505,"title":1506,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Quiz - Refreshing And Expiring External API Data",{"path":1508,"title":1509,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":1511,"title":1512,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Quiz - Cross-Site Request Forgery (CSRF) Protection",{"path":1514,"title":1515,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":1517,"title":1518,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":1520,"title":1521,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":1523,"title":1524,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":1526,"title":1527,"order":480,"module":480,"status":1188},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":1529,"title":1530,"order":518,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":1532,"title":1533,"order":15,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":1535,"title":1536,"order":83,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":1538,"title":1539,"order":537,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":1541,"title":1542,"order":544,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":1544,"title":1545,"order":555,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":1547,"title":1548,"order":559,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":1550,"title":1551,"order":484,"module":484,"status":563},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":1553,"title":1554,"order":517,"module":518,"status":563},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":1556,"title":1557,"order":495,"module":15,"status":563},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":1559,"title":1560,"order":551,"module":83,"status":563},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":1562,"title":1563,"order":676,"module":537,"status":563},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":1565,"title":1566,"order":697,"module":544,"status":563},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":1568,"title":1569,"order":701,"module":555,"status":563},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":1571,"title":1572,"order":1573,"module":555,"status":563},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":1575,"title":1576,"order":106,"module":559,"status":563},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":1578,"title":1579,"order":50,"module":639,"status":563},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":1581,"title":1582,"order":171,"module":645,"status":563},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":1584,"title":1585,"order":81,"module":517,"status":563},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":1587,"title":1588,"order":480,"module":480,"status":563},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Revision Plan - Superseded Historical Baseline",{"path":1590,"title":1591,"order":480,"module":480,"status":563},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Recording Plan - Superseded Historical Baseline",{"path":1593,"title":682,"order":484,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":1595,"title":1596,"order":517,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":1598,"title":1599,"order":495,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":1601,"title":1602,"order":551,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":1604,"title":1605,"order":676,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":1607,"title":1608,"order":697,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":1610,"title":727,"order":701,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":1612,"title":730,"order":106,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":1614,"title":733,"order":50,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":1616,"title":1617,"order":171,"module":518,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox",{"path":1619,"title":739,"order":81,"module":518,"status":563},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":1621,"title":742,"order":517,"module":15,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":1623,"title":745,"order":495,"module":15,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":1625,"title":748,"order":517,"module":83,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":1627,"title":751,"order":495,"module":83,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":1629,"title":754,"order":551,"module":83,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":1631,"title":757,"order":517,"module":537,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":1633,"title":760,"order":495,"module":537,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":1635,"title":763,"order":551,"module":537,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":1637,"title":766,"order":676,"module":537,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":1639,"title":769,"order":517,"module":544,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":1641,"title":772,"order":495,"module":544,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":1643,"title":1644,"order":551,"module":544,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Flash Messages And Redirect Feedback",{"path":1646,"title":778,"order":676,"module":544,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":1648,"title":781,"order":517,"module":555,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":1650,"title":784,"order":495,"module":555,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":1652,"title":787,"order":551,"module":555,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":1654,"title":790,"order":517,"module":559,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":1656,"title":793,"order":495,"module":559,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":1658,"title":796,"order":551,"module":559,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":1660,"title":799,"order":517,"module":639,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":1662,"title":802,"order":495,"module":639,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":1664,"title":805,"order":551,"module":639,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":1666,"title":808,"order":517,"module":645,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":1668,"title":811,"order":495,"module":645,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":1670,"title":814,"order":517,"module":517,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":1672,"title":817,"order":495,"module":517,"status":500},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":1674,"title":820,"order":518,"module":484,"status":500},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":1676,"title":1677,"order":1678,"module":517,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet","110",{"path":1680,"title":1681,"order":1682,"module":555,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":1684,"title":1685,"order":1686,"module":555,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":1688,"title":1689,"order":1678,"module":555,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":1691,"title":1692,"order":1693,"module":639,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026","120",{"path":1695,"title":1696,"order":209,"module":645,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026",{"path":1698,"title":1699,"order":517,"module":518,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":1701,"title":1702,"order":495,"module":15,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":1704,"title":1705,"order":551,"module":83,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":1707,"title":1708,"order":676,"module":537,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":1710,"title":1711,"order":697,"module":544,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":1713,"title":1714,"order":701,"module":555,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":1716,"title":1717,"order":1718,"module":555,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":1720,"title":1721,"order":106,"module":559,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":1723,"title":1724,"order":50,"module":639,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":1726,"title":1727,"order":171,"module":645,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":1729,"title":1730,"order":81,"module":517,"status":563},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":1732,"title":1733,"order":701,"module":518,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","IT114 Java Environment Setup",{"path":1735,"title":1736,"order":517,"module":15,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":1738,"title":1739,"order":495,"module":15,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":1741,"title":1742,"order":551,"module":15,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":1744,"title":1745,"order":676,"module":15,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":1747,"title":1748,"order":517,"module":83,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":1750,"title":1751,"order":495,"module":83,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":1753,"title":1754,"order":551,"module":83,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":1756,"title":1757,"order":676,"module":83,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":1759,"title":1760,"order":517,"module":537,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":1762,"title":1763,"order":495,"module":537,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":1765,"title":1766,"order":551,"module":537,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1","Java Sockets: Multi-Client Chat Server Part 1",{"path":1768,"title":1769,"order":676,"module":537,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2","Java Sockets: Multi-Client Chat Server Part 2",{"path":1771,"title":1772,"order":495,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Preparing the Java Project Framework",{"path":1774,"title":1775,"order":517,"module":559,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","GameServer: Ready Check",{"path":1777,"title":1778,"order":517,"module":559,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check","Java Advanced Programming Milestone 2: GameRooms and Ready Check",{"path":1780,"title":1781,"order":495,"module":559,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns","Java Advanced Programming Milestone 2: Turn-based Turns (Round-Robin)",{"path":1783,"title":1784,"order":551,"module":559,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns","Java Advanced Programming Milestone 2: Phase-based Turns",{"path":1786,"title":1787,"order":676,"module":559,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":1789,"title":1790,"order":697,"module":559,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":1792,"title":1793,"order":517,"module":639,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":1795,"title":1796,"order":495,"module":639,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":1798,"title":1799,"order":551,"module":639,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project","Java Advanced Programming Milestone 2: Equals 6 Mini Project",{"path":1801,"title":1802,"order":676,"module":639,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin","Java Advanced Programming Milestone 2: Project \"Nice Day For Fishin'\"",{"path":1804,"title":1805,"order":697,"module":639,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":1807,"title":1808,"order":517,"module":645,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":1810,"title":1811,"order":495,"module":645,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":1813,"title":1814,"order":551,"module":645,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":1816,"title":1817,"order":676,"module":645,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":1819,"title":1820,"order":697,"module":645,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":1822,"title":1823,"order":701,"module":645,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":1825,"title":1826,"order":517,"module":517,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":1828,"title":1829,"order":495,"module":517,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":1831,"title":1832,"order":551,"module":517,"status":563},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":1834,"title":1835,"order":639,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fbattleship","Battleship Project",{"path":1837,"title":1838,"order":544,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fdrawing","Drawing Project",{"path":1840,"title":1841,"order":83,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fgo-fish","Go Fish Project",{"path":1843,"title":1844,"order":537,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fhangman","Hangman Project",{"path":1846,"title":1847,"order":518,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects","IT114 Project Choices",{"path":1849,"title":1850,"order":555,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Frock-paper-scissors","Rock Paper Scissors Project",{"path":1852,"title":1853,"order":15,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fshared-requirements","IT114 Shared Project Requirements",{"path":1855,"title":1856,"order":559,"module":555,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Ftrivia","Trivia Project",{"path":1858,"title":1859,"order":518,"module":484,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":1861,"title":823,"order":517,"module":518,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fworksheets\u002Fmodule-01-getting-started",{"path":1863,"title":1864,"order":495,"module":15,"status":500},"\u002Fjava-advanced-programming\u002F2e\u002Fworksheets\u002Fmodule-02-java-challenges","Module 2 Java Challenges",{"path":1866,"title":1867,"order":517,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":1869,"title":1870,"order":495,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":1872,"title":1873,"order":551,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":1875,"title":1876,"order":517,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":1878,"title":1879,"order":495,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":1881,"title":1882,"order":551,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":1884,"title":1885,"order":517,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":1887,"title":1888,"order":495,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":1890,"title":1891,"order":551,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":1893,"title":1894,"order":676,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":1896,"title":1897,"order":517,"module":537,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":1899,"title":1900,"order":495,"module":537,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":1902,"title":1903,"order":551,"module":537,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":1905,"title":1906,"order":517,"module":544,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":1908,"title":1909,"order":495,"module":544,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":1911,"title":1912,"order":551,"module":544,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":1914,"title":1915,"order":484,"module":484,"status":563},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":1917,"title":1918,"order":480,"module":480,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Revision Plan - Superseded Historical Baseline",{"path":1920,"title":1921,"order":480,"module":480,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Recording Plan - Superseded Historical Baseline",{"path":1923,"title":1596,"order":517,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":1925,"title":1599,"order":495,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":1927,"title":1602,"order":551,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":1929,"title":1605,"order":676,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":1931,"title":1932,"order":697,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":1934,"title":1935,"order":701,"module":518,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":1937,"title":1736,"order":517,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":1939,"title":1739,"order":495,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":1941,"title":1742,"order":551,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":1943,"title":1745,"order":676,"module":15,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":1945,"title":1748,"order":517,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":1947,"title":1751,"order":495,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":1949,"title":1754,"order":551,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":1951,"title":1757,"order":676,"module":83,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":1953,"title":1760,"order":517,"module":537,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":1955,"title":1763,"order":495,"module":537,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":1957,"title":1766,"order":551,"module":537,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":1959,"title":1769,"order":517,"module":544,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":1961,"title":1962,"order":517,"module":555,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":1964,"title":1965,"order":495,"module":555,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":1967,"title":1968,"order":551,"module":555,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":1970,"title":1778,"order":517,"module":559,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":1972,"title":1781,"order":495,"module":559,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":1974,"title":1784,"order":551,"module":559,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":1976,"title":1787,"order":676,"module":559,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":1978,"title":1790,"order":697,"module":559,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":1980,"title":1793,"order":517,"module":639,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":1982,"title":1796,"order":495,"module":639,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":1984,"title":1799,"order":551,"module":639,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":1986,"title":1802,"order":676,"module":639,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":1988,"title":1805,"order":697,"module":639,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":1990,"title":1808,"order":517,"module":645,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":1992,"title":1811,"order":495,"module":645,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":1994,"title":1814,"order":551,"module":645,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":1996,"title":1817,"order":676,"module":645,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":1998,"title":1820,"order":697,"module":645,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":2000,"title":1823,"order":701,"module":645,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":2002,"title":1826,"order":517,"module":517,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":2004,"title":1829,"order":495,"module":517,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":2006,"title":1832,"order":551,"module":517,"status":563},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":496,"title":5,"order":495,"module":15,"status":500},{"path":2009,"title":2010,"order":517,"module":518,"status":563},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F02-team-workflow-and-project-evidence","Team Workflow And Project Evidence",{"path":2012,"title":2013,"order":551,"module":15,"status":500},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F03-architecture-planning-and-vm-communication-practice","Architecture Planning And VM Communication Practice",{"path":2015,"title":2016,"order":676,"module":83,"status":563},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F04-role-based-vm-baseline-and-centralized-logging","Role-Based VM Baseline And Logging System",{"path":2018,"title":2019,"order":697,"module":537,"status":500},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F05-authentication-and-authorization","Authentication And Authorization Across VMs",{"path":2021,"title":2022,"order":701,"module":544,"status":500},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F06-mvp-feature-work","MVP Feature Work",{"path":2024,"title":2025,"order":518,"module":484,"status":500},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":2027,"title":479,"order":518,"module":484,"status":500},"\u002Fsystems-integration",{"path":2029,"title":2030,"order":480,"module":480,"status":563},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Revision Plan - Superseded Historical Baseline",{"path":2032,"title":2033,"order":480,"module":480,"status":563},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Recording Plan - Superseded Historical Baseline",{"path":2035,"title":5,"order":517,"module":518,"status":500},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":2037,"title":2025,"order":518,"module":484,"status":500},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":2039,"title":2040,"order":480,"module":480,"status":480},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":2042,"title":2043,"order":480,"module":480,"status":480},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":2045,"title":2046,"order":480,"module":480,"status":480},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":2048,"title":2049,"order":480,"module":480,"status":480},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":2051,"title":2052,"order":495,"module":484,"status":563},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":2054,"title":2055,"order":551,"module":484,"status":563},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":2057,"title":2058,"order":517,"module":484,"status":563},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",{"id":4,"title":5,"audience":6,"body":2060,"contentType":478,"course":479,"courseId":480,"description":481,"estimateBasis":482,"estimatedDiscussionMinutes":480,"estimatedLiveMinutes":480,"estimatedRecordingMinutes":483,"estimatedTitleSeconds":480,"estimatedTotalMinutes":480,"estimatedTraceMinutes":484,"extension":485,"meta":2367,"module":15,"navigation":494,"order":495,"path":496,"presentationRole":497,"promptAssist":498,"revision":15,"semester":480,"seo":2369,"status":500,"stem":501,"syllabus":480,"tags":2370,"updated":508,"videoDuration":480,"videoId":480,"videoLink":480,"videoTitle":480,"week":15,"__hash__":509},{"type":8,"value":2061,"toc":2354},[2062,2080,2100,2114,2158,2180,2210,2266,2290,2314,2340],[11,2063,2064,2066,2076],{"estimated-seconds":13,"id":14,"level":15},[17,2065,20],{"id":19},[22,2067,2068,2070,2072,2074],{},[25,2069,27],{},[25,2071,30],{},[25,2073,33],{},[25,2075,36],{},[38,2077,40,2078,47],{},[42,2079,46],{"href":44,"target":45},[11,2081,2082,2084,2098],{"estimated-seconds":50,"id":51,"level":15},[17,2083,55],{"id":54},[22,2085,2086,2088,2090,2092,2094,2096],{},[25,2087,60],{},[25,2089,63],{},[25,2091,66],{},[25,2093,69],{},[25,2095,72],{},[25,2097,75],{},[38,2099,78],{},[11,2101,2102,2104,2108],{"estimated-seconds":81,"id":82,"level":83},[17,2103,87],{"id":86},[38,2105,2106],{},[91,2107],{"alt":93,"src":94,"variant":95},[22,2109,2110,2112],{},[25,2111,100],{},[25,2113,103],{},[11,2115,2116,2118,2154],{"estimated-seconds":106,"id":107,"level":83},[17,2117,111],{"id":110},[113,2119,2120,2128],{},[116,2121,2122],{},[119,2123,2124,2126],{},[122,2125,124],{},[122,2127,127],{},[129,2129,2130,2136,2142,2148],{},[119,2131,2132,2134],{},[134,2133,136],{},[134,2135,139],{},[119,2137,2138,2140],{},[134,2139,144],{},[134,2141,147],{},[119,2143,2144,2146],{},[134,2145,152],{},[134,2147,155],{},[119,2149,2150,2152],{},[134,2151,160],{},[134,2153,163],{},[22,2155,2156],{},[25,2157,168],{},[11,2159,2160,2162],{"estimated-seconds":171,"id":172,"level":83},[17,2161,176],{"id":175},[22,2163,2164,2166,2168,2176,2178],{},[25,2165,181],{},[25,2167,184],{},[25,2169,187,2170,192,2172,196,2174,200],{},[189,2171,191],{},[189,2173,195],{},[189,2175,199],{},[25,2177,203],{},[25,2179,206],{},[11,2181,2182,2184,2186,2208],{"estimated-seconds":209,"id":210,"level":15},[17,2183,214],{"id":213},[38,2185,217],{},[219,2187,2188,2196,2198,2200,2204,2206],{},[25,2189,223,2190,227,2192,231,2194],{},[189,2191,226],{},[189,2193,230],{},[189,2195,199],{},[25,2197,236],{},[25,2199,239],{},[25,2201,242,2202,245],{},[189,2203,199],{},[25,2205,248],{},[25,2207,251],{},[38,2209,254],{},[11,2211,2212,2214,2262],{"estimated-seconds":257,"id":258,"level":83},[17,2213,262],{"id":261},[113,2215,2216,2224],{},[116,2217,2218],{},[119,2219,2220,2222],{},[122,2221,271],{},[122,2223,274],{},[129,2225,2226,2232,2238,2244,2250,2256],{},[119,2227,2228,2230],{},[134,2229,281],{},[134,2231,284],{},[119,2233,2234,2236],{},[134,2235,289],{},[134,2237,292],{},[119,2239,2240,2242],{},[134,2241,297],{},[134,2243,300],{},[119,2245,2246,2248],{},[134,2247,305],{},[134,2249,308],{},[119,2251,2252,2254],{},[134,2253,313],{},[134,2255,316],{},[119,2257,2258,2260],{},[134,2259,321],{},[134,2261,324],{},[22,2263,2264],{},[25,2265,329],{},[11,2267,2268,2270],{"estimated-seconds":50,"id":332,"level":15},[17,2269,336],{"id":335},[22,2271,2272,2276,2280,2284,2288],{},[25,2273,2274,345],{},[342,2275,344],{},[25,2277,2278,351],{},[342,2279,350],{},[25,2281,2282,357],{},[342,2283,356],{},[25,2285,2286,363],{},[342,2287,362],{},[25,2289,366],{},[11,2291,2292,2294],{"estimated-seconds":50,"id":369,"level":15},[17,2293,372],{"id":369},[369,2295,2296,2306],{},[376,2297,2298],{"v-slot:questions":378},[219,2299,2300,2302,2304],{},[25,2301,383],{},[25,2303,386],{},[25,2305,389],{},[376,2307,2308,2310,2312],{"v-slot:answers":378},[393,2309,395],{},[393,2311,398],{},[393,2313,401],{},[11,2315,2316,2318],{"estimated-seconds":13,"id":404,"level":15},[17,2317,407],{"id":404},[22,2319,2320,2324,2328,2332],{},[25,2321,2322,415],{},[342,2323,414],{},[25,2325,2326,421],{},[342,2327,420],{},[25,2329,2330,427],{},[342,2331,426],{},[25,2333,430,2334,437,2337],{},[42,2335,436],{"href":433,"target":45,"rel":2336},[435],[42,2338,442],{"href":440,"target":45,"rel":2339},[435],[11,2341,2342,2344],{"estimated-seconds":445,"id":446,"level":15},[17,2343,449],{"id":446},[22,2345,2346,2348,2350,2352],{},[25,2347,454],{},[25,2349,457],{},[25,2351,460],{},[25,2353,463],{},{"title":378,"searchDepth":465,"depth":465,"links":2355},[2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366],{"id":19,"depth":465,"text":20},{"id":54,"depth":465,"text":55},{"id":86,"depth":465,"text":87},{"id":110,"depth":465,"text":111},{"id":175,"depth":465,"text":176},{"id":213,"depth":465,"text":214},{"id":261,"depth":465,"text":262},{"id":335,"depth":465,"text":336},{"id":369,"depth":465,"text":372},{"id":404,"depth":465,"text":407},{"id":446,"depth":465,"text":449},{"sourcePresentations":2368,"sourceVideoLink":489,"sourceVideoId":490,"sourceVideoTitle":491,"sourceVideoDuration":492,"revisionStatus":493},[488],{"title":5,"description":481},[503,504,505,506,507],1793199213253]