[{"data":1,"prerenderedAt":2509},["ShallowReactive",2],{"content-page:\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content":3,"content-page-quiz:none":1023,"content-navigation-index":1035},{"id":4,"title":5,"audience":6,"body":7,"contentType":1008,"course":1009,"description":1010,"estimateBasis":1011,"estimatedDiscussionMinutes":1012,"estimatedLiveMinutes":1013,"estimatedTotalMinutes":1014,"extension":1015,"meta":1016,"module":1017,"navigation":1018,"order":1019,"path":1020,"presentationRole":1021,"promptAssist":1022,"revision":1023,"semester":1023,"seo":1024,"status":1025,"stem":1026,"syllabus":1023,"tags":1027,"updated":1023,"videoDuration":1031,"videoId":1032,"videoLink":1033,"videoTitle":5,"week":1017,"__hash__":1034},"content\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content.md","Dynamic Content","student",{"type":8,"value":9,"toc":982},"minimark",[10,46,110,139,166,213,269,322,348,400,431,464,489,521,553,579,617,650,742,774,803,882,946],[11,12,15,19,23],"slide",{"id":13,"level":14},"main-idea","2",[16,17,18],"h2",{"id":13},"Main Idea",[20,21,22],"p",{},"PHP can inspect database columns and build temporary tools from that structure",[24,25,26,34,37,40,43],"ul",{},[27,28,29,33],"li",{},[30,31,32],"code",{},"SHOW COLUMNS"," reveals table metadata",[27,35,36],{},"PHP can loop over columns to build forms and tables",[27,38,39],{},"Dynamic pages are useful for exploration and admin utilities",[27,41,42],{},"Dynamic SQL names require strict safety decisions",[27,44,45],{},"This is not the final project CRUD pattern",[11,47,49,52],{"id":48,"level":14},"practice-workspace",[16,50,51],{"id":48},"Practice Workspace",[24,53,54,60,86,91,97,103],{},[27,55,56,57],{},"Work in ",[30,58,59],{},"public_html\u002Fm06\u002Flessons\u002F",[27,61,62,63,66,67,66,70,66,73,66,76,66,79,82,83],{},"Create ",[30,64,65],{},"dynamic_utils.php",", ",[30,68,69],{},"dynamic_nav.php",[30,71,72],{},"dynamic_setup.php",[30,74,75],{},"dynamic_create.php",[30,77,78],{},"dynamic_list.php",[30,80,81],{},"dynamic_edit.php",", and ",[30,84,85],{},"dynamic_delete.php",[27,87,62,88],{},[30,89,90],{},"sql\u002F006_create_table_samples.sql",[27,92,93,94],{},"Lesson branch: ",[30,95,96],{},"Module06-Dynamic-Content",[27,98,99,100],{},"Keep this lesson separate from ",[30,101,102],{},"public_html\u002Fproject\u002F",[27,104,105,106,109],{},"After a working change: run ",[30,107,108],{},"git status",", stage the changed files, and commit",[11,111,113,116,119],{"id":112,"level":14},"exploratory-boundary",[16,114,115],{"id":112},"Exploratory Boundary",[20,117,118],{},"This lesson builds a flexible CRUD-style exploration tool.",[24,120,121,124,127,130,133,136],{},[27,122,123],{},"Create: insert rows with a generated form",[27,125,126],{},"Read: list table rows with generated headers",[27,128,129],{},"Update: edit a selected row with a generated form",[27,131,132],{},"Delete: use a small action page that redirects back to the list",[27,134,135],{},"It does not build a single-record detail view",[27,137,138],{},"It should not be copied into the final project without table allowlists when needed, custom validation, and purpose-built forms",[11,140,142,145,150,155],{"id":141,"level":14},"sample-table",[16,143,144],{"id":141},"Sample Table",[20,146,62,147,149],{},[30,148,90],{},".",[151,152],"code-snippet",{"language":153,"src":154},"sql","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fsample-table-01.sql",[24,156,157,160,163],{},[27,158,159],{},"This table is for the dynamic-content lesson",[27,161,162],{},"It intentionally has several column types to inspect",[27,164,165],{},"Run the project database init runner after adding the SQL file",[11,167,169,173,178,182],{"id":168,"level":14},"lesson-nav",[16,170,172],{"id":171},"lesson-navigation","Lesson Navigation",[20,174,62,175,149],{},[30,176,177],{},"public_html\u002Fm06\u002Flessons\u002Fdynamic_nav.php",[151,179],{"language":180,"src":181},"php","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Flesson-navigation-02.php",[24,183,184,187,194,201,207,210],{},[27,185,186],{},"The nav acts as the lesson bootstrap file",[27,188,189,190,193],{},"It loads ",[30,191,192],{},"db.php"," and the local dynamic utilities file",[27,195,196,197,200],{},"It defines ",[30,198,199],{},"render_dynamic_nav()"," instead of printing markup immediately",[27,202,203,204],{},"Delaying the markup keeps redirects available on pages that need ",[30,205,206],{},"header()",[27,208,209],{},"The edit link is intentionally awkward so we can discuss why edit pages should normally be reached from a specific record",[27,211,212],{},"See the slide below for the shared lesson utility functions",[11,214,217,220,225,228],{"id":215,"level":216},"dynamic-utils","3",[16,218,219],{"id":215},"Dynamic Utils",[20,221,62,222,149],{},[30,223,224],{},"public_html\u002Fm06\u002Flessons\u002Fdynamic_utils.php",[151,226],{"language":180,"src":227},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-utils-03.php",[24,229,230,239,245,251,257,263],{},[27,231,232,235,236],{},[30,233,234],{},"dynamic_lesson_url()"," builds lesson-local links from ",[30,237,238],{},"\u002Fm06\u002Flessons\u002F",[27,240,241,244],{},[30,242,243],{},"dynamic_table_name()"," returns the hard coded table used in this lesson",[27,246,247,250],{},[30,248,249],{},"dynamic_ignored_columns()"," lists database-managed columns that generated forms skip",[27,252,253,256],{},[30,254,255],{},"should_ignore_column()"," checks whether the current column is in that skip list",[27,258,259,262],{},[30,260,261],{},"input_type_for_column()"," maps SQL-ish column types and common field names to rough HTML input types",[27,264,265,268],{},[30,266,267],{},"render_dynamic_field()"," outputs the label and form control used by create and edit; includes mappings for common form inputs",[11,270,272,275,280,283],{"id":271,"level":14},"shared-dynamic-setup",[16,273,274],{"id":271},"Shared Dynamic Setup",[20,276,62,277,149],{},[30,278,279],{},"public_html\u002Fm06\u002Flessons\u002Fdynamic_setup.php",[151,281],{"language":180,"src":282},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fshared-dynamic-setup-04.php",[24,284,285,291,299,316,319],{},[27,286,287,288,290],{},"This setup file loads ",[30,289,69],{},", the lesson bootstrap, before reading table metadata",[27,292,293,294],{},"The table name comes from the local dynamic utilities file\n",[24,295,296],{},[27,297,298],{},"If table names ever come from user input, use a strict allowlist before putting them into SQL",[27,300,301,303,304,66,307,66,310,82,313],{},[30,302,32],{}," returns metadata such as ",[30,305,306],{},"Field",[30,308,309],{},"Type",[30,311,312],{},"Null",[30,314,315],{},"Key",[27,317,318],{},"This setup partial does not render navigation, so redirect pages can still send headers",[27,320,321],{},"The create\u002Flist\u002Fedit\u002Fdelete pages will require this partial",[11,323,325,328,334],{"id":324,"level":14},"dynamic-create",[16,326,327],{"id":324},"Dynamic Create",[20,329,330,331,333],{},"Build ",[30,332,75],{}," in two pieces.",[24,335,336,339,342,345],{},[27,337,338],{},"First, handle submission and show generated SQL\u002Fparams",[27,340,341],{},"Then, render the generated form below that output",[27,343,344],{},"The form snippet belongs where the submit snippet leaves its TODO anchor",[27,346,347],{},"See the slides below for the submit handler and generated form",[11,349,351,354,360,363],{"id":350,"level":216},"dynamic-create-submit",[16,352,353],{"id":350},"Dynamic Create Submit",[20,355,356,357,359],{},"In ",[30,358,75],{},", build insert data from inspected columns.",[151,361],{"language":180,"src":362},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-create-submit-05.php",[24,364,365,368,371,383,386,389],{},[27,366,367],{},"Column names come from the hard coded table's inspected metadata",[27,369,370],{},"Values still go through prepared placeholders",[27,372,373,66,376,82,379,382],{},[30,374,375],{},"id",[30,377,378],{},"created",[30,380,381],{},"modified"," are skipped because the database manages them",[27,384,385],{},"The page displays generated SQL and params for visual learning",[27,387,388],{},"Successful create stays on this page so the generated output stays visible",[27,390,391,392,395,396,399],{},"The ",[30,393,394],{},"try"," \u002F ",[30,397,398],{},"catch"," block keeps database errors from becoming technical page output",[11,401,403,406,411,414],{"id":402,"level":216},"dynamic-create-form",[16,404,405],{"id":402},"Dynamic Create Form",[20,407,356,408,410],{},[30,409,75],{},", loop over columns to render fields.",[151,412],{"language":180,"src":413},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-create-form-06.php",[24,415,416,419,422,425,428],{},[27,417,418],{},"The form changes when table columns change",[27,420,421],{},"The shared field renderer keeps create and edit form logic aligned",[27,423,424],{},"Escaping inside the helper protects generated labels and attributes",[27,426,427],{},"Place this form where the previous snippet says to add it",[27,429,430],{},"Custom project pages should still use hand-picked fields and validations",[11,432,434,437,441,444],{"id":433,"level":14},"dynamic-list",[16,435,436],{"id":433},"Dynamic List",[20,438,62,439,149],{},[30,440,78],{},[151,442],{"language":180,"src":443},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-list-07.php",[24,445,446,449,452,455,458],{},[27,447,448],{},"The list page also displays success or error text from redirect URLs",[27,450,451],{},"Headers come from the associative array keys",[27,453,454],{},"Rows come from the database result",[27,456,457],{},"The edit and delete links use the row id",[27,459,460,463],{},[30,461,462],{},"LIMIT 500"," is arbitrary for exploration; production pages should use smaller limits and pagination",[11,465,467,470,475],{"id":466,"level":14},"dynamic-edit",[16,468,469],{"id":466},"Dynamic Edit",[20,471,330,472,474],{},[30,473,81],{}," in three pieces.",[24,476,477,480,483,486],{},[27,478,479],{},"First, load the selected row and add TODO anchors",[27,481,482],{},"Then, replace the update TODO with the save logic",[27,484,485],{},"Finally, replace the form TODO with the generated edit form",[27,487,488],{},"See the slides below for fetch, update, and form snippets",[11,490,492,495,501,504],{"id":491,"level":216},"dynamic-edit-fetch",[16,493,494],{"id":491},"Dynamic Edit Fetch",[20,496,497,498,500],{},"Start ",[30,499,81],{}," by loading the selected row.",[151,502],{"language":180,"src":503},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-edit-fetch-08.php",[24,505,506,509,512,515,518],{},[27,507,508],{},"The id is cast before use",[27,510,511],{},"A missing or invalid id redirects back to the list with an error in the URL",[27,513,514],{},"The selected row gives current values for the generated form",[27,516,517],{},"Place the update snippet where this starter code says to add it",[27,519,520],{},"The table name is still hard coded before it appears in SQL",[11,522,524,527,532,535],{"id":523,"level":216},"dynamic-edit-update",[16,525,526],{"id":523},"Dynamic Edit Update",[20,528,356,529,531],{},[30,530,81],{},", build the update from editable columns.",[151,533],{"language":180,"src":534},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-edit-update-09.php",[24,536,537,544,547,550],{},[27,538,539,540,543],{},"Dynamic ",[30,541,542],{},"SET"," pieces are based on table metadata",[27,545,546],{},"Values still use placeholders",[27,548,549],{},"A successful update stays on the edit page so the refreshed record and generated SQL stay visible",[27,551,552],{},"Production update pages should validate each field intentionally",[11,554,556,559,562,565],{"id":555,"level":216},"dynamic-edit-form",[16,557,558],{"id":555},"Dynamic Edit Form",[20,560,561],{},"Render the edit form using current record values.",[151,563],{"language":180,"src":564},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-edit-form-10.php",[24,566,567,570,573,576],{},[27,568,569],{},"The edit form uses the same column mapping as create",[27,571,572],{},"Current values come from the selected row",[27,574,575],{},"The hidden id field keeps the selected record available during POST",[27,577,578],{},"Checkbox checked state is handled by the shared field renderer because checkbox value behavior differs from text inputs",[11,580,582,585,589,592],{"id":581,"level":14},"dynamic-delete",[16,583,584],{"id":581},"Dynamic Delete",[20,586,62,587,149],{},[30,588,85],{},[151,590],{"language":180,"src":591},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content\u002Fdynamic-delete-11.php",[24,593,594,597,606,611,614],{},[27,595,596],{},"This is an action page, not a display page",[27,598,599,600,602,603,605],{},"It requires only ",[30,601,192],{}," and ",[30,604,65],{}," because delete does not render navigation or need column metadata",[27,607,608,609],{},"It deletes the requested id, then redirects to ",[30,610,78],{},[27,612,613],{},"Success and failure are carried in the URL because this lesson is outside the project flash-message flow",[27,615,616],{},"This is a hard delete for exploration; project delete behavior should be chosen intentionally",[11,618,620,624,627],{"id":619,"level":14},"why-not-final-crud",[16,621,623],{"id":622},"why-not-final-crud-operations-structure","Why Not Final CRUD Operations Structure",[20,625,626],{},"Dynamic pages trade control for flexibility.",[24,628,629,632,635,638,641,644,647],{},[27,630,631],{},"The app cannot explain domain-specific validation from table metadata alone",[27,633,634],{},"Generated forms may expose fields that should be hidden",[27,636,637],{},"Table and column names cannot be bound like normal values",[27,639,640],{},"Custom screens are easier to design, test, and grade",[27,642,643],{},"The delete page is intentionally simple and redirect-based",[27,645,646],{},"This pattern is useful for learning, debugging, and admin utilities",[27,648,649],{},"Tools like phpMyAdmin also expose database structure, but this class uses it only as optional reference material",[11,651,653,656],{"id":652,"level":14},"test-the-flow",[16,654,655],{"id":652},"Test The Flow",[657,658,659,672],"table",{},[660,661,662],"thead",{},[663,664,665,669],"tr",{},[666,667,668],"th",{},"Test",[666,670,671],{},"Expected Result",[673,674,675,686,694,703,714,722,732],"tbody",{},[663,676,677,683],{},[678,679,680,681],"td",{},"Visit ",[30,682,75],{},[678,684,685],{},"Form appears with Sample table fields",[663,687,688,691],{},[678,689,690],{},"Submit a sample",[678,692,693],{},"Page stays on create and shows generated SQL, params, and a success message",[663,695,696,700],{},[678,697,680,698],{},[30,699,78],{},[678,701,702],{},"Table shows generated headers and rows",[663,704,705,711],{},[678,706,707,708],{},"Click ",[30,709,710],{},"edit",[678,712,713],{},"Edit page loads the selected record",[663,715,716,719],{},[678,717,718],{},"Save an edit",[678,720,721],{},"Page stays on edit, shows generated SQL and params, and refreshes the values",[663,723,724,729],{},[678,725,707,726],{},[30,727,728],{},"delete",[678,730,731],{},"Browser returns to list with success or failure in the URL",[663,733,734,739],{},[678,735,680,736,738],{},[30,737,81],{}," without an id",[678,740,741],{},"Browser returns to list with an error in the URL",[11,743,745,748],{"id":744,"level":14},"common-mistakes",[16,746,747],{"id":744},"Common Mistakes",[24,749,750,753,756,765,768,771],{},[27,751,752],{},"Building SQL with untrusted table names",[27,754,755],{},"Treating dynamic forms as a replacement for validation",[27,757,758,759,66,761,82,763],{},"Forgetting to ignore ",[30,760,375],{},[30,762,378],{},[30,764,381],{},[27,766,767],{},"Assuming every SQL type maps cleanly to one HTML input type",[27,769,770],{},"Printing generated table values without escaping",[27,772,773],{},"Copying exploratory code directly into the milestone project",[11,775,777,780],{"id":776,"level":14},"knowledge-check",[16,778,779],{"id":776},"Knowledge Check",[24,781,782,788,791,794,797,800],{},[27,783,784,785,787],{},"What does ",[30,786,32],{}," return?",[27,789,790],{},"Why is this table name hard coded in the lesson?",[27,792,793],{},"When would a dynamic table name need an allowlist?",[27,795,796],{},"Which fields should dynamic create\u002Fedit usually ignore?",[27,798,799],{},"Why is delete isolated as a redirect action page?",[27,801,802],{},"Why should final project pages use custom validation instead of table metadata alone?",[11,804,806,810],{"id":805,"level":14},"further-learning",[16,807,809],{"id":808},"key-terms-and-further-learning","Key Terms And Further Learning",[811,812,815,849],"two-col",{"gap":813,"left-width":814,"right-width":814},"lg","1fr",[816,817,819,824,831,837,843],"template",{"v-slot:left":818},"",[820,821,823],"h3",{"id":822},"key-terms","Key Terms",[20,825,826,830],{},[827,828,829],"strong",{},"Metadata"," - Data that describes other data, such as column names and types",[20,832,833,836],{},[827,834,835],{},"Hard coded value"," - A value chosen by the developer instead of user input",[20,838,839,842],{},[827,840,841],{},"Allowlist"," - Explicit list of accepted values",[20,844,845,848],{},[827,846,847],{},"CRUD"," - Create, read, update, and delete",[816,850,851,854],{"v-slot:right":818},[820,852,853],{"id":805},"Further Learning",[24,855,856,867,875],{},[27,857,858],{},[859,860,864,865],"a",{"href":861,"rel":862},"https:\u002F\u002Fdev.mysql.com\u002Fdoc\u002Frefman\u002F8.4\u002Fen\u002Fshow-columns.html",[863],"nofollow","MySQL ",[30,866,32],{},[27,868,869,874],{},[859,870,873],{"href":871,"rel":872},"https:\u002F\u002Fdocs.phpmyadmin.net\u002F",[863],"phpMyAdmin documentation"," - reference only",[27,876,877],{},[859,878,881],{"href":879,"rel":880},"https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FSQL_Injection_Prevention_Cheat_Sheet.html",[863],"OWASP SQL Injection Prevention Cheat Sheet",[11,883,885,889],{"id":884,"level":14},"finish-lesson-branch",[16,886,888],{"id":887},"finish-the-lesson-branch","Finish The Lesson Branch",[890,891,892,897,903,909,915,925,936],"ol",{},[27,893,894,895],{},"Check the final file list: ",[30,896,108],{},[27,898,899,900],{},"Stage the lesson work: ",[30,901,902],{},"git add sql\u002F public_html\u002Fm06\u002Flessons\u002F",[27,904,905,906],{},"Commit the practice work: ",[30,907,908],{},"git commit -m \"Explore dynamic content\"",[27,910,911,912],{},"Push the branch: ",[30,913,914],{},"git push origin Module06-Dynamic-Content",[27,916,917,918,920,921,924],{},"On GitHub, open a pull request from ",[30,919,96],{}," into ",[30,922,923],{},"qa",", review it, then merge",[27,926,927,928,930,931,920,933],{},"Briefly test ",[30,929,923],{},", then open and merge a pull request from ",[30,932,923],{},[30,934,935],{},"prod",[27,937,938,939,942,943],{},"Prepare for the next lesson: ",[30,940,941],{},"git checkout qa"," then ",[30,944,945],{},"git pull origin qa",[11,947,949,952],{"id":948,"level":14},"summary",[16,950,951],{"id":948},"Summary",[24,953,954,959,962,965,968,971,974],{},[27,955,956,957],{},"Dynamic content pages can inspect table metadata with ",[30,958,32],{},[27,960,961],{},"PHP can use column metadata to generate forms, lists, and edit screens",[27,963,964],{},"Hard coded table names are safer for this lesson; user-selected table names would need strict allowlists before SQL",[27,966,967],{},"Values should still use prepared statement placeholders",[27,969,970],{},"This lesson is exploratory CRUD-style tooling, not final milestone CRUD architecture",[27,972,973],{},"Final project pages should use custom forms, validation, and purpose-built queries",[27,975,976,977],{},"GitHub reference checkpoint: ",[859,978,981],{"href":979,"rel":980},"https:\u002F\u002Fgithub.com\u002FMattToegel\u002FIT202-2026\u002Ftree\u002FModule06-Dynamic-Content",[863],"Module06-Dynamic-Content branch",{"title":818,"searchDepth":983,"depth":983,"links":984},2,[985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007],{"id":13,"depth":983,"text":18},{"id":48,"depth":983,"text":51},{"id":112,"depth":983,"text":115},{"id":141,"depth":983,"text":144},{"id":171,"depth":983,"text":172},{"id":215,"depth":983,"text":219},{"id":271,"depth":983,"text":274},{"id":324,"depth":983,"text":327},{"id":350,"depth":983,"text":353},{"id":402,"depth":983,"text":405},{"id":433,"depth":983,"text":436},{"id":466,"depth":983,"text":469},{"id":491,"depth":983,"text":494},{"id":523,"depth":983,"text":526},{"id":555,"depth":983,"text":558},{"id":581,"depth":983,"text":584},{"id":622,"depth":983,"text":623},{"id":652,"depth":983,"text":655},{"id":744,"depth":983,"text":747},{"id":776,"depth":983,"text":779},{"id":808,"depth":983,"text":809},{"id":887,"depth":983,"text":888},{"id":948,"depth":983,"text":951},"presentation","Internet Applications","Explore dynamic PHP pages that inspect a table, build forms, list rows, and edit records from database metadata.","Face-to-face class of about 40 students; includes typing time, troubleshooting, checks, and short questions.","10","60","70","md",{},"6",true,"30","\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content","Core",false,null,{"title":5,"description":1010},"published","internet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",[1028,1029,1030],"mysql","dynamic-content","crud","41:59","VB3mWvJMHCU","https:\u002F\u002Fyoutu.be\u002FVB3mWvJMHCU","QaLMtpcRUFH5OzsRQm8OlLr4ZIB2qmSXodlA-Cl7lvQ",[1036,1039,1045,1048,1052,1055,1058,1061,1065,1068,1071,1074,1078,1081,1085,1088,1091,1095,1098,1101,1104,1106,1108,1110,1112,1114,1116,1118,1121,1124,1127,1130,1133,1135,1138,1141,1145,1149,1153,1157,1160,1163,1166,1170,1173,1176,1179,1182,1185,1189,1192,1195,1197,1200,1203,1206,1209,1212,1215,1218,1221,1224,1228,1232,1236,1239,1242,1245,1248,1251,1254,1257,1260,1263,1266,1269,1272,1275,1278,1281,1283,1287,1290,1293,1296,1299,1302,1305,1308,1311,1314,1317,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,1603,1606,1609,1612,1615,1618,1621,1624,1627,1630,1633,1636,1639,1642,1645,1648,1651,1654,1657,1660,1663,1666,1669,1672,1675,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,1988,1991,1994,1997,2000,2003,2006,2009,2012,2015,2018,2021,2024,2027,2030,2033,2036,2039,2042,2045,2048,2051,2054,2057,2060,2064,2067,2070,2073,2076,2079,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2129,2131,2133,2135,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2162,2166,2170,2173,2177,2181,2184,2187,2190,2193,2196,2199,2203,2206,2209,2212,2215,2217,2219,2221,2223,2226,2229,2232,2235,2238,2241,2244,2247,2250,2253,2256,2259,2262,2265,2268,2271,2274,2277,2280,2283,2286,2289,2292,2295,2298,2301,2304,2307,2310,2313,2316,2319,2322,2325,2328,2331,2334,2337,2340,2343,2346,2349,2352,2355,2358,2361,2364,2367,2370,2373,2376,2379,2382,2385,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2472,2475,2478,2481,2484,2486,2488,2491,2494,2497,2500,2503,2506],{"path":1037,"title":1038,"order":1023,"module":1023,"status":1023},"\u002Fabout","About Content Version 3",{"path":1040,"title":1041,"order":1042,"module":1043,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-first-concept","First Concept","5","1","draft",{"path":1046,"title":1047,"order":1012,"module":1043,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game","What is a Game?",{"path":1049,"title":1050,"order":1051,"module":1043,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay","What is Gameplay?","20",{"path":1053,"title":1054,"order":1012,"module":14,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F02-game-balance\u002F01-game-balance","Game Balance",{"path":1056,"title":1057,"order":1012,"module":216,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory","Game Design: Color Theory",{"path":1059,"title":1060,"order":1051,"module":216,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel","Game Design - Look and Feel",{"path":1062,"title":1063,"order":1012,"module":1064,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics","Game Mechanics","4",{"path":1066,"title":1067,"order":1051,"module":1064,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F04-game-mechanics\u002F02-decks","Technical: Decks and Cards",{"path":1069,"title":1070,"order":1012,"module":1042,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth, Complexity, And Randomness",{"path":1072,"title":1073,"order":1051,"module":1017,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning From Concept To Prototype",{"path":1075,"title":1076,"order":1012,"module":1077,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts And Design","8",{"path":1079,"title":1080,"order":1051,"module":1077,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Engine Features And Browser Feasibility",{"path":1082,"title":1083,"order":1012,"module":1084,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs","Entity-Based Systems","9",{"path":1086,"title":1087,"order":1012,"module":1012,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F01-spatial-rules-levels-and-interface","Spatial Rules, Levels, And Interface",{"path":1089,"title":1090,"order":1051,"module":1012,"status":1044},"\u002Fgame-architecture-and-design\u002F2e\u002Fpresentations\u002F10-player-facing-feature-systems\u002F02-actors-behavior-and-effects","Actors, Behavior, And Effects",{"path":1092,"title":1093,"order":1043,"module":1094,"status":1025},"\u002Fgame-architecture-and-design\u002F2e\u002Fsyllabus\u002Ffall-2026","Course Syllabus: IT265 - Game Architecture and Design","0",{"path":1096,"title":1097,"order":1043,"module":1094,"status":1044},"\u002Fgame-architecture-and-design","Game Architecture and Design",{"path":1099,"title":1100,"order":1023,"module":1023,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F00-revision-plan","Game Architecture And Design Presentation Revision Plan",{"path":1102,"title":1103,"order":1023,"module":1023,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Game Architecture And Design Twenty-Minute Recording Plan",{"path":1105,"title":1047,"order":1012,"module":1043,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F01-what-is-a-game",{"path":1107,"title":1050,"order":1051,"module":1043,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F01-introduction\u002F02-what-is-gameplay",{"path":1109,"title":1054,"order":1012,"module":14,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F02-game-balance\u002F01-game-balance",{"path":1111,"title":1057,"order":1012,"module":216,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F01-color-theory",{"path":1113,"title":1060,"order":1051,"module":216,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F03-look-and-feel\u002F02-look-and-feel",{"path":1115,"title":1063,"order":1012,"module":1064,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F01-game-mechanics",{"path":1117,"title":1067,"order":1051,"module":1064,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F04-game-mechanics\u002F02-decks",{"path":1119,"title":1120,"order":1012,"module":1042,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F05-depth-complexity-and-randomness\u002F01-depth-vs-complexity-and-randomness","Depth vs Complexity and Randomness",{"path":1122,"title":1123,"order":1012,"module":1017,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F01-first-concept","First Concept: Updated Lesson",{"path":1125,"title":1126,"order":1051,"module":1017,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F06-first-game-planning\u002F02-planning-and-management","Planning and Management",{"path":1128,"title":1129,"order":1012,"module":1077,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F01-concepts-and-design","Game Architecture: Concepts and Design",{"path":1131,"title":1132,"order":1051,"module":1077,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F08-game-architecture\u002F02-features-of-a-game-engine","Game Architecture: Features of a Game Engine",{"path":1134,"title":1083,"order":1012,"module":1084,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F09-entity-based-systems\u002F01-ecs",{"path":1136,"title":1137,"order":1012,"module":1012,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F01-level-mechanics","Game Design: Introduction to Level Mechanics",{"path":1139,"title":1140,"order":1051,"module":1012,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F10-level-mechanics\u002F02-grids","Technical: Square vs Hex Grids in Board Games",{"path":1142,"title":1143,"order":1012,"module":1144,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F11-user-interfaces\u002F01-user-interfaces","Game Design: User Interfaces","11",{"path":1146,"title":1147,"order":1012,"module":1148,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F12-actor-representations\u002F01-actors","Game Design: Actor Representations","12",{"path":1150,"title":1151,"order":1012,"module":1152,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F13-artificial-intelligence\u002F01-ai","Game Design: AI","13",{"path":1154,"title":1155,"order":1012,"module":1156,"status":1044},"\u002Fgame-architecture-and-design\u002Fpresentations\u002F14-particles-and-physics\u002F01-particles-and-physics","IT265: Particle Systems and Physics Engine","14",{"path":1158,"title":1159,"order":1043,"module":1094,"status":1044},"\u002Fgame-architecture-and-design\u002Fsyllabus\u002Fspring-2026","Course Syllabus: IT265 - Game Architecture",{"path":1161,"title":1162,"order":1012,"module":1094,"status":1044},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fcase-study-1-atari-worksheet","Case Study 1 - Atari",{"path":1164,"title":1165,"order":1051,"module":1094,"status":1044},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-color-theory-worksheet","IT265 Case Study - Color Theory",{"path":1167,"title":1168,"order":1169,"module":1094,"status":1044},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-case-study-personal-choice-worksheet","IT265 Case Study - Personal Choice","40",{"path":1171,"title":1172,"order":1019,"module":1094,"status":1044},"\u002Fgame-architecture-and-design\u002Fworksheets\u002Fit265-design-treatment-checkpoint-worksheet","IT265 Design Treatment Checkpoint",{"path":1174,"title":1175,"order":1012,"module":1043,"status":1044},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F01-git-and-terminal-setup","Git And Terminal Setup",{"path":1177,"title":1178,"order":1051,"module":1043,"status":1044},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F02-cli-foundations","CLI Foundations",{"path":1180,"title":1181,"order":1019,"module":1043,"status":1044},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F03-github-setup-and-ssh","GitHub Setup And SSH",{"path":1183,"title":1184,"order":1169,"module":1043,"status":1044},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F04-local-git-workflow-and-course-repositories","Local Git Workflow And Course Repositories",{"path":1186,"title":1187,"order":1188,"module":1043,"status":1044},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F05-vscode-setup-and-course-extensions","VS Code Setup And Course Extensions","50",{"path":1190,"title":1191,"order":1013,"module":1043,"status":1044},"\u002Fgeneral\u002F2e\u002Fpresentations\u002F06-trace-learning-journal","TRACE Learning Journal Foundations",{"path":1193,"title":1194,"order":1023,"module":1023,"status":1023},"\u002Fgeneral\u002Fbasic-cli","Basic Command Line",{"path":1196,"title":1194,"order":1012,"module":1043,"status":1023},"\u002Fgeneral\u002Fbasic-command-line",{"path":1198,"title":1199,"order":1023,"module":1023,"status":1025},"\u002F","Ethereal Lab Course Materials",{"path":1201,"title":1202,"order":1094,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord","Learn Courses Platform And Discord",{"path":1204,"title":1205,"order":1012,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands","Basic CLI Commands",{"path":1207,"title":1208,"order":1051,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools","Git Tools",{"path":1210,"title":1211,"order":1019,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh","Set Up GitHub SSH",{"path":1213,"title":1214,"order":1169,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs","Git Commands And Pull Requests",{"path":1216,"title":1217,"order":1188,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment","Local Development Environment Setup",{"path":1219,"title":1220,"order":1013,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository","Add Instructor Template To Your Repository",{"path":1222,"title":1223,"order":1014,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches","QA And Prod Branches",{"path":1225,"title":1226,"order":1227,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup","Render Setup","80",{"path":1229,"title":1230,"order":1231,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox","Local Ubuntu Web Server With VirtualBox","90",{"path":1233,"title":1234,"order":1235,"module":1043,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware","Local Ubuntu Web Server With VMware","100",{"path":1237,"title":1238,"order":1012,"module":14,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript","Compare PHP And JavaScript",{"path":1240,"title":1241,"order":1051,"module":14,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions","Use Conditions Loops And Functions",{"path":1243,"title":1244,"order":1012,"module":216,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html","Intro To HTML",{"path":1246,"title":1247,"order":1051,"module":216,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post","Intro To Forms And GET\u002FPOST",{"path":1249,"title":1250,"order":1019,"module":216,"status":1044},"\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":1252,"title":1253,"order":1012,"module":1064,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql","Intro To SQL",{"path":1255,"title":1256,"order":1051,"module":1064,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup","Project Database Setup",{"path":1258,"title":1259,"order":1019,"module":1064,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration","User Registration",{"path":1261,"title":1262,"order":1169,"module":1064,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login","User Login",{"path":1264,"title":1265,"order":1012,"module":1042,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex","Intro To Regex",{"path":1267,"title":1268,"order":1051,"module":1042,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers","Project Shared Helpers",{"path":1270,"title":1271,"order":1019,"module":1042,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","User Feedback After Redirects",{"path":1273,"title":1274,"order":1169,"module":1042,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile","User Profile",{"path":1276,"title":1277,"order":1012,"module":1017,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization","User Roles Authorization",{"path":1279,"title":1280,"order":1051,"module":1017,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement","User Login Enhancement",{"path":1282,"title":5,"order":1019,"module":1017,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F06-roles-and-crud-pages\u002F03-dynamic-content",{"path":1284,"title":1285,"order":1012,"module":1286,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data","Working With API Data","7",{"path":1288,"title":1289,"order":1051,"module":1286,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration","API Integration",{"path":1291,"title":1292,"order":1019,"module":1286,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions","Database Utility Functions",{"path":1294,"title":1295,"order":1012,"module":1077,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability","Milestone 2 Bootstrap And Reusability",{"path":1297,"title":1298,"order":1051,"module":1077,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro","jQuery Brief Intro",{"path":1300,"title":1301,"order":1019,"module":1077,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax","Intro To AJAX",{"path":1303,"title":1304,"order":1012,"module":1084,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations","Add User Associations",{"path":1306,"title":1307,"order":1051,"module":1084,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination","Add Association Views And Pagination",{"path":1309,"title":1310,"order":1012,"module":1012,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles","Association Management And Public Profiles",{"path":1312,"title":1313,"order":1051,"module":1012,"status":1044},"\u002Finternet-applications\u002F2e\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection","Reusable CSRF Protection",{"path":1315,"title":1316,"order":1043,"module":1094,"status":1025},"\u002Finternet-applications\u002F2e\u002Fsyllabus\u002Ffall-2026","IT202 - Internet Applications Syllabus",{"path":1318,"title":1319,"order":1169,"module":1012,"status":1320},"\u002Finternet-applications\u002Fassignments\u002Ffinal-project-submission","Final Project Submission","review",{"path":1322,"title":1323,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F01-account-access-and-profile-system","Milestone 1: Account, Access, And Profile System",{"path":1325,"title":1326,"order":1051,"module":1077,"status":1320},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F02-api-data-and-project-crud","Milestone 2: API Data And Project CRUD",{"path":1328,"title":1329,"order":1019,"module":1084,"status":1320},"\u002Finternet-applications\u002Fassignments\u002Fmilestones\u002F03-user-associations-search-and-summary","Milestone 3: User Associations, Search, And Summary Views",{"path":1331,"title":1332,"order":1042,"module":1064,"status":1025},"\u002Finternet-applications\u002Fassignments\u002Fproject-proposal","IT 202 Project Proposal",{"path":1334,"title":1335,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F01-what-this-course-is-building","What Internet Applications Build",{"path":1337,"title":1338,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02-files-folders-and-project-structure","Files, Folders, And Project Structure",{"path":1340,"title":1341,"order":1023,"module":1023,"status":1023},"\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":1343,"title":1344,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F02b-install-git-and-terminal-tools","Install Git And Terminal Tools",{"path":1346,"title":1347,"order":1023,"module":1023,"status":1023},"\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":1349,"title":1350,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Set Up A Local Development Environment",{"path":1352,"title":1353,"order":1023,"module":1023,"status":1023},"\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":1355,"title":1356,"order":1023,"module":1023,"status":1023},"\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":1358,"title":1359,"order":1023,"module":1023,"status":1023},"\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":1361,"title":1362,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F07-git-recovery-and-common-mistakes","Git Recovery And Common Mistakes",{"path":1364,"title":1365,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Installing Apache, PHP, And MySQL",{"path":1367,"title":1368,"order":1023,"module":1023,"status":1023},"\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":1370,"title":1371,"order":1023,"module":1023,"status":1023},"\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":1373,"title":1374,"order":1023,"module":1023,"status":1023},"\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":1376,"title":1377,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F12-local-qa-and-production-environments","Local, QA, And Production Environments",{"path":1379,"title":1380,"order":1023,"module":1023,"status":1023},"\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":1382,"title":1383,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Displaying Output With PHP",{"path":1385,"title":1386,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Displaying Output With JavaScript",{"path":1388,"title":1389,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F04-variables-storing-and-naming-values","Variables: Storing And Naming Values",{"path":1391,"title":1392,"order":1023,"module":1023,"status":1023},"\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":1394,"title":1395,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F06-arrays-storing-lists-of-values","Arrays: Storing Lists Of Values",{"path":1397,"title":1398,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Conditional Statements: Making Decisions",{"path":1400,"title":1401,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Loops: Repeating Actions",{"path":1403,"title":1404,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F09-functions-reusable-blocks-of-logic","Functions: Reusable Blocks Of Logic",{"path":1406,"title":1407,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F10-reading-and-debugging-error-messages","Reading And Debugging Error Messages",{"path":1409,"title":1410,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","HTML: Structure And Meaning",{"path":1412,"title":1413,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F02-writing-a-valid-html-document","Writing A Valid HTML Document",{"path":1415,"title":1416,"order":1023,"module":1023,"status":1023},"\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":1418,"title":1419,"order":1023,"module":1023,"status":1023},"\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":1421,"title":1422,"order":1023,"module":1023,"status":1023},"\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":1424,"title":1425,"order":1023,"module":1023,"status":1023},"\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":1427,"title":1428,"order":1023,"module":1023,"status":1023},"\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":1430,"title":1431,"order":1023,"module":1023,"status":1023},"\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":1433,"title":1434,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Page Layout With Flexbox",{"path":1436,"title":1437,"order":1023,"module":1023,"status":1023},"\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":1439,"title":1440,"order":1023,"module":1023,"status":1023},"\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":1442,"title":1443,"order":1023,"module":1023,"status":1023},"\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":1445,"title":1446,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Basic Web Accessibility Habits",{"path":1448,"title":1449,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F01-why-web-applications-need-a-database","Why Web Applications Need A Database",{"path":1451,"title":1452,"order":1023,"module":1023,"status":1023},"\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":1454,"title":1455,"order":1023,"module":1023,"status":1023},"\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":1457,"title":1458,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Creating Tables With SQL Scripts",{"path":1460,"title":1461,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F05-connecting-php-to-mysql-with-pdo","Connecting PHP To MySQL With PDO",{"path":1463,"title":1464,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F06-parameterized-queries-and-sql-injection-prevention","Parameterized Queries And SQL Injection Prevention",{"path":1466,"title":1467,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Building A Registration Page",{"path":1469,"title":1470,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Hashing Passwords With password_hash()",{"path":1472,"title":1473,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Building A Login Page",{"path":1475,"title":1476,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F10-sessions-remembering-the-logged-in-user","Sessions: Remembering The Logged-In User",{"path":1478,"title":1479,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Cookies: Persistent Client-Side State",{"path":1481,"title":1482,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F04-databases-and-user-accounts\u002F12-navigation-that-responds-to-login-state","Navigation That Responds To Login State",{"path":1484,"title":1485,"order":1023,"module":1023,"status":1023},"\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":1487,"title":1488,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F02-sanitizing-and-escaping-user-input","Sanitizing And Escaping User Input",{"path":1490,"title":1491,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F03-required-fields-and-length-rules","Required Fields And Length Rules",{"path":1493,"title":1494,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F04-regular-expressions-for-pattern-matching","Regular Expressions For Pattern Matching",{"path":1496,"title":1497,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F05-server-side-validation-in-php","Server-Side Validation In PHP",{"path":1499,"title":1500,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F06-cross-site-scripting-xss-prevention","Cross-Site Scripting (XSS) Prevention",{"path":1502,"title":1503,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F07-flash-messages-and-persistent-feedback","Flash Messages And Persistent Feedback",{"path":1505,"title":1506,"order":1023,"module":1023,"status":1023},"\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":1508,"title":1509,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F09-building-a-profile-edit-page","Building A Profile Edit Page",{"path":1511,"title":1512,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F05-input-validation-security-and-user-profiles\u002F10-debugging-account-and-authentication-problems","Debugging Account And Authentication Problems",{"path":1514,"title":1515,"order":1023,"module":1023,"status":1023},"\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":1517,"title":1518,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Role-Based Access Control",{"path":1520,"title":1521,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Storing Roles In The Database",{"path":1523,"title":1524,"order":1023,"module":1023,"status":1023},"\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":1526,"title":1527,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F04-safe-redirects-after-login-and-logout","Safe Redirects After Login And Logout",{"path":1529,"title":1530,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Listing Records From The Database",{"path":1532,"title":1533,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F06-creating-new-records-with-a-form","Creating New Records With A Form",{"path":1535,"title":1536,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Editing Existing Records",{"path":1538,"title":1539,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Deleting Records Safely",{"path":1541,"title":1542,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Ownership: Linking Records To Users",{"path":1544,"title":1545,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","First Project Milestone Checklist",{"path":1547,"title":1548,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Organizing Growing PHP Applications",{"path":1550,"title":1551,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Reading A Growing PHP Application",{"path":1553,"title":1554,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F01-what-asynchronous-requests-ajax-solve","What Asynchronous Requests (AJAX) Solve",{"path":1556,"title":1557,"order":1023,"module":1023,"status":1023},"\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":1559,"title":1560,"order":1023,"module":1023,"status":1023},"\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":1562,"title":1563,"order":1023,"module":1023,"status":1023},"\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":1565,"title":1566,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F05-handling-fetch-responses-and-errors","Handling Fetch Responses And Errors",{"path":1568,"title":1569,"order":1023,"module":1023,"status":1023},"\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":1571,"title":1572,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Introduction To REST APIs",{"path":1574,"title":1575,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Reading API Documentation",{"path":1577,"title":1578,"order":1023,"module":1023,"status":1023},"\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":1580,"title":1581,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F10-storing-and-caching-api-responses","Storing And Caching API Responses",{"path":1583,"title":1584,"order":1023,"module":1023,"status":1023},"\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":1586,"title":1587,"order":1023,"module":1023,"status":1023},"\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":1589,"title":1590,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F01-jquery-simplified-dom-and-event-work","jQuery: Simplified DOM And Event Work",{"path":1592,"title":1593,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Selecting Elements With jQuery",{"path":1595,"title":1596,"order":1023,"module":1023,"status":1023},"\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":1598,"title":1599,"order":1023,"module":1023,"status":1023},"\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":1601,"title":1602,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Sending AJAX Requests With jQuery",{"path":1604,"title":1605,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F06-saving-external-api-data-through-php","Saving External API Data Through PHP",{"path":1607,"title":1608,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Saving User-Created Records",{"path":1610,"title":1611,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Building A Project Listing Page",{"path":1613,"title":1614,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Inline Editing And Detail Views",{"path":1616,"title":1617,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Second Project Milestone Checklist",{"path":1619,"title":1620,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Foreign Keys And Referential Integrity",{"path":1622,"title":1623,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F02-joining-tables-inner-join-left-join","Joining Tables: INNER JOIN, LEFT JOIN",{"path":1625,"title":1626,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F03-user-owned-records-and-access-enforcement","User-Owned Records And Access Enforcement",{"path":1628,"title":1629,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F04-connecting-api-data-to-user-records","Connecting API Data To User Records",{"path":1631,"title":1632,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Searching And Filtering With SQL",{"path":1634,"title":1635,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Pagination: Displaying Records In Pages",{"path":1637,"title":1638,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Aggregate Functions: COUNT, SUM, AVG",{"path":1640,"title":1641,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Simple Analytics And Summary Views",{"path":1643,"title":1644,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Third Project Milestone Checklist",{"path":1646,"title":1647,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Public Pages And Unauthenticated Views",{"path":1649,"title":1650,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","User Profile And Activity Pages",{"path":1652,"title":1653,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F03-refreshing-and-expiring-external-api-data","Refreshing And Expiring External API Data",{"path":1655,"title":1656,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Application-Wide Security Audit",{"path":1658,"title":1659,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F05-cross-site-request-forgery-csrf-protection","Cross-Site Request Forgery (CSRF) Protection",{"path":1661,"title":1662,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","QA Testing And Collecting Evidence",{"path":1664,"title":1665,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Production Environment Checklist",{"path":1667,"title":1668,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Writing A Project README",{"path":1670,"title":1671,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Final Presentation And Code Walkthrough",{"path":1673,"title":1674,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Configuration Drift And Secrets Checks",{"path":1676,"title":1677,"order":1023,"module":1023,"status":1678},"\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":1680,"title":1681,"order":1023,"module":1023,"status":1678},"\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":1683,"title":1684,"order":1023,"module":1023,"status":1678},"\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":1686,"title":1687,"order":1023,"module":1023,"status":1678},"\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":1689,"title":1690,"order":1023,"module":1023,"status":1678},"\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":1692,"title":1693,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F03a-local-development-environment","Quiz - Set Up A Local Development Environment",{"path":1695,"title":1696,"order":1023,"module":1023,"status":1678},"\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":1698,"title":1699,"order":1023,"module":1023,"status":1678},"\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":1701,"title":1702,"order":1023,"module":1023,"status":1678},"\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":1704,"title":1705,"order":1023,"module":1023,"status":1678},"\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":1707,"title":1708,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F01-course-workflow-files-and-web-server\u002F08-installing-apache-and-php","Quiz - Installing Apache, PHP, And MySQL",{"path":1710,"title":1711,"order":1023,"module":1023,"status":1678},"\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":1713,"title":1714,"order":1023,"module":1023,"status":1678},"\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":1716,"title":1717,"order":1023,"module":1023,"status":1023},"\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":1719,"title":1720,"order":1023,"module":1023,"status":1678},"\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":1722,"title":1723,"order":1023,"module":1023,"status":1678},"\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":1725,"title":1726,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F02-displaying-output-with-php","Quiz - Displaying Output With PHP",{"path":1728,"title":1729,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F03-displaying-output-with-javascript","Quiz - Displaying Output With JavaScript",{"path":1731,"title":1732,"order":1023,"module":1023,"status":1023},"\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":1734,"title":1735,"order":1023,"module":1023,"status":1023},"\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":1737,"title":1738,"order":1023,"module":1023,"status":1678},"\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":1740,"title":1741,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F07-conditional-statements-making-decisions","Quiz - Conditional Statements: Making Decisions",{"path":1743,"title":1744,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F02-programming-fundamentals-in-php-and-javascript\u002F08-loops-repeating-actions","Quiz - Loops: Repeating Actions",{"path":1746,"title":1747,"order":1023,"module":1023,"status":1023},"\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":1749,"title":1750,"order":1023,"module":1023,"status":1678},"\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":1752,"title":1753,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F01-html-structure-and-meaning","Quiz - HTML: Structure And Meaning",{"path":1755,"title":1756,"order":1023,"module":1023,"status":1678},"\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":1758,"title":1759,"order":1023,"module":1023,"status":1678},"\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":1761,"title":1762,"order":1023,"module":1023,"status":1023},"\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":1764,"title":1765,"order":1023,"module":1023,"status":1678},"\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":1767,"title":1768,"order":1023,"module":1023,"status":1678},"\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":1770,"title":1771,"order":1023,"module":1023,"status":1023},"\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":1773,"title":1774,"order":1023,"module":1023,"status":1023},"\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":1776,"title":1777,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F09-page-layout-with-flexbox","Quiz - Page Layout With Flexbox",{"path":1779,"title":1780,"order":1023,"module":1023,"status":1678},"\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":1782,"title":1783,"order":1023,"module":1023,"status":1678},"\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":1785,"title":1786,"order":1023,"module":1023,"status":1678},"\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":1788,"title":1789,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F03-html-forms-css-and-the-dom\u002F12-basic-web-accessibility-habits","Quiz - Basic Web Accessibility Habits",{"path":1791,"title":1792,"order":1023,"module":1023,"status":1678},"\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":1794,"title":1795,"order":1023,"module":1023,"status":1023},"\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":1797,"title":1798,"order":1023,"module":1023,"status":1023},"\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":1800,"title":1801,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F04-creating-tables-with-sql-scripts","Quiz - Creating Tables With SQL Scripts",{"path":1803,"title":1804,"order":1023,"module":1023,"status":1678},"\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":1806,"title":1807,"order":1023,"module":1023,"status":1678},"\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":1809,"title":1810,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F07-building-a-registration-page","Quiz - Building A Registration Page",{"path":1812,"title":1813,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F08-hashing-passwords-with-password-hash","Quiz - Hashing Passwords With password_hash()",{"path":1815,"title":1816,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F09-building-a-login-page","Quiz - Building A Login Page",{"path":1818,"title":1819,"order":1023,"module":1023,"status":1023},"\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":1821,"title":1822,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F04-databases-and-user-accounts\u002F11-cookies-persistent-client-side-state","Quiz - Cookies: Persistent Client-Side State",{"path":1824,"title":1825,"order":1023,"module":1023,"status":1678},"\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":1827,"title":1828,"order":1023,"module":1023,"status":1678},"\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":1830,"title":1831,"order":1023,"module":1023,"status":1678},"\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":1833,"title":1834,"order":1023,"module":1023,"status":1678},"\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":1836,"title":1837,"order":1023,"module":1023,"status":1678},"\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":1839,"title":1840,"order":1023,"module":1023,"status":1678},"\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":1842,"title":1843,"order":1023,"module":1023,"status":1678},"\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":1845,"title":1846,"order":1023,"module":1023,"status":1678},"\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":1848,"title":1849,"order":1023,"module":1023,"status":1678},"\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":1851,"title":1852,"order":1023,"module":1023,"status":1678},"\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":1854,"title":1855,"order":1023,"module":1023,"status":1678},"\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":1857,"title":1858,"order":1023,"module":1023,"status":1023},"\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":1860,"title":1861,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F01-role-based-access-control","Quiz - Role-Based Access Control",{"path":1863,"title":1864,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F02-storing-roles-in-the-database","Quiz - Storing Roles In The Database",{"path":1866,"title":1867,"order":1023,"module":1023,"status":1678},"\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":1869,"title":1870,"order":1023,"module":1023,"status":1678},"\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":1872,"title":1873,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F05-listing-records-from-the-database","Quiz - Listing Records From The Database",{"path":1875,"title":1876,"order":1023,"module":1023,"status":1678},"\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":1878,"title":1879,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F07-editing-existing-records","Quiz - Editing Existing Records",{"path":1881,"title":1882,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F08-deleting-records-safely","Quiz - Deleting Records Safely",{"path":1884,"title":1885,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F09-ownership-linking-records-to-users","Quiz - Ownership: Linking Records To Users",{"path":1887,"title":1888,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F10-first-project-milestone-checklist","Quiz - First Project Milestone Checklist",{"path":1890,"title":1891,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F11-organizing-growing-php-applications","Quiz - Organizing Growing PHP Applications",{"path":1893,"title":1894,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F06-roles-permissions-and-crud-pages\u002F12-reading-a-growing-php-application","Quiz - Reading A Growing PHP Application",{"path":1896,"title":1897,"order":1023,"module":1023,"status":1678},"\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":1899,"title":1900,"order":1023,"module":1023,"status":1678},"\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":1902,"title":1903,"order":1023,"module":1023,"status":1678},"\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":1905,"title":1906,"order":1023,"module":1023,"status":1678},"\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":1908,"title":1909,"order":1023,"module":1023,"status":1678},"\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":1911,"title":1912,"order":1023,"module":1023,"status":1678},"\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":1914,"title":1915,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F07-introduction-to-rest-apis","Quiz - Introduction To REST APIs",{"path":1917,"title":1918,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F07-asynchronous-requests-json-and-external-apis\u002F08-reading-api-documentation","Quiz - Reading API Documentation",{"path":1920,"title":1921,"order":1023,"module":1023,"status":1678},"\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":1923,"title":1924,"order":1023,"module":1023,"status":1678},"\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":1926,"title":1927,"order":1023,"module":1023,"status":1678},"\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":1929,"title":1930,"order":1023,"module":1023,"status":1678},"\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":1932,"title":1933,"order":1023,"module":1023,"status":1023},"\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":1935,"title":1936,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F02-selecting-elements-with-jquery","Quiz - Selecting Elements With jQuery",{"path":1938,"title":1939,"order":1023,"module":1023,"status":1023},"\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":1941,"title":1942,"order":1023,"module":1023,"status":1678},"\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":1944,"title":1945,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F05-sending-ajax-requests-with-jquery","Quiz - Sending AJAX Requests With jQuery",{"path":1947,"title":1948,"order":1023,"module":1023,"status":1678},"\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":1950,"title":1951,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F07-saving-user-created-records","Quiz - Saving User-Created Records",{"path":1953,"title":1954,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F08-building-a-project-listing-page","Quiz - Building A Project Listing Page",{"path":1956,"title":1957,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F09-inline-editing-and-detail-views","Quiz - Inline Editing And Detail Views",{"path":1959,"title":1960,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F08-dynamic-interfaces-and-project-data\u002F10-second-project-milestone-checklist","Quiz - Second Project Milestone Checklist",{"path":1962,"title":1963,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F01-foreign-keys-and-referential-integrity","Quiz - Foreign Keys And Referential Integrity",{"path":1965,"title":1966,"order":1023,"module":1023,"status":1678},"\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":1968,"title":1969,"order":1023,"module":1023,"status":1678},"\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":1971,"title":1972,"order":1023,"module":1023,"status":1678},"\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":1974,"title":1975,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F05-searching-and-filtering-with-sql","Quiz - Searching And Filtering With SQL",{"path":1977,"title":1978,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F06-pagination-displaying-records-in-pages","Quiz - Pagination: Displaying Records In Pages",{"path":1980,"title":1981,"order":1023,"module":1023,"status":1023},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F07-aggregate-functions-count-sum-avg","Quiz - Aggregate Functions: COUNT, SUM, AVG",{"path":1983,"title":1984,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F08-simple-analytics-and-summary-views","Quiz - Simple Analytics And Summary Views",{"path":1986,"title":1987,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F09-relational-data-search-and-pagination\u002F09-third-project-milestone-checklist","Quiz - Third Project Milestone Checklist",{"path":1989,"title":1990,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F01-public-pages-and-unauthenticated-views","Quiz - Public Pages And Unauthenticated Views",{"path":1992,"title":1993,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F02-user-profile-and-activity-pages","Quiz - User Profile And Activity Pages",{"path":1995,"title":1996,"order":1023,"module":1023,"status":1678},"\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":1998,"title":1999,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F04-application-wide-security-audit","Quiz - Application-Wide Security Audit",{"path":2001,"title":2002,"order":1023,"module":1023,"status":1678},"\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":2004,"title":2005,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F06-qa-testing-and-collecting-evidence","Quiz - QA Testing And Collecting Evidence",{"path":2007,"title":2008,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F07-production-environment-checklist","Quiz - Production Environment Checklist",{"path":2010,"title":2011,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F08-writing-a-project-readme","Quiz - Writing A Project README",{"path":2013,"title":2014,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F09-final-presentation-and-code-walkthrough","Quiz - Final Presentation And Code Walkthrough",{"path":2016,"title":2017,"order":1023,"module":1023,"status":1678},"\u002Finternet-applications\u002Fbook\u002Fquizzes\u002Fmodules\u002F10-final-integration-testing-and-deployment\u002F10-configuration-drift-and-secrets-checks","Quiz - Configuration Drift And Secrets Checks",{"path":2019,"title":2020,"order":1043,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fa-command-line-basics","Command Line Basics",{"path":2022,"title":2023,"order":14,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fb-git-and-github-recovery","Git And GitHub Recovery",{"path":2025,"title":2026,"order":216,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fc-apache-and-php-troubleshooting","Apache And PHP Troubleshooting",{"path":2028,"title":2029,"order":1064,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fd-mysql-troubleshooting","MySQL Troubleshooting",{"path":2031,"title":2032,"order":1042,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fe-http-request-and-response-reference","HTTP Request And Response Reference",{"path":2034,"title":2035,"order":1017,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Ff-common-security-mistakes","Common Security Mistakes",{"path":2037,"title":2038,"order":1286,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Freference\u002Fg-ai-collaboration-and-disclosure","AI Collaboration And Disclosure",{"path":2040,"title":2041,"order":1094,"module":1094,"status":1044},"\u002Finternet-applications\u002Fbook\u002Ftoc","Internet Applications: Table of Contents",{"path":2043,"title":2044,"order":1012,"module":1043,"status":1044},"\u002Finternet-applications\u002Flabs\u002F01-git-recovery-and-submission-evidence","Lab 1: Git Recovery And Submission Evidence",{"path":2046,"title":2047,"order":1051,"module":14,"status":1044},"\u002Finternet-applications\u002Flabs\u002F02-php-output-and-error-reading","Lab 2: PHP Output And Error Reading",{"path":2049,"title":2050,"order":1019,"module":216,"status":1044},"\u002Finternet-applications\u002Flabs\u002F03-form-methods-and-sticky-values","Lab 3: Form Methods And Sticky Values",{"path":2052,"title":2053,"order":1169,"module":1064,"status":1044},"\u002Finternet-applications\u002Flabs\u002F04-pdo-query-and-sql-evidence","Lab 4: PDO Query And SQL Evidence",{"path":2055,"title":2056,"order":1188,"module":1042,"status":1044},"\u002Finternet-applications\u002Flabs\u002F05-validation-debugging-and-friendly-errors","Lab 5: Validation, Debugging, And Friendly Errors",{"path":2058,"title":2059,"order":1013,"module":1017,"status":1044},"\u002Finternet-applications\u002Flabs\u002F06-role-protected-crud-check","Lab 6: Role-Protected CRUD Check",{"path":2061,"title":2062,"order":2063,"module":1017,"status":1044},"\u002Finternet-applications\u002Flabs\u002F06a-relative-paths-includes-and-feature-trace","Lab 6A: Relative Paths, Includes, And Feature Tracing","61",{"path":2065,"title":2066,"order":1014,"module":1286,"status":1044},"\u002Finternet-applications\u002Flabs\u002F07-json-endpoint-and-fetch-check","Lab 7: JSON Endpoint And Fetch Check",{"path":2068,"title":2069,"order":1227,"module":1077,"status":1044},"\u002Finternet-applications\u002Flabs\u002F08-jquery-ajax-interface-check","Lab 8: jQuery AJAX Interface Check",{"path":2071,"title":2072,"order":1231,"module":1084,"status":1044},"\u002Finternet-applications\u002Flabs\u002F09-search-pagination-and-summary-check","Lab 9: Search, Pagination, And Summary Check",{"path":2074,"title":2075,"order":1235,"module":1012,"status":1044},"\u002Finternet-applications\u002Flabs\u002F10-final-security-and-readme-check","Lab 10: Final Security And README Check",{"path":2077,"title":2078,"order":1023,"module":1023,"status":1044},"\u002Finternet-applications\u002Fpresentations-revised\u002F00-revision-plan","Internet Applications Presentation Revision Plan",{"path":2080,"title":2081,"order":1023,"module":1023,"status":1044},"\u002Finternet-applications\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Internet Applications Twenty-Minute Recording Plan",{"path":2083,"title":1202,"order":1094,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F00-learn-courses-and-discord",{"path":2085,"title":1205,"order":1012,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F01-basic-cli-commands",{"path":2087,"title":1208,"order":1051,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F02-install-git-tools",{"path":2089,"title":1211,"order":1019,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F03-setup-github-ssh",{"path":2091,"title":1214,"order":1169,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F04-git-commands-prs",{"path":2093,"title":1217,"order":1188,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F05-setup-local-development-environment",{"path":2095,"title":1220,"order":1013,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F06-add-instructor-template-to-your-repository",{"path":2097,"title":1223,"order":1014,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F07-qa-prod-branches",{"path":2099,"title":1226,"order":1227,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F08-render-setup",{"path":2101,"title":1230,"order":1231,"module":1043,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F09-local-ubuntu-web-server-virtualbox",{"path":2103,"title":1234,"order":1235,"module":1043,"status":1044},"\u002Finternet-applications\u002Fpresentations\u002F01-git-github-and-course-workflow\u002F10-local-ubuntu-web-server-vmware",{"path":2105,"title":1238,"order":1012,"module":14,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"path":2107,"title":1241,"order":1051,"module":14,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",{"path":2109,"title":1244,"order":1012,"module":216,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F01-intro-to-html",{"path":2111,"title":1247,"order":1051,"module":216,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F02-intro-to-forms-and-get-post",{"path":2113,"title":1250,"order":1019,"module":216,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F03-html-forms-css-and-dom\u002F03-understanding-css-js-selectors-and-dom-updates",{"path":2115,"title":1253,"order":1012,"module":1064,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F01-intro-to-sql",{"path":2117,"title":1256,"order":1051,"module":1064,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F02-project-database-setup",{"path":2119,"title":1259,"order":1019,"module":1064,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F03-user-registration",{"path":2121,"title":1262,"order":1169,"module":1064,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F04-databases-and-user-accounts\u002F04-user-login",{"path":2123,"title":1265,"order":1012,"module":1042,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F01-intro-to-regex",{"path":2125,"title":1268,"order":1051,"module":1042,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F02-project-shared-helpers",{"path":2127,"title":2128,"order":1019,"module":1042,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F03-flash-messages-and-redirect-feedback","Flash Messages And Redirect Feedback",{"path":2130,"title":1274,"order":1169,"module":1042,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F05-validation-and-user-profiles\u002F04-user-profile",{"path":2132,"title":1277,"order":1012,"module":1017,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F01-user-roles-authorization",{"path":2134,"title":1280,"order":1051,"module":1017,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F06-roles-and-crud-pages\u002F02-user-login-enhancement",{"path":1020,"title":5,"order":1019,"module":1017,"status":1025},{"path":2137,"title":1285,"order":1012,"module":1286,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F01-working-with-api-data",{"path":2139,"title":1289,"order":1051,"module":1286,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F02-api-integration",{"path":2141,"title":1292,"order":1019,"module":1286,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F07-api-data-and-database-helpers\u002F03-database-utility-functions",{"path":2143,"title":1295,"order":1012,"module":1077,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F01-milestone-2-bootstrap-and-reusability",{"path":2145,"title":1298,"order":1051,"module":1077,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F02-jquery-brief-intro",{"path":2147,"title":1301,"order":1019,"module":1077,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F08-reusable-components-jquery-and-ajax\u002F03-intro-to-ajax",{"path":2149,"title":1304,"order":1012,"module":1084,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F01-user-associations",{"path":2151,"title":1307,"order":1051,"module":1084,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F09-relational-data-search-and-pagination\u002F02-association-views-and-pagination",{"path":2153,"title":1310,"order":1012,"module":1012,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F01-association-assignment-and-public-profiles",{"path":2155,"title":1313,"order":1051,"module":1012,"status":1025},"\u002Finternet-applications\u002Fpresentations\u002F10-association-assignment-and-security\u002F02-reusable-csrf-protection",{"path":2157,"title":1316,"order":1043,"module":1094,"status":1025},"\u002Finternet-applications\u002Fsyllabus\u002Fsummer-2026",{"path":2159,"title":2160,"order":2161,"module":1012,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Ffinal-project-submission-worksheet","Final Project Submission Worksheet","110",{"path":2163,"title":2164,"order":2165,"module":1017,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-milestone-01-worksheet","Legacy Milestone 1 Worksheet","118",{"path":2167,"title":2168,"order":2169,"module":1017,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Flegacy-multi-dimension-php-problems-worksheet","Legacy Multi-Dimension PHP Problems Worksheet","119",{"path":2171,"title":2172,"order":2161,"module":1017,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-01-account-access-and-profile-worksheet","IT202 Milestone 1 - 2026",{"path":2174,"title":2175,"order":2176,"module":1077,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-02-api-data-and-crud-worksheet","IT202 Milestone 2 - 2026","120",{"path":2178,"title":2179,"order":2180,"module":1084,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmilestone-03-user-associations-worksheet","IT202 Milestone 3 - 2026","130",{"path":2182,"title":2183,"order":1012,"module":1043,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-01-git-and-local-server-worksheet","Module 1 Worksheet: Git, GitHub, And Local Server Evidence",{"path":2185,"title":2186,"order":1051,"module":14,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-02-php-and-debugging-worksheet","Module 2 Worksheet: PHP Challenge Scenarios",{"path":2188,"title":2189,"order":1019,"module":216,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-03-forms-css-and-dom-worksheet","Module 3 Worksheet: HTML, CSS, JS Challenges",{"path":2191,"title":2192,"order":1169,"module":1064,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-04-database-auth-and-sessions-worksheet","Module 4 Worksheet: SQL Todo Challenge",{"path":2194,"title":2195,"order":1188,"module":1042,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-05-validation-and-debugging-worksheet","Module 5 Worksheet: Validation And Debugging Evidence",{"path":2197,"title":2198,"order":1013,"module":1017,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-authorization-and-crud-worksheet","Module 6 Worksheet: Authorization And CRUD Evidence",{"path":2200,"title":2201,"order":2202,"module":1017,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-06-multi-dimensional-php-arrays-worksheet","Module 06 Worksheet: Multi-Dimensional PHP Arrays","62",{"path":2204,"title":2205,"order":1014,"module":1286,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-07-api-testing-worksheet","Module 07 Worksheet: Project API Testing",{"path":2207,"title":2208,"order":1227,"module":1077,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-08-jquery-and-dynamic-ui-worksheet","Module 8 Worksheet: jQuery And Dynamic UI Evidence",{"path":2210,"title":2211,"order":1231,"module":1084,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-09-search-pagination-and-summary-worksheet","Module 9 Worksheet: Search, Pagination, And Summary Evidence",{"path":2213,"title":2214,"order":1235,"module":1012,"status":1044},"\u002Finternet-applications\u002Fworksheets\u002Fmodule-10-final-project-readiness-worksheet","Module 10 Worksheet: Final Project Readiness Evidence",{"path":2216,"title":1205,"order":1012,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2218,"title":1208,"order":1051,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2220,"title":1211,"order":1019,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2222,"title":1214,"order":1169,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2224,"title":2225,"order":1188,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup","Course Repository Setup",{"path":2227,"title":2228,"order":1013,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup","Java Development Environment Setup",{"path":2230,"title":2231,"order":1012,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics","Java Basics",{"path":2233,"title":2234,"order":1051,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control","Java Flow Control",{"path":2236,"title":2237,"order":1019,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops","Java Loops",{"path":2239,"title":2240,"order":1169,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections","Java Arrays, Queue, Stack, ArrayList",{"path":2242,"title":2243,"order":1012,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input","Java User Input",{"path":2245,"title":2246,"order":1051,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers","Java Intro to OOP - Modifiers",{"path":2248,"title":2249,"order":1019,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io","Java File I\u002FO",{"path":2251,"title":2252,"order":1169,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees","Java Recursion and Trees",{"path":2254,"title":2255,"order":1012,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview","Java Sockets: Overview",{"path":2257,"title":2258,"order":1051,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate","Java OOP Intermediate",{"path":2260,"title":2261,"order":1019,"module":1064,"status":1044},"\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":2263,"title":2264,"order":1012,"module":1042,"status":1044},"\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":2266,"title":2267,"order":1051,"module":1017,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026","Java Advanced Programming Preparing for Milestone 2",{"path":2269,"title":2270,"order":1019,"module":1017,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check","Java Advanced Programming Milestone 2: GameServer Ready Check",{"path":2272,"title":2273,"order":1012,"module":1286,"status":1044},"\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":2275,"title":2276,"order":1051,"module":1286,"status":1044},"\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":2278,"title":2279,"order":1019,"module":1286,"status":1044},"\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":2281,"title":2282,"order":1169,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns","Java Advanced Programming Milestone 2: Simultaneous Turns",{"path":2284,"title":2285,"order":1188,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns","Java Advanced Programming Milestone 2: Individual Turns",{"path":2287,"title":2288,"order":1012,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration","Java Advanced Programming Milestone 2: Grid Integration",{"path":2290,"title":2291,"order":1051,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration","Java Advanced Programming Milestone 2: Cards Integration",{"path":2293,"title":2294,"order":1019,"module":1077,"status":1044},"\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":2296,"title":2297,"order":1169,"module":1077,"status":1044},"\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":2299,"title":2300,"order":1188,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro","Java Advanced Programming Java UI 2025",{"path":2302,"title":2303,"order":1012,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026","UI Integration 2026",{"path":2305,"title":2306,"order":1051,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing","UI Drawing",{"path":2308,"title":2309,"order":1019,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration","Baseline UI Integration",{"path":2311,"title":2312,"order":1169,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration","NDFF UI Integration",{"path":2314,"title":2315,"order":1188,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui","Equals 6 UI",{"path":2317,"title":2318,"order":1013,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project","Popularity Mini Project",{"path":2320,"title":2321,"order":1012,"module":1012,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup","Milestone 3 Wrapup",{"path":2323,"title":2324,"order":1051,"module":1012,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps","Deploying Java Apps",{"path":2326,"title":2327,"order":1019,"module":1012,"status":1044},"\u002Fjava-advanced-programming\u002F2e\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator","NDFF Away Spectator",{"path":2329,"title":2330,"order":1043,"module":1094,"status":1025},"\u002Fjava-advanced-programming\u002F2e\u002Fsyllabus\u002Ffall-2026","IT114 - Advanced Programming for Information Technology",{"path":2332,"title":2333,"order":1012,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F01-course-tools-and-workflow","Course Tools And Workflow",{"path":2335,"title":2336,"order":1051,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F02-terminal-git-and-github","Terminal, Git, And GitHub Basics",{"path":2338,"title":2339,"order":1019,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F01-course-setup-and-workflow\u002F03-java-development-environment","Java Development Environment",{"path":2341,"title":2342,"order":1012,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F01-java-program-shape","The Shape Of A Java Program",{"path":2344,"title":2345,"order":1051,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F02-values-types-and-expressions","Values, Types, And Expressions",{"path":2347,"title":2348,"order":1019,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F02-java-basics\u002F03-conditions-loops-and-collections","Conditions, Loops, And Collections",{"path":2350,"title":2351,"order":1012,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F01-user-input-and-output","User Input And Program Output",{"path":2353,"title":2354,"order":1051,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F02-classes-objects-and-modifiers","Classes, Objects, And Modifiers",{"path":2356,"title":2357,"order":1019,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F03-file-io-paths-and-exceptions","File I\u002FO, Paths, And Exceptions",{"path":2359,"title":2360,"order":1169,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F03-java-input-io-and-oop\u002F04-recursion-and-trees","Recursion And Tree Thinking",{"path":2362,"title":2363,"order":1012,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F01-sockets-client-server","Sockets And Client\u002FServer Thinking",{"path":2365,"title":2366,"order":1051,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F02-server-socket-flow","The ServerSocket Flow",{"path":2368,"title":2369,"order":1019,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F04-sockets-and-oop\u002F03-oop-for-socket-apps","OOP For Socket Applications",{"path":2371,"title":2372,"order":1012,"module":1042,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F01-multi-client-server-shape","Multi-Client Server Shape",{"path":2374,"title":2375,"order":1051,"module":1042,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F02-threads-shared-state-and-message-routing","Threads, Shared State, And Message Routing",{"path":2377,"title":2378,"order":1019,"module":1042,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Fmodules\u002F05-multi-client-sockets\u002F03-debugging-socket-programs","Debugging Socket Programs",{"path":2380,"title":2381,"order":1094,"module":1094,"status":1044},"\u002Fjava-advanced-programming\u002Fbook\u002Ftoc","Java Advanced Programming: Table of Contents",{"path":2383,"title":2384,"order":1023,"module":1023,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F00-revision-plan","Java Advanced Programming Presentation Revision Plan",{"path":2386,"title":2387,"order":1023,"module":1023,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Java Advanced Programming Twenty-Minute Recording Plan",{"path":2389,"title":1205,"order":1012,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F01-basic-cli-commands",{"path":2391,"title":1208,"order":1051,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F02-install-git-tools",{"path":2393,"title":1211,"order":1019,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F03-setup-github-ssh",{"path":2395,"title":1214,"order":1169,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F04-git-commands-prs",{"path":2397,"title":2225,"order":1188,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F05-course-repo-setup",{"path":2399,"title":2228,"order":1013,"module":1043,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F01-module-1-course-setup\u002F06-java-environment-setup",{"path":2401,"title":2231,"order":1012,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F01-java-basics",{"path":2403,"title":2234,"order":1051,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F02-flow-control",{"path":2405,"title":2237,"order":1019,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F03-loops",{"path":2407,"title":2240,"order":1169,"module":14,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F02-module-2-java-basics\u002F04-collections",{"path":2409,"title":2243,"order":1012,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F01-user-input",{"path":2411,"title":2246,"order":1051,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F02-oop-modifiers",{"path":2413,"title":2249,"order":1019,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F03-file-io",{"path":2415,"title":2252,"order":1169,"module":216,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F03-module-3-java-io-and-oop\u002F04-recursion-trees",{"path":2417,"title":2255,"order":1012,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F01-sockets-overview",{"path":2419,"title":2258,"order":1051,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F02-oop-intermediate",{"path":2421,"title":2261,"order":1019,"module":1064,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F04-module-4-sockets-and-oop\u002F03-multi-client-chat-part-1",{"path":2423,"title":2264,"order":1012,"module":1042,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F05-module-5-multi-client-sockets\u002F01-multi-client-chat-part-2",{"path":2425,"title":2426,"order":1012,"module":1017,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F01-prepare-milestone-2-2025","Java Advanced Programming Preparing for Milestone2 2025",{"path":2428,"title":2267,"order":1051,"module":1017,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F02-prepare-milestone-2-2026",{"path":2430,"title":2270,"order":1019,"module":1017,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F06-module-6-milestone-2-prep\u002F03-gameserver-ready-check",{"path":2432,"title":2273,"order":1012,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F01-game-rooms-ready-check",{"path":2434,"title":2276,"order":1051,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F02-round-robin-turns",{"path":2436,"title":2279,"order":1019,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F03-phase-based-turns",{"path":2438,"title":2282,"order":1169,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F04-simultaneous-turns",{"path":2440,"title":2285,"order":1188,"module":1286,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F07-module-7-game-rooms-and-turns\u002F05-individual-turns",{"path":2442,"title":2288,"order":1012,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F01-grid-integration",{"path":2444,"title":2291,"order":1051,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F02-card-integration",{"path":2446,"title":2294,"order":1019,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F03-equals-6-mini-project",{"path":2448,"title":2297,"order":1169,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F04-nice-day-for-fishin",{"path":2450,"title":2300,"order":1188,"module":1077,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F08-module-8-grids-cards-and-ui\u002F05-java-ui-intro",{"path":2452,"title":2303,"order":1012,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F01-ui-integration-2026",{"path":2454,"title":2306,"order":1051,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F02-ui-drawing",{"path":2456,"title":2309,"order":1019,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F03-baseline-ui-integration",{"path":2458,"title":2312,"order":1169,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F04-ndff-ui-integration",{"path":2460,"title":2315,"order":1188,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F05-equals-6-ui",{"path":2462,"title":2318,"order":1013,"module":1084,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F09-module-9-ui-integration\u002F06-popularity-mini-project",{"path":2464,"title":2321,"order":1012,"module":1012,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F01-milestone-3-wrapup",{"path":2466,"title":2324,"order":1051,"module":1012,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F02-deploying-java-apps",{"path":2468,"title":2327,"order":1019,"module":1012,"status":1044},"\u002Fjava-advanced-programming\u002Fpresentations\u002F10-module-10-wrap-up-and-deployment\u002F03-ndff-away-spectator",{"path":2470,"title":2471,"order":1012,"module":1043,"status":1044},"\u002Fsystems-integration\u002F2e\u002Fpresentations\u002F01-required-architecture-overview","Required Architecture Overview",{"path":2473,"title":2474,"order":1043,"module":1094,"status":1025},"\u002Fsystems-integration\u002F2e\u002Fsyllabus\u002Ffall-2026","IT490 - Systems Integration Syllabus",{"path":2476,"title":2477,"order":1043,"module":1094,"status":1025},"\u002Fsystems-integration","Systems Integration",{"path":2479,"title":2480,"order":1023,"module":1023,"status":1044},"\u002Fsystems-integration\u002Fpresentations-revised\u002F00-revision-plan","Systems Integration Presentation Revision Plan",{"path":2482,"title":2483,"order":1023,"module":1023,"status":1044},"\u002Fsystems-integration\u002Fpresentations-revised\u002F01-20-minute-recording-plan","Systems Integration Twenty-Minute Recording Plan",{"path":2485,"title":2471,"order":1012,"module":1043,"status":1025},"\u002Fsystems-integration\u002Fpresentations\u002F01-required-architecture-overview",{"path":2487,"title":2474,"order":1043,"module":1094,"status":1025},"\u002Fsystems-integration\u002Fsyllabus\u002Fsummer-2026",{"path":2489,"title":2490,"order":1023,"module":1023,"status":1023},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-authentication-authorization-core-2026-draft","IT490 Authentication and Authorization Core Milestone (2026)",{"path":2492,"title":2493,"order":1023,"module":1023,"status":1023},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-centralized-logging-milestone-draft","IT490 Centralized Logging Milestone",{"path":2495,"title":2496,"order":1023,"module":1023,"status":1023},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-3-resiliency-2026-draft","IT490 Milestone 3 - Deployment, Promotion, And Recovery",{"path":2498,"title":2499,"order":1023,"module":1023,"status":1023},"\u002Fsystems-integration\u002Fworksheets\u002Fit490-milestone-4-availability-2026-draft","IT490 Milestone 4 - Availability, Load Balancing, And Recovery",{"path":2501,"title":2502,"order":1051,"module":1094,"status":1044},"\u002Fsystems-integration\u002Fworksheets\u002Fmeeting-minutes-template","IT490 Meeting Minutes Template",{"path":2504,"title":2505,"order":1019,"module":1094,"status":1044},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-changelog-template","IT490 Project Change Log Template",{"path":2507,"title":2508,"order":1012,"module":1094,"status":1044},"\u002Fsystems-integration\u002Fworksheets\u002Fproject-proposal-template","IT490 Project Proposal Template",1788152086617]