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