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