[{"data":1,"prerenderedAt":723},["ShallowReactive",2],{"i-kinnu:logo":3,"i-kinnu:origami-folding":8,"tile-technology-how-computers-work-software":12,"i-lucide:chevron-right":718,"i-lucide:menu":721},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,27,false,"\u003Cg fill=\"none\">\u003Cpath d=\"M0.046875 1.05555C0.046875 1.03541 0.048197 1.01579 0.0507438 0.996728C0.0987149 0.438619 0.586845 0 1.18194 0H25.4398C26.451 0 26.9575 1.171 26.2424 1.85585L15.7301 11.9243L1.31574 0.903476C1.17475 0.79568 1.01137 0.761884 0.859586 0.784111L26.2936 25.1441C27.0086 25.829 26.5022 27 25.4909 27H1.18194C0.555061 27 0.046875 26.5133 0.046875 25.9129V1.05555Z\" fill=\"currentColor\"/>\u003C/g>",{"left":4,"top":4,"width":9,"height":10,"rotate":4,"vFlip":6,"hFlip":6,"body":11},1000,236,"\u003Cg fill=\"none\">\u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n    d=\"M193.68 38.2238C195.994 38.2238 197.87 40.0989 197.87 42.412V231.812C197.87 234.125 195.994 236 193.68 236H4.19013C1.87603 236 2.02305e-07 234.125 0 231.812V42.412C-2.02305e-07 40.0989 1.87603 38.2238 4.19013 38.2238H193.68ZM111.76 89.0072C111.685 87.9474 110.572 87.2905 109.608 87.7376L96.8872 93.641C95.7786 94.1554 95.702 95.7016 96.7545 96.3225L101.579 99.167C94.7045 109.365 90.5733 122.892 90.5732 137.642C90.5733 154.323 95.8569 169.439 104.416 179.945C105.301 181.032 106.9 181.196 107.987 180.311C109.075 179.426 109.238 177.828 108.353 176.741C100.621 167.25 95.6522 153.305 95.6521 137.642C95.6522 123.661 99.6138 111.051 105.963 101.754L110.456 104.403C111.508 105.024 112.826 104.21 112.74 102.991L111.76 89.0072ZM9.63194 136.286C9.14864 136.286 8.75684 136.678 8.75684 137.161C8.7569 137.644 9.14868 138.035 9.63194 138.035H17.2161C17.6993 138.035 18.0912 137.644 18.0912 137.161C18.0912 136.678 17.6994 136.286 17.2161 136.286H9.63194ZM22.6813 136.286C22.198 136.286 21.8062 136.678 21.8062 137.161C21.8063 137.644 22.1981 138.035 22.6813 138.035H30.2655C30.7487 138.035 31.1406 137.644 31.1406 137.161C31.1406 136.678 30.7488 136.286 30.2655 136.286H22.6813ZM35.7464 136.286C35.2631 136.286 34.8713 136.678 34.8713 137.161C34.8713 137.644 35.2631 138.035 35.7464 138.035H44.4973C44.9805 138.035 45.3724 137.644 45.3724 137.161C45.3724 136.678 44.9806 136.286 44.4973 136.286H35.7464ZM49.9977 136.286C49.5144 136.286 49.1226 136.678 49.1226 137.161C49.1226 137.644 49.5144 138.035 49.9977 138.035H57.5819C58.0651 138.035 58.4569 137.644 58.457 137.161C58.457 136.678 58.0651 136.286 57.5819 136.286H49.9977ZM63.0783 136.286C62.595 136.286 62.2032 136.678 62.2032 137.161C62.2033 137.644 62.5951 138.035 63.0783 138.035H70.6625C71.1457 138.035 71.5375 137.644 71.5376 137.161C71.5376 136.678 71.1457 136.286 70.6625 136.286H63.0783ZM76.1277 136.286C75.6444 136.286 75.2526 136.678 75.2526 137.161C75.2527 137.644 75.6445 138.035 76.1277 138.035H83.7119C84.1951 138.035 84.5869 137.644 84.587 137.161C84.587 136.678 84.1951 136.286 83.7119 136.286H76.1277ZM102.266 136.286C101.782 136.286 101.39 136.678 101.39 137.161C101.391 137.644 101.782 138.035 102.266 138.035H109.85C110.333 138.035 110.725 137.644 110.725 137.161C110.725 136.678 110.333 136.286 109.85 136.286H102.266ZM115.338 136.286C114.855 136.286 114.463 136.678 114.463 137.161C114.463 137.644 114.855 138.035 115.338 138.035H122.923C123.406 138.035 123.798 137.644 123.798 137.161C123.798 136.678 123.406 136.286 122.923 136.286H115.338ZM128.403 136.286C127.92 136.286 127.528 136.678 127.528 137.161C127.528 137.644 127.92 138.035 128.403 138.035H135.988C136.471 138.035 136.863 137.644 136.863 137.161C136.863 136.678 136.471 136.286 135.988 136.286H128.403ZM141.468 136.286C140.985 136.286 140.593 136.678 140.593 137.161C140.593 137.644 140.985 138.035 141.468 138.035H149.053C149.536 138.035 149.928 137.644 149.928 137.161C149.928 136.678 149.536 136.286 149.053 136.286H141.468ZM154.541 136.286C154.058 136.286 153.666 136.678 153.666 137.161C153.666 137.644 154.058 138.035 154.541 138.035H162.125C162.609 138.035 163 137.644 163.001 137.161C163.001 136.678 162.609 136.286 162.125 136.286H154.541ZM167.614 136.286C167.131 136.286 166.739 136.678 166.739 137.161C166.739 137.644 167.131 138.035 167.614 138.035H175.198C175.681 138.035 176.073 137.644 176.073 137.161C176.073 136.678 175.681 136.286 175.198 136.286H167.614ZM180.671 136.286C180.188 136.286 179.796 136.678 179.796 137.161C179.796 137.644 180.188 138.035 180.671 138.035H188.255C188.739 138.035 189.13 137.644 189.131 137.161C189.131 136.678 188.739 136.286 188.255 136.286H180.671Z\"\n    fill=\"currentColor\" />\n  \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n    d=\"M444.85 38.2277C447.164 38.2277 449.04 40.1028 449.04 42.4159V132.928C449.04 135.241 447.164 137.116 444.85 137.116H255.36C253.046 137.116 251.17 135.241 251.17 132.928V42.4159C251.17 40.1028 253.046 38.2277 255.36 38.2277H444.85ZM361.96 125.388C361.618 125.046 361.064 125.046 360.722 125.388L354.534 131.572C354.192 131.914 354.192 132.468 354.534 132.81C354.876 133.151 355.43 133.151 355.772 132.81L361.96 126.624C362.301 126.283 362.301 125.73 361.96 125.388ZM371.047 116.311C370.705 115.969 370.15 115.969 369.809 116.311L364.446 121.671C364.104 122.012 364.104 122.567 364.446 122.908C364.788 123.249 365.342 123.25 365.684 122.908L371.047 117.548C371.388 117.207 371.388 116.652 371.047 116.311ZM380.124 107.246C379.782 106.904 379.227 106.904 378.885 107.246L373.523 112.606C373.181 112.948 373.181 113.502 373.523 113.844C373.864 114.185 374.419 114.185 374.761 113.844L380.124 108.483C380.465 108.142 380.465 107.587 380.124 107.246ZM385.736 65.8841C385.891 64.6727 384.622 63.7845 383.536 64.3434L371.069 70.7636C370.124 71.2504 369.96 72.5334 370.752 73.2424L381.2 82.5938C382.11 83.4081 383.561 82.8672 383.717 81.6557L384.393 76.3725C391.143 77.1933 398.567 80.7709 404.771 86.9711C411.124 93.3213 414.726 100.952 415.43 107.827C415.573 109.221 416.819 110.236 418.214 110.093C419.609 109.95 420.624 108.703 420.481 107.309C419.644 99.1317 415.435 90.4514 408.362 83.3817C401.466 76.489 393.038 72.3185 385.038 71.338L385.736 65.8841ZM389.2 98.1733C388.859 97.8319 388.304 97.8318 387.962 98.1733L382.6 103.534C382.258 103.875 382.258 104.429 382.6 104.771C382.941 105.112 383.496 105.112 383.838 104.771L389.2 99.4108C389.542 99.0693 389.542 98.5149 389.2 98.1733ZM398.262 89.1047C397.92 88.7633 397.365 88.7632 397.024 89.1047L391.661 94.4649C391.319 94.8065 391.319 95.3608 391.661 95.7024C392.002 96.0436 392.557 96.0438 392.899 95.7024L398.262 90.3421C398.603 90.0007 398.603 89.4463 398.262 89.1047ZM416.431 70.9616C416.089 70.6202 415.534 70.6201 415.193 70.9616L409.83 76.3218C409.488 76.6634 409.488 77.2177 409.83 77.5592C410.172 77.9005 410.726 77.9007 411.068 77.5592L416.431 72.199C416.772 71.8575 416.772 71.3032 416.431 70.9616ZM425.508 61.891C425.166 61.5496 424.611 61.5495 424.27 61.891L418.907 67.2512C418.565 67.5928 418.565 68.1471 418.907 68.4887C419.249 68.8299 419.803 68.8301 420.145 68.4887L425.508 63.1284C425.849 62.787 425.849 62.2326 425.508 61.891ZM434.569 52.8146C434.227 52.4731 433.673 52.4731 433.331 52.8146L427.968 58.1748C427.626 58.5163 427.627 59.0706 427.968 59.4122C428.31 59.7534 428.864 59.7537 429.206 59.4122L434.569 54.052C434.91 53.7105 434.91 53.1562 434.569 52.8146ZM443.638 43.7479C443.296 43.4065 442.742 43.4064 442.4 43.7479L437.037 49.1081C436.695 49.4496 436.696 50.004 437.037 50.3455C437.379 50.6868 437.933 50.687 438.275 50.3455L443.638 44.9853C443.98 44.6438 443.979 44.0895 443.638 43.7479Z\"\n    fill=\"currentColor\" />\n  \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n    d=\"M684.066 38.2277C687.798 38.2281 689.667 42.7391 687.027 45.3773L596.473 135.889C595.687 136.675 594.621 137.116 593.51 137.116H506.335C504.021 137.116 502.145 135.241 502.145 132.928V42.4159C502.145 40.1028 504.021 38.2277 506.335 38.2277H684.066ZM514.603 124.566C514.261 124.224 513.707 124.224 513.365 124.566L507.178 130.751C506.836 131.093 506.836 131.646 507.178 131.988C507.519 132.329 508.073 132.329 508.415 131.988L514.603 125.803C514.945 125.462 514.945 124.908 514.603 124.566ZM523.689 115.491C523.348 115.15 522.794 115.15 522.452 115.491L517.09 120.852C516.748 121.193 516.748 121.747 517.09 122.088C517.431 122.43 517.985 122.43 518.327 122.088L523.689 116.728C524.031 116.386 524.031 115.833 523.689 115.491ZM532.102 65.8295C530.707 65.6872 529.46 66.7017 529.318 68.0957C529.175 69.4896 530.189 70.7355 531.584 70.8787C538.463 71.5825 546.096 75.1826 552.45 81.5329C558.723 87.8037 562.312 95.3226 563.079 102.13L557.738 102.392C556.518 102.452 555.865 103.855 556.607 104.827L565.115 115.969C565.76 116.814 567.051 116.751 567.611 115.847L574.992 103.928C575.635 102.889 574.848 101.555 573.628 101.615L568.161 101.882C568.161 101.878 568.162 101.874 568.161 101.871C567.324 93.6931 563.114 85.0124 556.041 77.9425C548.968 70.873 540.283 66.6668 532.102 65.8295ZM532.766 106.421C532.425 106.079 531.871 106.079 531.529 106.421L526.166 111.781C525.825 112.123 525.825 112.676 526.166 113.018C526.508 113.359 527.062 113.359 527.403 113.018L532.766 107.657C533.108 107.316 533.108 106.762 532.766 106.421ZM541.843 97.3445C541.501 97.003 540.948 97.003 540.606 97.3445L535.243 102.705C534.901 103.046 534.902 103.6 535.243 103.941C535.585 104.283 536.139 104.283 536.48 103.941L541.843 98.5809C542.185 98.2393 542.185 97.686 541.843 97.3445ZM550.92 88.2778C550.578 87.9363 550.025 87.9363 549.683 88.2778L544.32 93.638C543.978 93.9796 543.978 94.5329 544.32 94.8745C544.662 95.2161 545.215 95.2161 545.557 94.8745L550.92 89.5142C551.262 89.1727 551.262 88.6193 550.92 88.2778ZM569.066 70.1405C568.724 69.799 568.17 69.7991 567.829 70.1405L562.466 75.5008C562.124 75.8423 562.124 76.3956 562.466 76.7372C562.808 77.0788 563.361 77.0788 563.703 76.7372L569.066 71.377C569.407 71.0354 569.407 70.4821 569.066 70.1405ZM578.143 61.0699C577.801 60.7284 577.247 60.7285 576.906 61.0699L571.543 66.4302C571.201 66.7717 571.201 67.3251 571.543 67.6666C571.885 68.0082 572.438 68.0082 572.78 67.6666L578.143 62.3064C578.484 61.9648 578.484 61.4115 578.143 61.0699ZM587.219 51.9896C586.878 51.6481 586.324 51.6481 585.982 51.9896L580.62 57.3498C580.278 57.6914 580.278 58.2447 580.62 58.5863C580.961 58.9279 581.515 58.9279 581.857 58.5863L587.219 53.2261C587.561 52.8845 587.561 52.3312 587.219 51.9896ZM596.288 42.9249C595.947 42.5833 595.392 42.5833 595.05 42.9249L589.689 48.2851C589.347 48.6267 589.347 49.18 589.689 49.5216C590.03 49.863 590.584 49.8631 590.926 49.5216L596.288 44.1613C596.63 43.8198 596.63 43.2664 596.288 42.9249Z\"\n    fill=\"currentColor\" />\n  \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n    d=\"M850.814 38.2277C854.547 38.2281 856.416 42.739 853.777 45.3773L763.223 135.889C762.437 136.674 761.371 137.116 760.26 137.116H673.176C669.443 137.116 667.574 132.605 670.213 129.966L760.768 39.4544C761.554 38.6692 762.62 38.2277 763.731 38.2277H850.814ZM761.338 121.8C760.855 121.8 760.463 122.191 760.463 122.674V131.13H762.213V122.674C762.213 122.191 761.821 121.8 761.338 121.8ZM761.338 108.971C760.855 108.971 760.463 109.363 760.463 109.846V118.301H762.213V109.846C762.213 109.363 761.821 108.971 761.338 108.971ZM761.338 96.1402C760.855 96.1406 760.463 96.5321 760.463 97.0149V105.47H762.213V97.0149C762.213 96.532 761.821 96.1404 761.338 96.1402ZM782.263 71.887C781.043 71.951 780.395 73.3571 781.139 74.3257L784.474 78.6631C779.115 82.951 771.242 85.7443 762.35 85.7444C753.366 85.7442 745.421 82.8944 740.059 78.5305C738.972 77.6461 737.373 77.8099 736.488 78.8961C735.602 79.983 735.766 81.582 736.853 82.467C743.231 87.6574 752.348 90.8207 762.35 90.8209C772.209 90.8208 781.205 87.746 787.568 82.6884L790.833 86.9341C791.577 87.9025 793.103 87.6391 793.479 86.4767L797.791 73.138C798.118 72.127 797.33 71.1017 796.268 71.1566L782.263 71.887ZM761.338 70.4847C760.855 70.4851 760.463 70.8767 760.463 71.3594V79.8147H762.213V71.3594C762.213 70.8766 761.821 70.485 761.338 70.4847ZM761.338 57.656C760.855 57.6564 760.463 58.048 760.463 58.5307V66.986H762.213V58.5307C762.213 58.0479 761.821 57.6563 761.338 57.656ZM761.338 44.8293C760.855 44.8297 760.463 45.2212 760.463 45.704V54.1592H762.213V45.704C762.213 45.2211 761.821 44.8295 761.338 44.8293Z\"\n    fill=\"currentColor\" />\n  \u003Cpath\n    d=\"M995.759 38.2277C999.53 38.228 1001.42 42.5171 998.752 45.0253L959.55 81.9005L905.796 41.5363C905.271 41.1418 904.662 41.0182 904.096 41.0994L997.485 130.319C1000.15 132.828 998.262 137.116 994.491 137.116H905.298C902.96 137.116 901.065 135.333 901.065 133.134V42.0941C901.065 42.0204 901.07 41.9483 901.079 41.8786C901.258 39.8345 903.079 38.2277 905.298 38.2277H995.759Z\"\n    fill=\"currentColor\" />\n  \u003Cpath\n    d=\"M505.873 0C506.657 4.57042e-05 507.307 0.195499 507.823 0.587023C508.338 0.969046 508.596 1.53802 508.596 2.29251C508.596 2.76034 508.467 3.19015 508.209 3.58162C507.951 3.96344 507.497 4.26401 506.848 4.48361V4.54114C507.65 4.67487 508.205 4.96191 508.51 5.4012C508.816 5.83087 508.969 6.31772 508.969 6.86193C508.969 7.74056 508.672 8.41851 508.08 8.89604C507.497 9.38304 506.733 9.62731 505.787 9.62738C504.861 9.62738 504.158 9.42172 503.68 9.0111C503.212 8.60054 502.935 8.08005 502.849 7.44993L503.881 7.10571L503.924 7.24028C504.035 7.54934 504.211 7.82925 504.454 8.07986C504.731 8.36635 505.166 8.50986 505.758 8.50989C506.465 8.50989 506.943 8.32772 507.191 7.9648C507.449 7.6019 507.579 7.20078 507.579 6.7615C507.579 6.2173 507.378 5.80683 506.977 5.52992C506.585 5.25295 505.93 5.10026 505.013 5.07161V4.15402C505.901 4.12537 506.489 3.92484 506.776 3.55237C507.062 3.18009 507.206 2.82242 507.206 2.47876C507.206 1.62801 506.752 1.17539 505.845 1.12237L505.658 1.11749C505.467 1.11752 505.242 1.14605 504.985 1.2033C504.736 1.25105 504.511 1.3274 504.31 1.43245L504.081 2.56457L503.05 2.44951L503.322 0.687461C503.666 0.49653 504.068 0.33454 504.526 0.200875C504.985 0.0671945 505.434 0 505.873 0Z\"\n    fill=\"currentColor\" />\n  \u003Cpath\n    d=\"M905.727 2.30616L904.638 2.4066L904.466 1.26083H901.428V3.72497C901.533 3.71544 901.643 3.71034 901.757 3.71034H902.086C902.755 3.71034 903.386 3.78668 903.979 3.93949C904.58 4.09229 905.068 4.38363 905.44 4.8132C905.822 5.23335 906.014 5.84949 906.014 6.66106C906.014 7.64468 905.722 8.38068 905.14 8.86776C904.557 9.36434 903.783 9.6127 902.818 9.61275C901.91 9.61275 901.213 9.40711 900.725 8.99648C900.248 8.59544 899.96 8.08007 899.865 7.44993L900.911 7.10571C901.007 7.49723 901.203 7.8271 901.499 8.09449C901.795 8.37131 902.211 8.50985 902.746 8.50989C903.395 8.50989 903.869 8.33787 904.165 7.99405C904.461 7.65981 904.609 7.22507 904.609 6.69031C904.609 5.87861 904.337 5.3625 903.792 5.14279C903.248 4.91361 902.612 4.79958 901.886 4.79955C901.695 4.79955 901.489 4.80365 901.27 4.8132C901.059 4.82275 900.854 4.83701 900.653 4.85611L900.224 4.44071V0.143343H905.569L905.727 2.30616Z\"\n    fill=\"currentColor\" />\n  \u003Cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n    d=\"M765.49 6.04576H766.966L766.837 7.14862H765.49V9.48404H764.185V7.14862H759.857L759.713 6.04576L762.909 0.143343H765.49V6.04576ZM760.96 6.04576H764.185V1.26083H763.541L760.96 6.04576Z\"\n    fill=\"currentColor\" />\n  \u003Cpath d=\"M4.80573 6.47481H6.41154V7.60693H1.81068V6.47481H3.50235V1.27546H1.81068V0.143343H4.80573V6.47481Z\"\n    fill=\"currentColor\" />\n  \u003Cpath\n    d=\"M254.359 0C255.353 0 256.055 0.239186 256.466 0.716715C256.877 1.18447 257.083 1.68072 257.083 2.20573C257.083 2.85516 256.849 3.44346 256.38 3.96875C255.912 4.49397 255.348 4.96638 254.689 5.38657C254.039 5.79717 253.437 6.15968 252.883 6.47481H256.423L256.538 5.42948L257.599 5.51529L257.426 7.60693H251.407L251.292 6.58987C252.582 5.73032 253.638 4.98523 254.46 4.35489C255.281 3.71509 255.693 3.05632 255.693 2.37832C255.693 1.53787 255.166 1.11749 254.115 1.12237L254.115 1.11749C253.924 1.11754 253.695 1.14604 253.427 1.2033C253.16 1.25104 252.916 1.32238 252.697 1.41783L252.467 2.47876L251.45 2.3637L251.707 0.60165C252.118 0.401088 252.563 0.253475 253.041 0.15797C253.519 0.0529708 253.958 1.99446e-05 254.359 0Z\"\n    fill=\"currentColor\" />\u003C/g>",{"tile":13,"orbsWithOnlyMarkdownPages":358},{"id":14,"data":15,"type":16,"maxContentLevel":19,"version":20,"orbs":21},"69470f68-5f06-4cd8-a33d-87e3242992c2",{"type":16,"title":17,"tagline":18},9,"Software","The programs and systems that run on your machine",3,2,[22,167,261],{"id":23,"data":24,"type":20,"version":26,"maxContentLevel":19,"summaryPage":27,"introPage":35,"pages":43},"c604c165-40a1-4840-bfe5-b51fd6cb4947",{"type":20,"title":25},"About programming languages",1,{"id":28,"data":29,"type":19,"maxContentLevel":19,"version":26},"14610e94-7d2b-4db1-94ab-c8f30bad5e0d",{"type":19,"title":30,"summary":31},"",[32,33,34],"Programming languages help us to give computers instructions without having to use machine laguage","High-level languages, such as Python and Java, are easier to write but often less efficient","Low-level languages, such as C or assembly, are much harder to write, but allow more efficient memory use",{"id":36,"data":37,"type":38,"maxContentLevel":19,"version":26},"c6b0e43a-9930-49f8-9f53-d40c217fc8b2",{"type":38,"title":30,"intro":39},10,[40,41,42],"What programming languages are","How they allow people to interact with computers much more easily","Why different programming languages are suited to different tasks",[44,71,99,114,129],{"id":45,"data":46,"type":26,"maxContentLevel":19,"version":26,"reviews":49},"efe844c9-5e53-48dc-91eb-5de8de22f01f",{"type":26,"contentRole":20,"markdownContent":47,"audioMediaId":48},"Programming languages are the systems of code we use to tell computers what to do. As we know, computers actually only understand one language, which is 1s and 0s. In this context we refer to that as ‘machine language’. But as humans designing applications for our computers, it would be extremely difficult and time-consuming to write out all of our data and instructions in machine language. Programming languages act as a middle-man between human actions and computable data.\n\n![Graph](image://15907e15-8c0c-47b3-88f6-0c97c613da0a \"Some code written in the C language. This is a set of instructions that will get the computer to print the words 'Hello World' in the terminal.\")\n\nThese languages fall into two main groups: easy-to-understand (high-level) and more complex (low-level) options.","d297bdec-4fe7-4943-8b65-10d7e789b42a",[50],{"id":51,"data":52,"type":53,"version":26,"maxContentLevel":19},"fc1b7b53-1a64-4af7-9641-5ee8ead7ef0d",{"type":53,"reviewType":19,"spacingBehaviour":26,"collapsingSiblings":54,"multiChoiceQuestion":58,"multiChoiceCorrect":60,"multiChoiceIncorrect":62,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6,"matchPairsQuestion":66,"matchPairsPairs":68},11,[55,56,57],"72cbd382-a619-4b57-883c-3a3f84c38267","72e38ee2-b8eb-4446-be70-a230a4b25fb6","c4d241f4-4495-489f-91a3-6e09324c7ed5",[59],"What is the language that computers actually understand?",[61],"Machine language",[63,64,65],"Assembly code","Python","C",[67],"Match the pairs below:",[69],{"left":61,"right":70,"direction":19},"The language computers speak",{"id":72,"data":73,"type":26,"maxContentLevel":19,"version":26,"reviews":76},"e182c4cb-8feb-4091-9309-5a199d010f60",{"type":26,"contentRole":20,"markdownContent":74,"audioMediaId":75},"High-level languages are used for building applications.  Scripting languages, a subgroup of high-level languages, are for automating tasks.\n\nLow-level languages, like assembly code, offer a different approach. Unlike user-friendly high-level languages, low-level languages are intricately linked to the computer's hardware. This tight connection allows for fine-grained control and highly efficient code.\n\n![Graph](image://dfd39629-2c90-465d-ad53-850d27cc64ef \"A part of a program written in assembly code. By Swtpc6800 en:User:Swtpc6800 Michael Holley - Own work, Public Domain, https://commons.wikimedia.org/w/index.php?curid=15345825\")\n\nIn assembly, you write instructions that are pretty close to machine language. This gives you precise control over data manipulation and calculations. This power comes at a cost – assembly is complex and time-consuming to write, making it impractical for building large applications today. However, there are still a handful of specialised cases where developers work in it.","18e47e75-23f7-445d-a9a2-727dc1edc636",[77,88],{"id":55,"data":78,"type":53,"version":26,"maxContentLevel":19},{"type":53,"reviewType":19,"spacingBehaviour":26,"collapsingSiblings":79,"multiChoiceQuestion":80,"multiChoiceCorrect":82,"multiChoiceIncorrect":83,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6,"matchPairsQuestion":84,"matchPairsPairs":85},[51,56,57],[81],"Which of these is a very low-level language, now rarely used?",[63],[61,64,65],[67],[86],{"left":63,"right":87,"direction":19},"Very low-level language, now rarely used",{"id":89,"data":90,"type":53,"version":26,"maxContentLevel":19},"bad5a856-abbd-455e-97a8-0aca90e34d05",{"type":53,"reviewType":19,"spacingBehaviour":26,"multiChoiceQuestion":91,"multiChoiceCorrect":93,"multiChoiceIncorrect":95,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6},[92],"Which of these is NOT true about assembly code?",[94],"Simple to read and write",[96,97,98],"Gives you precise control","A low-level language","Impractical for building large applications today",{"id":100,"data":101,"type":26,"maxContentLevel":19,"version":26,"reviews":104},"9490ce60-1157-4196-af69-143923492fc7",{"type":26,"contentRole":20,"markdownContent":102,"audioMediaId":103},"Unlike assembly code, high-level coding languages have many features that make them much easier to write, and more similar to natural language. Prominent examples of these include C++, Python, Java, Javascript and many others. Most modern software developers will spend the majority of their time working in these languages, because they allow programs and applications to be written much more quickly and easily.\n\nOne feature of high-level languages that sets them apart is their use of abstraction. Abstraction allows programmers to work with more complex concepts and structures without having to worry about the low-level details of how these are implemented in the computer's hardware.\n\nFor example, in lower-level languages like assembly or C, memory management is a large part of the programming process. In languages like Python or Java, this is largely handled automatically, and the programmer can focus more on the logic of the program.","7bb5eede-3ef2-4276-b30b-a1ae76f4e5b6",[105],{"id":106,"data":107,"type":53,"version":26,"maxContentLevel":19},"a7d12fb5-e8f2-440e-ac4b-3cd2d31f5460",{"type":53,"reviewType":20,"spacingBehaviour":26,"binaryQuestion":108,"binaryCorrect":110,"binaryIncorrect":112},[109],"Which of these is an advantage of many high-level languages?",[111],"Automatic memory management",[113],"The use of variables",{"id":115,"data":116,"type":26,"maxContentLevel":19,"version":26,"reviews":119},"370eecd8-8552-4ee0-bbeb-a41fcee135fe",{"type":26,"contentRole":20,"markdownContent":117,"audioMediaId":118},"All languages, whether high- or low-level, ultimately need to be translated into machine language.\n\nThis is done through one of two processes – compiling or interpreting. Compiled languages, such as C and C++, require the source code to be translated into machine code by a compiler before it can be executed. The result is then executed directly by the CPU.\n\nCompiled languages typically offer better performance because the code is optimized during the compilation process. However, the need to compile the code before execution can make the development process slower and less flexible.\n\n![Graph](image://9355b5fb-a60c-45a7-b0b6-464dea2c47b3 \"A diagram showing how compiled languages are transformed into machine language. Image: Seda Kh., CC BY-SA 4.0 \u003Chttps://creativecommons.org/licenses/by-sa/4.0>, via Wikimedia Commons\")\n\nInterpreted languages, such as Python, take a different approach. Instead of being translated into machine code all at once, the source code is executed line by line by an interpreter. This allows for greater flexibility and faster development cycles, as changes to the code can be tested immediately without the need for recompilation.\n\nHowever, interpreted languages often suffer from slower execution speeds compared to compiled languages, as the interpreter must process each line of code in real-time.","eca3c0d6-cfc2-433f-b624-439aafcaad98",[120],{"id":121,"data":122,"type":53,"version":26,"maxContentLevel":19},"e2e44d79-51be-41aa-8f3b-db827ddfd5ec",{"type":53,"reviewType":20,"spacingBehaviour":26,"binaryQuestion":123,"binaryCorrect":125,"binaryIncorrect":127},[124],"Which of these is a description of interpreted programming languages?",[126],"The code is executed line by line",[128],"The code is fully compiled before execution",{"id":130,"data":131,"type":26,"maxContentLevel":19,"version":26,"reviews":134},"71c67459-4167-4c6f-ba60-517e7425a91e",{"type":26,"contentRole":20,"markdownContent":132,"audioMediaId":133},"![Graph](image://2fd1a91b-60c1-41aa-986a-915a8f397258 \" \")\n\nDifferent programming languages are suited to different types of applications. For example, C and C++ are often used for system-level programming, such as operating systems and embedded systems. Python, with its simple syntax and many extensions, is popular for web development, data analysis, and machine learning. Java, balancing performance and flexibility, is widely used for enterprise applications and mobile development.\n\nBeyond the usual suspects, there are even stranger languages like Brainfuck or Whitespace, designed to explore coding concepts in unconventional ways. These are called esoteric languages. The world of programming offers endless possibilities!","5c6dadc8-ca48-4223-961d-18a769209162",[135,145,156],{"id":136,"data":137,"type":53,"version":26,"maxContentLevel":19},"238c3b03-c1ca-4ecd-874c-c81e9a8d3510",{"type":53,"reviewType":19,"spacingBehaviour":26,"multiChoiceQuestion":138,"multiChoiceCorrect":140,"multiChoiceIncorrect":142,"multiChoiceMultiSelect":144,"multiChoiceRevealAnswerOption":6},[139],"Which of these languages are often used for system-level programming?",[65,141],"C++",[64,143],"Java",true,{"id":56,"data":146,"type":53,"version":26,"maxContentLevel":19},{"type":53,"reviewType":19,"spacingBehaviour":26,"collapsingSiblings":147,"multiChoiceQuestion":148,"multiChoiceCorrect":150,"multiChoiceIncorrect":151,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6,"matchPairsQuestion":152,"matchPairsPairs":153},[51,55,57],[149],"Which of these is a compiled language often used for operating systems?",[65],[61,64,63],[67],[154],{"left":65,"right":155,"direction":19},"Compiled language used for operating systems",{"id":57,"data":157,"type":53,"version":26,"maxContentLevel":19},{"type":53,"reviewType":19,"spacingBehaviour":26,"collapsingSiblings":158,"multiChoiceQuestion":159,"multiChoiceCorrect":161,"multiChoiceIncorrect":162,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6,"matchPairsQuestion":163,"matchPairsPairs":164},[51,55,56],[160],"Which of these is popular for web development and data analysis?",[64],[61,65,63],[67],[165],{"left":64,"right":166,"direction":19},"Popular for web development and data analysis",{"id":168,"data":169,"type":20,"version":20,"maxContentLevel":19,"summaryPage":171,"introPage":178,"pages":184},"9fb56181-a84c-4e64-adae-a84e88ccee58",{"type":20,"title":170},"Introduction to operating systems and the boot process",{"id":172,"data":173,"type":19,"maxContentLevel":19,"version":26},"7b41d9f5-2a59-4684-b1ec-f0b51f603d29",{"type":19,"title":30,"summary":174},[175,176,177],"Operating systems are the low-level software that allow other applications to run","They are essential for boot processes","They also help users to manage processes, manage memory and files",{"id":179,"data":180,"type":38,"maxContentLevel":19,"version":20},"7871eb98-5270-4260-9e5c-91b800161f1b",{"type":38,"title":30,"intro":181},[182,183],"What an operating system is","Why operating systems are so essential to creating useable devices",[185,199,216,240,256],{"id":186,"data":187,"type":26,"maxContentLevel":19,"version":26,"reviews":190},"a19ad0cd-4eb0-4823-8ef7-ecca0155d4d3",{"type":26,"contentRole":20,"markdownContent":188,"audioMediaId":189},"Operating systems are the software that runs on the device, allowing us to run applications and manage files in a much more user-friendly way.\n\nIn the early days of computing, programmers wrote programs on punch cards, which were specially designed paper cards with holes punched into them to represent data and instructions. These punch cards were then fed into room-sized computers by operators.\n\nAs computers become exponentially faster, the manual process of inserting programs using punch cards became longer than the actual program execution, leading to the creation of operating systems to streamline the process and enable computers to manage and operate themselves without constant human intervention.\n\n![Graph](image://ec415d33-9b37-44f1-9edb-2b08851d2074 \"Diagram of the different layers of software types. Image: Golftheman, CC BY-SA 3.0 \u003Chttps://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons\")","9873934d-149e-460b-b20f-4895651853be",[191],{"id":192,"data":193,"type":53,"version":26,"maxContentLevel":19},"295d80f6-c4e9-4510-82e2-9331628ae315",{"type":53,"reviewType":194,"spacingBehaviour":26,"clozeQuestion":195,"clozeWords":197},4,[196],"Operating systems help us interact with computers in a more user-friendly way",[198],"user-friendly",{"id":200,"data":201,"type":26,"maxContentLevel":19,"version":26,"reviews":204},"303338de-e912-4109-9973-a777620be9a4",{"type":26,"contentRole":20,"markdownContent":202,"audioMediaId":203},"When you press the power button on your computer, a sequence of events begins known as the boot process. This process initializes the system and loads the operating system, which in turn manages all other software and hardware resources.\n\nThe boot process starts with the Basic Input/Output System (BIOS) or its modern counterpart, the Unified Extensible Firmware Interface (UEFI). These firmware interfaces initialize and test the system's hardware components, ensuring everything is in working order. They also locate the bootloader, a small program responsible for loading the operating system into memory, marking the transition from hardware initialization to software management.","5389d251-5f74-48e1-bced-7bb56d123c83",[205],{"id":206,"data":207,"type":53,"version":26,"maxContentLevel":19},"3c2c6e41-5bcd-43c2-b52b-b56cbaaf7358",{"type":53,"reviewType":19,"spacingBehaviour":26,"multiChoiceQuestion":208,"multiChoiceCorrect":210,"multiChoiceIncorrect":212,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6},[209],"What does BIOS stand for?",[211],"Basic Input/Output System",[213,214,215],"Bus Internal Overlay System","Boot Initiation Optimizing Sequence","Binary Initiation Operating System ",{"id":217,"data":218,"type":26,"maxContentLevel":19,"version":26,"reviews":221},"c27c5c83-74b1-44ac-9d5c-a652ce83d7c7",{"type":26,"contentRole":20,"markdownContent":219,"audioMediaId":220},"An operating system (OS) orchestrates all activities within the system, with primary components including the kernel, file system, user interface, device drivers, and process management. The kernel serves as the core component, directly interacting with hardware to manage resources like CPU, memory, and I/O devices. It schedules tasks, ensuring multiple processes can run concurrently without interference, thus optimizing system performance and stability.\n\nVirtual memory is a technique that uses a portion of the hard drive as temporary memory, allowing the OS to compensate for shortages in physical RAM. The user interface is the visual and interactive aspect of the OS, enabling users to interact with the system easily. Device drivers are software components that facilitate communication between the OS and hardware devices, translating generic instructions into device-specific commands.","dcbd63c6-8e1f-49c6-8ace-c77c2ecb9e72",[222,233],{"id":223,"data":224,"type":53,"version":26,"maxContentLevel":19},"6a8b31df-8ffc-4219-b8c4-ba40561a3961",{"type":53,"reviewType":19,"spacingBehaviour":26,"multiChoiceQuestion":225,"multiChoiceCorrect":227,"multiChoiceIncorrect":229,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6},[226],"Which component of the operating system schedules tasks and manages hardware resources?",[228],"Kernel",[230,231,232],"File system","User interface","Device drivers",{"id":234,"data":235,"type":53,"version":26,"maxContentLevel":19},"7c87d113-1fce-44b7-830a-df7fb9fe62eb",{"type":53,"reviewType":194,"spacingBehaviour":26,"clozeQuestion":236,"clozeWords":238},[237],"The operating system feature that allows multiple programs to run simultaneously by cycling through them rapidly is known as multitasking.",[239],"multitasking",{"id":241,"data":242,"type":26,"maxContentLevel":19,"version":26,"reviews":245},"2f0fc710-0059-4734-bb8a-f9ecfeba67b0",{"type":26,"contentRole":20,"markdownContent":243,"audioMediaId":244},"Process management oversees the allocation of resources to running programs and ensures they run smoothly without interfering with each other. When a hardware device needs attention, it sends an interrupt signal to the CPU, prompting the kernel to pause the current process and handle the interrupt. This process allows the OS to respond promptly to external events, such as user input or data transfer requests.\n\nMultitasking is a key capability of modern OSs, enabling multiple programs to run simultaneously. Even without multiple cores, smart OS developers figured out how to give the illusion of parallel execution. By letting processes take turns on the CPU and cycling through them rapidly, running a couple of instructions from each one, all processes can be responsive without any single process hogging the CPU. Don't confuse parallel execution, which you learned in the previous tile, with multitasking.","4212b7a1-bce9-467c-839c-3b0615e33764",[246],{"id":247,"data":248,"type":53,"version":26,"maxContentLevel":19},"b1cb8406-f631-426b-a9cd-29cac281ace1",{"type":53,"reviewType":19,"spacingBehaviour":26,"multiChoiceQuestion":249,"multiChoiceCorrect":251,"multiChoiceIncorrect":252,"multiChoiceMultiSelect":6,"multiChoiceRevealAnswerOption":6},[250],"What term is used for the system OS's use to manage data in a structured manner?",[230],[253,254,255],"Process management","Virtual memory","Multitasking",{"id":257,"data":258,"type":26,"maxContentLevel":19,"version":26},"1fa070e1-7a40-4fe1-90ac-a2508a9f0f35",{"type":26,"contentRole":20,"markdownContent":259,"audioMediaId":260},"Memory management is another vital function of the operating system. It keeps track of each byte in the computer's memory and allocates space to processes as needed, including both RAM and virtual memory on the hard drive. The OS ensures each process has its own memory space, preventing one application from overwriting another's data.\n\nFile system management is another crucial aspect of operating systems. The file system organizes and stores data on storage devices in a structured and efficient manner, ensuring data integrity and security by implementing permissions and access controls. In addition to these core functions, modern operating systems offer a range of additional features, such as user interfaces, security mechanisms, and networking capabilities.","4a3863e2-6850-4017-8861-b6d76ba373d2",{"id":262,"data":263,"type":20,"version":20,"maxContentLevel":19,"summaryPage":265,"introPage":273,"pages":279},"abb56cc6-aae4-4caa-89ae-e1cccc374607",{"type":20,"title":264},"Application software and software development",{"id":266,"data":267,"type":19,"maxContentLevel":19,"version":26},"940f1fba-abc9-4efd-aee1-a958684ad083",{"type":19,"title":30,"summary":268},[269,270,271,272],"Application software is software for performing specific tasks","The first stage of software development is requirement analysis","Next comes design and implementation","Finally, the software is tested and deployed",{"id":274,"data":275,"type":38,"maxContentLevel":19,"version":26},"2c730041-71ad-451f-95e8-8ca639bdaa96",{"type":38,"title":30,"intro":276},[277,278],"What application software is","How software is designed and built",[280,303,318,343],{"id":281,"data":282,"type":26,"maxContentLevel":19,"version":26,"reviews":285},"aac407f4-13d3-4448-817c-56b9a25a4b07",{"type":26,"contentRole":20,"markdownContent":283,"audioMediaId":284},"Application software is the type of software that allows users to perform specific tasks on a computer. This can range from word processing and spreadsheet management to graphic design and video editing. Unlike system software, which includes the operating system and utility programs that manage computer resources, application software is designed to help users accomplish particular tasks. Examples of application software include Microsoft Office, Adobe Photoshop, and web browsers like Google Chrome.\n\nThe development of application software is a complex process that involves several stages, each critical to the creation of a functional and user-friendly product. Many models for the software development lifecycle exist. Probably the most famous ones are the V-Model, the Waterfall-Model and agile models like SCRUM or Kanban. Agile methods are different in that they represent the software development cycle as short term, iterative cycles, called sprints, instead of using a sequential, linear approach.\n\n![Graph](image://d1916c5d-2999-4315-a387-9e2ddfc3b97b \"The V-Model. Image: Herman Bruyninckx, CC BY-SA 3.0 \u003Chttp://creativecommons.org/licenses/by-sa/3.0/>, via Wikimedia Commons\")","3df43195-9499-4c5e-aa1b-8176477bc6f4",[286,295],{"id":287,"data":288,"type":53,"version":26,"maxContentLevel":19},"3ab7954c-daac-4924-88bc-fe7b905cc74d",{"type":53,"reviewType":20,"spacingBehaviour":26,"binaryQuestion":289,"binaryCorrect":291,"binaryIncorrect":293},[290],"What type of software is designed to help users accomplish particular tasks?",[292],"Applications",[294],"Operating systems",{"id":296,"data":297,"type":53,"version":26,"maxContentLevel":19},"c80231be-c79b-490d-ba99-3c902e81c66c",{"type":53,"reviewType":20,"spacingBehaviour":26,"binaryQuestion":298,"binaryCorrect":300,"binaryIncorrect":302},[299],"Which of these is a type of system software?",[301],"Operating system",[292],{"id":304,"data":305,"type":26,"maxContentLevel":19,"version":20,"reviews":308},"d44d8c3f-cb34-4c6f-9bc2-58452b567193",{"type":26,"contentRole":20,"markdownContent":306,"audioMediaId":307},"\n\n![Graph](image://9ce5581f-89e1-40a9-a8c5-2c0c377e3ef6 \"Screenshot 2024-10-22 at 16.25.01.png\")\n\nThe first stage of SCRUM development is requirement analysis, where developers gather information about what the software needs to do. This involves talking to potential users, understanding their needs, and defining the software's functionality. This stage is crucial because it sets the foundation for the entire project. If the requirements are not well understood, the final product may not meet the users' needs.\n\nOnce the requirements are clear, the next stage is design. During this phase, developers create a blueprint for the software. This includes designing the user interface, which is how users will interact with the software, and the software architecture, which is how the software will be structured internally. The design phase is essential for ensuring that the software will be both functional and user-friendly.","1e6806c3-7117-421e-b89e-2abeb92eb008",[309],{"id":310,"data":311,"type":53,"version":26,"maxContentLevel":19},"67ded06b-5ba4-4643-b285-352b15eedf47",{"type":53,"reviewType":20,"spacingBehaviour":26,"binaryQuestion":312,"binaryCorrect":314,"binaryIncorrect":316},[313],"What does the 'requirements' phase of SCRUM development involve?",[315],"Talking to users",[317],"Designing the software",{"id":319,"data":320,"type":26,"maxContentLevel":19,"version":26,"reviews":323},"fbfdb9d8-71a8-4a2c-aa3c-f11b5ce50f42",{"type":26,"contentRole":20,"markdownContent":321,"audioMediaId":322},"After the design is complete, the next stage is implementation, where developers write the actual code. This is often the most time-consuming part of the process, as it involves translating the design into a working program. Developers use programming languages like Java, Python, or C++ to write the code. Each programming language has its strengths and weaknesses, and the choice of language often depends on the specific requirements of the project and regulatory compliance, such as in the medical sector.\n\nOnce the code is written, the next stage is testing. During this phase, developers test the software to ensure that it works as intended. This involves running the software under various conditions to see if it performs correctly and identifying any bugs or issues that need to be fixed. Testing is a critical part of the development process because it helps ensure that the software is reliable and free of errors.","8258e99f-27ba-4780-9e5a-96bead0e6d85",[324],{"id":325,"data":326,"type":53,"version":26,"maxContentLevel":19},"e69c709b-cb74-4422-94a2-e7da6ef3b1bd",{"type":53,"reviewType":327,"spacingBehaviour":26,"matchPairsQuestion":328,"matchPairsPairs":330,"matchPairsShowExamples":6},6,[329],"Match the stages of software design with their description:",[331,334,337,340],{"left":332,"right":333,"direction":19},"Design","Specifying the user interface and software architecture",{"left":335,"right":336,"direction":19},"Requirement analysis","Getting the expected specifications from all stakeholders",{"left":338,"right":339,"direction":19},"Deployment","Getting the software to the user",{"left":341,"right":342,"direction":19},"Implementation","Building the software",{"id":344,"data":345,"type":26,"maxContentLevel":19,"version":20,"reviews":348},"21682968-ee77-44f9-9b4b-1172f27255ce",{"type":26,"contentRole":20,"markdownContent":346,"audioMediaId":347},"Testing consists of verification and validation. Verification means “building the product right”. This is static and accomplished via code reviews to look if the specifications are met. \n\nValidation on the other hand means “building the right product” and is a dynamic process. This can be done via black-box or white-box testing. Examples are unit-tests or tests by the final users in the final environment.\n\nAfter testing is complete, the next stage is deployment, where the software is released to users. This can involve distributing the software through various channels, such as online downloads or physical media. \n\n![Graph](image://c1db25cb-62de-4ddd-aa6c-0a047b5ac664 \"A user downloads an update. Image: Public domain\")\n\nOnce the software is in the hands of users, developers often continue to provide support and updates to fix any issues that arise and add new features. That would be the maintenance stage which is often overlooked.\n\nSoftware development is not a one-time process but an ongoing cycle. Even after the software is released, developers continue to work on it, fixing bugs, adding new features, and improving performance. This is known as software maintenance, and it is an essential part of the software development lifecycle.","1963d4cd-6fb0-40a5-a7be-f945625e6aa7",[349],{"id":350,"data":351,"type":53,"version":26,"maxContentLevel":19},"b9078240-ac8d-4cdb-8c5f-3f581bf6be98",{"type":53,"reviewType":20,"spacingBehaviour":26,"binaryQuestion":352,"binaryCorrect":354,"binaryIncorrect":356},[353],"How can verification be described?",[355],"Building the product right",[357],"Building the right product",[359,509,609],{"id":23,"data":24,"type":20,"version":26,"maxContentLevel":19,"summaryPage":27,"introPage":35,"pages":360},[361,392,422,444,484],{"id":45,"data":46,"type":26,"maxContentLevel":19,"version":26,"reviews":49,"parsed":362},{"data":363,"body":365,"toc":390},{"title":30,"description":364},"Programming languages are the systems of code we use to tell computers what to do. As we know, computers actually only understand one language, which is 1s and 0s. In this context we refer to that as ‘machine language’. But as humans designing applications for our computers, it would be extremely difficult and time-consuming to write out all of our data and instructions in machine language. Programming languages act as a middle-man between human actions and computable data.",{"type":366,"children":367},"root",[368,375,385],{"type":369,"tag":370,"props":371,"children":372},"element","p",{},[373],{"type":374,"value":364},"text",{"type":369,"tag":370,"props":376,"children":377},{},[378],{"type":369,"tag":379,"props":380,"children":384},"img",{"alt":381,"src":382,"title":383},"Graph","image://15907e15-8c0c-47b3-88f6-0c97c613da0a","Some code written in the C language. This is a set of instructions that will get the computer to print the words 'Hello World' in the terminal.",[],{"type":369,"tag":370,"props":386,"children":387},{},[388],{"type":374,"value":389},"These languages fall into two main groups: easy-to-understand (high-level) and more complex (low-level) options.",{"title":30,"searchDepth":20,"depth":20,"links":391},[],{"id":72,"data":73,"type":26,"maxContentLevel":19,"version":26,"reviews":76,"parsed":393},{"data":394,"body":396,"toc":420},{"title":30,"description":395},"High-level languages are used for building applications.  Scripting languages, a subgroup of high-level languages, are for automating tasks.",{"type":366,"children":397},[398,402,407,415],{"type":369,"tag":370,"props":399,"children":400},{},[401],{"type":374,"value":395},{"type":369,"tag":370,"props":403,"children":404},{},[405],{"type":374,"value":406},"Low-level languages, like assembly code, offer a different approach. Unlike user-friendly high-level languages, low-level languages are intricately linked to the computer's hardware. This tight connection allows for fine-grained control and highly efficient code.",{"type":369,"tag":370,"props":408,"children":409},{},[410],{"type":369,"tag":379,"props":411,"children":414},{"alt":381,"src":412,"title":413},"image://dfd39629-2c90-465d-ad53-850d27cc64ef","A part of a program written in assembly code. By Swtpc6800 en:User:Swtpc6800 Michael Holley - Own work, Public Domain, https://commons.wikimedia.org/w/index.php?curid=15345825",[],{"type":369,"tag":370,"props":416,"children":417},{},[418],{"type":374,"value":419},"In assembly, you write instructions that are pretty close to machine language. This gives you precise control over data manipulation and calculations. This power comes at a cost – assembly is complex and time-consuming to write, making it impractical for building large applications today. However, there are still a handful of specialised cases where developers work in it.",{"title":30,"searchDepth":20,"depth":20,"links":421},[],{"id":100,"data":101,"type":26,"maxContentLevel":19,"version":26,"reviews":104,"parsed":423},{"data":424,"body":426,"toc":442},{"title":30,"description":425},"Unlike assembly code, high-level coding languages have many features that make them much easier to write, and more similar to natural language. Prominent examples of these include C++, Python, Java, Javascript and many others. Most modern software developers will spend the majority of their time working in these languages, because they allow programs and applications to be written much more quickly and easily.",{"type":366,"children":427},[428,432,437],{"type":369,"tag":370,"props":429,"children":430},{},[431],{"type":374,"value":425},{"type":369,"tag":370,"props":433,"children":434},{},[435],{"type":374,"value":436},"One feature of high-level languages that sets them apart is their use of abstraction. Abstraction allows programmers to work with more complex concepts and structures without having to worry about the low-level details of how these are implemented in the computer's hardware.",{"type":369,"tag":370,"props":438,"children":439},{},[440],{"type":374,"value":441},"For example, in lower-level languages like assembly or C, memory management is a large part of the programming process. In languages like Python or Java, this is largely handled automatically, and the programmer can focus more on the logic of the program.",{"title":30,"searchDepth":20,"depth":20,"links":443},[],{"id":115,"data":116,"type":26,"maxContentLevel":19,"version":26,"reviews":119,"parsed":445},{"data":446,"body":448,"toc":482},{"title":30,"description":447},"All languages, whether high- or low-level, ultimately need to be translated into machine language.",{"type":366,"children":449},[450,454,459,464,472,477],{"type":369,"tag":370,"props":451,"children":452},{},[453],{"type":374,"value":447},{"type":369,"tag":370,"props":455,"children":456},{},[457],{"type":374,"value":458},"This is done through one of two processes – compiling or interpreting. Compiled languages, such as C and C++, require the source code to be translated into machine code by a compiler before it can be executed. The result is then executed directly by the CPU.",{"type":369,"tag":370,"props":460,"children":461},{},[462],{"type":374,"value":463},"Compiled languages typically offer better performance because the code is optimized during the compilation process. However, the need to compile the code before execution can make the development process slower and less flexible.",{"type":369,"tag":370,"props":465,"children":466},{},[467],{"type":369,"tag":379,"props":468,"children":471},{"alt":381,"src":469,"title":470},"image://9355b5fb-a60c-45a7-b0b6-464dea2c47b3","A diagram showing how compiled languages are transformed into machine language. Image: Seda Kh., CC BY-SA 4.0 \u003Chttps://creativecommons.org/licenses/by-sa/4.0>, via Wikimedia Commons",[],{"type":369,"tag":370,"props":473,"children":474},{},[475],{"type":374,"value":476},"Interpreted languages, such as Python, take a different approach. Instead of being translated into machine code all at once, the source code is executed line by line by an interpreter. This allows for greater flexibility and faster development cycles, as changes to the code can be tested immediately without the need for recompilation.",{"type":369,"tag":370,"props":478,"children":479},{},[480],{"type":374,"value":481},"However, interpreted languages often suffer from slower execution speeds compared to compiled languages, as the interpreter must process each line of code in real-time.",{"title":30,"searchDepth":20,"depth":20,"links":483},[],{"id":130,"data":131,"type":26,"maxContentLevel":19,"version":26,"reviews":134,"parsed":485},{"data":486,"body":487,"toc":507},{"title":30,"description":30},{"type":366,"children":488},[489,497,502],{"type":369,"tag":370,"props":490,"children":491},{},[492],{"type":369,"tag":379,"props":493,"children":496},{"alt":381,"src":494,"title":495},"image://2fd1a91b-60c1-41aa-986a-915a8f397258"," ",[],{"type":369,"tag":370,"props":498,"children":499},{},[500],{"type":374,"value":501},"Different programming languages are suited to different types of applications. For example, C and C++ are often used for system-level programming, such as operating systems and embedded systems. Python, with its simple syntax and many extensions, is popular for web development, data analysis, and machine learning. Java, balancing performance and flexibility, is widely used for enterprise applications and mobile development.",{"type":369,"tag":370,"props":503,"children":504},{},[505],{"type":374,"value":506},"Beyond the usual suspects, there are even stranger languages like Brainfuck or Whitespace, designed to explore coding concepts in unconventional ways. These are called esoteric languages. The world of programming offers endless possibilities!",{"title":30,"searchDepth":20,"depth":20,"links":508},[],{"id":168,"data":169,"type":20,"version":20,"maxContentLevel":19,"summaryPage":171,"introPage":178,"pages":510},[511,541,558,575,592],{"id":186,"data":187,"type":26,"maxContentLevel":19,"version":26,"reviews":190,"parsed":512},{"data":513,"body":515,"toc":539},{"title":30,"description":514},"Operating systems are the software that runs on the device, allowing us to run applications and manage files in a much more user-friendly way.",{"type":366,"children":516},[517,521,526,531],{"type":369,"tag":370,"props":518,"children":519},{},[520],{"type":374,"value":514},{"type":369,"tag":370,"props":522,"children":523},{},[524],{"type":374,"value":525},"In the early days of computing, programmers wrote programs on punch cards, which were specially designed paper cards with holes punched into them to represent data and instructions. These punch cards were then fed into room-sized computers by operators.",{"type":369,"tag":370,"props":527,"children":528},{},[529],{"type":374,"value":530},"As computers become exponentially faster, the manual process of inserting programs using punch cards became longer than the actual program execution, leading to the creation of operating systems to streamline the process and enable computers to manage and operate themselves without constant human intervention.",{"type":369,"tag":370,"props":532,"children":533},{},[534],{"type":369,"tag":379,"props":535,"children":538},{"alt":381,"src":536,"title":537},"image://ec415d33-9b37-44f1-9edb-2b08851d2074","Diagram of the different layers of software types. Image: Golftheman, CC BY-SA 3.0 \u003Chttps://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons",[],{"title":30,"searchDepth":20,"depth":20,"links":540},[],{"id":200,"data":201,"type":26,"maxContentLevel":19,"version":26,"reviews":204,"parsed":542},{"data":543,"body":545,"toc":556},{"title":30,"description":544},"When you press the power button on your computer, a sequence of events begins known as the boot process. This process initializes the system and loads the operating system, which in turn manages all other software and hardware resources.",{"type":366,"children":546},[547,551],{"type":369,"tag":370,"props":548,"children":549},{},[550],{"type":374,"value":544},{"type":369,"tag":370,"props":552,"children":553},{},[554],{"type":374,"value":555},"The boot process starts with the Basic Input/Output System (BIOS) or its modern counterpart, the Unified Extensible Firmware Interface (UEFI). These firmware interfaces initialize and test the system's hardware components, ensuring everything is in working order. They also locate the bootloader, a small program responsible for loading the operating system into memory, marking the transition from hardware initialization to software management.",{"title":30,"searchDepth":20,"depth":20,"links":557},[],{"id":217,"data":218,"type":26,"maxContentLevel":19,"version":26,"reviews":221,"parsed":559},{"data":560,"body":562,"toc":573},{"title":30,"description":561},"An operating system (OS) orchestrates all activities within the system, with primary components including the kernel, file system, user interface, device drivers, and process management. The kernel serves as the core component, directly interacting with hardware to manage resources like CPU, memory, and I/O devices. It schedules tasks, ensuring multiple processes can run concurrently without interference, thus optimizing system performance and stability.",{"type":366,"children":563},[564,568],{"type":369,"tag":370,"props":565,"children":566},{},[567],{"type":374,"value":561},{"type":369,"tag":370,"props":569,"children":570},{},[571],{"type":374,"value":572},"Virtual memory is a technique that uses a portion of the hard drive as temporary memory, allowing the OS to compensate for shortages in physical RAM. The user interface is the visual and interactive aspect of the OS, enabling users to interact with the system easily. Device drivers are software components that facilitate communication between the OS and hardware devices, translating generic instructions into device-specific commands.",{"title":30,"searchDepth":20,"depth":20,"links":574},[],{"id":241,"data":242,"type":26,"maxContentLevel":19,"version":26,"reviews":245,"parsed":576},{"data":577,"body":579,"toc":590},{"title":30,"description":578},"Process management oversees the allocation of resources to running programs and ensures they run smoothly without interfering with each other. When a hardware device needs attention, it sends an interrupt signal to the CPU, prompting the kernel to pause the current process and handle the interrupt. This process allows the OS to respond promptly to external events, such as user input or data transfer requests.",{"type":366,"children":580},[581,585],{"type":369,"tag":370,"props":582,"children":583},{},[584],{"type":374,"value":578},{"type":369,"tag":370,"props":586,"children":587},{},[588],{"type":374,"value":589},"Multitasking is a key capability of modern OSs, enabling multiple programs to run simultaneously. Even without multiple cores, smart OS developers figured out how to give the illusion of parallel execution. By letting processes take turns on the CPU and cycling through them rapidly, running a couple of instructions from each one, all processes can be responsive without any single process hogging the CPU. Don't confuse parallel execution, which you learned in the previous tile, with multitasking.",{"title":30,"searchDepth":20,"depth":20,"links":591},[],{"id":257,"data":258,"type":26,"maxContentLevel":19,"version":26,"parsed":593},{"data":594,"body":596,"toc":607},{"title":30,"description":595},"Memory management is another vital function of the operating system. It keeps track of each byte in the computer's memory and allocates space to processes as needed, including both RAM and virtual memory on the hard drive. The OS ensures each process has its own memory space, preventing one application from overwriting another's data.",{"type":366,"children":597},[598,602],{"type":369,"tag":370,"props":599,"children":600},{},[601],{"type":374,"value":595},{"type":369,"tag":370,"props":603,"children":604},{},[605],{"type":374,"value":606},"File system management is another crucial aspect of operating systems. The file system organizes and stores data on storage devices in a structured and efficient manner, ensuring data integrity and security by implementing permissions and access controls. In addition to these core functions, modern operating systems offer a range of additional features, such as user interfaces, security mechanisms, and networking capabilities.",{"title":30,"searchDepth":20,"depth":20,"links":608},[],{"id":262,"data":263,"type":20,"version":20,"maxContentLevel":19,"summaryPage":265,"introPage":273,"pages":610},[611,636,661,678],{"id":281,"data":282,"type":26,"maxContentLevel":19,"version":26,"reviews":285,"parsed":612},{"data":613,"body":615,"toc":634},{"title":30,"description":614},"Application software is the type of software that allows users to perform specific tasks on a computer. This can range from word processing and spreadsheet management to graphic design and video editing. Unlike system software, which includes the operating system and utility programs that manage computer resources, application software is designed to help users accomplish particular tasks. Examples of application software include Microsoft Office, Adobe Photoshop, and web browsers like Google Chrome.",{"type":366,"children":616},[617,621,626],{"type":369,"tag":370,"props":618,"children":619},{},[620],{"type":374,"value":614},{"type":369,"tag":370,"props":622,"children":623},{},[624],{"type":374,"value":625},"The development of application software is a complex process that involves several stages, each critical to the creation of a functional and user-friendly product. Many models for the software development lifecycle exist. Probably the most famous ones are the V-Model, the Waterfall-Model and agile models like SCRUM or Kanban. Agile methods are different in that they represent the software development cycle as short term, iterative cycles, called sprints, instead of using a sequential, linear approach.",{"type":369,"tag":370,"props":627,"children":628},{},[629],{"type":369,"tag":379,"props":630,"children":633},{"alt":381,"src":631,"title":632},"image://d1916c5d-2999-4315-a387-9e2ddfc3b97b","The V-Model. Image: Herman Bruyninckx, CC BY-SA 3.0 \u003Chttp://creativecommons.org/licenses/by-sa/3.0/>, via Wikimedia Commons",[],{"title":30,"searchDepth":20,"depth":20,"links":635},[],{"id":304,"data":305,"type":26,"maxContentLevel":19,"version":20,"reviews":308,"parsed":637},{"data":638,"body":639,"toc":659},{"title":30,"description":30},{"type":366,"children":640},[641,649,654],{"type":369,"tag":370,"props":642,"children":643},{},[644],{"type":369,"tag":379,"props":645,"children":648},{"alt":381,"src":646,"title":647},"image://9ce5581f-89e1-40a9-a8c5-2c0c377e3ef6","Screenshot 2024-10-22 at 16.25.01.png",[],{"type":369,"tag":370,"props":650,"children":651},{},[652],{"type":374,"value":653},"The first stage of SCRUM development is requirement analysis, where developers gather information about what the software needs to do. This involves talking to potential users, understanding their needs, and defining the software's functionality. This stage is crucial because it sets the foundation for the entire project. If the requirements are not well understood, the final product may not meet the users' needs.",{"type":369,"tag":370,"props":655,"children":656},{},[657],{"type":374,"value":658},"Once the requirements are clear, the next stage is design. During this phase, developers create a blueprint for the software. This includes designing the user interface, which is how users will interact with the software, and the software architecture, which is how the software will be structured internally. The design phase is essential for ensuring that the software will be both functional and user-friendly.",{"title":30,"searchDepth":20,"depth":20,"links":660},[],{"id":319,"data":320,"type":26,"maxContentLevel":19,"version":26,"reviews":323,"parsed":662},{"data":663,"body":665,"toc":676},{"title":30,"description":664},"After the design is complete, the next stage is implementation, where developers write the actual code. This is often the most time-consuming part of the process, as it involves translating the design into a working program. Developers use programming languages like Java, Python, or C++ to write the code. Each programming language has its strengths and weaknesses, and the choice of language often depends on the specific requirements of the project and regulatory compliance, such as in the medical sector.",{"type":366,"children":666},[667,671],{"type":369,"tag":370,"props":668,"children":669},{},[670],{"type":374,"value":664},{"type":369,"tag":370,"props":672,"children":673},{},[674],{"type":374,"value":675},"Once the code is written, the next stage is testing. During this phase, developers test the software to ensure that it works as intended. This involves running the software under various conditions to see if it performs correctly and identifying any bugs or issues that need to be fixed. Testing is a critical part of the development process because it helps ensure that the software is reliable and free of errors.",{"title":30,"searchDepth":20,"depth":20,"links":677},[],{"id":344,"data":345,"type":26,"maxContentLevel":19,"version":20,"reviews":348,"parsed":679},{"data":680,"body":682,"toc":716},{"title":30,"description":681},"Testing consists of verification and validation. Verification means “building the product right”. This is static and accomplished via code reviews to look if the specifications are met.",{"type":366,"children":683},[684,688,693,698,706,711],{"type":369,"tag":370,"props":685,"children":686},{},[687],{"type":374,"value":681},{"type":369,"tag":370,"props":689,"children":690},{},[691],{"type":374,"value":692},"Validation on the other hand means “building the right product” and is a dynamic process. This can be done via black-box or white-box testing. Examples are unit-tests or tests by the final users in the final environment.",{"type":369,"tag":370,"props":694,"children":695},{},[696],{"type":374,"value":697},"After testing is complete, the next stage is deployment, where the software is released to users. This can involve distributing the software through various channels, such as online downloads or physical media.",{"type":369,"tag":370,"props":699,"children":700},{},[701],{"type":369,"tag":379,"props":702,"children":705},{"alt":381,"src":703,"title":704},"image://c1db25cb-62de-4ddd-aa6c-0a047b5ac664","A user downloads an update. Image: Public domain",[],{"type":369,"tag":370,"props":707,"children":708},{},[709],{"type":374,"value":710},"Once the software is in the hands of users, developers often continue to provide support and updates to fix any issues that arise and add new features. That would be the maintenance stage which is often overlooked.",{"type":369,"tag":370,"props":712,"children":713},{},[714],{"type":374,"value":715},"Software development is not a one-time process but an ongoing cycle. Even after the software is released, developers continue to work on it, fixing bugs, adding new features, and improving performance. This is known as software maintenance, and it is an essential part of the software development lifecycle.",{"title":30,"searchDepth":20,"depth":20,"links":717},[],{"left":4,"top":4,"width":719,"height":719,"rotate":4,"vFlip":6,"hFlip":6,"body":720},24,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"/>",{"left":4,"top":4,"width":719,"height":719,"rotate":4,"vFlip":6,"hFlip":6,"body":722},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"/>",1778179456388]