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