[{"data":1,"prerenderedAt":2845},["ShallowReactive",2],{"content-page:\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions":3,"content-page-quiz:none":1357,"content-navigation-index":1371},{"id":4,"title":5,"audience":6,"body":7,"contentType":1342,"course":1343,"description":1344,"estimateBasis":1345,"estimatedDiscussionMinutes":1346,"estimatedLiveMinutes":1347,"estimatedTotalMinutes":1348,"extension":1349,"meta":1350,"module":14,"navigation":1351,"order":1352,"path":1353,"presentationRole":1354,"promptAssist":1355,"revision":1356,"semester":1357,"seo":1358,"status":1359,"stem":1360,"syllabus":1357,"tags":1361,"updated":1365,"videoDuration":1366,"videoId":1367,"videoLink":1368,"videoTitle":1369,"week":14,"__hash__":1370},"content\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions.md","Use Conditions Loops And Functions","student",{"type":8,"value":9,"toc":1300},"minimark",[10,38,82,166,202,251,298,343,388,451,501,570,608,663,709,756,797,838,877,918,950,982,1002,1029,1059,1118,1181,1209],[11,12,15,19],"slide",{"id":13,"level":14},"main-idea","2",[16,17,18],"h2",{"id":13},"Main Idea",[20,21,22,26,29,32,35],"ul",{},[23,24,25],"li",{},"Conditions choose which block runs",[23,27,28],{},"Loops repeat work until the pattern is finished",[23,30,31],{},"Functions name reusable logic",[23,33,34],{},"PHP and JavaScript use similar control-flow ideas with different syntax",[23,36,37],{},"In this lesson, compare the patterns before using them in practice files",[11,39,41,44],{"id":40,"level":14},"practice-workspace",[16,42,43],{"id":40},"Practice Workspace",[20,45,46,53,59,62,72,75],{},[23,47,48,49],{},"Work inside ",[50,51,52],"code",{},"public_html\u002Fm02\u002Flessons\u002F",[23,54,55,56],{},"Lesson branch: ",[50,57,58],{},"Module02-Control-Flow-Functions",[23,60,61],{},"Create the folder if it is missing",[23,63,64,65,68,69],{},"Use file prefix ",[50,66,67],{},"control-flow-",", such as ",[50,70,71],{},"control-flow-even-odd.php",[23,73,74],{},"Keep each practice file focused on one idea",[23,76,77,78,81],{},"After a working change: run ",[50,79,80],{},"git status",", stage the changed files, and commit",[11,83,85,88],{"id":84,"level":14},"loop-types",[16,86,87],{"id":84},"Loop Types",[89,90,93,131],"two-col",{"gap":91,"left-width":92,"right-width":92},"lg","1fr",[94,95,97,102],"template",{"v-slot:left":96},"",[98,99,101],"h3",{"id":100},"use-these-in-php","Use These In PHP",[20,103,104,110,116,122,128],{},[23,105,106,109],{},[50,107,108],{},"for",": use when a counter, index, or fixed number of passes matters",[23,111,112,115],{},[50,113,114],{},"while",": use when the loop should continue as long as a condition stays true",[23,117,118,121],{},[50,119,120],{},"do while",": use when the body must run once before the condition is checked",[23,123,124,127],{},[50,125,126],{},"foreach",": use when reading each array value or each key\u002Fvalue pair",[23,129,130],{},"Update loop variables inside the loop so it can finish",[94,132,133,137],{"v-slot:right":96},[98,134,136],{"id":135},"use-these-in-javascript","Use These In JavaScript",[20,138,139,143,147,151,157,163],{},[23,140,141,109],{},[50,142,108],{},[23,144,145,115],{},[50,146,114],{},[23,148,149,121],{},[50,150,120],{},[23,152,153,156],{},[50,154,155],{},"for...of",": use for array values and other iterable values",[23,158,159,162],{},[50,160,161],{},"for...in",": use for object keys or property names",[23,164,165],{},"Avoid loop conditions that can never become false",[11,167,169,176],{"id":168,"level":14},"for-vs-foreach",[16,170,171,173,174],{"id":168},[50,172,108],{}," Vs ",[50,175,126],{},[89,177,178,192],{"gap":91,"left-width":92,"right-width":92},[94,179,180,187],{"v-slot:left":96},[181,182,183,184,186],"p",{},"Use ",[50,185,108],{}," when the counter matters:",[188,189],"code-snippet",{"language":190,"src":191},"php","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffor-vs-foreach-06.php",[94,193,194,199],{"v-slot:right":96},[181,195,183,196,198],{},[50,197,126],{}," when the values matter:",[188,200],{"language":190,"src":201},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffor-vs-foreach-07.php",[11,203,205,212],{"id":204,"level":14},"while-and-do-while",[16,206,207,209,210],{"id":204},[50,208,114],{}," And ",[50,211,120],{},[89,213,214,222],{"gap":91,"left-width":92,"right-width":92},[94,215,216,219],{"v-slot:left":96},[98,217,218],{"id":190},"PHP",[188,220],{"language":190,"src":221},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fwhile-and-do-while-17.php",[94,223,224,228,232,235],{"v-slot:right":96},[98,225,227],{"id":226},"javascript","JavaScript",[188,229],{"language":230,"src":231},"js","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fwhile-and-do-while-18.js",[181,233,234],{},"Both versions:",[20,236,237,240,243,246],{},[23,238,239],{},"Start with a counter",[23,241,242],{},"Check a condition",[23,244,245],{},"Update the counter",[23,247,248,250],{},[50,249,120],{}," runs at least once",[11,252,254,261],{"id":253,"level":14},"foreach-key-value",[16,255,257,258,260],{"id":256},"php-foreach-key-and-value","PHP ",[50,259,126],{}," Key And Value",[89,262,265,270],{"gap":91,"left-width":263,"right-width":264},"1.1fr","0.9fr",[94,266,267],{"v-slot:left":96},[188,268],{"language":190,"src":269},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fforeach-key-value-19.php",[94,271,272,275],{"v-slot:right":96},[181,273,274],{},"Two common forms:",[20,276,277,283,289,292,295],{},[23,278,279,282],{},[50,280,281],{},"foreach ($items as $value)",": use when each value is enough",[23,284,285,288],{},[50,286,287],{},"foreach ($items as $key => $value)",": use when the key matters",[23,290,291],{},"Use key\u002Fvalue loops for associative arrays",[23,293,294],{},"Later database rows are arrays with column names as keys",[23,296,297],{},"Read values from the array; avoid changing the source array unless that is the point",[11,299,301,309],{"id":300,"level":14},"for-in-vs-for-of",[16,302,304,305,173,307],{"id":303},"javascript-forin-vs-forof","JavaScript ",[50,306,161],{},[50,308,155],{},[89,310,311,316],{"gap":91,"left-width":263,"right-width":264},[94,312,313],{"v-slot:left":96},[188,314],{"language":230,"src":315},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffor-in-vs-for-of-20.js",[94,317,318,321],{"v-slot:right":96},[181,319,320],{},"Practical rule:",[20,322,323,328,333,338],{},[23,324,325,327],{},[50,326,155],{},": values from an array or iterable",[23,329,330,332],{},[50,331,161],{},": keys or property names",[23,334,183,335,337],{},[50,336,155],{}," for most array value loops",[23,339,340,342],{},[50,341,161],{}," can include custom properties",[11,344,346,350],{"id":345,"level":14},"modulo-and-loop",[16,347,349],{"id":348},"even-and-odd-loop","Even And Odd Loop",[89,351,352,357],{"gap":91,"left-width":92,"right-width":92},[94,353,354],{"v-slot:left":96},[188,355],{"language":190,"src":356},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Feven-and-odd-loop-04.php",[94,358,359,362,366,369],{"v-slot:right":96},[181,360,361],{},"Example output:",[188,363],{"language":364,"src":365},"text","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-05.txt",[181,367,368],{},"Notes:",[20,370,371,377,382],{},[23,372,373,376],{},[50,374,375],{},"%",": remainder after division",[23,378,379,381],{},[50,380,126],{},": loop through each array value",[23,383,384,387],{},[50,385,386],{},"===",": compare value and type",[11,389,391,394,401],{"id":390,"level":14},"loop-risk-examples",[16,392,393],{"id":390},"Loop Risk Examples",[395,396,398],"admonition",{"type":397},"warning",[181,399,400],{},"Read these as risk examples. Do not run them in a normal browser request unless the instructor explicitly asks you to test a controlled version.",[89,402,403,428],{"gap":91,"left-width":92,"right-width":92},[94,404,405,411,414],{"v-slot:left":96},[98,406,408,409],{"id":407},"infinite-while","Infinite ",[50,410,114],{},[188,412],{"language":190,"src":413},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Finfinite-while-example-25.php",[20,415,416,419,425],{},[23,417,418],{},"The condition starts true",[23,420,421,424],{},[50,422,423],{},"true"," never becomes false",[23,426,427],{},"The page keeps printing until PHP stops the request",[94,429,430,435,438],{"v-slot:right":96},[98,431,408,433],{"id":432},"infinite-for",[50,434,108],{},[188,436],{"language":190,"src":437},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Finfinite-for-example-26.php",[20,439,440,446,449],{},[23,441,442,445],{},[50,443,444],{},"for (;;)"," has no setup, condition, or update sections",[23,447,448],{},"No condition means there is no planned stopping point",[23,450,427],{},[11,452,455,458],{"id":453,"level":454},"growing-array-loop","3",[16,456,457],{"id":453},"Growing Array Loop",[89,459,462,467],{"gap":91,"left-width":460,"right-width":461},"1.05fr","0.95fr",[94,463,464],{"v-slot:left":96},[188,465],{"language":190,"src":466},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fgrowing-array-loop-27.php",[94,468,469,472],{"v-slot:right":96},[181,470,471],{},"Why this is dangerous:",[20,473,474,480,486,495,498],{},[23,475,476,479],{},[50,477,478],{},"count($a)"," is recalculated on each pass",[23,481,482,485],{},[50,483,484],{},"array_push($a, $i)"," makes the array longer",[23,487,488,491,492,494],{},[50,489,490],{},"$i"," and ",[50,493,478],{}," both keep increasing",[23,496,497],{},"The loop does not reach a normal stopping point",[23,499,500],{},"It is not truly infinite because PHP eventually stops when memory or execution time runs out",[11,502,504,507],{"id":503,"level":14},"flow-control-summary",[16,505,506],{"id":503},"Flow Control Summary",[89,508,509,545],{"gap":91,"left-width":92,"right-width":92},[94,510,511,515],{"v-slot:left":96},[98,512,514],{"id":513},"decision-tools","Decision Tools",[20,516,517,523,533,539],{},[23,518,519,522],{},[50,520,521],{},"if",": run a block when a condition is true",[23,524,525,528,529,532],{},[50,526,527],{},"elseif"," \u002F ",[50,530,531],{},"else if",": test another condition",[23,534,535,538],{},[50,536,537],{},"else",": fallback when no condition matched",[23,540,541,544],{},[50,542,543],{},"switch",": compare one value to several cases",[94,546,547,551],{"v-slot:right":96},[98,548,550],{"id":549},"risk-to-watch","Risk To Watch",[20,552,553,556,559,567],{},[23,554,555],{},"First matching branch wins",[23,557,558],{},"Bad branch order can create dead code",[23,560,561,563,564],{},[50,562,543],{}," can fall through without ",[50,565,566],{},"break",[23,568,569],{},"Predict the output before running the page",[11,571,573,576],{"id":572,"level":14},"condition-example",[16,574,575],{"id":572},"Condition Example",[89,577,578,583],{"gap":91,"left-width":92,"right-width":92},[94,579,580],{"v-slot:left":96},[188,581],{"language":190,"src":582},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fcondition-example-01.php",[94,584,585,587,590,592],{"v-slot:right":96},[181,586,361],{},[188,588],{"language":364,"src":589},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-02.txt",[181,591,368],{},[20,593,594,597,600,603],{},[23,595,596],{},"First true branch runs",[23,598,599],{},"Later branches are skipped",[23,601,602],{},"Branch order matters",[23,604,605,607],{},[50,606,527],{}," is checked only if earlier checks failed",[11,609,611,614],{"id":610,"level":14},"comparison-risk",[16,612,613],{"id":610},"Comparison Risk",[89,615,616,621],{"gap":91,"left-width":92,"right-width":92},[94,617,618],{"v-slot:left":96},[188,619],{"language":190,"src":620},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fcomparison-risk-03.php",[94,622,623,626,646,649],{"v-slot:right":96},[181,624,625],{},"Problem:",[20,627,628,637,640],{},[23,629,630,633,634],{},[50,631,632],{},"95"," is already ",[50,635,636],{},">= 60",[23,638,639],{},"First branch catches it",[23,641,642,645],{},[50,643,644],{},"Excellent"," can never print",[181,647,648],{},"Correction:",[20,650,651,654,657],{},[23,652,653],{},"Check the most specific condition first",[23,655,656],{},"Use the broad fallback later",[23,658,659,660,662],{},"The skipped ",[50,661,644],{}," branch is dead code because the earlier branch catches the value first",[11,664,666,671],{"id":665,"level":14},"switch-example",[16,667,668,670],{"id":665},[50,669,543],{}," Example",[89,672,673,678],{"gap":91,"left-width":92,"right-width":92},[94,674,675],{"v-slot:left":96},[188,676],{"language":190,"src":677},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fswitch-example-15.php",[94,679,680,683],{"v-slot:right":96},[181,681,682],{},"What to notice:",[20,684,685,690,695,701],{},[23,686,687,689],{},[50,688,543],{}," compares one value against several cases",[23,691,692,694],{},[50,693,566],{}," stops fall-through into the next case",[23,696,697,700],{},[50,698,699],{},"default"," is the fallback",[23,702,183,703,705,706,708],{},[50,704,521],{},"\u002F",[50,707,527],{}," when each condition checks something different",[11,710,712,721],{"id":711,"level":14},"switch-fallthrough",[16,713,715,716,718,719],{"id":714},"missing-break-in-switch","Missing ",[50,717,566],{}," In ",[50,720,543],{},[89,722,723,728],{"gap":91,"left-width":92,"right-width":92},[94,724,725],{"v-slot:left":96},[188,726],{"language":190,"src":727},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fswitch-fallthrough-16.php",[94,729,730,733],{"v-slot:right":96},[181,731,732],{},"Prediction:",[20,734,735,741,747,753],{},[23,736,737,740],{},[50,738,739],{},"Monday"," matches the first case",[23,742,743,744,746],{},"No ",[50,745,566],{}," means execution continues",[23,748,749,752],{},[50,750,751],{},"Tuesday"," also prints",[23,754,755],{},"Fall-through is sometimes intentional, but only use it when you mean to group cases",[11,757,759,766],{"id":758,"level":14},"break-and-continue",[16,760,761,209,763],{"id":758},[50,762,566],{},[50,764,765],{},"continue",[89,767,768,773],{"gap":91,"left-width":92,"right-width":92},[94,769,770],{"v-slot:left":96},[188,771],{"language":190,"src":772},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fbreak-and-continue-08.php",[94,774,775,777,780,782],{"v-slot:right":96},[181,776,361],{},[188,778],{"language":364,"src":779},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-09.txt",[181,781,368],{},[20,783,784,789,794],{},[23,785,786,788],{},[50,787,765],{},": skip the rest of this loop pass",[23,790,791,793],{},[50,792,566],{},": stop the loop completely",[23,795,796],{},"Use sparingly so the loop still reads clearly",[11,798,800,808],{"id":799,"level":14},"break-continue-js",[16,801,803,209,805,807],{"id":802},"break-and-continue-in-javascript",[50,804,566],{},[50,806,765],{}," In JavaScript",[89,809,810,815],{"gap":91,"left-width":92,"right-width":92},[94,811,812],{"v-slot:left":96},[188,813],{"language":230,"src":814},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fbreak-continue-js-21.js",[94,816,817,820],{"v-slot:right":96},[181,818,819],{},"Same control idea:",[20,821,822,827,832,835],{},[23,823,824,826],{},[50,825,765],{},": skip this pass",[23,828,829,831],{},[50,830,566],{},": exit the loop",[23,833,834],{},"Use both carefully so the loop still reads clearly",[23,836,837],{},"The same ideas appear in PHP and JavaScript",[11,839,841,844],{"id":840,"level":14},"function-example",[16,842,843],{"id":840},"Function Example",[89,845,846,851],{"gap":91,"left-width":92,"right-width":92},[94,847,848],{"v-slot:left":96},[188,849],{"language":190,"src":850},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffunction-example-10.php",[94,852,853,855,858,860],{"v-slot:right":96},[181,854,361],{},[188,856],{"language":364,"src":857},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-11.txt",[181,859,368],{},[20,861,862,865,868,874],{},[23,863,864],{},"Function name describes the reusable job",[23,866,867],{},"Parameters are inputs",[23,869,870,873],{},[50,871,872],{},"return"," sends a value back",[23,875,876],{},"Type hints document expected values",[11,878,880,884],{"id":879,"level":14},"same-idea-javascript",[16,881,883],{"id":882},"same-idea-in-javascript","Same Idea In JavaScript",[89,885,886,891],{"gap":91,"left-width":92,"right-width":92},[94,887,888],{"v-slot:left":96},[188,889],{"language":230,"src":890},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fsame-idea-in-javascript-12.js",[94,892,893,896,907,910],{"v-slot:right":96},[181,894,895],{},"Same idea:",[20,897,898,901,904],{},[23,899,900],{},"Function accepts inputs",[23,902,903],{},"Function returns one result",[23,905,906],{},"Output goes to the browser console here",[181,908,909],{},"Different runtime:",[20,911,912,915],{},[23,913,914],{},"PHP prints into the server response",[23,916,917],{},"JavaScript runs after the browser receives the page",[11,919,921,924,927,945],{"id":920,"level":14},"debugging-flow",[16,922,923],{"id":920},"Debugging Flow",[181,925,926],{},"When output is wrong:",[928,929,930,933,936,939,942],"ol",{},[23,931,932],{},"Print the input value",[23,934,935],{},"Print the type if text\u002Fnumber confusion is possible",[23,937,938],{},"Test one condition or loop boundary",[23,940,941],{},"Change one thing",[23,943,944],{},"Refresh or rerun",[395,946,947],{"type":397},[181,948,949],{},"Change one thing, then retest. Rewriting the whole example makes it harder to know which line caused the new result.",[11,951,953,956],{"id":952,"level":14},"built-in-functions-practice",[16,954,955],{"id":952},"Built-in Functions Practice",[20,957,958,964,970,976,979],{},[23,959,960,963],{},[50,961,962],{},"abs()",": Work with distance from zero",[23,965,966,969],{},[50,967,968],{},"number_format()",": Display a number with a fixed number of decimal places",[23,971,972,975],{},[50,973,974],{},"preg_replace()",": Replace text that matches a regular expression",[23,977,978],{},"These helpers are useful in practice work, but the exact project logic depends on the task",[23,980,981],{},"See the slides below for small examples of each helper",[11,983,985,989,992],{"id":984,"level":454},"abs-example",[16,986,987,670],{"id":984},[50,988,962],{},[188,990],{"language":190,"src":991},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fabs-example-22.php",[20,993,994,999],{},[23,995,996,998],{},[50,997,962],{}," returns the positive distance from zero",[23,1000,1001],{},"This is useful when only the size of the difference matters",[11,1003,1005,1010,1013],{"id":1004,"level":454},"number-format-example",[16,1006,1008,670],{"id":1007},"number_format-example",[50,1009,968],{},[188,1011],{"language":190,"src":1012},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fnumber-format-example-23.php",[20,1014,1015,1020,1026],{},[23,1016,1017,1019],{},[50,1018,968],{}," returns display text",[23,1021,1022,1023],{},"Crypto-style values often need more decimal places, such as ",[50,1024,1025],{},"8",[23,1027,1028],{},"Add the transaction first, then format the final display value",[11,1030,1032,1037,1040],{"id":1031,"level":454},"preg-replace-example",[16,1033,1035,670],{"id":1034},"preg_replace-example",[50,1036,974],{},[188,1038],{"language":190,"src":1039},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fpreg-replace-example-24.php",[20,1041,1042,1047,1050,1053,1056],{},[23,1043,1044,1046],{},[50,1045,974],{}," changes text that matches a pattern",[23,1048,1049],{},"This example changes spaces to hyphens",[23,1051,1052],{},"It also changes hyphens back to spaces",[23,1054,1055],{},"Use a different pattern when the allowed text rules are different",[23,1057,1058],{},"Regular expressions will be covered separately later",[11,1060,1062,1065],{"id":1061,"level":14},"knowledge-check",[16,1063,1064],{"id":1061},"Knowledge Check",[20,1066,1067,1073,1078,1087,1093,1101,1108,1115],{},[23,1068,1069,1070,1072],{},"Which branch runs first in an ",[50,1071,521],{}," chain?",[23,1074,1075,1076,1072],{},"What is dead code in an ",[50,1077,521],{},[23,1079,1080,1081,1083,1084,1086],{},"Why does a ",[50,1082,543],{}," case usually need ",[50,1085,566],{},"?",[23,1088,1089,1090,1092],{},"What does ",[50,1091,375],{}," tell you?",[23,1094,1095,1096,1098,1099,1086],{},"When is ",[50,1097,126],{}," cleaner than ",[50,1100,108],{},[23,1102,1103,1104,491,1106,1086],{},"What is the difference between JavaScript ",[50,1105,161],{},[50,1107,155],{},[23,1109,1110,1111,491,1113,1086],{},"What is the difference between ",[50,1112,566],{},[50,1114,765],{},[23,1116,1117],{},"Why move repeated logic into a function?",[11,1119,1121,1125],{"id":1120,"level":14},"finish-lesson-branch",[16,1122,1124],{"id":1123},"finish-the-lesson-branch","Finish The Lesson Branch",[928,1126,1127,1132,1138,1144,1150,1160,1171],{},[23,1128,1129,1130],{},"Check the final file list: ",[50,1131,80],{},[23,1133,1134,1135],{},"Stage the lesson work: ",[50,1136,1137],{},"git add public_html\u002Fm02\u002Flessons\u002F",[23,1139,1140,1141],{},"Commit the practice work: ",[50,1142,1143],{},"git commit -m \"Complete lesson practice\"",[23,1145,1146,1147],{},"Push the branch: ",[50,1148,1149],{},"git push origin Module02-Control-Flow-Functions",[23,1151,1152,1153,1155,1156,1159],{},"On GitHub, open a pull request from ",[50,1154,58],{}," into ",[50,1157,1158],{},"qa",", review it, then merge",[23,1161,1162,1163,1165,1166,1155,1168],{},"Briefly test ",[50,1164,1158],{},", then open and merge a pull request from ",[50,1167,1158],{},[50,1169,1170],{},"prod",[23,1172,1173,1174,1177,1178],{},"Prepare for the next lesson: ",[50,1175,1176],{},"git checkout qa"," then ",[50,1179,1180],{},"git pull origin qa",[11,1182,1184,1187],{"id":1183,"level":14},"summary",[16,1185,1186],{"id":1183},"Summary",[20,1188,1189,1192,1195,1200,1203,1206],{},[23,1190,1191],{},"Conditions choose between branches",[23,1193,1194],{},"Loop choice depends on whether the counter, condition, value, or key matters",[23,1196,1197,1199],{},[50,1198,126],{}," is the normal PHP choice for reading array values",[23,1201,1202],{},"Functions make repeated logic easier to test and reuse",[23,1204,1205],{},"Small helper functions can prepare numbers or text before output",[23,1207,1208],{},"Debug control-flow problems by checking one input, one condition, or one loop boundary at a time",[11,1210,1212,1216],{"id":1211,"level":14},"key-terms",[16,1213,1215],{"id":1214},"key-terms-and-further-learning","Key Terms And Further Learning",[89,1217,1218,1248],{"gap":91,"left-width":92,"right-width":92},[94,1219,1220,1223,1230,1236,1242],{"v-slot:left":96},[98,1221,1222],{"id":1211},"Key Terms",[181,1224,1225,1229],{},[1226,1227,1228],"strong",{},"Condition"," - A true\u002Ffalse check that controls which code runs",[181,1231,1232,1235],{},[1226,1233,1234],{},"Loop"," - Code that repeats while a pattern continues",[181,1237,1238,1241],{},[1226,1239,1240],{},"Dead code"," - Code that cannot run because earlier logic prevents it",[181,1243,1244,1247],{},[1226,1245,1246],{},"Function"," - Named reusable logic with optional inputs and a result",[94,1249,1250,1254],{"v-slot:right":96},[98,1251,1253],{"id":1252},"further-learning","Further Learning",[20,1255,1256,1265,1272,1279,1286,1293],{},[23,1257,1258],{},[1259,1260,1264],"a",{"href":1261,"rel":1262},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fcontrol-structures.if.php",[1263],"nofollow","PHP Manual: if",[23,1266,1267],{},[1259,1268,1271],{"href":1269,"rel":1270},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fcontrol-structures.foreach.php",[1263],"PHP Manual: foreach",[23,1273,1274],{},[1259,1275,1278],{"href":1276,"rel":1277},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fcontrol-structures.switch.php",[1263],"PHP Manual: switch",[23,1280,1281],{},[1259,1282,1285],{"href":1283,"rel":1284},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FGuide\u002FLoops_and_iteration",[1263],"MDN: Loops and iteration",[23,1287,1288],{},[1259,1289,1292],{"href":1290,"rel":1291},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Ffunctions.user-defined.php",[1263],"PHP Manual: functions",[23,1294,1295],{},[1259,1296,1299],{"href":1297,"rel":1298},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FGuide\u002FFunctions",[1263],"MDN: JavaScript functions",{"title":96,"searchDepth":1301,"depth":1301,"links":1302},2,[1303,1304,1305,1306,1308,1310,1312,1314,1315,1316,1317,1318,1319,1320,1322,1324,1326,1328,1329,1330,1331,1332,1334,1336,1338,1339,1340,1341],{"id":13,"depth":1301,"text":18},{"id":40,"depth":1301,"text":43},{"id":84,"depth":1301,"text":87},{"id":168,"depth":1301,"text":1307},"for Vs foreach",{"id":204,"depth":1301,"text":1309},"while And do while",{"id":256,"depth":1301,"text":1311},"PHP foreach Key And Value",{"id":303,"depth":1301,"text":1313},"JavaScript for...in Vs for...of",{"id":348,"depth":1301,"text":349},{"id":390,"depth":1301,"text":393},{"id":453,"depth":1301,"text":457},{"id":503,"depth":1301,"text":506},{"id":572,"depth":1301,"text":575},{"id":610,"depth":1301,"text":613},{"id":665,"depth":1301,"text":1321},"switch Example",{"id":714,"depth":1301,"text":1323},"Missing break In switch",{"id":758,"depth":1301,"text":1325},"break And continue",{"id":802,"depth":1301,"text":1327},"break And continue In JavaScript",{"id":840,"depth":1301,"text":843},{"id":882,"depth":1301,"text":883},{"id":920,"depth":1301,"text":923},{"id":952,"depth":1301,"text":955},{"id":984,"depth":1301,"text":1333},"abs() Example",{"id":1007,"depth":1301,"text":1335},"number_format() Example",{"id":1034,"depth":1301,"text":1337},"preg_replace() Example",{"id":1061,"depth":1301,"text":1064},{"id":1123,"depth":1301,"text":1124},{"id":1183,"depth":1301,"text":1186},{"id":1214,"depth":1301,"text":1215},"presentation","Internet Applications","Practice decisions, repetition, and reusable logic with small PHP and JavaScript examples that produce visible output.","Face-to-face class of about 40 students; includes prediction prompts, short coding checks, debugging discussion, and comparison between PHP and JavaScript.","10","65","75","md",{},true,"20","\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Core",false,"5",null,{"title":5,"description":1344},"published","internet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",[190,1362,1363,1364],"conditions","loops","functions","2026-05-30T05:48:54-04:00","1:01:13","aTmU0kABQms","https:\u002F\u002Fyoutu.be\u002FaTmU0kABQms","Conditions Loops and Functions","yEgpPEG6S_VS-yn8j4Wwyi63XofAPWGetalqRTdBUR4",[1372,1375,1380,1383,1386,1389,1392,1395,1399,1402,1405,1409,1412,1415,1419,1422,1425,1429,1432,1435,1438,1440,1442,1444,1446,1448,1450,1452,1455,1458,1461,1464,1467,1469,1472,1475,1479,1483,1487,1491,1494,1497,1500,1504,1508,1511,1514,1517,1520,1524,1528,1531,1533,1535,1538,1541,1544,1547,1550,1553,1556,1560,1564,1568,1572,1575,1577,1580,1583,1586,1589,1592,1595,1598,1601,1604,1607,1610,1613,1616,1619,1623,1626,1629,1632,1635,1638,1641,1644,1647,1650,1653,1657,1660,1663,1666,1669,1672,1675,1678,1681,1684,1687,1690,1693,1696,1699,1702,1705,1708,1711,1714,1717,1720,1723,1726,1729,1732,1735,1738,1741,1744,1747,1750,1753,1756,1759,1762,1765,1768,1771,1774,1777,1780,1783,1786,1789,1792,1795,1798,1801,1804,1807,1810,1813,1816,1819,1822,1825,1828,1831,1834,1837,1840,1843,1846,1849,1852,1855,1858,1861,1864,1867,1870,1873,1876,1879,1882,1885,1888,1891,1894,1897,1900,1903,1906,1909,1912,1915,1918,1921,1924,1927,1930,1933,1936,1939,1942,1945,1948,1951,1954,1957,1960,1963,1966,1969,1972,1975,1978,1981,1984,1987,1990,1993,1996,1999,2002,2005,2008,2011,2015,2018,2021,2024,2027,2030,2033,2036,2039,2042,2045,2048,2051,2054,2057,2060,2063,2066,2069,2072,2075,2078,2081,2084,2087,2090,2093,2096,2099,2102,2105,2108,2111,2114,2117,2120,2123,2126,2129,2132,2135,2138,2141,2144,2147,2150,2153,2156,2159,2162,2165,2168,2171,2174,2177,2180,2183,2186,2189,2192,2195,2198,2201,2204,2207,2210,2213,2216,2219,2222,2225,2228,2231,2234,2237,2240,2243,2246,2249,2252,2255,2258,2261,2264,2267,2270,2273,2276,2279,2282,2285,2288,2291,2294,2297,2300,2303,2306,2309,2312,2315,2318,2321,2324,2327,2330,2333,2336,2339,2342,2345,2348,2351,2354,2357,2360,2363,2366,2369,2372,2375,2378,2381,2384,2387,2390,2393,2396,2400,2403,2406,2409,2412,2415,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436,2438,2440,2442,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2498,2502,2506,2509,2513,2517,2520,2523,2526,2529,2532,2535,2539,2542,2545,2548,2551,2553,2555,2557,2559,2562,2565,2568,2571,2574,2577,2580,2583,2586,2589,2592,2595,2598,2601,2604,2607,2610,2613,2616,2619,2622,2625,2628,2631,2634,2637,2640,2643,2646,2649,2652,2655,2658,2661,2664,2667,2670,2673,2676,2679,2682,2685,2688,2691,2694,2697,2700,2703,2706,2709,2712,2715,2718,2721,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2808,2811,2814,2817,2820,2822,2824,2827,2830,2833,2836,2839,2842],{"path":1373,"title":1374,"order":1357,"module":1357,"status":1357},"\u002Fabout","About Content Version 3",{"path":1376,"title":1377,"order":1356,"module":1378,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-first-concept","First Concept","1","draft",{"path":1381,"title":1382,"order":1346,"module":1378,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?",{"path":1384,"title":1385,"order":1352,"module":1378,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?",{"path":1387,"title":1388,"order":1346,"module":14,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-game-balance\u002F01-game-balance","Game Balance",{"path":1390,"title":1391,"order":1346,"module":454,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory","Game Design: Color Theory",{"path":1393,"title":1394,"order":1352,"module":454,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":1396,"title":1397,"order":1346,"module":1398,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics","Game Mechanics","4",{"path":1400,"title":1401,"order":1352,"module":1398,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":1403,"title":1404,"order":1346,"module":1356,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness",{"path":1406,"title":1407,"order":1352,"module":1408,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning From Concept To Prototype","6",{"path":1410,"title":1411,"order":1346,"module":1025,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design",{"path":1413,"title":1414,"order":1352,"module":1025,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":1416,"title":1417,"order":1346,"module":1418,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","Entity-Based Systems","9",{"path":1420,"title":1421,"order":1346,"module":1346,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface",{"path":1423,"title":1424,"order":1352,"module":1346,"status":1379},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F02-actors-behavior-and-effects","Actors, Behavior, And Effects",{"path":1426,"title":1427,"order":1378,"module":1428,"status":1359},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design","0",{"path":1430,"title":1431,"order":1378,"module":1428,"status":1379},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":1433,"title":1434,"order":1357,"module":1357,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Presentation Revision Plan",{"path":1436,"title":1437,"order":1357,"module":1357,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Twenty-Minute Recording Plan",{"path":1439,"title":1382,"order":1346,"module":1378,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":1441,"title":1385,"order":1352,"module":1378,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":1443,"title":1388,"order":1346,"module":14,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":1445,"title":1391,"order":1346,"module":454,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":1447,"title":1394,"order":1352,"module":454,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":1449,"title":1397,"order":1346,"module":1398,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":1451,"title":1401,"order":1352,"module":1398,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":1453,"title":1454,"order":1346,"module":1356,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":1456,"title":1457,"order":1346,"module":1408,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":1459,"title":1460,"order":1352,"module":1408,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":1462,"title":1463,"order":1346,"module":1025,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design",{"path":1465,"title":1466,"order":1352,"module":1025,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":1468,"title":1417,"order":1346,"module":1418,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs",{"path":1470,"title":1471,"order":1346,"module":1346,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":1473,"title":1474,"order":1352,"module":1346,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":1476,"title":1477,"order":1346,"module":1478,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces","11",{"path":1480,"title":1481,"order":1346,"module":1482,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations","12",{"path":1484,"title":1485,"order":1346,"module":1486,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI","13",{"path":1488,"title":1489,"order":1346,"module":1490,"status":1379},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine","14",{"path":1492,"title":1493,"order":1378,"module":1428,"status":1379},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":1495,"title":1496,"order":1346,"module":1428,"status":1379},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":1498,"title":1499,"order":1352,"module":1428,"status":1379},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":1501,"title":1502,"order":1503,"module":1428,"status":1379},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice","40",{"path":1505,"title":1506,"order":1507,"module":1428,"status":1379},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint","30",{"path":1509,"title":1510,"order":1346,"module":1378,"status":1379},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":1512,"title":1513,"order":1352,"module":1378,"status":1379},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":1515,"title":1516,"order":1507,"module":1378,"status":1379},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":1518,"title":1519,"order":1503,"module":1378,"status":1379},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","Local Git Workflow And Course Repositories",{"path":1521,"title":1522,"order":1523,"module":1378,"status":1379},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions","50",{"path":1525,"title":1526,"order":1527,"module":1378,"status":1379},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations","60",{"path":1529,"title":1530,"order":1357,"module":1357,"status":1357},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":1532,"title":1530,"order":1346,"module":1378,"status":1357},"\u002Fgeneral\u002Fbasic-command-line",{"path":705,"title":1534,"order":1357,"module":1357,"status":1359},"Ethereal Lab Course Materials",{"path":1536,"title":1537,"order":1428,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord","Learn Courses Platform And Discord",{"path":1539,"title":1540,"order":1346,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":1542,"title":1543,"order":1352,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":1545,"title":1546,"order":1507,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":1548,"title":1549,"order":1503,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":1551,"title":1552,"order":1523,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":1554,"title":1555,"order":1527,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":1557,"title":1558,"order":1559,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches","70",{"path":1561,"title":1562,"order":1563,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup","80",{"path":1565,"title":1566,"order":1567,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox","90",{"path":1569,"title":1570,"order":1571,"module":1378,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware","100",{"path":1573,"title":1574,"order":1346,"module":14,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":1576,"title":5,"order":1352,"module":14,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":1578,"title":1579,"order":1346,"module":454,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":1581,"title":1582,"order":1352,"module":454,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Intro To Forms And GET\u002FPOST",{"path":1584,"title":1585,"order":1507,"module":454,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates","Understanding CSS\u002FJS Selectors And DOM Updates",{"path":1587,"title":1588,"order":1346,"module":1398,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":1590,"title":1591,"order":1352,"module":1398,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":1593,"title":1594,"order":1507,"module":1398,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":1596,"title":1597,"order":1503,"module":1398,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":1599,"title":1600,"order":1346,"module":1356,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":1602,"title":1603,"order":1352,"module":1356,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":1605,"title":1606,"order":1507,"module":1356,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":1608,"title":1609,"order":1503,"module":1356,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":1611,"title":1612,"order":1346,"module":1408,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":1614,"title":1615,"order":1352,"module":1408,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":1617,"title":1618,"order":1507,"module":1408,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Dynamic Content",{"path":1620,"title":1621,"order":1346,"module":1622,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data","7",{"path":1624,"title":1625,"order":1352,"module":1622,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":1627,"title":1628,"order":1507,"module":1622,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":1630,"title":1631,"order":1346,"module":1025,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":1633,"title":1634,"order":1352,"module":1025,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":1636,"title":1637,"order":1507,"module":1025,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":1639,"title":1640,"order":1346,"module":1418,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":1642,"title":1643,"order":1352,"module":1418,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":1645,"title":1646,"order":1346,"module":1346,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":1648,"title":1649,"order":1352,"module":1346,"status":1379},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":1651,"title":1652,"order":1378,"module":1428,"status":1359},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":1654,"title":1655,"order":1503,"module":1346,"status":1656},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":1658,"title":1659,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":1661,"title":1662,"order":1352,"module":1025,"status":1656},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":1664,"title":1665,"order":1507,"module":1418,"status":1656},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":1667,"title":1668,"order":1356,"module":1398,"status":1359},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":1670,"title":1671,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":1673,"title":1674,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":1676,"title":1677,"order":1357,"module":1357,"status":1357},"\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":1679,"title":1680,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":1682,"title":1683,"order":1357,"module":1357,"status":1357},"\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":1685,"title":1686,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":1688,"title":1689,"order":1357,"module":1357,"status":1357},"\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":1691,"title":1692,"order":1357,"module":1357,"status":1357},"\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":1694,"title":1695,"order":1357,"module":1357,"status":1357},"\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":1697,"title":1698,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":1700,"title":1701,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":1703,"title":1704,"order":1357,"module":1357,"status":1357},"\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":1706,"title":1707,"order":1357,"module":1357,"status":1357},"\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":1709,"title":1710,"order":1357,"module":1357,"status":1357},"\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":1712,"title":1713,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":1715,"title":1716,"order":1357,"module":1357,"status":1357},"\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":1718,"title":1719,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":1721,"title":1722,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":1724,"title":1725,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":1727,"title":1728,"order":1357,"module":1357,"status":1357},"\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":1730,"title":1731,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":1733,"title":1734,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":1736,"title":1737,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":1739,"title":1740,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":1742,"title":1743,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":1745,"title":1746,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":1748,"title":1749,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":1751,"title":1752,"order":1357,"module":1357,"status":1357},"\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":1754,"title":1755,"order":1357,"module":1357,"status":1357},"\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":1757,"title":1758,"order":1357,"module":1357,"status":1357},"\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":1760,"title":1761,"order":1357,"module":1357,"status":1357},"\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":1763,"title":1764,"order":1357,"module":1357,"status":1357},"\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":1766,"title":1767,"order":1357,"module":1357,"status":1357},"\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":1769,"title":1770,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":1772,"title":1773,"order":1357,"module":1357,"status":1357},"\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":1775,"title":1776,"order":1357,"module":1357,"status":1357},"\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":1778,"title":1779,"order":1357,"module":1357,"status":1357},"\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":1781,"title":1782,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":1784,"title":1785,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":1787,"title":1788,"order":1357,"module":1357,"status":1357},"\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":1790,"title":1791,"order":1357,"module":1357,"status":1357},"\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":1793,"title":1794,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":1796,"title":1797,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":1799,"title":1800,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":1802,"title":1803,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":1805,"title":1806,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":1808,"title":1809,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":1811,"title":1812,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":1814,"title":1815,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":1817,"title":1818,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":1820,"title":1821,"order":1357,"module":1357,"status":1357},"\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":1823,"title":1824,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":1826,"title":1827,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":1829,"title":1830,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":1832,"title":1833,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":1835,"title":1836,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":1838,"title":1839,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":1841,"title":1842,"order":1357,"module":1357,"status":1357},"\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":1844,"title":1845,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":1847,"title":1848,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":1850,"title":1851,"order":1357,"module":1357,"status":1357},"\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":1853,"title":1854,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":1856,"title":1857,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":1859,"title":1860,"order":1357,"module":1357,"status":1357},"\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":1862,"title":1863,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":1865,"title":1866,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":1868,"title":1869,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":1871,"title":1872,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":1874,"title":1875,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":1877,"title":1878,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":1880,"title":1881,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":1883,"title":1884,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":1886,"title":1887,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":1889,"title":1890,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":1892,"title":1893,"order":1357,"module":1357,"status":1357},"\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":1895,"title":1896,"order":1357,"module":1357,"status":1357},"\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":1898,"title":1899,"order":1357,"module":1357,"status":1357},"\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":1901,"title":1902,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":1904,"title":1905,"order":1357,"module":1357,"status":1357},"\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":1907,"title":1908,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":1910,"title":1911,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":1913,"title":1914,"order":1357,"module":1357,"status":1357},"\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":1916,"title":1917,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":1919,"title":1920,"order":1357,"module":1357,"status":1357},"\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":1922,"title":1923,"order":1357,"module":1357,"status":1357},"\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":1925,"title":1926,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":1928,"title":1929,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":1931,"title":1932,"order":1357,"module":1357,"status":1357},"\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":1934,"title":1935,"order":1357,"module":1357,"status":1357},"\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":1937,"title":1938,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":1940,"title":1941,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":1943,"title":1944,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":1946,"title":1947,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":1949,"title":1950,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":1952,"title":1953,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":1955,"title":1956,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":1958,"title":1959,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":1961,"title":1962,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":1964,"title":1965,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":1967,"title":1968,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":1970,"title":1971,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":1973,"title":1974,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":1976,"title":1977,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":1979,"title":1980,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":1982,"title":1983,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":1985,"title":1986,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":1988,"title":1989,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":1991,"title":1992,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":1994,"title":1995,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":1997,"title":1998,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":2000,"title":2001,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":2003,"title":2004,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":2006,"title":2007,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":2009,"title":2010,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":2012,"title":2013,"order":1357,"module":1357,"status":2014},"\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":2016,"title":2017,"order":1357,"module":1357,"status":2014},"\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":2019,"title":2020,"order":1357,"module":1357,"status":2014},"\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":2022,"title":2023,"order":1357,"module":1357,"status":2014},"\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":2025,"title":2026,"order":1357,"module":1357,"status":2014},"\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":2028,"title":2029,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":2031,"title":2032,"order":1357,"module":1357,"status":2014},"\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":2034,"title":2035,"order":1357,"module":1357,"status":2014},"\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":2037,"title":2038,"order":1357,"module":1357,"status":2014},"\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":2040,"title":2041,"order":1357,"module":1357,"status":2014},"\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":2043,"title":2044,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":2046,"title":2047,"order":1357,"module":1357,"status":2014},"\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":2049,"title":2050,"order":1357,"module":1357,"status":2014},"\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":2052,"title":2053,"order":1357,"module":1357,"status":1357},"\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":2055,"title":2056,"order":1357,"module":1357,"status":2014},"\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":2058,"title":2059,"order":1357,"module":1357,"status":2014},"\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":2061,"title":2062,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":2064,"title":2065,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":2067,"title":2068,"order":1357,"module":1357,"status":1357},"\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":2070,"title":2071,"order":1357,"module":1357,"status":1357},"\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":2073,"title":2074,"order":1357,"module":1357,"status":2014},"\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":2076,"title":2077,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":2079,"title":2080,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":2082,"title":2083,"order":1357,"module":1357,"status":1357},"\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":2085,"title":2086,"order":1357,"module":1357,"status":2014},"\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":2088,"title":2089,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":2091,"title":2092,"order":1357,"module":1357,"status":2014},"\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":2094,"title":2095,"order":1357,"module":1357,"status":2014},"\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":2097,"title":2098,"order":1357,"module":1357,"status":1357},"\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":2100,"title":2101,"order":1357,"module":1357,"status":2014},"\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":2103,"title":2104,"order":1357,"module":1357,"status":2014},"\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":2106,"title":2107,"order":1357,"module":1357,"status":1357},"\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":2109,"title":2110,"order":1357,"module":1357,"status":1357},"\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":2112,"title":2113,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":2115,"title":2116,"order":1357,"module":1357,"status":2014},"\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":2118,"title":2119,"order":1357,"module":1357,"status":2014},"\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":2121,"title":2122,"order":1357,"module":1357,"status":2014},"\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":2124,"title":2125,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":2127,"title":2128,"order":1357,"module":1357,"status":2014},"\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":2130,"title":2131,"order":1357,"module":1357,"status":1357},"\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":2133,"title":2134,"order":1357,"module":1357,"status":1357},"\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":2136,"title":2137,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":2139,"title":2140,"order":1357,"module":1357,"status":2014},"\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":2142,"title":2143,"order":1357,"module":1357,"status":2014},"\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":2145,"title":2146,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":2148,"title":2149,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":2151,"title":2152,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":2154,"title":2155,"order":1357,"module":1357,"status":1357},"\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":2157,"title":2158,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":2160,"title":2161,"order":1357,"module":1357,"status":2014},"\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":2163,"title":2164,"order":1357,"module":1357,"status":2014},"\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":2166,"title":2167,"order":1357,"module":1357,"status":2014},"\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":2169,"title":2170,"order":1357,"module":1357,"status":2014},"\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":2172,"title":2173,"order":1357,"module":1357,"status":2014},"\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":2175,"title":2176,"order":1357,"module":1357,"status":2014},"\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":2178,"title":2179,"order":1357,"module":1357,"status":2014},"\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":2181,"title":2182,"order":1357,"module":1357,"status":2014},"\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":2184,"title":2185,"order":1357,"module":1357,"status":2014},"\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":2187,"title":2188,"order":1357,"module":1357,"status":2014},"\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":2190,"title":2191,"order":1357,"module":1357,"status":2014},"\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":2193,"title":2194,"order":1357,"module":1357,"status":1357},"\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":2196,"title":2197,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":2199,"title":2200,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":2202,"title":2203,"order":1357,"module":1357,"status":2014},"\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":2205,"title":2206,"order":1357,"module":1357,"status":2014},"\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":2208,"title":2209,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":2211,"title":2212,"order":1357,"module":1357,"status":2014},"\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":2214,"title":2215,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":2217,"title":2218,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":2220,"title":2221,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":2223,"title":2224,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":2226,"title":2227,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":2229,"title":2230,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":2232,"title":2233,"order":1357,"module":1357,"status":2014},"\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":2235,"title":2236,"order":1357,"module":1357,"status":2014},"\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":2238,"title":2239,"order":1357,"module":1357,"status":2014},"\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":2241,"title":2242,"order":1357,"module":1357,"status":2014},"\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":2244,"title":2245,"order":1357,"module":1357,"status":2014},"\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":2247,"title":2248,"order":1357,"module":1357,"status":2014},"\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":2250,"title":2251,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":2253,"title":2254,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":2256,"title":2257,"order":1357,"module":1357,"status":2014},"\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":2259,"title":2260,"order":1357,"module":1357,"status":2014},"\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":2262,"title":2263,"order":1357,"module":1357,"status":2014},"\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":2265,"title":2266,"order":1357,"module":1357,"status":2014},"\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":2268,"title":2269,"order":1357,"module":1357,"status":1357},"\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":2271,"title":2272,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":2274,"title":2275,"order":1357,"module":1357,"status":1357},"\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":2277,"title":2278,"order":1357,"module":1357,"status":2014},"\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":2280,"title":2281,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":2283,"title":2284,"order":1357,"module":1357,"status":2014},"\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":2286,"title":2287,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":2289,"title":2290,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":2292,"title":2293,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":2295,"title":2296,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":2298,"title":2299,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":2301,"title":2302,"order":1357,"module":1357,"status":2014},"\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":2304,"title":2305,"order":1357,"module":1357,"status":2014},"\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":2307,"title":2308,"order":1357,"module":1357,"status":2014},"\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":2310,"title":2311,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":2313,"title":2314,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":2316,"title":2317,"order":1357,"module":1357,"status":1357},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":2319,"title":2320,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":2322,"title":2323,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":2325,"title":2326,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":2328,"title":2329,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":2331,"title":2332,"order":1357,"module":1357,"status":2014},"\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":2334,"title":2335,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":2337,"title":2338,"order":1357,"module":1357,"status":2014},"\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":2340,"title":2341,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":2343,"title":2344,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":2346,"title":2347,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":2349,"title":2350,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":2352,"title":2353,"order":1357,"module":1357,"status":2014},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":2355,"title":2356,"order":1378,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":2358,"title":2359,"order":14,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":2361,"title":2362,"order":454,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":2364,"title":2365,"order":1398,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":2367,"title":2368,"order":1356,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":2370,"title":2371,"order":1408,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":2373,"title":2374,"order":1622,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":2376,"title":2377,"order":1428,"module":1428,"status":1379},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":2379,"title":2380,"order":1346,"module":1378,"status":1379},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":2382,"title":2383,"order":1352,"module":14,"status":1379},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":2385,"title":2386,"order":1507,"module":454,"status":1379},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":2388,"title":2389,"order":1503,"module":1398,"status":1379},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":2391,"title":2392,"order":1523,"module":1356,"status":1379},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":2394,"title":2395,"order":1527,"module":1408,"status":1379},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":2397,"title":2398,"order":2399,"module":1408,"status":1379},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":2401,"title":2402,"order":1559,"module":1622,"status":1379},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":2404,"title":2405,"order":1563,"module":1025,"status":1379},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":2407,"title":2408,"order":1567,"module":1418,"status":1379},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":2410,"title":2411,"order":1571,"module":1346,"status":1379},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":2413,"title":2414,"order":1357,"module":1357,"status":1379},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Presentation Revision Plan",{"path":2416,"title":2417,"order":1357,"module":1357,"status":1379},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Twenty-Minute Recording Plan",{"path":2419,"title":1537,"order":1428,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":2421,"title":1540,"order":1346,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands",{"path":2423,"title":1543,"order":1352,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools",{"path":2425,"title":1546,"order":1507,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh",{"path":2427,"title":1549,"order":1503,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs",{"path":2429,"title":1552,"order":1523,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment",{"path":2431,"title":1555,"order":1527,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":2433,"title":1558,"order":1559,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":2435,"title":1562,"order":1563,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":2437,"title":1566,"order":1567,"module":1378,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox",{"path":2439,"title":1570,"order":1571,"module":1378,"status":1379},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":2441,"title":1574,"order":1346,"module":14,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":1353,"title":5,"order":1352,"module":14,"status":1359},{"path":2444,"title":1579,"order":1346,"module":454,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":2446,"title":1582,"order":1352,"module":454,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":2448,"title":1585,"order":1507,"module":454,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":2450,"title":1588,"order":1346,"module":1398,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":2452,"title":1591,"order":1352,"module":1398,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":2454,"title":1594,"order":1507,"module":1398,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":2456,"title":1597,"order":1503,"module":1398,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":2458,"title":1600,"order":1346,"module":1356,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":2460,"title":1603,"order":1352,"module":1356,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":2462,"title":2463,"order":1507,"module":1356,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Flash Messages And Redirect Feedback",{"path":2465,"title":1609,"order":1503,"module":1356,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":2467,"title":1612,"order":1346,"module":1408,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":2469,"title":1615,"order":1352,"module":1408,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":2471,"title":1618,"order":1507,"module":1408,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":2473,"title":1621,"order":1346,"module":1622,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":2475,"title":1625,"order":1352,"module":1622,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":2477,"title":1628,"order":1507,"module":1622,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":2479,"title":1631,"order":1346,"module":1025,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":2481,"title":1634,"order":1352,"module":1025,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":2483,"title":1637,"order":1507,"module":1025,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":2485,"title":1640,"order":1346,"module":1418,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":2487,"title":1643,"order":1352,"module":1418,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":2489,"title":1646,"order":1346,"module":1346,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":2491,"title":1649,"order":1352,"module":1346,"status":1359},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":2493,"title":1652,"order":1378,"module":1428,"status":1359},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":2495,"title":2496,"order":2497,"module":1346,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet","110",{"path":2499,"title":2500,"order":2501,"module":1408,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":2503,"title":2504,"order":2505,"module":1408,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":2507,"title":2508,"order":2497,"module":1408,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":2510,"title":2511,"order":2512,"module":1025,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026","120",{"path":2514,"title":2515,"order":2516,"module":1418,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026","130",{"path":2518,"title":2519,"order":1346,"module":1378,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":2521,"title":2522,"order":1352,"module":14,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":2524,"title":2525,"order":1507,"module":454,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":2527,"title":2528,"order":1503,"module":1398,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":2530,"title":2531,"order":1523,"module":1356,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":2533,"title":2534,"order":1527,"module":1408,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":2536,"title":2537,"order":2538,"module":1408,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":2540,"title":2541,"order":1559,"module":1622,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":2543,"title":2544,"order":1563,"module":1025,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":2546,"title":2547,"order":1567,"module":1418,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":2549,"title":2550,"order":1571,"module":1346,"status":1379},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":2552,"title":1540,"order":1346,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2554,"title":1543,"order":1352,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2556,"title":1546,"order":1507,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2558,"title":1549,"order":1503,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2560,"title":2561,"order":1523,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":2563,"title":2564,"order":1527,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":2566,"title":2567,"order":1346,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":2569,"title":2570,"order":1352,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":2572,"title":2573,"order":1507,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":2575,"title":2576,"order":1503,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":2578,"title":2579,"order":1346,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":2581,"title":2582,"order":1352,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":2584,"title":2585,"order":1507,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":2587,"title":2588,"order":1503,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":2590,"title":2591,"order":1346,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":2593,"title":2594,"order":1352,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":2596,"title":2597,"order":1507,"module":1398,"status":1379},"\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":2599,"title":2600,"order":1346,"module":1356,"status":1379},"\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":2602,"title":2603,"order":1352,"module":1408,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":2605,"title":2606,"order":1507,"module":1408,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":2608,"title":2609,"order":1346,"module":1622,"status":1379},"\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":2611,"title":2612,"order":1352,"module":1622,"status":1379},"\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":2614,"title":2615,"order":1507,"module":1622,"status":1379},"\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":2617,"title":2618,"order":1503,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":2620,"title":2621,"order":1523,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":2623,"title":2624,"order":1346,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":2626,"title":2627,"order":1352,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":2629,"title":2630,"order":1507,"module":1025,"status":1379},"\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":2632,"title":2633,"order":1503,"module":1025,"status":1379},"\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":2635,"title":2636,"order":1523,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":2638,"title":2639,"order":1346,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":2641,"title":2642,"order":1352,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":2644,"title":2645,"order":1507,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":2647,"title":2648,"order":1503,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":2650,"title":2651,"order":1523,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":2653,"title":2654,"order":1527,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":2656,"title":2657,"order":1346,"module":1346,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":2659,"title":2660,"order":1352,"module":1346,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":2662,"title":2663,"order":1507,"module":1346,"status":1379},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":2665,"title":2666,"order":1378,"module":1428,"status":1359},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":2668,"title":2669,"order":1346,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":2671,"title":2672,"order":1352,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":2674,"title":2675,"order":1507,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":2677,"title":2678,"order":1346,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":2680,"title":2681,"order":1352,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":2683,"title":2684,"order":1507,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":2686,"title":2687,"order":1346,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":2689,"title":2690,"order":1352,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":2692,"title":2693,"order":1507,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":2695,"title":2696,"order":1503,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":2698,"title":2699,"order":1346,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":2701,"title":2702,"order":1352,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":2704,"title":2705,"order":1507,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":2707,"title":2708,"order":1346,"module":1356,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":2710,"title":2711,"order":1352,"module":1356,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":2713,"title":2714,"order":1507,"module":1356,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":2716,"title":2717,"order":1428,"module":1428,"status":1379},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":2719,"title":2720,"order":1357,"module":1357,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Presentation Revision Plan",{"path":2722,"title":2723,"order":1357,"module":1357,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Twenty-Minute Recording Plan",{"path":2725,"title":1540,"order":1346,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2727,"title":1543,"order":1352,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2729,"title":1546,"order":1507,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2731,"title":1549,"order":1503,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2733,"title":2561,"order":1523,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup",{"path":2735,"title":2564,"order":1527,"module":1378,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup",{"path":2737,"title":2567,"order":1346,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":2739,"title":2570,"order":1352,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":2741,"title":2573,"order":1507,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":2743,"title":2576,"order":1503,"module":14,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":2745,"title":2579,"order":1346,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":2747,"title":2582,"order":1352,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":2749,"title":2585,"order":1507,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":2751,"title":2588,"order":1503,"module":454,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":2753,"title":2591,"order":1346,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":2755,"title":2594,"order":1352,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":2757,"title":2597,"order":1507,"module":1398,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":2759,"title":2600,"order":1346,"module":1356,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":2761,"title":2762,"order":1346,"module":1408,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":2764,"title":2603,"order":1352,"module":1408,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026",{"path":2766,"title":2606,"order":1507,"module":1408,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check",{"path":2768,"title":2609,"order":1346,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":2770,"title":2612,"order":1352,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":2772,"title":2615,"order":1507,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":2774,"title":2618,"order":1503,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":2776,"title":2621,"order":1523,"module":1622,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":2778,"title":2624,"order":1346,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":2780,"title":2627,"order":1352,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":2782,"title":2630,"order":1507,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":2784,"title":2633,"order":1503,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":2786,"title":2636,"order":1523,"module":1025,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":2788,"title":2639,"order":1346,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":2790,"title":2642,"order":1352,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":2792,"title":2645,"order":1507,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":2794,"title":2648,"order":1503,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":2796,"title":2651,"order":1523,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":2798,"title":2654,"order":1527,"module":1418,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":2800,"title":2657,"order":1346,"module":1346,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":2802,"title":2660,"order":1352,"module":1346,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":2804,"title":2663,"order":1507,"module":1346,"status":1379},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":2806,"title":2807,"order":1346,"module":1378,"status":1379},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Required Architecture Overview",{"path":2809,"title":2810,"order":1378,"module":1428,"status":1359},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":2812,"title":2813,"order":1378,"module":1428,"status":1359},"\u002Fsystems-integration","Systems Integration",{"path":2815,"title":2816,"order":1357,"module":1357,"status":1379},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Presentation Revision Plan",{"path":2818,"title":2819,"order":1357,"module":1357,"status":1379},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Twenty-Minute Recording Plan",{"path":2821,"title":2807,"order":1346,"module":1378,"status":1359},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":2823,"title":2810,"order":1378,"module":1428,"status":1359},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":2825,"title":2826,"order":1357,"module":1357,"status":1357},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":2828,"title":2829,"order":1357,"module":1357,"status":1357},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":2831,"title":2832,"order":1357,"module":1357,"status":1357},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":2834,"title":2835,"order":1357,"module":1357,"status":1357},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":2837,"title":2838,"order":1352,"module":1428,"status":1379},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":2840,"title":2841,"order":1507,"module":1428,"status":1379},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":2843,"title":2844,"order":1346,"module":1428,"status":1379},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",1788152085865]