[{"data":1,"prerenderedAt":3472},["ShallowReactive",2],{"content-page:\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates":3,"content-page-quiz:none":1985,"content-navigation-index":1998},{"id":4,"title":5,"audience":6,"body":7,"contentType":1970,"course":1971,"description":1972,"estimateBasis":1973,"estimatedDiscussionMinutes":1974,"estimatedLiveMinutes":1975,"estimatedTotalMinutes":1976,"extension":1977,"meta":1978,"module":156,"navigation":1979,"order":1980,"path":1981,"presentationRole":1982,"promptAssist":1983,"revision":1984,"semester":1985,"seo":1986,"status":1987,"stem":1988,"syllabus":1985,"tags":1989,"updated":1992,"videoDuration":1993,"videoId":1994,"videoLink":1995,"videoTitle":1996,"week":156,"__hash__":1997},"content\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates.md","Understanding CSS\u002FJS Selectors And DOM Updates","student",{"type":8,"value":9,"toc":1925},"minimark",[10,42,90,153,250,292,349,411,691,725,756,796,846,886,924,1011,1014,1040,1072,1104,1160,1214,1239,1302,1332,1373,1408,1473,1508,1578,1634,1673,1713,1753,1816,1845],[11,12,15,19,23],"slide",{"id":13,"level":14},"main-idea","2",[16,17,18],"h2",{"id":13},"Main Idea",[20,21,22],"p",{},"CSS and JavaScript both rely on matching the HTML correctly",[24,25,26,30,33,36,39],"ul",{},[27,28,29],"li",{},"CSS selectors choose which elements receive visual rules",[27,31,32],{},"JavaScript selectors choose which elements can respond or change",[27,34,35],{},"Classes are useful shared hooks for style and state",[27,37,38],{},"Broken paths and mismatched selectors are the common first bugs",[27,40,41],{},"The DOM is the browser's live model of the loaded page",[11,43,45,48],{"id":44,"level":14},"practice-workspace",[16,46,47],{"id":44},"Practice Workspace",[24,49,50,57,63,66,80,83],{},[27,51,52,53],{},"Work inside ",[54,55,56],"code",{},"public_html\u002Fm03\u002Flessons\u002F",[27,58,59,60],{},"Lesson branch: ",[54,61,62],{},"Module03-CSS-JS-DOM-Intro",[27,64,65],{},"Create the folder if it is missing",[27,67,68,69,72,73,76,77],{},"Use files such as ",[54,70,71],{},"styled-page.html",", ",[54,74,75],{},"site.css",", and ",[54,78,79],{},"dom-update.html",[27,81,82],{},"Keep CSS and JavaScript files near the HTML files that use them",[27,84,85,86,89],{},"When the page works, run ",[54,87,88],{},"git status",", stage the changed files, and commit",[11,91,93,96],{"id":92,"level":14},"css-location",[16,94,95],{"id":92},"CSS Location",[97,98,102,122],"two-col",{"gap":99,"left-width":100,"right-width":101},"lg","1.2fr","0.8fr",[103,104,106,111,115,119],"template",{"v-slot:left":105},"",[107,108,110],"h3",{"id":109},"html","HTML",[112,113],"code-snippet",{"language":109,"src":114},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fcss-location-html-01.html",[107,116,118],{"id":117},"css","CSS",[112,120],{"language":117,"src":121},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fcss-location-css-02.css",[103,123,124,128,132,136],{"v-slot:right":105},[107,125,127],{"id":126},"save-css-as","Save CSS As",[112,129],{"language":130,"src":131},"text","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fcss-location-file-02.txt",[107,133,135],{"id":134},"choose-the-location","Choose The Location",[24,137,138,141,144,147,150],{},[27,139,140],{},"External CSS is the course default",[27,142,143],{},"Internal CSS is okay for tiny one-page demos",[27,145,146],{},"Inline CSS is mostly for quick tests or rare one-off overrides",[27,148,149],{},"Location affects reuse, readability, and override behavior",[27,151,152],{},"See the slides below for tradeoffs and priority order",[11,154,157,160],{"id":155,"level":156},"css-inclusion-options","3",[107,158,159],{"id":155},"CSS Inclusion Options",[97,161,163,208],{"gap":99,"left-width":162,"right-width":162},"1fr",[103,164,165,168,190,193],{"v-slot:left":105},[20,166,167],{},"External stylesheet:",[24,169,170,181,184,187],{},[27,171,172,173,176,177,180],{},"Use ",[54,174,175],{},"\u003Clink>"," to load a ",[54,178,179],{},".css"," file",[27,182,183],{},"Best default for course projects",[27,185,186],{},"Reusable across pages",[27,188,189],{},"Requires the file path to be correct",[20,191,192],{},"Internal stylesheet:",[24,194,195,202,205],{},[27,196,197,198,201],{},"Use a ",[54,199,200],{},"\u003Cstyle>"," element in the HTML",[27,203,204],{},"Useful for one-page demos or quick experiments",[27,206,207],{},"Can clutter the HTML if it grows",[103,209,210,213,231,234],{"v-slot:right":105},[20,211,212],{},"Inline CSS:",[24,214,215,222,225,228],{},[27,216,217,218,221],{},"Use the ",[54,219,220],{},"style"," attribute on one element",[27,223,224],{},"Fast for testing a single style",[27,226,227],{},"Hard to reuse and easy to forget",[27,229,230],{},"Usually avoid in finished course pages",[20,232,233],{},"Import from CSS:",[24,235,236,242,245],{},[27,237,172,238,241],{},[54,239,240],{},"@import"," inside another CSS file",[27,243,244],{},"Can split CSS into files",[27,246,247,248],{},"Often slower and less clear for beginners than ",[54,249,175],{},[11,251,253,256,259,286],{"id":252,"level":156},"css-priority-order",[107,254,255],{"id":252},"CSS Priority Order",[20,257,258],{},"When rules conflict, the browser compares more than one thing.",[260,261,262,265,271,274,280],"ol",{},[27,263,264],{},"Browser defaults apply first.",[27,266,267,268,270],{},"External CSS and ",[54,269,200],{}," rules apply in source order.",[27,272,273],{},"More specific selectors usually beat less specific selectors.",[27,275,276,277,279],{},"Inline ",[54,278,220],{}," attribute rules usually beat normal stylesheet rules.",[27,281,282,285],{},[54,283,284],{},"!important"," can override normal priority, but it is easy to overuse.",[20,287,288,289,291],{},"For this course, prefer external CSS, class selectors, and clear source order before reaching for inline styles or ",[54,290,284],{},".",[11,293,295,298],{"id":294,"level":14},"selector-anatomy",[16,296,297],{"id":294},"Selector Anatomy",[97,299,300,305],{"gap":99,"left-width":162,"right-width":162},[103,301,302],{"v-slot:left":105},[112,303],{"language":109,"src":304},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fselector-anatomy-03.html",[103,306,307,311],{"v-slot:right":105},[107,308,310],{"id":309},"read-it-as","Read It As",[24,312,313,319,331,337,343],{},[27,314,315,316],{},"Selector: ",[54,317,318],{},".status-message",[27,320,321,322,72,325,72,328],{},"Properties: ",[54,323,324],{},"border",[54,326,327],{},"background",[54,329,330],{},"padding",[27,332,333,334],{},"Values: the part after ",[54,335,336],{},":",[27,338,339,340],{},"Declaration ending: ",[54,341,342],{},";",[27,344,345,346],{},"Matching HTML: ",[54,347,348],{},"class=\"status-message\"",[11,350,352,355],{"id":351,"level":14},"selector-types",[16,353,354],{"id":351},"Selector Types",[97,356,357,388],{"gap":99,"left-width":162,"right-width":162},[103,358,359,363],{"v-slot:left":105},[107,360,362],{"id":361},"common-selectors","Common Selectors",[24,364,365,371,376,382],{},[27,366,367,368],{},"Element selector: ",[54,369,370],{},"body",[27,372,373,374],{},"Class selector: ",[54,375,318],{},[27,377,378,379],{},"ID selector: ",[54,380,381],{},"#site-header",[27,383,384,385],{},"Descendant selector: ",[54,386,387],{},"main .status-message",[103,389,390,394],{"v-slot:right":105},[107,391,393],{"id":392},"practical-rule","Practical Rule",[24,395,396,399,402,405,408],{},[27,397,398],{},"Use element selectors for broad defaults",[27,400,401],{},"Use classes for reusable styling",[27,403,404],{},"Use ids sparingly for unique page elements",[27,406,407],{},"Selector text must match the HTML exactly",[27,409,410],{},"See the slide below for a selector pattern chart",[11,412,414,417],{"id":413,"level":156},"selector-pattern-chart",[107,415,416],{"id":413},"Selector Pattern Chart",[97,418,419,558],{"gap":99,"left-width":162,"right-width":162},[103,420,421],{"v-slot:left":105},[422,423,424,440],"table",{},[425,426,427],"thead",{},[428,429,430,434,437],"tr",{},[431,432,433],"th",{},"Selector",[431,435,436],{},"Example",[431,438,439],{},"Matches",[441,442,443,457,469,482,494,507,519,532,545],"tbody",{},[428,444,445,449,454],{},[446,447,448],"td",{},"Universal",[446,450,451],{},[54,452,453],{},"*",[446,455,456],{},"every element",[428,458,459,462,466],{},[446,460,461],{},"Type",[446,463,464],{},[54,465,20],{},[446,467,468],{},"every paragraph",[428,470,471,474,479],{},[446,472,473],{},"Class",[446,475,476],{},[54,477,478],{},".card",[446,480,481],{},"elements with that class",[428,483,484,487,491],{},[446,485,486],{},"ID",[446,488,489],{},[54,490,381],{},[446,492,493],{},"one matching id",[428,495,496,499,504],{},[446,497,498],{},"Group",[446,500,501],{},[54,502,503],{},"h1, h2",[446,505,506],{},"either selector",[428,508,509,512,516],{},[446,510,511],{},"Descendant",[446,513,514],{},[54,515,387],{},[446,517,518],{},"nested match anywhere inside",[428,520,521,524,529],{},[446,522,523],{},"Child",[446,525,526],{},[54,527,528],{},"nav > a",[446,530,531],{},"direct child only",[428,533,534,537,542],{},[446,535,536],{},"Sibling",[446,538,539],{},[54,540,541],{},"h2 + p",[446,543,544],{},"next sibling",[428,546,547,550,555],{},[446,548,549],{},"Later sibling",[446,551,552],{},[54,553,554],{},"h2 ~ p",[446,556,557],{},"later siblings",[103,559,560],{"v-slot:right":105},[422,561,562,572],{},[425,563,564],{},[428,565,566,568,570],{},[431,567,433],{},[431,569,436],{},[431,571,439],{},[441,573,574,587,600,613,626,639,652,665,678],{},[428,575,576,579,584],{},[446,577,578],{},"Attribute exists",[446,580,581],{},[54,582,583],{},"input[required]",[446,585,586],{},"has the attribute",[428,588,589,592,597],{},[446,590,591],{},"Attribute equals",[446,593,594],{},[54,595,596],{},"input[type=\"email\"]",[446,598,599],{},"exact value",[428,601,602,605,610],{},[446,603,604],{},"Starts with",[446,606,607],{},[54,608,609],{},"a[href^=\"https\"]",[446,611,612],{},"value begins with text",[428,614,615,618,623],{},[446,616,617],{},"Ends with",[446,619,620],{},[54,621,622],{},"img[src$=\".png\"]",[446,624,625],{},"value ends with text",[428,627,628,631,636],{},[446,629,630],{},"Contains",[446,632,633],{},[54,634,635],{},"a[href*=\"github\"]",[446,637,638],{},"value contains text",[428,640,641,644,649],{},[446,642,643],{},"State",[446,645,646],{},[54,647,648],{},"a:hover",[446,650,651],{},"state is active",[428,653,654,657,662],{},[446,655,656],{},"Position",[446,658,659],{},[54,660,661],{},"li:nth-child(2)",[446,663,664],{},"structural position",[428,666,667,670,675],{},[446,668,669],{},"Negation",[446,671,672],{},[54,673,674],{},".card:not(.featured)",[446,676,677],{},"excludes a match",[428,679,680,683,688],{},[446,681,682],{},"Pseudo element",[446,684,685],{},[54,686,687],{},".note::before",[446,689,690],{},"generated part of element",[11,692,694,697],{"id":693,"level":14},"cascade-and-specificity",[16,695,696],{"id":693},"Cascade And Specificity",[97,698,701,706],{"gap":99,"left-width":699,"right-width":700},"1.05fr","0.95fr",[103,702,703],{"v-slot:left":105},[112,704],{"language":109,"src":705},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fcascade-and-specificity-09.html",[103,707,708,711],{"v-slot:right":105},[20,709,710],{},"When more than one rule matches:",[24,712,713,716,719,722],{},[27,714,715],{},"Later matching rules can override earlier matching rules",[27,717,718],{},"More specific selectors usually win",[27,720,721],{},"Classes are more specific than element selectors",[27,723,724],{},"Avoid fighting CSS with overly specific selectors early on",[11,726,728,731,753],{"id":727,"level":14},"build-the-styled-page",[16,729,730],{"id":727},"Build The Styled Page",[97,732,733,743],{"gap":99,"left-width":162,"right-width":162},[103,734,735,740],{"v-slot:left":105},[107,736,738],{"id":737},"styled-pagehtml",[54,739,71],{},[112,741],{"language":109,"src":742},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fstyled-page-html-04.html",[103,744,745,750],{"v-slot:right":105},[107,746,748],{"id":747},"sitecss",[54,749,75],{},[112,751],{"language":117,"src":752},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fsite-css-05.css",[20,754,755],{},"See the slide below for what to verify after both files are saved.",[11,757,759,762,765],{"id":758,"level":156},"styled-page-checks",[107,760,761],{"id":758},"Styled Page Checks",[20,763,764],{},"After saving both files:",[24,766,767,773,778,784,790],{},[27,768,769,770,772],{},"Open ",[54,771,71],{}," through the server",[27,774,775,776],{},"Confirm the browser loads ",[54,777,75],{},[27,779,780,781,783],{},"Check that ",[54,782,318],{}," styles the paragraph",[27,785,780,786,789],{},[54,787,788],{},".primary-action"," styles the button",[27,791,792,793,795],{},"If nothing changes, inspect the ",[54,794,175],{}," path first",[11,797,799,802],{"id":798,"level":14},"responsive-rule",[16,800,801],{"id":798},"Responsive Rule",[97,803,804,809],{"gap":99,"left-width":699,"right-width":700},[103,805,806],{"v-slot:left":105},[112,807],{"language":109,"src":808},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fresponsive-rule-08.html",[103,810,811,814],{"v-slot:right":105},[20,812,813],{},"Read it as:",[24,815,816,819,825,831,834,840,843],{},[27,817,818],{},"Default layout works first on narrow screens",[27,820,821,824],{},[54,822,823],{},"display: grid"," starts a grid layout for the direct children",[27,826,827,830],{},[54,828,829],{},"grid-template-columns"," controls how many columns exist and how wide they are",[27,832,833],{},"Media query changes layout only when the screen meets the condition",[27,835,836,839],{},[54,837,838],{},"gap"," controls space between grid items",[27,841,842],{},"Responsive CSS should adapt content, not hide broken layout",[27,844,845],{},"See the slides below for media query details and responsive habits",[11,847,849,852],{"id":848,"level":156},"media-query-anatomy",[107,850,851],{"id":848},"Media Query Anatomy",[97,853,854,859],{"gap":99,"left-width":162,"right-width":162},[103,855,856],{"v-slot:left":105},[112,857],{"language":109,"src":858},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fmedia-query-anatomy-15.html",[103,860,861,863],{"v-slot:right":105},[20,862,813],{},[24,864,865,871,877,880,883],{},[27,866,867,870],{},[54,868,869],{},"@media",": starts a conditional CSS block",[27,872,873,876],{},[54,874,875],{},"min-width: 700px",": applies at 700px and wider",[27,878,879],{},"Rules inside override or add to earlier rules",[27,881,882],{},"The closing braces matter",[27,884,885],{},"Put the default rule before the media query",[11,887,889,892],{"id":888,"level":156},"responsive-design-habits",[107,890,891],{"id":888},"Responsive Design Habits",[97,893,894,899],{"gap":99,"left-width":162,"right-width":162},[103,895,896],{"v-slot:left":105},[112,897],{"language":109,"src":898},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fresponsive-habits-16.html",[103,900,901,904],{"v-slot:right":105},[20,902,903],{},"Build from small to large:",[24,905,906,909,912,915,918,921],{},[27,907,908],{},"Start with one readable column",[27,910,911],{},"Add columns when space exists",[27,913,914],{},"Choose flexible units and constraints before adding breakpoints",[27,916,917],{},"Avoid fixed pixel widths for main layouts",[27,919,920],{},"Test by resizing the browser, not only full screen",[27,922,923],{},"See the slide below for common unit choices",[11,925,927,930,933,1008],{"id":926,"level":156},"responsive-units-and-constraints",[107,928,929],{"id":926},"Responsive Units And Constraints",[20,931,932],{},"Use units based on what should flex:",[24,934,935,941,947,953,959,969,978,984,990,996,1002],{},[27,936,937,940],{},[54,938,939],{},"fr",": shares leftover grid space between columns",[27,942,943,946],{},[54,944,945],{},"%",": sizes relative to the parent container",[27,948,949,952],{},[54,950,951],{},"em",": scales from the current element's font size; useful when spacing should grow with that component",[27,954,955,958],{},[54,956,957],{},"rem",": scales from the root font size; useful for spacing and readable fixed-feeling widths",[27,960,961,964,965,968],{},[54,962,963],{},"vw"," and ",[54,966,967],{},"vh",": size relative to the viewport width or height",[27,970,971,964,974,977],{},[54,972,973],{},"vmin",[54,975,976],{},"vmax",": use the smaller or larger viewport side",[27,979,980,983],{},[54,981,982],{},"ch",": sizes based on character width; useful for readable line length",[27,985,986,989],{},[54,987,988],{},"minmax(12rem, 1fr)",": sets a minimum size but still allows growth",[27,991,992,995],{},[54,993,994],{},"clamp(1rem, 2vw, 2rem)",": sets a minimum, flexible middle, and maximum value",[27,997,998,1001],{},[54,999,1000],{},"max-width",": keeps text and page shells from stretching too wide",[27,1003,1004,1007],{},[54,1005,1006],{},"min-width",": useful in media queries and sometimes for controls that should not collapse",[20,1009,1010],{},"Constraints are guardrails. They let the layout flex, but keep content readable.",[20,1012,1013],{},"::",[11,1015,1017,1020,1023],{"id":1016,"level":14},"fixed-viewport-layout",[16,1018,1019],{"id":1016},"Fixed Viewport Layout",[20,1021,1022],{},"For app-style pages:",[24,1024,1025,1028,1031,1034,1037],{},[27,1026,1027],{},"Pin the header first",[27,1029,1030],{},"Pin the footer second",[27,1032,1033],{},"Give the middle region its own scroll area",[27,1035,1036],{},"Reserve vertical space so fixed elements do not cover content",[27,1038,1039],{},"See the slides below to build the layout one region at a time",[11,1041,1043,1046],{"id":1042,"level":156},"fixed-header",[107,1044,1045],{"id":1042},"Fixed Header",[97,1047,1048,1053],{"gap":99,"left-width":162,"right-width":162},[103,1049,1050],{"v-slot:left":105},[112,1051],{"language":109,"src":1052},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Ffixed-viewport-header-17.html",[103,1054,1055,1058],{"v-slot:right":105},[20,1056,1057],{},"What this does:",[24,1059,1060,1063,1066,1069],{},[27,1061,1062],{},"Removes default page margin",[27,1064,1065],{},"Pins the header to the viewport top",[27,1067,1068],{},"Stretches it across the page",[27,1070,1071],{},"Gives the header predictable height",[11,1073,1075,1078],{"id":1074,"level":156},"fixed-footer",[107,1076,1077],{"id":1074},"Fixed Footer",[97,1079,1080,1085],{"gap":99,"left-width":162,"right-width":162},[103,1081,1082],{"v-slot:left":105},[112,1083],{"language":109,"src":1084},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Ffixed-viewport-footer-18.html",[103,1086,1087,1090],{"v-slot:right":105},[20,1088,1089],{},"What this adds:",[24,1091,1092,1095,1098,1101],{},[27,1093,1094],{},"Pins the footer to the viewport bottom",[27,1096,1097],{},"Keeps it visible while content changes",[27,1099,1100],{},"Reserves a known footer height",[27,1102,1103],{},"Still needs the middle region to avoid overlap",[11,1105,1107,1110],{"id":1106,"level":156},"fixed-middle-region",[107,1108,1109],{"id":1106},"Fixed Middle Region",[97,1111,1112,1117],{"gap":99,"left-width":162,"right-width":162},[103,1113,1114],{"v-slot:left":105},[112,1115],{"language":109,"src":1116},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Ffixed-viewport-middle-19.html",[103,1118,1119,1122],{"v-slot:right":105},[20,1120,1121],{},"What this finishes:",[24,1123,1124,1127,1133,1139,1145,1151,1154],{},[27,1125,1126],{},"Stops the window itself from scrolling",[27,1128,1129,1130],{},"Sizes content between header and footer with ",[54,1131,1132],{},"calc()",[27,1134,1135,1138],{},[54,1136,1137],{},"100vh"," means the full viewport height",[27,1140,1141,1144],{},[54,1142,1143],{},"7rem"," is the header height plus the footer height",[27,1146,1147,1150],{},[54,1148,1149],{},"calc(100vh - 7rem)"," subtracts the fixed regions from the available height",[27,1152,1153],{},"Uses margins that match fixed region heights",[27,1155,1156,1157],{},"Lets the middle content scroll with ",[54,1158,1159],{},"overflow: auto",[11,1161,1163,1166],{"id":1162,"level":14},"sidebar-layout-state",[16,1164,1165],{"id":1162},"Sidebar Layout State",[97,1167,1168,1173],{"gap":99,"left-width":699,"right-width":700},[103,1169,1170],{"v-slot:left":105},[112,1171],{"language":109,"src":1172},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fsidebar-layout-state-11.html",[103,1174,1175,1178],{"v-slot:right":105},[20,1176,1177],{},"Use CSS to describe each layout state:",[24,1179,1180,1185,1190,1196,1202,1208,1211],{},[27,1181,1182,1184],{},[54,1183,823],{}," lets the direct children become grid columns",[27,1186,1187,1189],{},[54,1188,829],{}," defines the sidebar column and content column",[27,1191,1192,1193],{},"The sidebar uses a fixed flexible width such as ",[54,1194,1195],{},"18rem",[27,1197,1198,1199,1201],{},"The content column uses ",[54,1200,162],{}," to take the remaining grid space",[27,1203,1204,1207],{},[54,1205,1206],{},"var(--sidebar-width)"," reads the current CSS variable value",[27,1209,1210],{},"A collapsed state changes one CSS variable",[27,1212,1213],{},"JavaScript should toggle state classes, not rewrite every style",[11,1215,1217,1221,1225],{"id":1216,"level":14},"dom-flow",[16,1218,1220],{"id":1219},"dom-update-flow","DOM Update Flow",[1222,1223],"mermaid",{"code":1224},"flowchart LR\n  A[HTML element] --> B[JavaScript selector]\n  B --> C[Event handler]\n  C --> D[Update text or class]\n  D --> E[Visible page changes]\n",[24,1226,1227,1230,1233,1236],{},[27,1228,1229],{},"Select first",[27,1231,1232],{},"Verify the element exists",[27,1234,1235],{},"Attach the event",[27,1237,1238],{},"Update the intended element",[11,1240,1242,1245],{"id":1241,"level":14},"build-the-dom-page",[16,1243,1244],{"id":1241},"Build The DOM Page",[97,1246,1249,1254],{"gap":99,"left-width":1247,"right-width":1248},"1.1fr","0.9fr",[103,1250,1251],{"v-slot:left":105},[112,1252],{"language":109,"src":1253},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fbuild-the-page-02.html",[103,1255,1256,1260,1263,1267],{"v-slot:right":105},[107,1257,1259],{"id":1258},"save-as","Save As",[112,1261],{"language":130,"src":1262},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fsave-as-03.txt",[107,1264,1266],{"id":1265},"what-to-notice","What To Notice",[24,1268,1269,1278,1287,1293,1299],{},[27,1270,1271,1274,1275],{},[54,1272,1273],{},"querySelector",": finds the first matching element or returns ",[54,1276,1277],{},"null",[27,1279,1280,1283,1284],{},[54,1281,1282],{},"#status",": selector for ",[54,1285,1286],{},"id=\"status\"",[27,1288,1289,1292],{},[54,1290,1291],{},"addEventListener",": run code after an event",[27,1294,1295,1298],{},[54,1296,1297],{},"textContent",": set plain text safely",[27,1300,1301],{},"See the slide below for expected output and selector checks",[11,1303,1305,1308,1311,1314,1317,1320,1323,1326],{"id":1304,"level":156},"expected-dom-behavior",[107,1306,1307],{"id":1304},"Expected DOM Behavior",[20,1309,1310],{},"Before click:",[112,1312],{"language":130,"src":1313},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fexpected-behavior-04.txt",[20,1315,1316],{},"After click:",[112,1318],{"language":130,"src":1319},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fexpected-behavior-05.txt",[20,1321,1322],{},"Console check:",[112,1324],{"language":130,"src":1325},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fexpected-behavior-06.txt",[20,1327,1328,1329,1331],{},"If either console value is ",[54,1330,1277],{},", the selector does not match the HTML",[11,1333,1335,1338,1348],{"id":1334,"level":14},"script-location",[16,1336,1337],{"id":1334},"Script Location",[20,1339,1340,1341,1344,1345],{},"This lesson places ",[54,1342,1343],{},"\u003Cscript>"," near the end of ",[54,1346,1347],{},"\u003Cbody>",[24,1349,1350,1353,1360,1363],{},[27,1351,1352],{},"HTML elements exist before JavaScript searches for them",[27,1354,1355,1356,1359],{},"Simpler than introducing ",[54,1357,1358],{},"defer"," on the first DOM practice",[27,1361,1362],{},"External scripts are preferred once behavior grows",[27,1364,1365,1366,1369,1370,1372],{},"External ",[54,1367,1368],{},".js"," files do not include the ",[54,1371,1343],{}," tag",[11,1374,1376,1379],{"id":1375,"level":14},"external-script-with-defer",[16,1377,1378],{"id":1375},"External Script With Defer",[97,1380,1381,1391],{"gap":99,"left-width":162,"right-width":162},[103,1382,1383,1388],{"v-slot:left":105},[107,1384,1386],{"id":1385},"dom-updatehtml",[54,1387,79],{},[112,1389],{"language":109,"src":1390},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fexternal-script-with-defer-10.html",[103,1392,1393,1399,1403],{"v-slot:right":105},[107,1394,1396],{"id":1395},"statusjs",[54,1397,1398],{},"status.js",[112,1400],{"language":1401,"src":1402},"js","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fexternal-script-with-defer-11.js",[20,1404,1405,1407],{},[54,1406,1358],{}," lets the browser download the script while HTML continues loading",[11,1409,1411,1414],{"id":1410,"level":14},"selector-api-comparison",[16,1412,1413],{"id":1410},"Selector API Comparison",[97,1415,1416,1421],{"gap":99,"left-width":1247,"right-width":1248},[103,1417,1418],{"v-slot:left":105},[112,1419],{"language":109,"src":1420},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fselector-api-comparison-12.html",[103,1422,1423,1426],{"v-slot:right":105},[20,1424,1425],{},"Use the simplest selector that fits:",[24,1427,1428,1437,1445,1470],{},[27,1429,1430,1433,1434,1436],{},[54,1431,1432],{},"getElementById",": one known id, or ",[54,1435,1277],{}," if no id matches",[27,1438,1439,1441,1442,1444],{},[54,1440,1273],{},": first CSS selector match, or ",[54,1443,1277],{}," if nothing matches",[27,1446,1447,1450,1451,1454],{},[54,1448,1449],{},"querySelectorAll",": all matches as a ",[54,1452,1453],{},"NodeList",[24,1455,1456,1462],{},[27,1457,1458,1459,1461],{},"A ",[54,1460,1453],{}," is list-like, but not exactly a regular array",[27,1463,1464,1465,1467,1468],{},"If there are no matches, ",[54,1466,1449],{}," returns an empty ",[54,1469,1453],{},[27,1471,1472],{},"Always check the selector matches the HTML",[11,1474,1476,1479],{"id":1475,"level":14},"toggle-state-with-classes",[16,1477,1478],{"id":1475},"Toggle State With Classes",[97,1480,1481,1486],{"gap":99,"left-width":699,"right-width":700},[103,1482,1483],{"v-slot:left":105},[112,1484],{"language":109,"src":1485},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Ftoggle-state-with-classes-13.html",[103,1487,1488,1491],{"v-slot:right":105},[20,1489,1490],{},"For interactive layouts:",[24,1492,1493,1496,1499,1505],{},[27,1494,1495],{},"Select the button and the panel it controls",[27,1497,1498],{},"Keep the button outside the panel so it remains reachable",[27,1500,1501,1502],{},"Toggle a class such as ",[54,1503,1504],{},"is-collapsed",[27,1506,1507],{},"Let CSS decide what the collapsed class looks like",[11,1509,1511,1514],{"id":1510,"level":14},"javascript-output-options",[16,1512,1513],{"id":1510},"JavaScript Output Options",[97,1515,1516,1521],{"gap":99,"left-width":162,"right-width":162},[103,1517,1518],{"v-slot:left":105},[112,1519],{"language":109,"src":1520},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fjavascript-output-options-09.html",[103,1522,1523,1526],{"v-slot:right":105},[20,1524,1525],{},"Use each for a different reason:",[24,1527,1528,1534,1539,1545,1551,1559,1572],{},[27,1529,1530,1533],{},[54,1531,1532],{},"console.log",": developer inspection",[27,1535,1536,1538],{},[54,1537,1297],{},": safe visible text update",[27,1540,1541,1544],{},[54,1542,1543],{},"innerHTML",": only when you intentionally trust\u002Fbuild markup",[27,1546,1547,1550],{},[54,1548,1549],{},"alert",": one-way message; rarely useful for app UI",[27,1552,1553,1556,1557],{},[54,1554,1555],{},"prompt",": asks for text; returns a string or ",[54,1558,1277],{},[27,1560,1561,1564,1565,1568,1569],{},[54,1562,1563],{},"confirm",": asks OK\u002FCancel; returns ",[54,1566,1567],{},"true"," or ",[54,1570,1571],{},"false",[27,1573,1574,1577],{},[54,1575,1576],{},"print",": opens the browser print dialog",[11,1579,1581,1584,1587,1627],{"id":1580,"level":14},"debug-css-and-dom",[16,1582,1583],{"id":1580},"Debug CSS And DOM",[20,1585,1586],{},"If the page looks wrong or clicks do nothing, check in this order:",[260,1588,1589,1592,1599,1602,1607,1624],{},[27,1590,1591],{},"HTML, CSS, and JavaScript files are saved",[27,1593,1594,964,1596,1598],{},[54,1595,175],{},[54,1597,1343],{}," paths are correct",[27,1600,1601],{},"CSS selector matches the HTML class or element",[27,1603,1604,1605],{},"JavaScript selector did not return ",[54,1606,1277],{},[27,1608,1609,1610],{},"Browser console has no syntax error\n",[24,1611,1612,1619],{},[27,1613,1614,1615,1618],{},"If you have extensions installed, you may see errors not related to ",[951,1616,1617],{},"your"," code",[27,1620,1621,1622,1618],{},"Try a private\u002Fincognito tab to temporarily disable extensions to isolate output from ",[951,1623,1617],{},[27,1625,1626],{},"Event handler runs before the DOM update is expected",[20,1628,1629,1630,1633],{},"Use DevTools and ",[54,1631,1632],{},"console.log()"," before guessing",[11,1635,1637,1640],{"id":1636,"level":14},"common-mistakes",[16,1638,1639],{"id":1636},"Common Mistakes",[97,1641,1642,1651],{"gap":99,"left-width":162,"right-width":162},[103,1643,1644,1648],{"v-slot:left":105},[107,1645,1647],{"id":1646},"css-mismatch","CSS Mismatch",[112,1649],{"language":109,"src":1650},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fcss-bug-07.html",[103,1652,1653,1657,1660,1665,1670],{"v-slot:right":105},[107,1654,1656],{"id":1655},"dom-mismatch","DOM Mismatch",[112,1658],{"language":109,"src":1659},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates\u002Fcommon-mistake-javascript-08.html",[20,1661,1662,1663,291],{},"The CSS bug misses ",[54,1664,348],{},[20,1666,1667,1668,291],{},"The JavaScript bug misses ",[54,1669,1286],{},[20,1671,1672],{},"Both bugs come from selector text that does not match the HTML exactly.",[11,1674,1676,1679],{"id":1675,"level":14},"try-it",[16,1677,1678],{"id":1675},"Try It",[24,1680,1681,1690,1697,1702,1710],{},[27,1682,1683,1684,1686,1687,1689],{},"In ",[54,1685,75],{},", change the ",[54,1688,788],{}," background color",[27,1691,1683,1692,1694,1695],{},[54,1693,71],{},", add another paragraph with ",[54,1696,348],{},[27,1698,1683,1699,1701],{},[54,1700,79],{},", change the click message to different plain text",[27,1703,1704,1705,1707,1708],{},"Temporarily change ",[54,1706,1282],{}," to a wrong selector and confirm the console shows ",[54,1709,1277],{},[27,1711,1712],{},"Restore the selector before committing",[11,1714,1716,1719],{"id":1715,"level":14},"knowledge-check",[16,1717,1718],{"id":1715},"Knowledge Check",[24,1720,1721,1727,1730,1733,1741,1750],{},[27,1722,1723,1724,1726],{},"What does the dot mean in ",[54,1725,318],{},"?",[27,1728,1729],{},"Why should reusable styles usually use classes?",[27,1731,1732],{},"What is the fastest way to prove the CSS file is connected?",[27,1734,1735,1736,1738,1739,1726],{},"What does ",[54,1737,1282],{}," mean in ",[54,1740,1273],{},[27,1742,1743,1744,1746,1747,1749],{},"Why is ",[54,1745,1297],{}," safer than ",[54,1748,1543],{}," for plain text?",[27,1751,1752],{},"Why is toggling a class cleaner than changing many style properties in JavaScript?",[11,1754,1756,1760],{"id":1755,"level":14},"finish-lesson-branch",[16,1757,1759],{"id":1758},"finish-the-lesson-branch","Finish The Lesson Branch",[260,1761,1762,1767,1773,1779,1785,1795,1806],{},[27,1763,1764,1765],{},"Check the final file list: ",[54,1766,88],{},[27,1768,1769,1770],{},"Stage the lesson work: ",[54,1771,1772],{},"git add public_html\u002Fm03\u002Flessons\u002F",[27,1774,1775,1776],{},"Commit the practice work: ",[54,1777,1778],{},"git commit -m \"Complete css and dom practice\"",[27,1780,1781,1782],{},"Push the branch: ",[54,1783,1784],{},"git push origin Module03-CSS-JS-DOM-Intro",[27,1786,1787,1788,1790,1791,1794],{},"On GitHub, open a pull request from ",[54,1789,62],{}," into ",[54,1792,1793],{},"qa",", review it, then merge",[27,1796,1797,1798,1800,1801,1790,1803],{},"Briefly test ",[54,1799,1793],{},", then open and merge a pull request from ",[54,1802,1793],{},[54,1804,1805],{},"prod",[27,1807,1808,1809,1812,1813],{},"Prepare for the next lesson: ",[54,1810,1811],{},"git checkout qa"," then ",[54,1814,1815],{},"git pull origin qa",[11,1817,1819,1822],{"id":1818,"level":14},"summary",[16,1820,1821],{"id":1818},"Summary",[24,1823,1824,1827,1830,1833,1836,1839,1842],{},[27,1825,1826],{},"External CSS only works when the linked path is correct",[27,1828,1829],{},"Selectors choose which elements receive CSS rules or JavaScript behavior",[27,1831,1832],{},"Classes make styling and interactive state reusable",[27,1834,1835],{},"Layout state is easier to debug when CSS owns the sizing rules",[27,1837,1838],{},"Event handlers run after browser actions such as clicks",[27,1840,1841],{},"JavaScript can update visible text or classes without changing the original HTML file",[27,1843,1844],{},"DevTools, console messages, and selector checks help isolate CSS and DOM problems",[11,1846,1848,1852],{"id":1847,"level":14},"further-learning",[16,1849,1851],{"id":1850},"key-terms-and-further-learning","Key Terms And Further Learning",[97,1853,1854,1886],{"gap":99,"left-width":162,"right-width":162},[103,1855,1856,1860,1866,1874,1880],{"v-slot:left":105},[107,1857,1859],{"id":1858},"key-terms","Key Terms",[20,1861,1862,1865],{},[1863,1864,433],"strong",{}," - CSS or JavaScript text that finds matching elements",[20,1867,1868,1870,1871],{},[1863,1869,473],{}," - Reusable HTML attribute targeted with ",[54,1872,1873],{},".class-name",[20,1875,1876,1879],{},[1863,1877,1878],{},"DOM"," - Browser's live model of the HTML page",[20,1881,1882,1885],{},[1863,1883,1884],{},"Event handler"," - Code that runs after a browser event such as a click",[103,1887,1888,1891],{"v-slot:right":105},[107,1889,1890],{"id":1847},"Further Learning",[24,1892,1893,1902,1909,1916],{},[27,1894,1895],{},[1896,1897,1901],"a",{"href":1898,"rel":1899},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FLearn\u002FCSS\u002FFirst_steps",[1900],"nofollow","MDN CSS basics",[27,1903,1904],{},[1896,1905,1908],{"href":1906,"rel":1907},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FLearn\u002FCSS\u002FBuilding_blocks\u002FSelectors",[1900],"MDN CSS selectors",[27,1910,1911],{},[1896,1912,1915],{"href":1913,"rel":1914},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FDocument_Object_Model\u002FIntroduction",[1900],"MDN DOM introduction",[27,1917,1918],{},[1896,1919,1922,1923],{"href":1920,"rel":1921},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FEventTarget\u002FaddEventListener",[1900],"MDN ",[54,1924,1291],{},{"title":105,"searchDepth":1926,"depth":1926,"links":1927},2,[1928,1929,1930,1935,1936,1939,1940,1943,1948,1953,1954,1955,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969],{"id":13,"depth":1926,"text":18},{"id":44,"depth":1926,"text":47},{"id":92,"depth":1926,"text":95,"children":1931},[1932,1934],{"id":155,"depth":1933,"text":159},3,{"id":252,"depth":1933,"text":255},{"id":294,"depth":1926,"text":297},{"id":351,"depth":1926,"text":354,"children":1937},[1938],{"id":413,"depth":1933,"text":416},{"id":693,"depth":1926,"text":696},{"id":727,"depth":1926,"text":730,"children":1941},[1942],{"id":758,"depth":1933,"text":761},{"id":798,"depth":1926,"text":801,"children":1944},[1945,1946,1947],{"id":848,"depth":1933,"text":851},{"id":888,"depth":1933,"text":891},{"id":926,"depth":1933,"text":929},{"id":1016,"depth":1926,"text":1019,"children":1949},[1950,1951,1952],{"id":1042,"depth":1933,"text":1045},{"id":1074,"depth":1933,"text":1077},{"id":1106,"depth":1933,"text":1109},{"id":1162,"depth":1926,"text":1165},{"id":1219,"depth":1926,"text":1220},{"id":1241,"depth":1926,"text":1244,"children":1956},[1957],{"id":1304,"depth":1933,"text":1307},{"id":1334,"depth":1926,"text":1337},{"id":1375,"depth":1926,"text":1378},{"id":1410,"depth":1926,"text":1413},{"id":1475,"depth":1926,"text":1478},{"id":1510,"depth":1926,"text":1513},{"id":1580,"depth":1926,"text":1583},{"id":1636,"depth":1926,"text":1639},{"id":1675,"depth":1926,"text":1678},{"id":1715,"depth":1926,"text":1718},{"id":1758,"depth":1926,"text":1759},{"id":1818,"depth":1926,"text":1821},{"id":1850,"depth":1926,"text":1851},"presentation","Internet Applications","Use CSS and JavaScript selectors to style elements, attach events, and update page state through the DOM.","Face-to-face class of about 40 students; combines the former CSS selector and DOM update lessons with focused layout and interaction practice.","10","80","90","md",{},true,"30","\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates","Core",false,"7",null,{"title":5,"description":1972},"published","internet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",[109,117,1990,1991],"dom","javascript","2026-06-16T09:16:12-04:00","1:04:20","S3Ej_nicS3Y","https:\u002F\u002Fyoutu.be\u002FS3Ej_nicS3Y","CSS\u002FJS Selectors and DOM Updates","7gDRJ23Yh2FASta8zV6JDGHgtKzhKpuAt58Tyt6p_aw",[1999,2002,2008,2011,2015,2018,2021,2024,2028,2031,2034,2038,2042,2045,2049,2052,2055,2059,2062,2065,2068,2070,2072,2074,2076,2078,2080,2082,2085,2088,2091,2094,2097,2099,2102,2105,2109,2113,2117,2121,2124,2127,2130,2134,2137,2140,2143,2146,2149,2153,2157,2160,2162,2165,2168,2171,2174,2177,2180,2183,2186,2190,2193,2196,2200,2203,2206,2209,2212,2214,2217,2220,2223,2226,2229,2232,2235,2238,2241,2244,2247,2250,2253,2256,2259,2262,2265,2268,2271,2274,2277,2280,2284,2287,2290,2293,2296,2299,2302,2305,2308,2311,2314,2317,2320,2323,2326,2329,2332,2335,2338,2341,2344,2347,2350,2353,2356,2359,2362,2365,2368,2371,2374,2377,2380,2383,2386,2389,2392,2395,2398,2401,2404,2407,2410,2413,2416,2419,2422,2425,2428,2431,2434,2437,2440,2443,2446,2449,2452,2455,2458,2461,2464,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500,2503,2506,2509,2512,2515,2518,2521,2524,2527,2530,2533,2536,2539,2542,2545,2548,2551,2554,2557,2560,2563,2566,2569,2572,2575,2578,2581,2584,2587,2590,2593,2596,2599,2602,2605,2608,2611,2614,2617,2620,2623,2626,2629,2632,2635,2638,2642,2645,2648,2651,2654,2657,2660,2663,2666,2669,2672,2675,2678,2681,2684,2687,2690,2693,2696,2699,2702,2705,2708,2711,2714,2717,2720,2723,2726,2729,2732,2735,2738,2741,2744,2747,2750,2753,2756,2759,2762,2765,2768,2771,2774,2777,2780,2783,2786,2789,2792,2795,2798,2801,2804,2807,2810,2813,2816,2819,2822,2825,2828,2831,2834,2837,2840,2843,2846,2849,2852,2855,2858,2861,2864,2867,2870,2873,2876,2879,2882,2885,2888,2891,2894,2897,2900,2903,2906,2909,2912,2915,2918,2921,2924,2927,2930,2933,2936,2939,2942,2945,2948,2951,2954,2957,2960,2963,2966,2969,2972,2975,2978,2981,2984,2987,2990,2993,2996,2999,3002,3005,3008,3011,3014,3017,3020,3023,3027,3030,3033,3036,3039,3042,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3076,3078,3080,3082,3084,3086,3088,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3125,3129,3133,3136,3140,3144,3147,3150,3153,3156,3159,3162,3166,3169,3172,3175,3178,3180,3182,3184,3186,3189,3192,3195,3198,3201,3204,3207,3210,3213,3216,3219,3222,3225,3228,3231,3234,3237,3240,3243,3246,3249,3252,3255,3258,3261,3264,3267,3270,3273,3276,3279,3282,3285,3288,3291,3294,3297,3300,3303,3306,3309,3312,3315,3318,3321,3324,3327,3330,3333,3336,3339,3342,3345,3348,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430,3432,3435,3438,3441,3444,3447,3449,3451,3454,3457,3460,3463,3466,3469],{"path":2000,"title":2001,"order":1985,"module":1985,"status":1985},"\u002Fabout","About Content Version 3",{"path":2003,"title":2004,"order":2005,"module":2006,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-first-concept","First Concept","5","1","draft",{"path":2009,"title":2010,"order":1974,"module":2006,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?",{"path":2012,"title":2013,"order":2014,"module":2006,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?","20",{"path":2016,"title":2017,"order":1974,"module":14,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-game-balance\u002F01-game-balance","Game Balance",{"path":2019,"title":2020,"order":1974,"module":156,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory","Game Design: Color Theory",{"path":2022,"title":2023,"order":2014,"module":156,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":2025,"title":2026,"order":1974,"module":2027,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics","Game Mechanics","4",{"path":2029,"title":2030,"order":2014,"module":2027,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":2032,"title":2033,"order":1974,"module":2005,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness",{"path":2035,"title":2036,"order":2014,"module":2037,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning From Concept To Prototype","6",{"path":2039,"title":2040,"order":1974,"module":2041,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design","8",{"path":2043,"title":2044,"order":2014,"module":2041,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":2046,"title":2047,"order":1974,"module":2048,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","Entity-Based Systems","9",{"path":2050,"title":2051,"order":1974,"module":1974,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface",{"path":2053,"title":2054,"order":2014,"module":1974,"status":2007},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F02-actors-behavior-and-effects","Actors, Behavior, And Effects",{"path":2056,"title":2057,"order":2006,"module":2058,"status":1987},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design","0",{"path":2060,"title":2061,"order":2006,"module":2058,"status":2007},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":2063,"title":2064,"order":1985,"module":1985,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Presentation Revision Plan",{"path":2066,"title":2067,"order":1985,"module":1985,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Twenty-Minute Recording Plan",{"path":2069,"title":2010,"order":1974,"module":2006,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":2071,"title":2013,"order":2014,"module":2006,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":2073,"title":2017,"order":1974,"module":14,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":2075,"title":2020,"order":1974,"module":156,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":2077,"title":2023,"order":2014,"module":156,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":2079,"title":2026,"order":1974,"module":2027,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":2081,"title":2030,"order":2014,"module":2027,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":2083,"title":2084,"order":1974,"module":2005,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":2086,"title":2087,"order":1974,"module":2037,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":2089,"title":2090,"order":2014,"module":2037,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":2092,"title":2093,"order":1974,"module":2041,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design",{"path":2095,"title":2096,"order":2014,"module":2041,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":2098,"title":2047,"order":1974,"module":2048,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs",{"path":2100,"title":2101,"order":1974,"module":1974,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":2103,"title":2104,"order":2014,"module":1974,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":2106,"title":2107,"order":1974,"module":2108,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces","11",{"path":2110,"title":2111,"order":1974,"module":2112,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations","12",{"path":2114,"title":2115,"order":1974,"module":2116,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI","13",{"path":2118,"title":2119,"order":1974,"module":2120,"status":2007},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine","14",{"path":2122,"title":2123,"order":2006,"module":2058,"status":2007},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":2125,"title":2126,"order":1974,"module":2058,"status":2007},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":2128,"title":2129,"order":2014,"module":2058,"status":2007},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":2131,"title":2132,"order":2133,"module":2058,"status":2007},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice","40",{"path":2135,"title":2136,"order":1980,"module":2058,"status":2007},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint",{"path":2138,"title":2139,"order":1974,"module":2006,"status":2007},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":2141,"title":2142,"order":2014,"module":2006,"status":2007},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":2144,"title":2145,"order":1980,"module":2006,"status":2007},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":2147,"title":2148,"order":2133,"module":2006,"status":2007},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","Local Git Workflow And Course Repositories",{"path":2150,"title":2151,"order":2152,"module":2006,"status":2007},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions","50",{"path":2154,"title":2155,"order":2156,"module":2006,"status":2007},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations","60",{"path":2158,"title":2159,"order":1985,"module":1985,"status":1985},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":2161,"title":2159,"order":1974,"module":2006,"status":1985},"\u002Fgeneral\u002Fbasic-command-line",{"path":2163,"title":2164,"order":1985,"module":1985,"status":1987},"\u002F","Ethereal Lab Course Materials",{"path":2166,"title":2167,"order":2058,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord","Learn Courses Platform And Discord",{"path":2169,"title":2170,"order":1974,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":2172,"title":2173,"order":2014,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":2175,"title":2176,"order":1980,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":2178,"title":2179,"order":2133,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":2181,"title":2182,"order":2152,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":2184,"title":2185,"order":2156,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":2187,"title":2188,"order":2189,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches","70",{"path":2191,"title":2192,"order":1975,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup",{"path":2194,"title":2195,"order":1976,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox",{"path":2197,"title":2198,"order":2199,"module":2006,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware","100",{"path":2201,"title":2202,"order":1974,"module":14,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":2204,"title":2205,"order":2014,"module":14,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Use Conditions Loops And Functions",{"path":2207,"title":2208,"order":1974,"module":156,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":2210,"title":2211,"order":2014,"module":156,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Intro To Forms And GET\u002FPOST",{"path":2213,"title":5,"order":1980,"module":156,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":2215,"title":2216,"order":1974,"module":2027,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":2218,"title":2219,"order":2014,"module":2027,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":2221,"title":2222,"order":1980,"module":2027,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":2224,"title":2225,"order":2133,"module":2027,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":2227,"title":2228,"order":1974,"module":2005,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":2230,"title":2231,"order":2014,"module":2005,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":2233,"title":2234,"order":1980,"module":2005,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":2236,"title":2237,"order":2133,"module":2005,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":2239,"title":2240,"order":1974,"module":2037,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":2242,"title":2243,"order":2014,"module":2037,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":2245,"title":2246,"order":1980,"module":2037,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Dynamic Content",{"path":2248,"title":2249,"order":1974,"module":1984,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data",{"path":2251,"title":2252,"order":2014,"module":1984,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":2254,"title":2255,"order":1980,"module":1984,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":2257,"title":2258,"order":1974,"module":2041,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":2260,"title":2261,"order":2014,"module":2041,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":2263,"title":2264,"order":1980,"module":2041,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":2266,"title":2267,"order":1974,"module":2048,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":2269,"title":2270,"order":2014,"module":2048,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":2272,"title":2273,"order":1974,"module":1974,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":2275,"title":2276,"order":2014,"module":1974,"status":2007},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":2278,"title":2279,"order":2006,"module":2058,"status":1987},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":2281,"title":2282,"order":2133,"module":1974,"status":2283},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":2285,"title":2286,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":2288,"title":2289,"order":2014,"module":2041,"status":2283},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":2291,"title":2292,"order":1980,"module":2048,"status":2283},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":2294,"title":2295,"order":2005,"module":2027,"status":1987},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":2297,"title":2298,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":2300,"title":2301,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":2303,"title":2304,"order":1985,"module":1985,"status":1985},"\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":2306,"title":2307,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":2309,"title":2310,"order":1985,"module":1985,"status":1985},"\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":2312,"title":2313,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":2315,"title":2316,"order":1985,"module":1985,"status":1985},"\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":2318,"title":2319,"order":1985,"module":1985,"status":1985},"\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":2321,"title":2322,"order":1985,"module":1985,"status":1985},"\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":2324,"title":2325,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":2327,"title":2328,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":2330,"title":2331,"order":1985,"module":1985,"status":1985},"\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":2333,"title":2334,"order":1985,"module":1985,"status":1985},"\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":2336,"title":2337,"order":1985,"module":1985,"status":1985},"\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":2339,"title":2340,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":2342,"title":2343,"order":1985,"module":1985,"status":1985},"\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":2345,"title":2346,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":2348,"title":2349,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":2351,"title":2352,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":2354,"title":2355,"order":1985,"module":1985,"status":1985},"\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":2357,"title":2358,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":2360,"title":2361,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":2363,"title":2364,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":2366,"title":2367,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":2369,"title":2370,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":2372,"title":2373,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":2375,"title":2376,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":2378,"title":2379,"order":1985,"module":1985,"status":1985},"\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":2381,"title":2382,"order":1985,"module":1985,"status":1985},"\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":2384,"title":2385,"order":1985,"module":1985,"status":1985},"\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":2387,"title":2388,"order":1985,"module":1985,"status":1985},"\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":2390,"title":2391,"order":1985,"module":1985,"status":1985},"\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":2393,"title":2394,"order":1985,"module":1985,"status":1985},"\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":2396,"title":2397,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":2399,"title":2400,"order":1985,"module":1985,"status":1985},"\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":2402,"title":2403,"order":1985,"module":1985,"status":1985},"\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":2405,"title":2406,"order":1985,"module":1985,"status":1985},"\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":2408,"title":2409,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":2411,"title":2412,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":2414,"title":2415,"order":1985,"module":1985,"status":1985},"\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":2417,"title":2418,"order":1985,"module":1985,"status":1985},"\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":2420,"title":2421,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":2423,"title":2424,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":2426,"title":2427,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":2429,"title":2430,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":2432,"title":2433,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":2435,"title":2436,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":2438,"title":2439,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":2441,"title":2442,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":2444,"title":2445,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":2447,"title":2448,"order":1985,"module":1985,"status":1985},"\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":2450,"title":2451,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":2453,"title":2454,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":2456,"title":2457,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":2459,"title":2460,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":2462,"title":2463,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":2465,"title":2466,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":2468,"title":2469,"order":1985,"module":1985,"status":1985},"\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":2471,"title":2472,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":2474,"title":2475,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":2477,"title":2478,"order":1985,"module":1985,"status":1985},"\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":2480,"title":2481,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":2483,"title":2484,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":2486,"title":2487,"order":1985,"module":1985,"status":1985},"\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":2489,"title":2490,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":2492,"title":2493,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":2495,"title":2496,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":2498,"title":2499,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":2501,"title":2502,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":2504,"title":2505,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":2507,"title":2508,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":2510,"title":2511,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":2513,"title":2514,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":2516,"title":2517,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":2519,"title":2520,"order":1985,"module":1985,"status":1985},"\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":2522,"title":2523,"order":1985,"module":1985,"status":1985},"\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":2525,"title":2526,"order":1985,"module":1985,"status":1985},"\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":2528,"title":2529,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":2531,"title":2532,"order":1985,"module":1985,"status":1985},"\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":2534,"title":2535,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":2537,"title":2538,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":2540,"title":2541,"order":1985,"module":1985,"status":1985},"\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":2543,"title":2544,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":2546,"title":2547,"order":1985,"module":1985,"status":1985},"\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":2549,"title":2550,"order":1985,"module":1985,"status":1985},"\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":2552,"title":2553,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":2555,"title":2556,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":2558,"title":2559,"order":1985,"module":1985,"status":1985},"\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":2561,"title":2562,"order":1985,"module":1985,"status":1985},"\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":2564,"title":2565,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":2567,"title":2568,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":2570,"title":2571,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":2573,"title":2574,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":2576,"title":2577,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":2579,"title":2580,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":2582,"title":2583,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":2585,"title":2586,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":2588,"title":2589,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":2591,"title":2592,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":2594,"title":2595,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":2597,"title":2598,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":2600,"title":2601,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":2603,"title":2604,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":2606,"title":2607,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":2609,"title":2610,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":2612,"title":2613,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":2615,"title":2616,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":2618,"title":2619,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":2621,"title":2622,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":2624,"title":2625,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":2627,"title":2628,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":2630,"title":2631,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":2633,"title":2634,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":2636,"title":2637,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":2639,"title":2640,"order":1985,"module":1985,"status":2641},"\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":2643,"title":2644,"order":1985,"module":1985,"status":2641},"\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":2646,"title":2647,"order":1985,"module":1985,"status":2641},"\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":2649,"title":2650,"order":1985,"module":1985,"status":2641},"\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":2652,"title":2653,"order":1985,"module":1985,"status":2641},"\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":2655,"title":2656,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":2658,"title":2659,"order":1985,"module":1985,"status":2641},"\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":2661,"title":2662,"order":1985,"module":1985,"status":2641},"\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":2664,"title":2665,"order":1985,"module":1985,"status":2641},"\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":2667,"title":2668,"order":1985,"module":1985,"status":2641},"\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":2670,"title":2671,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":2673,"title":2674,"order":1985,"module":1985,"status":2641},"\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":2676,"title":2677,"order":1985,"module":1985,"status":2641},"\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":2679,"title":2680,"order":1985,"module":1985,"status":1985},"\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":2682,"title":2683,"order":1985,"module":1985,"status":2641},"\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":2685,"title":2686,"order":1985,"module":1985,"status":2641},"\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":2688,"title":2689,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":2691,"title":2692,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":2694,"title":2695,"order":1985,"module":1985,"status":1985},"\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":2697,"title":2698,"order":1985,"module":1985,"status":1985},"\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":2700,"title":2701,"order":1985,"module":1985,"status":2641},"\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":2703,"title":2704,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":2706,"title":2707,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":2709,"title":2710,"order":1985,"module":1985,"status":1985},"\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":2712,"title":2713,"order":1985,"module":1985,"status":2641},"\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":2715,"title":2716,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":2718,"title":2719,"order":1985,"module":1985,"status":2641},"\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":2721,"title":2722,"order":1985,"module":1985,"status":2641},"\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":2724,"title":2725,"order":1985,"module":1985,"status":1985},"\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":2727,"title":2728,"order":1985,"module":1985,"status":2641},"\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":2730,"title":2731,"order":1985,"module":1985,"status":2641},"\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":2733,"title":2734,"order":1985,"module":1985,"status":1985},"\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":2736,"title":2737,"order":1985,"module":1985,"status":1985},"\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":2739,"title":2740,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":2742,"title":2743,"order":1985,"module":1985,"status":2641},"\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":2745,"title":2746,"order":1985,"module":1985,"status":2641},"\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":2748,"title":2749,"order":1985,"module":1985,"status":2641},"\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":2751,"title":2752,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":2754,"title":2755,"order":1985,"module":1985,"status":2641},"\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":2757,"title":2758,"order":1985,"module":1985,"status":1985},"\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":2760,"title":2761,"order":1985,"module":1985,"status":1985},"\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":2763,"title":2764,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":2766,"title":2767,"order":1985,"module":1985,"status":2641},"\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":2769,"title":2770,"order":1985,"module":1985,"status":2641},"\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":2772,"title":2773,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":2775,"title":2776,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":2778,"title":2779,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":2781,"title":2782,"order":1985,"module":1985,"status":1985},"\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":2784,"title":2785,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":2787,"title":2788,"order":1985,"module":1985,"status":2641},"\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":2790,"title":2791,"order":1985,"module":1985,"status":2641},"\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":2793,"title":2794,"order":1985,"module":1985,"status":2641},"\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":2796,"title":2797,"order":1985,"module":1985,"status":2641},"\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":2799,"title":2800,"order":1985,"module":1985,"status":2641},"\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":2802,"title":2803,"order":1985,"module":1985,"status":2641},"\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":2805,"title":2806,"order":1985,"module":1985,"status":2641},"\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":2808,"title":2809,"order":1985,"module":1985,"status":2641},"\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":2811,"title":2812,"order":1985,"module":1985,"status":2641},"\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":2814,"title":2815,"order":1985,"module":1985,"status":2641},"\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":2817,"title":2818,"order":1985,"module":1985,"status":2641},"\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":2820,"title":2821,"order":1985,"module":1985,"status":1985},"\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":2823,"title":2824,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":2826,"title":2827,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":2829,"title":2830,"order":1985,"module":1985,"status":2641},"\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":2832,"title":2833,"order":1985,"module":1985,"status":2641},"\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":2835,"title":2836,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":2838,"title":2839,"order":1985,"module":1985,"status":2641},"\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":2841,"title":2842,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":2844,"title":2845,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":2847,"title":2848,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":2850,"title":2851,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":2853,"title":2854,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":2856,"title":2857,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":2859,"title":2860,"order":1985,"module":1985,"status":2641},"\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":2862,"title":2863,"order":1985,"module":1985,"status":2641},"\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":2865,"title":2866,"order":1985,"module":1985,"status":2641},"\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":2868,"title":2869,"order":1985,"module":1985,"status":2641},"\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":2871,"title":2872,"order":1985,"module":1985,"status":2641},"\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":2874,"title":2875,"order":1985,"module":1985,"status":2641},"\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":2877,"title":2878,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":2880,"title":2881,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":2883,"title":2884,"order":1985,"module":1985,"status":2641},"\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":2886,"title":2887,"order":1985,"module":1985,"status":2641},"\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":2889,"title":2890,"order":1985,"module":1985,"status":2641},"\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":2892,"title":2893,"order":1985,"module":1985,"status":2641},"\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":2895,"title":2896,"order":1985,"module":1985,"status":1985},"\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":2898,"title":2899,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":2901,"title":2902,"order":1985,"module":1985,"status":1985},"\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":2904,"title":2905,"order":1985,"module":1985,"status":2641},"\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":2907,"title":2908,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":2910,"title":2911,"order":1985,"module":1985,"status":2641},"\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":2913,"title":2914,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":2916,"title":2917,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":2919,"title":2920,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":2922,"title":2923,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":2925,"title":2926,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":2928,"title":2929,"order":1985,"module":1985,"status":2641},"\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":2931,"title":2932,"order":1985,"module":1985,"status":2641},"\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":2934,"title":2935,"order":1985,"module":1985,"status":2641},"\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":2937,"title":2938,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":2940,"title":2941,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":2943,"title":2944,"order":1985,"module":1985,"status":1985},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":2946,"title":2947,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":2949,"title":2950,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":2952,"title":2953,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":2955,"title":2956,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":2958,"title":2959,"order":1985,"module":1985,"status":2641},"\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":2961,"title":2962,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":2964,"title":2965,"order":1985,"module":1985,"status":2641},"\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":2967,"title":2968,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":2970,"title":2971,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":2973,"title":2974,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":2976,"title":2977,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":2979,"title":2980,"order":1985,"module":1985,"status":2641},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":2982,"title":2983,"order":2006,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":2985,"title":2986,"order":14,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":2988,"title":2989,"order":156,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":2991,"title":2992,"order":2027,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":2994,"title":2995,"order":2005,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":2997,"title":2998,"order":2037,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":3000,"title":3001,"order":1984,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":3003,"title":3004,"order":2058,"module":2058,"status":2007},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":3006,"title":3007,"order":1974,"module":2006,"status":2007},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":3009,"title":3010,"order":2014,"module":14,"status":2007},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":3012,"title":3013,"order":1980,"module":156,"status":2007},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":3015,"title":3016,"order":2133,"module":2027,"status":2007},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":3018,"title":3019,"order":2152,"module":2005,"status":2007},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":3021,"title":3022,"order":2156,"module":2037,"status":2007},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":3024,"title":3025,"order":3026,"module":2037,"status":2007},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":3028,"title":3029,"order":2189,"module":1984,"status":2007},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":3031,"title":3032,"order":1975,"module":2041,"status":2007},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":3034,"title":3035,"order":1976,"module":2048,"status":2007},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":3037,"title":3038,"order":2199,"module":1974,"status":2007},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":3040,"title":3041,"order":1985,"module":1985,"status":2007},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Presentation Revision Plan",{"path":3043,"title":3044,"order":1985,"module":1985,"status":2007},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Twenty-Minute Recording Plan",{"path":3046,"title":2167,"order":2058,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":3048,"title":2170,"order":1974,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands",{"path":3050,"title":2173,"order":2014,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools",{"path":3052,"title":2176,"order":1980,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh",{"path":3054,"title":2179,"order":2133,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs",{"path":3056,"title":2182,"order":2152,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment",{"path":3058,"title":2185,"order":2156,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":3060,"title":2188,"order":2189,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":3062,"title":2192,"order":1975,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":3064,"title":2195,"order":1976,"module":2006,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox",{"path":3066,"title":2198,"order":2199,"module":2006,"status":2007},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":3068,"title":2202,"order":1974,"module":14,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":3070,"title":2205,"order":2014,"module":14,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":3072,"title":2208,"order":1974,"module":156,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":3074,"title":2211,"order":2014,"module":156,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":1981,"title":5,"order":1980,"module":156,"status":1987},{"path":3077,"title":2216,"order":1974,"module":2027,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":3079,"title":2219,"order":2014,"module":2027,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":3081,"title":2222,"order":1980,"module":2027,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":3083,"title":2225,"order":2133,"module":2027,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":3085,"title":2228,"order":1974,"module":2005,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":3087,"title":2231,"order":2014,"module":2005,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":3089,"title":3090,"order":1980,"module":2005,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Flash Messages And Redirect Feedback",{"path":3092,"title":2237,"order":2133,"module":2005,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":3094,"title":2240,"order":1974,"module":2037,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":3096,"title":2243,"order":2014,"module":2037,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":3098,"title":2246,"order":1980,"module":2037,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":3100,"title":2249,"order":1974,"module":1984,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":3102,"title":2252,"order":2014,"module":1984,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":3104,"title":2255,"order":1980,"module":1984,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":3106,"title":2258,"order":1974,"module":2041,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":3108,"title":2261,"order":2014,"module":2041,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":3110,"title":2264,"order":1980,"module":2041,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":3112,"title":2267,"order":1974,"module":2048,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":3114,"title":2270,"order":2014,"module":2048,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":3116,"title":2273,"order":1974,"module":1974,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":3118,"title":2276,"order":2014,"module":1974,"status":1987},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":3120,"title":2279,"order":2006,"module":2058,"status":1987},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":3122,"title":3123,"order":3124,"module":1974,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet","110",{"path":3126,"title":3127,"order":3128,"module":2037,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":3130,"title":3131,"order":3132,"module":2037,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":3134,"title":3135,"order":3124,"module":2037,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":3137,"title":3138,"order":3139,"module":2041,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026","120",{"path":3141,"title":3142,"order":3143,"module":2048,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026","130",{"path":3145,"title":3146,"order":1974,"module":2006,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":3148,"title":3149,"order":2014,"module":14,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":3151,"title":3152,"order":1980,"module":156,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":3154,"title":3155,"order":2133,"module":2027,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":3157,"title":3158,"order":2152,"module":2005,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":3160,"title":3161,"order":2156,"module":2037,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":3163,"title":3164,"order":3165,"module":2037,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":3167,"title":3168,"order":2189,"module":1984,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":3170,"title":3171,"order":1975,"module":2041,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":3173,"title":3174,"order":1976,"module":2048,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":3176,"title":3177,"order":2199,"module":1974,"status":2007},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":3179,"title":2170,"order":1974,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":3181,"title":2173,"order":2014,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":3183,"title":2176,"order":1980,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":3185,"title":2179,"order":2133,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":3187,"title":3188,"order":2152,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":3190,"title":3191,"order":2156,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":3193,"title":3194,"order":1974,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":3196,"title":3197,"order":2014,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":3199,"title":3200,"order":1980,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":3202,"title":3203,"order":2133,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":3205,"title":3206,"order":1974,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":3208,"title":3209,"order":2014,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":3211,"title":3212,"order":1980,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":3214,"title":3215,"order":2133,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":3217,"title":3218,"order":1974,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":3220,"title":3221,"order":2014,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":3223,"title":3224,"order":1980,"module":2027,"status":2007},"\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":3226,"title":3227,"order":1974,"module":2005,"status":2007},"\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":3229,"title":3230,"order":2014,"module":2037,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":3232,"title":3233,"order":1980,"module":2037,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":3235,"title":3236,"order":1974,"module":1984,"status":2007},"\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":3238,"title":3239,"order":2014,"module":1984,"status":2007},"\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":3241,"title":3242,"order":1980,"module":1984,"status":2007},"\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":3244,"title":3245,"order":2133,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":3247,"title":3248,"order":2152,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":3250,"title":3251,"order":1974,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":3253,"title":3254,"order":2014,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":3256,"title":3257,"order":1980,"module":2041,"status":2007},"\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":3259,"title":3260,"order":2133,"module":2041,"status":2007},"\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":3262,"title":3263,"order":2152,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":3265,"title":3266,"order":1974,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":3268,"title":3269,"order":2014,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":3271,"title":3272,"order":1980,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":3274,"title":3275,"order":2133,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":3277,"title":3278,"order":2152,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":3280,"title":3281,"order":2156,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":3283,"title":3284,"order":1974,"module":1974,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":3286,"title":3287,"order":2014,"module":1974,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":3289,"title":3290,"order":1980,"module":1974,"status":2007},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":3292,"title":3293,"order":2006,"module":2058,"status":1987},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":3295,"title":3296,"order":1974,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":3298,"title":3299,"order":2014,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":3301,"title":3302,"order":1980,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":3304,"title":3305,"order":1974,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":3307,"title":3308,"order":2014,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":3310,"title":3311,"order":1980,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":3313,"title":3314,"order":1974,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":3316,"title":3317,"order":2014,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":3319,"title":3320,"order":1980,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":3322,"title":3323,"order":2133,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":3325,"title":3326,"order":1974,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":3328,"title":3329,"order":2014,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":3331,"title":3332,"order":1980,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":3334,"title":3335,"order":1974,"module":2005,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":3337,"title":3338,"order":2014,"module":2005,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":3340,"title":3341,"order":1980,"module":2005,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":3343,"title":3344,"order":2058,"module":2058,"status":2007},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":3346,"title":3347,"order":1985,"module":1985,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Presentation Revision Plan",{"path":3349,"title":3350,"order":1985,"module":1985,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Twenty-Minute Recording Plan",{"path":3352,"title":2170,"order":1974,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":3354,"title":2173,"order":2014,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":3356,"title":2176,"order":1980,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":3358,"title":2179,"order":2133,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":3360,"title":3188,"order":2152,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup",{"path":3362,"title":3191,"order":2156,"module":2006,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup",{"path":3364,"title":3194,"order":1974,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":3366,"title":3197,"order":2014,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":3368,"title":3200,"order":1980,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":3370,"title":3203,"order":2133,"module":14,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":3372,"title":3206,"order":1974,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":3374,"title":3209,"order":2014,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":3376,"title":3212,"order":1980,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":3378,"title":3215,"order":2133,"module":156,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":3380,"title":3218,"order":1974,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":3382,"title":3221,"order":2014,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":3384,"title":3224,"order":1980,"module":2027,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":3386,"title":3227,"order":1974,"module":2005,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":3388,"title":3389,"order":1974,"module":2037,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":3391,"title":3230,"order":2014,"module":2037,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026",{"path":3393,"title":3233,"order":1980,"module":2037,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check",{"path":3395,"title":3236,"order":1974,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":3397,"title":3239,"order":2014,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":3399,"title":3242,"order":1980,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":3401,"title":3245,"order":2133,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":3403,"title":3248,"order":2152,"module":1984,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":3405,"title":3251,"order":1974,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":3407,"title":3254,"order":2014,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":3409,"title":3257,"order":1980,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":3411,"title":3260,"order":2133,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":3413,"title":3263,"order":2152,"module":2041,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":3415,"title":3266,"order":1974,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":3417,"title":3269,"order":2014,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":3419,"title":3272,"order":1980,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":3421,"title":3275,"order":2133,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":3423,"title":3278,"order":2152,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":3425,"title":3281,"order":2156,"module":2048,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":3427,"title":3284,"order":1974,"module":1974,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":3429,"title":3287,"order":2014,"module":1974,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":3431,"title":3290,"order":1980,"module":1974,"status":2007},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":3433,"title":3434,"order":1974,"module":2006,"status":2007},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Required Architecture Overview",{"path":3436,"title":3437,"order":2006,"module":2058,"status":1987},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":3439,"title":3440,"order":2006,"module":2058,"status":1987},"\u002Fsystems-integration","Systems Integration",{"path":3442,"title":3443,"order":1985,"module":1985,"status":2007},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Presentation Revision Plan",{"path":3445,"title":3446,"order":1985,"module":1985,"status":2007},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Twenty-Minute Recording Plan",{"path":3448,"title":3434,"order":1974,"module":2006,"status":1987},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":3450,"title":3437,"order":2006,"module":2058,"status":1987},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":3452,"title":3453,"order":1985,"module":1985,"status":1985},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":3455,"title":3456,"order":1985,"module":1985,"status":1985},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":3458,"title":3459,"order":1985,"module":1985,"status":1985},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":3461,"title":3462,"order":1985,"module":1985,"status":1985},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":3464,"title":3465,"order":2014,"module":2058,"status":2007},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":3467,"title":3468,"order":1980,"module":2058,"status":2007},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":3470,"title":3471,"order":1974,"module":2058,"status":2007},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",1788152086031]