[{"data":1,"prerenderedAt":2472},["ShallowReactive",2],{"content-page:\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F05-authentication-and-authorization":3,"content-page-quiz:none":903,"content-navigation-index":928},{"id":4,"title":5,"audience":6,"body":7,"contentType":901,"course":902,"courseId":903,"description":904,"estimateBasis":905,"estimatedDiscussionMinutes":906,"estimatedLiveMinutes":907,"estimatedRecordingMinutes":907,"estimatedTitleSeconds":13,"estimatedTotalMinutes":907,"estimatedTraceMinutes":906,"extension":908,"meta":909,"module":911,"navigation":912,"order":913,"path":914,"presentationRole":915,"promptAssist":916,"revision":917,"semester":903,"seo":918,"status":919,"stem":920,"syllabus":903,"tags":921,"updated":926,"videoDuration":903,"videoId":903,"videoLink":903,"videoTitle":903,"week":911,"__hash__":927},"content\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F05-authentication-and-authorization.md","Authentication And Authorization Across VMs","student",{"type":8,"value":9,"toc":880},"minimark",[10,38,74,112,168,231,263,345,378,406,434,469,533,625,681,722,750,860],[11,12,16,21,34],"slide",{"estimated-seconds":13,"id":14,"level":15},"30","outcome","2",[17,18,20],"h2",{"id":19},"overview","Overview",[22,23,24,28,31],"ul",{},[25,26,27],"li",{},"Registration and login across the App, RabbitMQ, and DB VMs",[25,29,30],{},"Identity, sessions, and access to protected resources",[25,32,33],{},"Evidence for the Module 4 authentication and authorization milestone",[35,36,37],"p",{},"Prerequisite: the Module 3 role-based VM baseline and logging system, with working RabbitMQ communication between roles",[11,39,42,46,71],{"estimated-seconds":40,"id":41,"level":15},"100","core-idea",[17,43,45],{"id":44},"authentication-authorization-and-sessions","Authentication, Authorization, And Sessions",[22,47,48,55,61,68],{},[25,49,50,54],{},[51,52,53],"lesson-term",{},"Authentication"," checks who is signing in, for example by verifying a password against a stored password hash",[25,56,57,60],{},[51,58,59],{},"Authorization"," checks whether the current user may reach a resource or perform an action",[25,62,63,64,67],{},"A ",[51,65,66],{},"session"," lets the app recognize an authenticated user on later requests without asking for the password each time",[25,69,70],{},"Registration creates an account; login verifies it; a protected action requires an active session and the appropriate permission",[35,72,73],{},"Knowing an email address, seeing a login form, or hiding a link in the browser does not authorize a server action",[11,75,79,83,93],{"estimated-seconds":76,"id":77,"level":78},"120","account-permissions","3",[17,80,82],{"id":81},"account-roles-and-permissions","Account Roles And Permissions",[35,84,63,85,88,89,92],{},[51,86,87],{},"permission"," allows a particular action on a resource; an account ",[51,90,91],{},"role"," groups additional permissions",[22,94,95,103,106,109],{},[25,96,97,98],{},"General users start with no assigned roles\n",[22,99,100],{},[25,101,102],{},"They can use the application's normal user features",[25,104,105],{},"The required admin role grants maintenance access for user accounts, role assignments, and the application's own data",[25,107,108],{},"The server checks permissions for each requested action",[25,110,111],{},"For private records, also check which account owns the record",[11,113,115,118,162,165],{"estimated-seconds":76,"id":114,"level":15},"project-checkpoints",[17,116,117],{"id":114},"Project Checkpoints",[119,120,121,134],"table",{},[122,123,124],"thead",{},[125,126,127,131],"tr",{},[128,129,130],"th",{},"Checkpoint",[128,132,133],{},"Working behavior",[135,136,137,146,154],"tbody",{},[125,138,139,143],{},[140,141,142],"td",{},"Module 4 \u002F Milestone 2",[140,144,145],{},"Registration, login, a persistent session, logout, and one protected application action",[125,147,148,151],{},[140,149,150],{},"Module 6 \u002F MVP",[140,152,153],{},"An authenticated, authorized admin uses browser pages to create, read, update, and delete the named team-owned records",[125,155,156,159],{},[140,157,158],{},"Project Showcase",[140,160,161],{},"The remaining approved product scope, including users updating their own profiles and admin account\u002Frole maintenance",[35,163,164],{},"Profile and admin account\u002Frole-management pages belong in the MVP when the approved proposal maps them there; otherwise they remain required by the Project Showcase",[35,166,167],{},"Password security and the service boundaries apply throughout this progression",[11,169,172,176,222,225,228],{"estimated-seconds":170,"id":171,"level":15},"110","roles-and-boundary",[17,173,175],{"id":174},"service-responsibilities","Service Responsibilities",[119,177,178,188],{},[122,179,180],{},[125,181,182,185],{},[128,183,184],{},"Service",[128,186,187],{},"Responsibility",[135,189,190,198,206,214],{},[125,191,192,195],{},[140,193,194],{},"App VM",[140,196,197],{},"Handles browser requests, sessions, and server permission checks",[125,199,200,203],{},[140,201,202],{},"RabbitMQ VM",[140,204,205],{},"Carries account-operation requests and replies",[125,207,208,211],{},[140,209,210],{},"DB VM",[140,212,213],{},"Stores accounts and verifies credentials",[125,215,216,219],{},[140,217,218],{},"API VM",[140,220,221],{},"Handles approved project integration work; participates in authentication where the design requires it",[35,223,224],{},"The App has no direct DB connection or DB credentials",[35,226,227],{},"The Module 3 fanout exchange sends log-event copies to each VM's queue. Account operations use requests with replies delivered to the waiting caller",[35,229,230],{},"Restrict broker access so only the intended DB worker can publish authentication results to the App's reply route",[11,232,235,239,243,260],{"estimated-seconds":233,"id":234,"level":15},"130","request-reply",[17,236,238],{"id":237},"authentication-requests-and-replies","Authentication Requests And Replies",[240,241],"mermaid",{"code":242},"flowchart LR\n  U[Browser] --> A[App VM]\n  A -->|auth request with correlation ID| M[MQ VM]\n  M --> D[DB VM worker]\n  D -->|result with matching ID| M\n  M --> A\n  A -->|safe user response| U\n",[22,244,245,248,254,257],{},[25,246,247],{},"The team defines the request and reply fields, routing, timeout, and malformed-message behavior before implementation",[25,249,63,250,253],{},[51,251,252],{},"correlation ID"," pairs a reply with its waiting request; handle late or duplicate replies without creating another session",[25,255,256],{},"Broker permissions control which worker may publish results on the App's reply route",[25,258,259],{},"On timeout or an unavailable DB worker, report a retryable failure and create no session",[35,261,262],{},"The example below shows two pending login requests",[11,264,267,271,282,291,294],{"estimated-seconds":265,"id":266,"level":78},"90","worked-example",[17,268,270],{"id":269},"two-login-requests","Two Login Requests",[35,272,273,274,278,279],{},"The App is waiting for two fictional test-account logins: Ada's request ",[275,276,277],"code",{},"login-A"," and Sam's request ",[275,280,281],{},"login-B",[35,283,284,285,287,288,290],{},"The DB worker replies in reverse order: ",[275,286,281],{}," fails, then ",[275,289,277],{}," succeeds",[35,292,293],{},"How does the App determine which pending login each reply belongs to?",[295,296,298,301,342],"reveal-item",{"order":297},"1",[35,299,300],{},"Match each reply's correlation ID to the pending request, then apply only that request's result",[119,302,303,316],{},[122,304,305],{},[125,306,307,310,313],{},[128,308,309],{},"Reply",[128,311,312],{},"Waiting request",[128,314,315],{},"Result",[135,317,318,330],{},[125,319,320,324,327],{},[140,321,322],{},[275,323,281],{},[140,325,326],{},"Sam's login",[140,328,329],{},"Reject; no session",[125,331,332,336,339],{},[140,333,334],{},[275,335,277],{},[140,337,338],{},"Ada's login",[140,340,341],{},"Create Ada's session",[35,343,344],{},"The correlation ID identifies the waiting request. Verified credentials and permissions determine access",[11,346,348,352,375],{"estimated-seconds":170,"id":347,"level":15},"registration",[17,349,351],{"id":350},"registration-and-password-storage","Registration And Password Storage",[22,353,354,357,363,369,372],{},[25,355,356],{},"Collect at least an email address and password, then reject invalid input and a duplicate account",[25,358,63,359,362],{},[51,360,361],{},"password hash"," is a one-way derived value for checking a password without storing the original",[25,364,63,365,368],{},[51,366,367],{},"salt"," is fresh random data used for each stored password; the library handles it so equal passwords do not produce equal stored hashes",[25,370,371],{},"The DB VM stores the account record and uses a password-hashing library that makes guessing costly; a fast general-purpose hash such as SHA-256 is unsuitable here",[25,373,374],{},"Keep passwords and session secrets out of source, logs, screenshots, and persistent queue history",[35,376,377],{},"The App waits for a registration result before telling the user the account was created",[11,379,381,385,403],{"estimated-seconds":265,"id":380,"level":15},"login",[17,382,384],{"id":383},"login-results","Login Results",[22,386,387,390,393,396],{},[25,388,389],{},"The DB worker checks the submitted password with the password library's verification operation",[25,391,392],{},"An unknown email and a wrong password both fail; the user sees the same generic invalid-credentials message",[25,394,395],{},"Internal failure records distinguish the reason without recording the submitted password or other secrets",[25,397,398,399,402],{},"A successful result lets the App create a new ",[51,400,66],{"usage":401},"repeated"," for that user",[35,404,405],{},"A broker delivery confirmation alone does not prove that credentials were verified",[11,407,408,412,431],{"estimated-seconds":76,"id":66,"level":15},[17,409,411],{"id":410},"session-creation-expiry-and-logout","Session Creation, Expiry, And Logout",[413,414,415,418,421,428],"ol",{},[25,416,417],{},"After successful login, issue an unpredictable session credential and associate it with the authenticated identity using the team's chosen strategy",[25,419,420],{},"On a later request, validate that credential and check whether the session is still valid",[25,422,423,424,427],{},"Apply the ",[51,425,426],{"usage":401},"authorization"," rule to the requested resource or action on the server",[25,429,430],{},"Logout invalidates the session; expiry also ends access",[35,432,433],{},"The team chooses a session strategy and a reasonable expiry, then demonstrates navigation, expiry policy, and logout behavior",[11,435,437,441,444,458],{"estimated-seconds":40,"id":436,"level":78},"session-example",[17,438,440],{"id":439},"cookie-sessions","Cookie Sessions",[35,442,443],{},"Example strategy: the App stores session state and sends a random session ID to the browser",[413,445,446,449,452,455],{},[25,447,448],{},"Ada logs in; the App creates a fresh random ID mapped to Ada's account and an expiry",[25,450,451],{},"The browser stores the ID in a cookie and sends it on a later request to the App",[25,453,454],{},"The App looks up the valid session and checks Ada's permission before returning protected data",[25,456,457],{},"Logout invalidates the server record; the old ID no longer grants access",[22,459,460,463,466],{},[25,461,462],{},"The session ID is a credential linked to the account; the App validates it on protected requests",[25,464,465],{},"Use HTTPS and the framework's session\u002Fcookie protections",[25,467,468],{},"The team chooses a session strategy supported by its stack",[11,470,472,476,479,525,528],{"estimated-seconds":76,"id":471,"level":15},"protected-action",[17,473,475],{"id":474},"server-permission-checks","Server Permission Checks",[35,477,478],{},"Consider an author-created saved-items app: a private saved item belongs to the account that saved it; only that account may open or change its saved item",[119,480,481,491],{},[122,482,483],{},[125,484,485,488],{},[128,486,487],{},"Request state",[128,489,490],{},"Expected protected-action result",[135,492,493,501,509,517],{},[125,494,495,498],{},[140,496,497],{},"No session",[140,499,500],{},"Deny and ask the user to sign in",[125,502,503,506],{},[140,504,505],{},"Ada's valid session and Ada's item",[140,507,508],{},"Permit the action",[125,510,511,514],{},[140,512,513],{},"Ada's valid session but Sam's item ID in the URL",[140,515,516],{},"Deny that action",[125,518,519,522],{},[140,520,521],{},"Session invalidated by logout",[140,523,524],{},"Deny, even if an old page remains visible",[35,526,527],{},"What would happen if the App hid the button but never checked the server action?",[295,529,530],{"order":297},[35,531,532],{},"A direct request could still reach the action; the server must enforce the decision",[11,534,536,540,543,622],{"estimated-seconds":76,"id":535,"level":78},"admin-data",[17,537,539],{"id":538},"manage-app-data-in-the-browser","Manage App Data In The Browser",[35,541,542],{},"Continue the saved-items example: admins maintain the app's own catalog entries, while users manage their private saved lists",[544,545,550,574],"two-col",{"gap":546,"left-width":547,"right-width":547,"align":548,"stack":549},"lg","1fr","top","auto",[551,552,554,560],"template",{"v-slot:left":553},"",[35,555,556,559],{},[51,557,558],{},"CRUD"," means create, read, update, and delete",[22,561,562,565,568,571],{},[25,563,564],{},"At MVP, admins must manage the proposal's named team-owned records through browser pages",[25,566,567],{},"Changes must persist in the team's database",[25,569,570],{},"API endpoints or command-line tools alone do not satisfy the web-interface requirement",[25,572,573],{},"Deny signed-in non-admin users access to both pages and server actions",[551,575,576],{"v-slot:right":553},[119,577,578,588],{},[122,579,580],{},[125,581,582,585],{},[128,583,584],{},"Operation",[128,586,587],{},"Browser behavior in this example",[135,589,590,598,606,614],{},[125,591,592,595],{},[140,593,594],{},"Create",[140,596,597],{},"Add an app-owned catalog entry",[125,599,600,603],{},[140,601,602],{},"Read",[140,604,605],{},"View stored catalog entries",[125,607,608,611],{},[140,609,610],{},"Update",[140,612,613],{},"Edit an entry and see the saved change after refresh",[125,615,616,619],{},[140,617,618],{},"Delete",[140,620,621],{},"Remove a selected app-owned entry",[35,623,624],{},"Provider-owned data stays read-only unless the provider supports changes and the instructor approves them separately. A local copy gives no permission to change provider records",[11,626,628,632,678],{"estimated-seconds":40,"id":627,"level":15},"failure-boundaries",[17,629,631],{"id":630},"authentication-failures","Authentication Failures",[119,633,634,644],{},[122,635,636],{},[125,637,638,641],{},[128,639,640],{},"Observation",[128,642,643],{},"Safe behavior to design and test",[135,645,646,654,662,670],{},[125,647,648,651],{},[140,649,650],{},"MQ or DB worker unavailable",[140,652,653],{},"Show a retryable failure; do not create a session",[125,655,656,659],{},[140,657,658],{},"Reply arrives after timeout",[140,660,661],{},"Reject it as stale or reconcile it without a second success",[125,663,664,667],{},[140,665,666],{},"Malformed request",[140,668,669],{},"Reject it without crashing the worker or exposing secrets",[125,671,672,675],{},[140,673,674],{},"Protected request after logout",[140,676,677],{},"Deny it on the server",[35,679,680],{},"Use the existing logging system to record useful authentication failures without logging credentials or session identifiers",[11,682,685,689],{"estimated-seconds":683,"id":684,"level":15},"80","knowledge-check",[17,686,688],{"id":687},"knowledge-check-1","Knowledge Check 1",[684,690,691,707],{},[551,692,693],{"v-slot:questions":553},[413,694,695,698,701,704],{},[25,696,697],{},"How do authentication and authorization differ?",[25,699,700],{},"Why does a request\u002Freply exchange need a correlation ID?",[25,702,703],{},"Why use a password hash instead of storing the original password?",[25,705,706],{},"What must happen to a session on logout?",[551,708,709,713,716,719],{"v-slot:answers":553},[710,711,712],"knowledge-answer",{},"Authentication verifies identity; authorization decides whether that identity may perform an action",[710,714,715],{},"It matches a reply to the request whose result the App is waiting for",[710,717,718],{},"It stores a derived verifier and makes guessing costly if account data is exposed",[710,720,721],{},"It must be invalidated so later protected requests are denied",[11,723,726,730],{"estimated-seconds":724,"id":725,"level":78},"40","knowledge-check-roles-data",[17,727,729],{"id":728},"knowledge-check-2","Knowledge Check 2",[684,731,732,742],{},[551,733,734],{"v-slot:questions":553},[413,735,736,739],{},[25,737,738],{},"What is an account role?",[25,740,741],{},"What does CRUD mean?",[551,743,744,747],{"v-slot:answers":553},[710,745,746],{},"An account role groups additional permissions above the general user baseline",[710,748,749],{},"Create, read, update, and delete",[11,751,754,758],{"estimated-seconds":752,"id":753,"level":15},"60","terms",[17,755,757],{"id":756},"key-terms-and-further-learning","Key Terms And Further Learning",[544,759,760,814],{"gap":546,"left-width":547,"right-width":547},[551,761,762,767],{"v-slot:left":553},[763,764,766],"h3",{"id":765},"key-terms","Key Terms",[22,768,769,774,779,785,791,797,803,809],{},[25,770,771,773],{},[51,772,53],{"usage":401},": verifying identity",[25,775,776,778],{},[51,777,59],{"usage":401},": checking permission for an action",[25,780,781,784],{},[51,782,783],{"usage":401},"Session",": recognizing a signed-in user on later requests",[25,786,787,790],{},[51,788,789],{"usage":401},"Password hash",": a derived password verifier",[25,792,793,796],{},[51,794,795],{"usage":401},"Salt",": random data unique to a stored password hash",[25,798,799,802],{},[51,800,801],{"usage":401},"Correlation ID",": pairing a reply with its request",[25,804,805,808],{},[51,806,807],{"usage":401},"Role",": a group of additional account permissions",[25,810,811,813],{},[51,812,558],{"usage":401},": create, read, update, and delete",[551,815,816,820],{"v-slot:right":553},[763,817,819],{"id":818},"further-learning","Further Learning",[22,821,822,832,839,846,853],{},[25,823,824],{},[825,826,831],"a",{"href":827,"rel":828,"target":830},"https:\u002F\u002Fwww.rabbitmq.com\u002Ftutorials\u002Ftutorial-six-javascript",[829],"nofollow","_blank","RabbitMQ request\u002Freply tutorial",[25,833,834],{},[825,835,838],{"href":836,"rel":837,"target":830},"https:\u002F\u002Fwww.rabbitmq.com\u002Fdocs\u002Faccess-control",[829],"RabbitMQ access control",[25,840,841],{},[825,842,845],{"href":843,"rel":844,"target":830},"https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FPassword_Storage_Cheat_Sheet.html",[829],"OWASP password storage guidance",[25,847,848],{},[825,849,852],{"href":850,"rel":851,"target":830},"https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FAuthorization_Cheat_Sheet.html",[829],"OWASP authorization guidance",[25,854,855],{},[825,856,859],{"href":857,"rel":858,"target":830},"https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FSession_Management_Cheat_Sheet.html",[829],"OWASP session management guidance",[11,861,863,866],{"estimated-seconds":13,"id":862,"level":15},"summary",[17,864,865],{"id":862},"Summary",[22,867,868,871,874,877],{},[25,869,870],{},"Account operations travel from App through RabbitMQ to DB; the DB VM stores account records",[25,872,873],{},"A successful login starts a session; every protected action still needs a server-side authorization check",[25,875,876],{},"General users start without account roles; admins need authorized browser maintenance pages",[25,878,879],{},"Milestone 2 demonstrates the live auth path and each member's contribution; the MVP adds browser CRUD for the named team-owned records",{"title":553,"searchDepth":881,"depth":881,"links":882},2,[883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900],{"id":19,"depth":881,"text":20},{"id":44,"depth":881,"text":45},{"id":81,"depth":881,"text":82},{"id":114,"depth":881,"text":117},{"id":174,"depth":881,"text":175},{"id":237,"depth":881,"text":238},{"id":269,"depth":881,"text":270},{"id":350,"depth":881,"text":351},{"id":383,"depth":881,"text":384},{"id":410,"depth":881,"text":411},{"id":439,"depth":881,"text":440},{"id":474,"depth":881,"text":475},{"id":538,"depth":881,"text":539},{"id":630,"depth":881,"text":631},{"id":687,"depth":881,"text":688},{"id":728,"depth":881,"text":729},{"id":756,"depth":881,"text":757},{"id":862,"depth":881,"text":865},"presentation","Systems Integration",null,"Connect authentication, account permissions, and browser management to the approved project across App, MQ, and DB","Planned asynchronous Module 4 path, not rehearsed. The paced content is 28 minutes 20 seconds; allow about 29 minutes for the lesson, which precedes team design and implementation work across the online week. For two 80-minute planning blocks, use the first for the lesson and remaining team contract and role planning; use the second for implementation, testing, and review. Additional implementation and the milestone demo continue asynchronously as needed; this is not an attendance requirement or a claim that all work finishes in 160 minutes. The title and cookie-session example are included in this estimate. Calibrate after delivery","0","29","md",{"revisionStatus":910},"reviewed","4",true,"50","\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F05-authentication-and-authorization","Core",false,"6",{"title":5,"description":904},"published","systems-integration\u002F2e\u002Fpresentations\u002F05-authentication-and-authorization",[922,923,426,924,925],"systems-integration","authentication","rabbitmq","sessions","2026-10-06T02:52:00.598Z","llAoDI_u5PWovdH2uR4NsvxSwwxpLUhmrN-7HbvzT4Q",[929,932,936,940,943,946,949,952,955,958,962,965,968,971,975,979,982,986,990,993,997,1001,1004,1008,1011,1014,1017,1021,1024,1027,1030,1032,1034,1036,1038,1040,1042,1044,1047,1050,1053,1057,1060,1063,1066,1069,1072,1075,1078,1081,1084,1087,1090,1093,1096,1099,1102,1105,1108,1111,1114,1117,1120,1122,1125,1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191,1194,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1227,1230,1233,1236,1239,1242,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,1576,1579,1582,1585,1588,1591,1594,1597,1600,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,1961,1964,1967,1970,1973,1976,1979,1982,1985,1989,1992,1995,1998,2001,2004,2007,2009,2012,2015,2018,2021,2024,2026,2028,2030,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090,2093,2097,2101,2104,2107,2110,2113,2116,2119,2122,2125,2128,2132,2135,2138,2141,2144,2147,2150,2153,2156,2159,2162,2165,2168,2171,2174,2177,2180,2183,2186,2189,2192,2195,2198,2201,2204,2207,2210,2213,2216,2219,2222,2225,2228,2231,2234,2237,2240,2243,2246,2249,2252,2255,2258,2261,2264,2267,2270,2273,2275,2278,2281,2284,2287,2290,2293,2296,2299,2302,2305,2308,2311,2314,2317,2320,2323,2326,2329,2332,2335,2337,2339,2341,2343,2346,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2376,2379,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2423,2426,2429,2432,2433,2436,2439,2441,2444,2447,2449,2451,2454,2457,2460,2463,2466,2469],{"path":930,"title":931,"order":903,"module":903,"status":903},"\u002Fabout","About Content Version 3",{"path":933,"title":934,"order":935,"module":297,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?","10",{"path":937,"title":938,"order":939,"module":297,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?","20",{"path":941,"title":942,"order":935,"module":15,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-design-journal-and-treatment\u002F01-first-concept","First Concept, Journal, and Treatments",{"path":944,"title":945,"order":939,"module":15,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-design-journal-and-treatment\u002F02-concept-workshop","Concept Workshop: Pitch, Feedback, and Selection",{"path":947,"title":948,"order":935,"module":78,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-game-balance\u002F01-game-balance","Game Balance",{"path":950,"title":951,"order":939,"module":78,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-game-balance\u002F02-case-study-evaluation","Case Study Evaluation",{"path":953,"title":954,"order":935,"module":911,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-look-and-feel\u002F01-color-theory","Game Design: Color Theory",{"path":956,"title":957,"order":939,"module":911,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":959,"title":960,"order":935,"module":961,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-game-mechanics\u002F01-game-mechanics","Game Mechanics","5",{"path":963,"title":964,"order":939,"module":961,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":966,"title":967,"order":13,"module":961,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-game-mechanics\u002F03-boards-and-movement","Boards and Movement",{"path":969,"title":970,"order":935,"module":917,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness",{"path":972,"title":973,"order":935,"module":974,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F07-making-your-first-game\u002F01-planning-and-management","Planning And Managing Your Game","7",{"path":976,"title":977,"order":935,"module":935,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design","draft",{"path":980,"title":981,"order":939,"module":935,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":983,"title":984,"order":935,"module":985,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F11-entity-based-systems\u002F01-ecs","Entity-Based Systems","11",{"path":987,"title":988,"order":935,"module":989,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F12-level-mechanics-and-user-interfaces\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface","12",{"path":991,"title":992,"order":939,"module":989,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F12-level-mechanics-and-user-interfaces\u002F02-digital-prototype-presentation","Digital Prototype Presentation Deck",{"path":994,"title":995,"order":935,"module":996,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F13-actor-representations-and-artificial-intelligence\u002F01-actors-behavior-and-ai","Actors, Behavior, And AI","13",{"path":998,"title":999,"order":935,"module":1000,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F14-particles-physics-and-digital-prototype-studio\u002F01-effects-particles-and-physics","Effects, Particle Systems, And Physics","14",{"path":1002,"title":1003,"order":939,"module":1000,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F14-particles-physics-and-digital-prototype-studio\u002F02-recorded-project-showcase","Recorded Project Showcase",{"path":1005,"title":1006,"order":935,"module":1007,"status":978},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F15-finale\u002F01-final-evaluation-and-postmortem","Final Evaluation And Postmortem","15",{"path":1009,"title":1010,"order":297,"module":906,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design",{"path":1012,"title":1013,"order":935,"module":15,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fworksheets\u002Fmodule-02-design-journal","Module 2 Design And Development Journal",{"path":1015,"title":1016,"order":939,"module":15,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fworksheets\u002Fmodule-02-one-page-treatment","Module 2 One-Page Treatment",{"path":1018,"title":1019,"order":1020,"module":974,"status":919},"\u002Fgame-architecture-and-design\u002F2e\u002Fworksheets\u002Fmodule-07-game-design-treatment","Full Game Design Treatment","70",{"path":1022,"title":1023,"order":297,"module":906,"status":978},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":1025,"title":1026,"order":903,"module":903,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Revision Plan - Superseded Historical Baseline",{"path":1028,"title":1029,"order":903,"module":903,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Recording Plan - Superseded Historical Baseline",{"path":1031,"title":934,"order":935,"module":297,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":1033,"title":938,"order":939,"module":297,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":1035,"title":948,"order":935,"module":15,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":1037,"title":954,"order":935,"module":78,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":1039,"title":957,"order":939,"module":78,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":1041,"title":960,"order":935,"module":911,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":1043,"title":964,"order":939,"module":911,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":1045,"title":1046,"order":935,"module":961,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":1048,"title":1049,"order":935,"module":917,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":1051,"title":1052,"order":939,"module":917,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":1054,"title":1055,"order":935,"module":1056,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design","8",{"path":1058,"title":1059,"order":939,"module":1056,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":1061,"title":984,"order":935,"module":1062,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","9",{"path":1064,"title":1065,"order":935,"module":935,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":1067,"title":1068,"order":939,"module":935,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":1070,"title":1071,"order":935,"module":985,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces",{"path":1073,"title":1074,"order":935,"module":989,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations",{"path":1076,"title":1077,"order":935,"module":996,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI",{"path":1079,"title":1080,"order":935,"module":1000,"status":978},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine",{"path":1082,"title":1083,"order":297,"module":906,"status":978},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":1085,"title":1086,"order":935,"module":906,"status":978},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":1088,"title":1089,"order":939,"module":906,"status":978},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":1091,"title":1092,"order":724,"module":906,"status":978},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice",{"path":1094,"title":1095,"order":13,"module":906,"status":978},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint",{"path":1097,"title":1098,"order":906,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F00-learn-courses-platform-and-discord","Learn Courses Platform And Discord",{"path":1100,"title":1101,"order":935,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":1103,"title":1104,"order":939,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":1106,"title":1107,"order":13,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":1109,"title":1110,"order":724,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","Local Git Workflow And Course Repositories",{"path":1112,"title":1113,"order":913,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions",{"path":1115,"title":1116,"order":752,"module":297,"status":919},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations",{"path":1118,"title":1119,"order":903,"module":903,"status":903},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":1121,"title":1119,"order":935,"module":297,"status":903},"\u002Fgeneral\u002Fbasic-command-line",{"path":1123,"title":1124,"order":903,"module":903,"status":919},"\u002F","Ethereal Lab Course Materials",{"path":1126,"title":1127,"order":935,"module":297,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","IT202 Setup Path And CLI Readiness",{"path":1129,"title":1130,"order":939,"module":297,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","IT202 Git And Terminal Handoff",{"path":1132,"title":1133,"order":13,"module":297,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","IT202 Repository And SSH Extension",{"path":1135,"title":1136,"order":724,"module":297,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","IT202 Git Workflow Handoff",{"path":1138,"title":1139,"order":913,"module":297,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Standalone PHP Setup",{"path":1141,"title":1142,"order":752,"module":297,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":1144,"title":1145,"order":1020,"module":297,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches",{"path":1147,"title":1148,"order":683,"module":297,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup",{"path":1150,"title":1151,"order":265,"module":297,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox Or UTM",{"path":1153,"title":1154,"order":40,"module":297,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware",{"path":1156,"title":1157,"order":935,"module":15,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":1159,"title":1160,"order":939,"module":15,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Use Conditions Loops And Functions",{"path":1162,"title":1163,"order":935,"module":78,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":1165,"title":1166,"order":939,"module":78,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Intro To Forms And GET\u002FPOST",{"path":1168,"title":1169,"order":13,"module":78,"status":919},"\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":1171,"title":1172,"order":935,"module":911,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":1174,"title":1175,"order":939,"module":911,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":1177,"title":1178,"order":13,"module":911,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":1180,"title":1181,"order":724,"module":911,"status":919},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":1183,"title":1184,"order":935,"module":961,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":1186,"title":1187,"order":939,"module":961,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":1189,"title":1190,"order":13,"module":961,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":1192,"title":1193,"order":724,"module":961,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":1195,"title":1196,"order":935,"module":917,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":1198,"title":1199,"order":939,"module":917,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":1201,"title":1202,"order":13,"module":917,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Dynamic Content",{"path":1204,"title":1205,"order":935,"module":974,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data",{"path":1207,"title":1208,"order":939,"module":974,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":1210,"title":1211,"order":13,"module":974,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":1213,"title":1214,"order":935,"module":1056,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":1216,"title":1217,"order":939,"module":1056,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":1219,"title":1220,"order":13,"module":1056,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":1222,"title":1223,"order":935,"module":1062,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":1225,"title":1226,"order":939,"module":1062,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":1228,"title":1229,"order":935,"module":935,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":1231,"title":1232,"order":939,"module":935,"status":978},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":1234,"title":1235,"order":297,"module":906,"status":919},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":1237,"title":1238,"order":935,"module":297,"status":919},"\u002Finternet-applications\u002F2e\u002Fworksheets\u002Fmodule-01-getting-started","Module 1 Getting Started",{"path":1240,"title":1241,"order":939,"module":15,"status":919},"\u002Finternet-applications\u002F2e\u002Fworksheets\u002Fmodule-02-php-challenges","Module 2 PHP Challenge Scenarios",{"path":1243,"title":1244,"order":724,"module":935,"status":1245},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":1247,"title":1248,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":1250,"title":1251,"order":939,"module":1056,"status":1245},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":1253,"title":1254,"order":13,"module":1062,"status":1245},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":1256,"title":1257,"order":961,"module":911,"status":919},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":1259,"title":1260,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":1262,"title":1263,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":1265,"title":1266,"order":903,"module":903,"status":903},"\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":1268,"title":1269,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":1271,"title":1272,"order":903,"module":903,"status":903},"\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":1274,"title":1275,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":1277,"title":1278,"order":903,"module":903,"status":903},"\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":1280,"title":1281,"order":903,"module":903,"status":903},"\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":1283,"title":1284,"order":903,"module":903,"status":903},"\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":1286,"title":1287,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":1289,"title":1290,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":1292,"title":1293,"order":903,"module":903,"status":903},"\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":1295,"title":1296,"order":903,"module":903,"status":903},"\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":1298,"title":1299,"order":903,"module":903,"status":903},"\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":1301,"title":1302,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":1304,"title":1305,"order":903,"module":903,"status":903},"\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":1307,"title":1308,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":1310,"title":1311,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":1313,"title":1314,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":1316,"title":1317,"order":903,"module":903,"status":903},"\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":1319,"title":1320,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":1322,"title":1323,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":1325,"title":1326,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":1328,"title":1329,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":1331,"title":1332,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":1334,"title":1335,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":1337,"title":1338,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":1340,"title":1341,"order":903,"module":903,"status":903},"\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":1343,"title":1344,"order":903,"module":903,"status":903},"\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":1346,"title":1347,"order":903,"module":903,"status":903},"\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":1349,"title":1350,"order":903,"module":903,"status":903},"\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":1352,"title":1353,"order":903,"module":903,"status":903},"\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":1355,"title":1356,"order":903,"module":903,"status":903},"\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":1358,"title":1359,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":1361,"title":1362,"order":903,"module":903,"status":903},"\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":1364,"title":1365,"order":903,"module":903,"status":903},"\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":1367,"title":1368,"order":903,"module":903,"status":903},"\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":1370,"title":1371,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":1373,"title":1374,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":1376,"title":1377,"order":903,"module":903,"status":903},"\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":1379,"title":1380,"order":903,"module":903,"status":903},"\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":1382,"title":1383,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":1385,"title":1386,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":1388,"title":1389,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":1391,"title":1392,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":1394,"title":1395,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":1397,"title":1398,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":1400,"title":1401,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":1403,"title":1404,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":1406,"title":1407,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":1409,"title":1410,"order":903,"module":903,"status":903},"\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":1412,"title":1413,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":1415,"title":1416,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":1418,"title":1419,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":1421,"title":1422,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":1424,"title":1425,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":1427,"title":1428,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":1430,"title":1431,"order":903,"module":903,"status":903},"\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":1433,"title":1434,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":1436,"title":1437,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":1439,"title":1440,"order":903,"module":903,"status":903},"\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":1442,"title":1443,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":1445,"title":1446,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":1448,"title":1449,"order":903,"module":903,"status":903},"\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":1451,"title":1452,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":1454,"title":1455,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":1457,"title":1458,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":1460,"title":1461,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":1463,"title":1464,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":1466,"title":1467,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":1469,"title":1470,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":1472,"title":1473,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":1475,"title":1476,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":1478,"title":1479,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":1481,"title":1482,"order":903,"module":903,"status":903},"\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":1484,"title":1485,"order":903,"module":903,"status":903},"\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":1487,"title":1488,"order":903,"module":903,"status":903},"\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":1490,"title":1491,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":1493,"title":1494,"order":903,"module":903,"status":903},"\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":1496,"title":1497,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":1499,"title":1500,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":1502,"title":1503,"order":903,"module":903,"status":903},"\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":1505,"title":1506,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":1508,"title":1509,"order":903,"module":903,"status":903},"\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":1511,"title":1512,"order":903,"module":903,"status":903},"\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":1514,"title":1515,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":1517,"title":1518,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":1520,"title":1521,"order":903,"module":903,"status":903},"\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":1523,"title":1524,"order":903,"module":903,"status":903},"\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":1526,"title":1527,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":1529,"title":1530,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":1532,"title":1533,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":1535,"title":1536,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":1538,"title":1539,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":1541,"title":1542,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":1544,"title":1545,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":1547,"title":1548,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":1550,"title":1551,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":1553,"title":1554,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":1556,"title":1557,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":1559,"title":1560,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":1562,"title":1563,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":1565,"title":1566,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":1568,"title":1569,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":1571,"title":1572,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":1574,"title":1575,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":1577,"title":1578,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":1580,"title":1581,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":1583,"title":1584,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":1586,"title":1587,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":1589,"title":1590,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":1592,"title":1593,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":1595,"title":1596,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":1598,"title":1599,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":1601,"title":1602,"order":903,"module":903,"status":1603},"\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":1605,"title":1606,"order":903,"module":903,"status":1603},"\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":1608,"title":1609,"order":903,"module":903,"status":1603},"\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":1611,"title":1612,"order":903,"module":903,"status":1603},"\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":1614,"title":1615,"order":903,"module":903,"status":1603},"\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":1617,"title":1618,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":1620,"title":1621,"order":903,"module":903,"status":1603},"\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":1623,"title":1624,"order":903,"module":903,"status":1603},"\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":1626,"title":1627,"order":903,"module":903,"status":1603},"\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":1629,"title":1630,"order":903,"module":903,"status":1603},"\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":1632,"title":1633,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":1635,"title":1636,"order":903,"module":903,"status":1603},"\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":1638,"title":1639,"order":903,"module":903,"status":1603},"\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":1641,"title":1642,"order":903,"module":903,"status":903},"\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":1644,"title":1645,"order":903,"module":903,"status":1603},"\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":1647,"title":1648,"order":903,"module":903,"status":1603},"\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":1650,"title":1651,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":1653,"title":1654,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":1656,"title":1657,"order":903,"module":903,"status":903},"\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":1659,"title":1660,"order":903,"module":903,"status":903},"\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":1662,"title":1663,"order":903,"module":903,"status":1603},"\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":1665,"title":1666,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":1668,"title":1669,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":1671,"title":1672,"order":903,"module":903,"status":903},"\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":1674,"title":1675,"order":903,"module":903,"status":1603},"\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":1677,"title":1678,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":1680,"title":1681,"order":903,"module":903,"status":1603},"\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":1683,"title":1684,"order":903,"module":903,"status":1603},"\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":1686,"title":1687,"order":903,"module":903,"status":903},"\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":1689,"title":1690,"order":903,"module":903,"status":1603},"\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":1692,"title":1693,"order":903,"module":903,"status":1603},"\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":1695,"title":1696,"order":903,"module":903,"status":903},"\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":1698,"title":1699,"order":903,"module":903,"status":903},"\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":1701,"title":1702,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":1704,"title":1705,"order":903,"module":903,"status":1603},"\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":1707,"title":1708,"order":903,"module":903,"status":1603},"\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":1710,"title":1711,"order":903,"module":903,"status":1603},"\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":1713,"title":1714,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":1716,"title":1717,"order":903,"module":903,"status":1603},"\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":1719,"title":1720,"order":903,"module":903,"status":903},"\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":1722,"title":1723,"order":903,"module":903,"status":903},"\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":1725,"title":1726,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":1728,"title":1729,"order":903,"module":903,"status":1603},"\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":1731,"title":1732,"order":903,"module":903,"status":1603},"\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":1734,"title":1735,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":1737,"title":1738,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":1740,"title":1741,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":1743,"title":1744,"order":903,"module":903,"status":903},"\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":1746,"title":1747,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":1749,"title":1750,"order":903,"module":903,"status":1603},"\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":1752,"title":1753,"order":903,"module":903,"status":1603},"\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":1755,"title":1756,"order":903,"module":903,"status":1603},"\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":1758,"title":1759,"order":903,"module":903,"status":1603},"\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":1761,"title":1762,"order":903,"module":903,"status":1603},"\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":1764,"title":1765,"order":903,"module":903,"status":1603},"\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":1767,"title":1768,"order":903,"module":903,"status":1603},"\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":1770,"title":1771,"order":903,"module":903,"status":1603},"\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":1773,"title":1774,"order":903,"module":903,"status":1603},"\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":1776,"title":1777,"order":903,"module":903,"status":1603},"\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":1779,"title":1780,"order":903,"module":903,"status":1603},"\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":1782,"title":1783,"order":903,"module":903,"status":903},"\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":1785,"title":1786,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":1788,"title":1789,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":1791,"title":1792,"order":903,"module":903,"status":1603},"\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":1794,"title":1795,"order":903,"module":903,"status":1603},"\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":1797,"title":1798,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":1800,"title":1801,"order":903,"module":903,"status":1603},"\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":1803,"title":1804,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":1806,"title":1807,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":1809,"title":1810,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":1812,"title":1813,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":1815,"title":1816,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":1818,"title":1819,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":1821,"title":1822,"order":903,"module":903,"status":1603},"\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":1824,"title":1825,"order":903,"module":903,"status":1603},"\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":1827,"title":1828,"order":903,"module":903,"status":1603},"\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":1830,"title":1831,"order":903,"module":903,"status":1603},"\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":1833,"title":1834,"order":903,"module":903,"status":1603},"\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":1836,"title":1837,"order":903,"module":903,"status":1603},"\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":1839,"title":1840,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":1842,"title":1843,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":1845,"title":1846,"order":903,"module":903,"status":1603},"\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":1848,"title":1849,"order":903,"module":903,"status":1603},"\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":1851,"title":1852,"order":903,"module":903,"status":1603},"\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":1854,"title":1855,"order":903,"module":903,"status":1603},"\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":1857,"title":1858,"order":903,"module":903,"status":903},"\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":1860,"title":1861,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":1863,"title":1864,"order":903,"module":903,"status":903},"\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":1866,"title":1867,"order":903,"module":903,"status":1603},"\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":1869,"title":1870,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":1872,"title":1873,"order":903,"module":903,"status":1603},"\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":1875,"title":1876,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":1878,"title":1879,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":1881,"title":1882,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":1884,"title":1885,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":1887,"title":1888,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":1890,"title":1891,"order":903,"module":903,"status":1603},"\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":1893,"title":1894,"order":903,"module":903,"status":1603},"\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":1896,"title":1897,"order":903,"module":903,"status":1603},"\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":1899,"title":1900,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":1902,"title":1903,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":1905,"title":1906,"order":903,"module":903,"status":903},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":1908,"title":1909,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":1911,"title":1912,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":1914,"title":1915,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":1917,"title":1918,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":1920,"title":1921,"order":903,"module":903,"status":1603},"\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":1923,"title":1924,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":1926,"title":1927,"order":903,"module":903,"status":1603},"\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":1929,"title":1930,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":1932,"title":1933,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":1935,"title":1936,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":1938,"title":1939,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":1941,"title":1942,"order":903,"module":903,"status":1603},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":1944,"title":1945,"order":297,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":1947,"title":1948,"order":15,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":1950,"title":1951,"order":78,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":1953,"title":1954,"order":911,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":1956,"title":1957,"order":961,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":1959,"title":1960,"order":917,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":1962,"title":1963,"order":974,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":1965,"title":1966,"order":906,"module":906,"status":978},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":1968,"title":1969,"order":935,"module":297,"status":978},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":1971,"title":1972,"order":939,"module":15,"status":978},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":1974,"title":1975,"order":13,"module":78,"status":978},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":1977,"title":1978,"order":724,"module":911,"status":978},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":1980,"title":1981,"order":913,"module":961,"status":978},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":1983,"title":1984,"order":752,"module":917,"status":978},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":1986,"title":1987,"order":1988,"module":917,"status":978},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":1990,"title":1991,"order":1020,"module":974,"status":978},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":1993,"title":1994,"order":683,"module":1056,"status":978},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":1996,"title":1997,"order":265,"module":1062,"status":978},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":1999,"title":2000,"order":40,"module":935,"status":978},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":2002,"title":2003,"order":903,"module":903,"status":978},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Revision Plan - Superseded Historical Baseline",{"path":2005,"title":2006,"order":903,"module":903,"status":978},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Recording Plan - Superseded Historical Baseline",{"path":2008,"title":1098,"order":906,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":2010,"title":2011,"order":935,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":2013,"title":2014,"order":939,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":2016,"title":2017,"order":13,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":2019,"title":2020,"order":724,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":2022,"title":2023,"order":913,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":2025,"title":1142,"order":752,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":2027,"title":1145,"order":1020,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":2029,"title":1148,"order":683,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":2031,"title":2032,"order":265,"module":297,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox",{"path":2034,"title":1154,"order":40,"module":297,"status":978},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":2036,"title":1157,"order":935,"module":15,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":2038,"title":1160,"order":939,"module":15,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":2040,"title":1163,"order":935,"module":78,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":2042,"title":1166,"order":939,"module":78,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":2044,"title":1169,"order":13,"module":78,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":2046,"title":1172,"order":935,"module":911,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":2048,"title":1175,"order":939,"module":911,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":2050,"title":1178,"order":13,"module":911,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":2052,"title":1181,"order":724,"module":911,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":2054,"title":1184,"order":935,"module":961,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":2056,"title":1187,"order":939,"module":961,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":2058,"title":2059,"order":13,"module":961,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Flash Messages And Redirect Feedback",{"path":2061,"title":1193,"order":724,"module":961,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":2063,"title":1196,"order":935,"module":917,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":2065,"title":1199,"order":939,"module":917,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":2067,"title":1202,"order":13,"module":917,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":2069,"title":1205,"order":935,"module":974,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":2071,"title":1208,"order":939,"module":974,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":2073,"title":1211,"order":13,"module":974,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":2075,"title":1214,"order":935,"module":1056,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":2077,"title":1217,"order":939,"module":1056,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":2079,"title":1220,"order":13,"module":1056,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":2081,"title":1223,"order":935,"module":1062,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":2083,"title":1226,"order":939,"module":1062,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":2085,"title":1229,"order":935,"module":935,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":2087,"title":1232,"order":939,"module":935,"status":919},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":2089,"title":1235,"order":297,"module":906,"status":919},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":2091,"title":2092,"order":170,"module":935,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet",{"path":2094,"title":2095,"order":2096,"module":917,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":2098,"title":2099,"order":2100,"module":917,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":2102,"title":2103,"order":170,"module":917,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":2105,"title":2106,"order":76,"module":1056,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026",{"path":2108,"title":2109,"order":233,"module":1062,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026",{"path":2111,"title":2112,"order":935,"module":297,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":2114,"title":2115,"order":939,"module":15,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":2117,"title":2118,"order":13,"module":78,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":2120,"title":2121,"order":724,"module":911,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":2123,"title":2124,"order":913,"module":961,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":2126,"title":2127,"order":752,"module":917,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":2129,"title":2130,"order":2131,"module":917,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":2133,"title":2134,"order":1020,"module":974,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":2136,"title":2137,"order":683,"module":1056,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":2139,"title":2140,"order":265,"module":1062,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":2142,"title":2143,"order":40,"module":935,"status":978},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":2145,"title":2146,"order":752,"module":297,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","IT114 Java Environment Setup",{"path":2148,"title":2149,"order":935,"module":15,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":2151,"title":2152,"order":939,"module":15,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":2154,"title":2155,"order":13,"module":15,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":2157,"title":2158,"order":724,"module":15,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":2160,"title":2161,"order":935,"module":78,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":2163,"title":2164,"order":939,"module":78,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":2166,"title":2167,"order":13,"module":78,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":2169,"title":2170,"order":724,"module":78,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":2172,"title":2173,"order":935,"module":911,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":2175,"title":2176,"order":939,"module":911,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":2178,"title":2179,"order":13,"module":911,"status":919},"\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":2181,"title":2182,"order":724,"module":911,"status":919},"\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":2184,"title":2185,"order":939,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Preparing the Java Project Framework",{"path":2187,"title":2188,"order":935,"module":974,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","GameServer: Ready Check",{"path":2190,"title":2191,"order":935,"module":974,"status":978},"\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":2193,"title":2194,"order":939,"module":974,"status":978},"\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":2196,"title":2197,"order":13,"module":974,"status":978},"\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":2199,"title":2200,"order":724,"module":974,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":2202,"title":2203,"order":913,"module":974,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":2205,"title":2206,"order":935,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":2208,"title":2209,"order":939,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":2211,"title":2212,"order":13,"module":1056,"status":978},"\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":2214,"title":2215,"order":724,"module":1056,"status":978},"\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":2217,"title":2218,"order":913,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":2220,"title":2221,"order":935,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":2223,"title":2224,"order":939,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":2226,"title":2227,"order":13,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":2229,"title":2230,"order":724,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":2232,"title":2233,"order":913,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":2235,"title":2236,"order":752,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":2238,"title":2239,"order":935,"module":935,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":2241,"title":2242,"order":939,"module":935,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":2244,"title":2245,"order":13,"module":935,"status":978},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":2247,"title":2248,"order":1056,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fbattleship","Battleship Project",{"path":2250,"title":2251,"order":961,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fdrawing","Drawing Project",{"path":2253,"title":2254,"order":78,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fgo-fish","Go Fish Project",{"path":2256,"title":2257,"order":911,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fhangman","Hangman Project",{"path":2259,"title":2260,"order":297,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects","IT114 Project Choices",{"path":2262,"title":2263,"order":917,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Frock-paper-scissors","Rock Paper Scissors Project",{"path":2265,"title":2266,"order":15,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Fshared-requirements","IT114 Shared Project Requirements",{"path":2268,"title":2269,"order":974,"module":917,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fprojects\u002Ftrivia","Trivia Project",{"path":2271,"title":2272,"order":297,"module":906,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":2274,"title":1238,"order":935,"module":297,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fworksheets\u002Fmodule-01-getting-started",{"path":2276,"title":2277,"order":939,"module":15,"status":919},"\u002Fjava-advanced-programming\u002F2e\u002Fworksheets\u002Fmodule-02-java-challenges","Module 2 Java Challenges",{"path":2279,"title":2280,"order":935,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":2282,"title":2283,"order":939,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":2285,"title":2286,"order":13,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":2288,"title":2289,"order":935,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":2291,"title":2292,"order":939,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":2294,"title":2295,"order":13,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":2297,"title":2298,"order":935,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":2300,"title":2301,"order":939,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":2303,"title":2304,"order":13,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":2306,"title":2307,"order":724,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":2309,"title":2310,"order":935,"module":911,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":2312,"title":2313,"order":939,"module":911,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":2315,"title":2316,"order":13,"module":911,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":2318,"title":2319,"order":935,"module":961,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":2321,"title":2322,"order":939,"module":961,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":2324,"title":2325,"order":13,"module":961,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":2327,"title":2328,"order":906,"module":906,"status":978},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":2330,"title":2331,"order":903,"module":903,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Revision Plan - Superseded Historical Baseline",{"path":2333,"title":2334,"order":903,"module":903,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Recording Plan - Superseded Historical Baseline",{"path":2336,"title":2011,"order":935,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2338,"title":2014,"order":939,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2340,"title":2017,"order":13,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2342,"title":2020,"order":724,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2344,"title":2345,"order":913,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":2347,"title":2348,"order":752,"module":297,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":2350,"title":2149,"order":935,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":2352,"title":2152,"order":939,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":2354,"title":2155,"order":13,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":2356,"title":2158,"order":724,"module":15,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":2358,"title":2161,"order":935,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":2360,"title":2164,"order":939,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":2362,"title":2167,"order":13,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":2364,"title":2170,"order":724,"module":78,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":2366,"title":2173,"order":935,"module":911,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":2368,"title":2176,"order":939,"module":911,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":2370,"title":2179,"order":13,"module":911,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":2372,"title":2182,"order":935,"module":961,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":2374,"title":2375,"order":935,"module":917,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":2377,"title":2378,"order":939,"module":917,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":2380,"title":2381,"order":13,"module":917,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":2383,"title":2191,"order":935,"module":974,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":2385,"title":2194,"order":939,"module":974,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":2387,"title":2197,"order":13,"module":974,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":2389,"title":2200,"order":724,"module":974,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":2391,"title":2203,"order":913,"module":974,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":2393,"title":2206,"order":935,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":2395,"title":2209,"order":939,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":2397,"title":2212,"order":13,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":2399,"title":2215,"order":724,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":2401,"title":2218,"order":913,"module":1056,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":2403,"title":2221,"order":935,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":2405,"title":2224,"order":939,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":2407,"title":2227,"order":13,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":2409,"title":2230,"order":724,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":2411,"title":2233,"order":913,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":2413,"title":2236,"order":752,"module":1062,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":2415,"title":2239,"order":935,"module":935,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":2417,"title":2242,"order":939,"module":935,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":2419,"title":2245,"order":13,"module":935,"status":978},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":2421,"title":2422,"order":939,"module":15,"status":919},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Required Architecture Overview",{"path":2424,"title":2425,"order":935,"module":297,"status":978},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F02-team-workflow-and-project-evidence","Team Workflow And Project Evidence",{"path":2427,"title":2428,"order":13,"module":15,"status":919},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F03-architecture-planning-and-vm-communication-practice","Architecture Planning And VM Communication Practice",{"path":2430,"title":2431,"order":724,"module":78,"status":978},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F04-role-based-vm-baseline-and-centralized-logging","Role-Based VM Baseline And Logging System",{"path":914,"title":5,"order":913,"module":911,"status":919},{"path":2434,"title":2435,"order":752,"module":961,"status":919},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F06-mvp-feature-work","MVP Feature Work",{"path":2437,"title":2438,"order":297,"module":906,"status":919},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":2440,"title":902,"order":297,"module":906,"status":919},"\u002Fsystems-integration",{"path":2442,"title":2443,"order":903,"module":903,"status":978},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Revision Plan - Superseded Historical Baseline",{"path":2445,"title":2446,"order":903,"module":903,"status":978},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Recording Plan - Superseded Historical Baseline",{"path":2448,"title":2422,"order":935,"module":297,"status":919},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":2450,"title":2438,"order":297,"module":906,"status":919},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":2452,"title":2453,"order":903,"module":903,"status":903},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":2455,"title":2456,"order":903,"module":903,"status":903},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":2458,"title":2459,"order":903,"module":903,"status":903},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":2461,"title":2462,"order":903,"module":903,"status":903},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":2464,"title":2465,"order":939,"module":906,"status":978},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":2467,"title":2468,"order":13,"module":906,"status":978},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":2470,"title":2471,"order":935,"module":906,"status":978},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",1793199213366]