{
  "responsive-web-design": {
    "title": "舊版響應式 Web 設計挑戰",
    "intro": [
      "在響應式網頁設計認證中，你將學習開發者用來編寫網頁的語言：HTML（超文本標記語言）用於創建內容，CSS（級聯樣式表）用於樣式設計。",
      "首先，你將通過創建一個展示貓咪圖片的應用，學習 HTML 和 CSS 的基本知識。 然後，通過創建企鵝學習像 CSS 變量這樣的現代技術，以及通過創建網頁表單學習無障礙的最佳實踐。",
      "最後，你將學習使用 flexbox（彈性盒子）創建一個 Twitter 卡片，以及使用 CSS 網格創建複雜的博客佈局，以學習製作適應不同屏幕大小的網頁。"
    ],
    "note": "注意：某些瀏覽器擴展，例如廣告攔截器和深色模式擴展可能干擾測試。如果你遇到問題，我們建議你在參加學習時禁用修改頁面內容或佈局的擴展。",
    "blocks": {
      "basic-html-and-html5": {
        "title": "基礎 HTML 和 HTML5",
        "intro": [
          "HTML 是一種標記語言，使用特殊的語法或標記來向瀏覽器描述網頁的結構。HTML 元素由開始和結束標籤構成，標籤之間是文本內容。 不同的標籤可以讓文本內容以標題、段落、列表等形式展現。",
          "在這個課程中，你將通過編寫一個展示貓咪圖片的應用，學習最常見的 HTML 元素——它們可以用來構成任何網頁。"
        ]
      },
      "basic-css": {
        "title": "基礎 CSS",
        "intro": [
          "CSS（級聯樣式表）告訴瀏覽器如何顯示你在 HTML 中寫入的文本和其他內容。你可以使用 CSS 控制 HTML 元素的顏色、字體、大小、間距等許多\b屬性。",
          "現在你已經寫好了貓圖應用的基本結構，接下來我們用 CSS 給它加一些樣式。"
        ]
      },
      "applied-visual-design": {
        "title": "應用視覺設計",
        "intro": [
          "視覺設計結合了排版、色彩理論、圖形、動畫、頁面佈局等，以表達獨特的信息。",
          "在這個課程中，你將學習如何將這些不同的視覺設計元素應用到網頁上。"
        ]
      },
      "applied-accessibility": {
        "title": "應用無障礙",
        "intro": [
          "在網頁開發中，可訪問性是指網頁內容和用戶界面可以被用戶理解、瀏覽並與之交互。這裏的用戶包括有視覺障礙、聽覺障礙或認知障礙的用戶。",
          "在這個課程中，你將學習提升網站可訪問性的最佳實踐。"
        ]
      },
      "responsive-web-design-principles": {
        "title": "響應式 Web 設計原則",
        "intro": [
          "人們可能通過形狀和大小不同的設備來訪問網頁。通過響應式網頁設計，你可以設計出能靈活適應不同屏幕大小、方向和分辨率的網頁。",
          "在這個課程中，你將學習如何使用 CSS 讓你的網頁在不同設備上看起來都不錯。"
        ]
      },
      "css-flexbox": {
        "title": "CSS 彈性盒子",
        "intro": [
          "Flexbox（彈性盒子）是最新版本的 CSS（即 CSS3）中引入的一種強大且兼容性好的佈局方法。使用 flexbox，我們可以很容易地處理好頁面上的元素佈局，並創建可以自動縮小和放大的動態用戶界面。",
          "在這個課程中，你將通過創建一個 Twitter 卡片學習 flexbox 和動態佈局的基礎知識。"
        ]
      },
      "css-grid": {
        "title": "CSS 網格",
        "intro": [
          "CSS 網格是一個較新的標準，用於構建複雜的響應佈局。它通過把 HTML 元素轉換爲具有行和列的網格容器，以便將子元素放置在所需要的位置。",
          "在這個課程中，你將通過創建不同的複雜佈局（包括博客）學習 CSS 網格的基礎知識。"
        ]
      }
    }
  },
  "2022/responsive-web-design": {
    "title": "舊版響應式 Web 設計 V8",
    "intro": [
      "在響應式 Web 設計的認證課程中，你將學習用於構建網頁的語言： HTML（超文本標記語言）用於創建內容，CSS（級聯樣式表）用於樣式設計。",
      "首先，你將通過創建一個展示貓咪圖片的應用學習 HTML 和 CSS 的基本知識。 然後，通過創建一隻企鵝來學習像 CSS 變量這樣的現代技術，並通過創建網頁表單學習無障礙的最佳實踐。",
      "最後，你將通過編寫 Twitter 卡片，學習如何使用 Flexbox 實現適應不同屏幕大小的網頁 ，以及如何用 CSS Grid 實現一個複雜的博客佈局。"
    ],
    "note": "注意：某些瀏覽器擴展程序（例如廣告攔截器和深色模式）可能干擾測試。如果遇到問題，我們建議你在學習課程時禁用那些修改網頁內容或佈局的擴展程序。",
    "blocks": {
      "build-a-tribute-page-project": {
        "title": "致敬頁",
        "intro": [
          "這是你獲得認證的必做項目。",
          "在這個項目中，你將爲你所選擇的主題編寫一個致敬頁（無論是虛構的還是真實的）。"
        ]
      },
      "build-a-personal-portfolio-webpage-project": {
        "title": "個人作品集展示頁",
        "intro": [
          "這是你獲得認證的必做項目。",
          "在這個項目中，你將製作自己的個人作品集展示頁。"
        ]
      },
      "build-a-product-landing-page-project": {
        "title": "產品登錄頁",
        "intro": [
          "這是你獲得認證的必做項目。",
          "在這個項目中，你將編寫一個產品登錄頁來推銷你選擇的產品。"
        ]
      },
      "build-a-survey-form-project": {
        "title": "調查表單",
        "intro": [
          "這是你獲得認證的必做項目。",
          "在這個項目中，你將編寫一個用於收集用戶數據的調查表單。"
        ]
      },
      "build-a-technical-documentation-page-project": {
        "title": "技術文檔頁",
        "intro": [
          "這是你獲得認證的必做項目。",
          "在這個項目中，你將編寫一個技術文檔頁，作爲一個主題的指導或參考。"
        ]
      },
      "learn-html-by-building-a-cat-photo-app": {
        "title": "通過創建貓咪相冊應用學習 HTML",
        "intro": [
          "HTML 標籤賦予了網頁結構。你可以使用 HTML 標籤添加照片、按鈕和其它元素到你的網頁。",
          "在這門課程中，你將通過創建一個貓咪相冊應用，學習最常見的 HTML 標籤。"
        ]
      },
      "learn-basic-css-by-building-a-cafe-menu": {
        "title": "通過創建咖啡店菜單學習基礎 CSS",
        "intro": [
          "CSS 負責告訴瀏覽器如何展示你的網頁。你可以使用 CSS 設置 HTML 元素的顏色、字體、大小等屬性。",
          "在這門課程中，你將通過爲一個咖啡店網站設計菜單頁來學習 CSS。"
        ]
      },
      "learn-the-css-box-model-by-building-a-rothko-painting": {
        "title": "通過創作羅斯科繪畫學習 CSS 盒子模型",
        "intro": [
          "每個 HTML 元素都是一個盒子，它擁有着自己的間距和邊框。這叫作“盒子模型”。",
          "在這門課程中，你將使用 CSS 和盒子模型，創作屬於你自己的羅斯科風格的矩形藝術作品。"
        ]
      },
      "learn-css-variables-by-building-a-city-skyline": {
        "title": "通過創建城市輪廓學習 CSS 變量",
        "intro": [
          "CSS 變量負責幫助組織你的樣式和重複使用它們。",
          "在這門課程中，你將創建一座城市的輪廓。你將學習如何配置 CSS 變量，以便你可以隨時重複使用它們。"
        ]
      },
      "learn-html-forms-by-building-a-registration-form": {
        "title": "通過創建註冊表單學習 HTML 表單",
        "intro": [
          "你可以使用 HTML 表單收集訪問網頁的用戶的信息。",
          "在這門課程中，你將通過創建一個註冊頁學習 HTML 表單。你將學習如何控制人們在表單中可以輸入的數據類型，以及使用一些新的 CSS 工具裝飾你的頁面。"
        ]
      },
      "learn-accessibility-by-building-a-quiz": {
        "title": "通過創建小測驗學習無障礙",
        "intro": [
          "無障礙環境正在使你的網頁便於所有人使用——甚至是殘疾人。",
          "在這個課程中，你將建立一個測驗網頁。你將學習諸如鍵盤快捷鍵、ARIA 屬性和設計最佳實踐等無障礙工具。"
        ]
      },
      "learn-intermediate-css-by-building-a-picasso-painting": {
        "title": "通過創作畢加索繪畫學習中級 CSS",
        "intro": [
          "在本課程中，你將通過代碼創建一幅自己的畢加索繪畫網頁來掌握中級 CSS 技術。課程涉及 SVG 圖標、CSS 定位和對已學 CSS 知識的回顧。"
        ]
      },
      "learn-responsive-web-design-by-building-a-piano": {
        "title": "通過創建鋼琴學習響應式 Web 設計",
        "intro": [
          "響應式設計使得你的網頁適應不同屏幕尺寸的顯示。",
          "在本課程中，你將使用 CSS 和響應式設計來編寫構建鋼琴。你還將進一步瞭解媒體查詢和僞選擇器的相關知識。"
        ]
      },
      "learn-css-flexbox-by-building-a-photo-gallery": {
        "title": "通過創建照片集學習 CSS 彈性盒子",
        "intro": [
          "通過彈性盒子你可以設計適應不同屏幕大小的網頁。",
          "在本課程中，你將使用彈性盒子創建一個響應式的照片集網頁。"
        ]
      },
      "learn-css-grid-by-building-a-magazine": {
        "title": "通過創建雜誌學習 CSS 網格佈局",
        "intro": [
          "在網頁設計時，CSS 網格佈局使你能夠控制網頁的行、列。",
          "在這門課程中，你將編寫一篇雜誌文章。你將學習如何使用 CSS Grid，其中包括了像網格行和網格列這樣的概念。"
        ]
      },
      "learn-typography-by-building-a-nutrition-label": {
        "title": "通過創建營養標籤學習排版",
        "intro": [
          "排版是將文本樣式設置爲易於閱讀並適合其目的的藝術。",
          "在本課程中，你將使用排版來創建營養標籤網頁。你將學習如何使用 CSS 設置文本樣式、調整行高和定位文本。"
        ]
      },
      "learn-css-transforms-by-building-a-penguin": {
        "title": "通過創建企鵝學習 CSS 變換",
        "intro": [
          "你可以轉換 HTML 元素以創建吸引讀者眼球的吸引人的設計。你可以使用變換來旋轉元素、縮放它們等等。",
          "在本課程中，你將創建一隻企鵝。你將使用 CSS 變換來定位企鵝的各個部分並調整其大小、創建背景併爲你的作品設置動畫。"
        ]
      },
      "learn-css-animation-by-building-a-ferris-wheel": {
        "title": "通過創建摩天輪學習 CSS 動畫",
        "intro": [
          "你可以使用 CSS 動畫將注意力吸引到網頁的特定部分並使其更具吸引力。",
          "在本課程中，你將創建一個摩天輪。你將學習如何使用 CSS 爲元素設置動畫、轉換它們並調整它們的速度。"
        ]
      },
      "learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet": {
        "title": "通過創建資產負債表學習 CSS 僞選擇器",
        "intro": [
          "你可以使用 CSS 僞選擇器來更改特定的 HTML 元素。",
          "在本課程中，你將使用僞選擇器創建資產負債表。你將學習如何在將鼠標懸停在元素上時更改其樣式，並觸發網頁上的其他事件。"
        ]
      },
      "learn-css-colors-by-building-a-set-of-colored-markers": {
        "title": "通過創建一組彩色筆學習 CSS 顏色",
        "intro": [
          "爲你的網頁選擇正確的顏色可以大大提高對讀者的審美吸引力。",
          "在本課程中，你將創建一組彩色筆。你將學習設置顏色值的不同方法以及如何將顏色相互配對。"
        ]
      },
      "learn-intermediate-css-by-building-a-cat-painting": {
        "title": "通過創建貓咪繪畫學習中級 CSS",
        "intro": [
          "掌握CSS 定位對於創建具有視覺吸引力和響應性的網頁佈局至關重要。",
          "在這個課程中，你將創建一幅貓咪繪畫。你將學習如何使用絕對定位、z-index 屬性和 transform 屬性。"
        ]
      }
    }
  },
  "javascript-algorithms-and-data-structures": {
    "title": "舊版 JavaScript 算法與數據結構 V7",
    "intro": [
      "HTML 和 CSS 控制頁面的內容和樣式，JavaScript 則用於頁面交互。在 JavaScript 算法和數據結構認證中，你將學習 JavaScript 的基礎知識，包括變量、 數組、 對象、 循環和函數。",
      "打好基礎之後，你將會通過創建算法來操作字符串、進行階乘運算甚至計算國際空間站的軌道來應用這些知識。",
      "在這個過程中，你將會學習兩種重要的編程方式或模式：面向對象的編程（OOP）和函數式編程（FP）。"
    ],
    "note": "注意：某些瀏覽器擴展，例如廣告攔截器和腳本攔截器，可能干擾測試。如果你遇到問題，我們建議你在學習時禁用修改或阻止頁面內容的擴展。",
    "blocks": {
      "basic-javascript": {
        "title": "基礎 JavaScript",
        "intro": [
          "JavaScript 是一種用於網頁交互的腳本語言。它和 HTML 和 CSS 一樣，是網站的核心技術之一。所有現代瀏覽器都支持 JavaScript。",
          "在這個課程中，你將學習JavaScript 中的基本編程概念。你將從數字和字符串等基本數據結構開始，然後學習使用數組、對象、函數、循環、if/else 語句等等。"
        ]
      },
      "es6": {
        "title": "ES6",
        "intro": [
          "ECMAScript（ES）是 JavaScript 的標準。因爲所有主流瀏覽器都遵循此規範，所以 ECMAScript 和 JavaScript 是可以互換的。",
          "截至目前你所學到的 JavaScript 大多是在 2009 年定稿的 ES5（ECMAScript5）。你仍然可以使用 ES5 編寫程序。JavaScript 在不斷迭代，每年都會發布新功能。",
          "2015 年發佈的 ES6 爲該語言添加了許多強大的新功能。在本課程中，你將學習這些新特性，包括箭頭函數、解構、類、promise 和模塊。"
        ]
      },
      "regular-expressions": {
        "title": "正則表達式",
        "intro": [
          "正則表達式，常常縮寫爲 “regex” 或 “regexp”，是幫助程序員匹配、搜索和替換文本的模式。正則表達式非常強大，但可能難以閱讀，因爲它們使用特殊字符來做更復雜更靈活的匹配。",
          "在這個課程中，你將學習如何使用特殊字符、捕獲組、正向或負向先行斷言以及其他技巧來匹配你想要的文本。"
        ]
      },
      "debugging": {
        "title": "調試",
        "intro": [
          "調試是檢查代碼、發現並修復問題的過程。",
          "代碼中的問題通常有三種形式：1）語法錯誤導致程序停止運行， 2）代碼無法執行或具有意外行爲導致運行時錯誤，3）代碼有語義（邏輯）錯誤，沒有實現原來的意圖。",
          "在這個課程中，你將學習如何使用 JavaScript 控制檯來調試程序，防止出現常見問題。"
        ]
      },
      "basic-data-structures": {
        "title": "基礎數據結構",
        "intro": [
          "我們可以通過多種方式存儲和訪問數據。你已經知道數組和對象了，它們都是常見的 JavaScript 數據結構。",
          "在基礎數據結構課程中，你會更深入地瞭解數組和對象之間的差異，以及在不同情況下應該使用哪個。你還將學習到一些好用的 JS 方法，例如 <code>splice()</code>，以及使用 <code>Object.keys()</code> 來訪問和操作數據。"
        ]
      },
      "basic-algorithm-scripting": {
        "title": "基礎算法",
        "intro": [
          "算法是描述如何處理某個問題的一系列步驟。",
          "要寫一個有效的算法，你需要先將一個特定的問題分解爲小的部分，並仔細思考如何用代碼解決每個部分。",
          "在這個課程中，你將通過編寫算法來實現諸如轉換溫度、處理複雜的二維數組等，來學習算法思維的基礎知識。"
        ]
      },
      "object-oriented-programming": {
        "title": "面向對象編程",
        "intro": [
          "OOP，即面向對象編程，是軟件開發過程的主要方法之一。在 OOP 中，我們用對象和類來組織代碼，以描述事物的特點以及它們可以做什麼。",
          "在這個課程中，你將會學習 JavaScript 中面向對象編程的基本原則，例如 <code>this</code> 關鍵詞、原型鏈、構造器和繼承。"
        ]
      },
      "functional-programming": {
        "title": "函數式編程",
        "intro": [
          "函數式編程是另一種軟件開發方法。在函數式編程中，代碼被組織成較小的基本的函數，可以結合起來構建複雜的程序。",
          "在這個課程中，你將學習函數式編程的核心概念，包括純函數、如何避免突變、如何使用 <code>.map()</code> 和 <code>.filter()</code> 等方法編寫更整潔的代碼。"
        ]
      },
      "intermediate-algorithm-scripting": {
        "title": "中級算法",
        "intro": [
          "現在你瞭解了算法的基礎知識、面向對象編程以及函數式編程。接下來我們將進入中級算法挑戰來測試你的技能。"
        ]
      },
      "javascript-algorithms-and-data-structures-projects": {
        "title": "JavaScript 算法和數據結構項目",
        "intro": [
          "是時候用上你新學到的 JavaScript 技能了！接下來的項目和前面的算法挑戰很相近，但是難度會更高。",
          "完成這 5 個 JavaScript 項目，以獲得 JavaScript 算法和數據結構認證。"
        ]
      }
    }
  },
  "javascript-algorithms-and-data-structures-v8": {
    "title": "舊版 JavaScript 算法與數據結構 V8",
    "intro": [
      "開發者使用 HTML 和 CSS 來控制頁面的內容與樣式。他們還使用 JavaScript 來讓頁面可以交互。",
      "在這個 JavaScript 算法與數據結構認證中，你將學習如變量、數組、對象、循環、函數、DOM 等 JavaScript 的基礎知識。",
      "你還會學習面向對象編程（OOP）、函數式編程、算法思維、如何使用本地存儲，以及如何通過使用 API 來獲取數據。"
    ],
    "note": "注意：一些瀏覽器擴展程序，如廣告攔截器和腳本攔截器可能會干擾測試。如果你遇到問題，我們建議你在學習時禁止能更改或攔截頁面內容的擴展程序。",
    "blocks": {
      "build-an-rpg-creature-search-app-project": {
        "title": "創建一個 RPG 生物搜索應用程序項目",
        "intro": [
          "這是獲得該認證所必須完成的一個項目。",
          "對於這個項目，你需要開發一款 RPG 生物搜索應用程序。"
        ]
      },
      "build-a-cash-register-project": {
        "title": "創建收銀機項目",
        "intro": [
          "這是你要獲得認證必須做的項目之一。",
          "在這個項目中，你將創建一個收銀機 Web 應用程序。"
        ]
      },
      "build-a-palindrome-checker-project": {
        "title": "創建迴文檢測項目",
        "intro": [
          "這是你要獲得認證必須做的項目之一。",
          "在這個項目中，你將創建一個檢測給定單詞是否是迴文的程序。"
        ]
      },
      "build-a-roman-numeral-converter-project": {
        "title": "創建羅馬數字轉換器項目",
        "intro": [
          "這是你要獲得認證必須做的項目之一。",
          "在這個項目中，你將創建一個把整數轉換爲羅馬數字的應用。"
        ]
      },
      "build-a-telephone-number-validator-project": {
        "title": "創建電話號碼驗證項目",
        "intro": [
          "這是你要獲得認證必須做的項目之一。",
          "在這個項目中，你將創建一個檢查某個號碼是否是美國電話號碼的應用程序。"
        ]
      },
      "learn-basic-javascript-by-building-a-role-playing-game": {
        "title": "通過創建角色扮演遊戲學習基礎 JavaScript",
        "intro": [
          "JavaScript 是一種功能強大的腳本語言，可用於使網頁具有交互性。它和 HTML 和 CSS 都是 Web 核心技術。所有現代瀏覽器都支持 JavaScript。",
          "在這個練習項目中，你將通過編程你自己的角色遊戲來學習 JavaScript 中的基本編程概念。你將學習如何使用數組、字符串、對象、函數、循環、 <code>if/else</code> 語句以及更多。"
        ]
      },
      "learn-form-validation-by-building-a-calorie-counter": {
        "title": "通過創建卡路里計數器學習表單驗證",
        "intro": [
          "有時，在編寫 Web 應用程序時，需要能夠接受用戶的輸入。在這個卡路里計數器項目中，你將學習如何驗證用戶輸入、基於該輸入執行計算以及動態更新界面以顯示結果。",
          "在這個練習項目中，你將學習基本的正則表達式、模板字面量、<code>addEventListener()</code> 方法等。"
        ]
      },
      "learn-functional-programming-by-building-a-spreadsheet": {
        "title": "通過創建電子表格學習函數式編程",
        "intro": [
          "函數式編程是一種流行的軟件開發方法。在函數式編程中，開發人員將代碼組織成更小的函數，然後將這些函數組合起來構建複雜的程序。",
          "在這個電子表格應用程序項目中，你將學習如何解析和計算數學表達式、實現電子表格功能、處理單元格引用以及創建交互式 Web 界面。你將學習如何根據用戶輸入動態更新頁面。",
          "這個項目將涵蓋 <code>map()</code>、<code>find()</code> 和 <code>includes()</code> 方法以及 <code>parseInt()</code> 函數等概念。"
        ]
      },
      "learn-modern-javascript-methods-by-building-football-team-cards": {
        "title": "通過創建足球隊卡學習現代 JavaScript 方法",
        "intro": [
          "構建 Web 應用程序的一個常見方面是：處理數據集，然後將信息輸出到屏幕上。在這個運動隊卡片項目中，你將學習如何使用 DOM 操作、對象解構、事件處理和數據過濾。",
          "本項目涵蓋一些概念，如默認參數、<code>Object.freeze()</code>，並鞏固你對 <code>switch</code> 語句和 <code>map()</code> 方法的掌握。"
        ]
      },
      "learn-advanced-array-methods-by-building-a-statistics-calculator": {
        "title": "通過創建統計計算器學習高級數組方法",
        "intro": [
          "在提升 JavaScript 技能的過程中，你需要熟練掌握數組操作方法，例如 <code>map()</code>、<code>reduce()</code> 和 <code>filter()</code>。",
          "在這個統計計算器項目中，你將獲得處理用戶輸入、DOM 操作和方法鏈的經驗。你還將練習執行統計計算，例如計算平均值、中位數、衆數、方差和標準差。"
        ]
      },
      "learn-basic-oop-by-building-a-shopping-cart": {
        "title": "通過創建購物車學習基礎 OOP",
        "intro": [
          "OOP，即面向對象編程，是軟件開發過程的主要方法之一。在 OOP 中，開發人員使用對象和類來構造代碼。",
          "在這個購物車項目中，你將學習如何定義和使用類。你將創建類實例並執行數據操作方法。",
          "這個項目將涵蓋三元運算符、擴展運算符、<code>this</code> 關鍵字等概念。"
        ]
      },
      "learn-fetch-and-promises-by-building-an-fcc-authors-page": {
        "title": "通過創建 fCC 作者頁面學習 Fetch 和 Promises",
        "intro": [
          "web 開發的一個常見方面是學習如何從外部 API 獲取數據，使用 JavaScript 進行異步編程。",
          "這個 freeCodeCamp 作者頁面項目將向你展示如何使用 fetch 方法，然後動態更新 DOM 以顯示獲取的數據。",
          "本項目還將教你如何對數據進行分頁，以便分批加載結果。"
        ]
      },
      "learn-regular-expressions-by-building-a-spam-filter": {
        "title": "通過創建垃圾郵件過濾器學習正則表達式",
        "intro": [
          "正則表達式通常簡稱爲 “regex” 或 “regexp”，是幫助程序員匹配、搜索和替換文本的模式。正則表達式功能強大，但由於使用了大量特殊字符，因此可能難以理解。",
          "在這個垃圾郵件過濾器項目中，你將學習捕獲組、正向查找、負向查找和其他技術，以匹配你想要的任何文本。"
        ]
      },
      "learn-basic-algorithmic-thinking-by-building-a-number-sorter": {
        "title": "通過創建數字排序器學習基本算法思維",
        "intro": [
          "在計算機科學中，有一些基本的排序算法是所有開發人員都應該學習的。在這個數字排序器項目中，你將學習如何使用 JavaScript 實現冒泡排序、選擇排序和插入排序等不同的排序算法並將其可視化。",
          "本項目將幫助你理解這些算法背後的基本概念，以及如何在 web 應用程序中應用這些算法對數字數據進行排序。"
        ]
      },
      "review-algorithmic-thinking-by-building-a-dice-game": {
        "title": "通過創建骰子游戲回顧中級算法思維",
        "intro": [
          "算法思維包括將複雜問題分解爲一連串定義明確、循序漸進的指令的能力。",
          "在這個骰子游戲項目中，你將學習如何管理遊戲狀態、實現擲骰子的遊戲邏輯、記分以及應用各種組合的規則。",
          "這個項目涵蓋事件處理、數組操作、條件邏輯以及根據遊戲狀態動態更新用戶界面等概念。"
        ]
      },
      "learn-intermediate-oop-by-building-a-platformer-game": {
        "title": "通過創建平臺遊戲學習中級 OOP",
        "intro": [
          "編碼遊戲是掌握基本編程原則的好方法，同時還能創造互動遊戲體驗。",
          "在這個平臺遊戲項目中，你將繼續學習類、對象、繼承和封裝。你還將學習如何有效地設計和組織遊戲元素，並獲得解決問題和代碼可重用性方面的見解。"
        ]
      },
      "learn-localstorage-by-building-a-todo-app": {
        "title": "通過創建 Todo 應用程序學習 localStorage",
        "intro": [
          "本地存儲是一種 web 瀏覽器功能，可讓 web 應用程序在用戶瀏覽器中持久存儲鍵值對。這樣，web 應用程序就可以在一次會話中保存數據，然後在以後的頁面會話中檢索這些數據。",
          "在這個 TODO 應用程序中，你將學習如何處理表單輸入、管理本地存儲、對任務執行 CRUD（創建、讀取、更新、刪除）操作、實現事件監聽器以及切換 UI 元素。"
        ]
      },
      "learn-the-date-object-by-building-a-date-formatter": {
        "title": "通過創建日期格式器學習 Date 對象",
        "intro": [
          "在 JavaScript 中處理日期很有挑戰性。你必須掌握各種方法、格式和時區。在本項目中，你將學習如何使用 JavaScript Date 對象，包括其方法和屬性。你還將學習如何正確格式化日期。",
          "這個項目將涵蓋一些概念，如 <code>getDate()</code>、<code>getMonth()</code> 和 <code>getFullYear()</code> 方法。"
        ]
      },
      "learn-asynchronous-programming-by-building-an-fcc-forum-leaderboard": {
        "title": "通過創建 fCC 論壇排行榜學習異步編程",
        "intro": [
          "JavaScript 是一種異步編程語言。這個項目將幫助你掌握異步概念。你將編寫自己的 freeCodeCamp 論壇排行榜。",
          "該項目將包括 Fetch API、promises、Async/Await 和 try..catch 語句。"
        ]
      },
      "learn-basic-string-and-array-methods-by-building-a-music-player": {
        "title": "通過創建音樂播放器學習字符串和數組的基本方法",
        "intro": [
          "現在讓我們學習一些基本的字符串和數組方法，例如 <code>find()</code>、<code>forEach()</code>、<code>map()</code> 和 <code>join()</code>。這些方法對於開發動態 web 應用非常重要。",
          "在本項目中，你將使用 HTML、CSS 和 JavaScript 編寫一個基礎的 MP3 播放器。該項目涵蓋基本概念，如處理音頻播放、管理播放列表、實現播放、暫停、下一首、上一首和隨機播放功能。你甚至還將學習如何根據當前歌曲動態更新用戶界面。"
        ]
      },
      "learn-recursion-by-building-a-decimal-to-binary-converter": {
        "title": "通過創建十進制到二進制轉換器學習遞歸",
        "intro": [
          "遞歸是一種編程概念，即函數調用自身。這可以將複雜的問題簡化爲更簡單的子問題，直到它們變得簡單易解。",
          "在這個項目中，你將使用 JavaScript 創建一個十進制到二進制的轉換器。你將學習遞歸的基本概念，探索調用棧，並通過動畫直觀地展示遞歸過程。"
        ]
      },
      "learn-introductory-javascript-by-building-a-pyramid-generator": {
        "title": "通過創建金字塔生成器學習 JavaScript 基礎知識",
        "intro": [
          "JavaScript 是一種功能強大的腳本語言，可用於使網頁具有交互性。它和 HTML 和 CSS 都是 Web 核心技術。所有現代瀏覽器都支持 JavaScript。",
          "在這個練習項目中，你將會通過編寫你自己的金字塔生成器來學習 JavaScript 的基本編程概念。你將學到如何使用數組、字符串、函數、循環、<code>if/else</code> 語句以及更多。"
        ]
      },
      "review-js-fundamentals-by-building-a-gradebook-app": {
        "title": "通過創建成績統計冊應用來回顧 JavaScript 基礎知識",
        "intro": [
          "在這個小項目中，你將會通過創建成績統計冊應用回顧 JavaScript 基礎知識，如函數、變量、條件以及更多內容。",
          "你將通過這個機會練習解決小問題，更好地理解基礎知識。"
        ]
      },
      "learn-basic-debugging-by-building-a-random-background-color-changer": {
        "title": "通過創建隨機背景變色程序學習基本調試方法",
        "intro": [
          "調試是檢查代碼、發現並修復問題的過程。",
          "在這個項目中，你將幫助 CamperBot 創建一個隨機背景變色程序，並幫助其找到和修復錯誤。"
        ]
      },
      "review-dom-manipulation-by-building-a-rock-paper-scissors-game": {
        "title": "通過創建石頭剪刀布遊戲回顧 DOM 操作",
        "intro": [
          "在前面的項目中，你學習瞭如何使用基本的 DOM 操作。現在是時候通過創建石頭剪刀布遊戲來複習一下所學知識了。",
          "在這個迷你項目中，你將複習條件、函數、<code>getElementById</code> 等內容。本項目將爲你提供一個解決小問題的機會，讓你更好地理解基礎知識。"
        ]
      }
    }
  },
  "front-end-development-libraries": {
    "title": "前端開發庫 V8",
    "intro": [
      "你已經熟悉了 HTML、CSS 和 JavaScript。現在學習行業中一些流行的前端庫來提升你的技能吧。",
      "在前端開發庫認證中，你將學習如何使用 Bootstrap 快速設置網站樣式，以及如何在 CSS 樣式中添加邏輯，並使用 Sass 對其進行擴展。",
      "稍後，你將建立一個購物車和其他應用程序，學習如何使用 React 和 Redux 創建強大的單頁應用程序（SPAs）。"
    ],
    "note": "",
    "blocks": {
      "bootstrap": {
        "title": "Bootstrap",
        "intro": [
          "Bootstrap 是一個用於設計響應式網頁和應用程序的前端框架。它對 Web 開發採用移動優先的方法，具有預定義的 CSS 樣式和 class，以及一些 JavaScript 功能。",
          "在這個課程中，你將學習如何使用 Bootstrap 來構建響應式網頁，並使用它的 class 來設置按鈕、圖像、表格、導航和其他常見元素的樣式。"
        ]
      },
      "jquery": {
        "title": "jQuery",
        "intro": [
          "jQuery 是開發者們最常用的 JavaScript 庫之一。",
          "在 jQuery 於 2006 年發佈時，各種常用瀏覽器處理 JavaScript 的方式都略有不同。jQuery 簡化了編寫客戶端 JavaScript 的過程，並確保代碼在所有瀏覽器中以同樣的方式運行。",
          "在這個課程中，你將學習如何使用 jQuery 選擇、移除、克隆和修改頁面上的不同元素。"
        ]
      },
      "sass": {
        "title": "Sass",
        "intro": [
          "Sass，英文全稱爲 “Syntactically Awesome StyleSheets”，是對 CSS 的擴展。它添加了一些基礎 CSS 中不具有的新特性。Sass 簡化了 CSS，這讓維護項目中的樣式表變得更容易。",
          "在這個 Sass 課程中，你將學習如何將數據存儲在變量中、嵌套 CSS、創建可重用的樣式、爲樣式添加邏輯和循環等等。"
        ]
      },
      "react": {
        "title": "React",
        "intro": [
          "React 是一個流行的 JavaScript 庫，用於爲網頁或應用程序構建可重用的組件驅動的用戶界面。",
          "React 將 HTML 與 JavaScript 結合在了一起，以此創建出一個新的標記語言 JSX。React 還使得管理整個應用程序的數據流變得更容易。",
          "在這個課程中，你將學習如何創建不同的 React 組件，以 state props 管理數據，以及使用不同的生命週期方法（例如 <code>componentDidMount</code>）和更多內容。"
        ]
      },
      "redux": {
        "title": "Redux",
        "intro": [
          "隨着應用程序規模和範圍的擴大，管理共享數據變得更加困難。Redux 被定義爲 “JavaScript 應用的可預測狀態容器”，它有助於確保你的應用能夠可預測地運行，並且更容易測試。",
          "雖然你可以將 Redux 和各種庫一起使用，但我們在這裏介紹 Redux，然後在下一組課程中將它與 React 結合起來。",
          "在這個課程中，你將學習 Redux stores、actions、reducers 和中間件的基礎知識，來管理應用程序的數據。"
        ]
      },
      "react-and-redux": {
        "title": "React 和 Redux",
        "intro": [
          "React 和 Redux 經常一起被提及，這是有充分理由的。創建 Redux 的開發人員是一個 React 開發者，他希望簡化不同組件間的數據共享。",
          "你已經知道了如何使用 Redux 管理共享數據流，是時候將這些知識與 React 結合起來了。在 React 和 Redux 課程中，你將構建一個 React 組件，並學習如何使用 Redux 在組件級別本地管理狀態，以及在整個應用程序中管理狀態。"
        ]
      },
      "front-end-development-libraries-projects": {
        "title": "前端開發庫項目",
        "intro": [
          "是時候檢驗你的前端開發庫技能了。用 Bootstrap、jQuery、Sass、React 和 Redux 構建 5 個項目，全面檢驗你迄今爲止所學的內容。",
          "Complete all 5 projects, and you'll earn the Front-End Development Libraries certification."
        ]
      }
    }
  },
  "data-visualization": {
    "title": "數據可視化 V8",
    "intro": [
      "數據無處不在。但是，如果沒有上下文，數據就沒有多大意義。",
      "在數據可視化認證中，你會用 D3.js 庫來創建表格、圖表和地圖，以展示不同的數據。",
      "您還將瞭解 JSON（JavaScript 對象表示法），以及如何使用 API（應用程序編程接口）在線處理數據。"
    ],
    "note": "",
    "blocks": {
      "data-visualization-with-d3": {
        "title": "用 D3 實現數據可視化",
        "intro": [
          "D3 或 D3.js 表示數據驅動文檔。它是一個用於在瀏覽器中創建動態和交互式數據視覺化的 JavaScript 庫。",
          "它基於 web 標準，即 HTML、CSS 和 SVG（可縮放矢量圖形）技術。",
          "D3 支持多種不同類型的輸入數據格式。 然後，你可以使用它強大的內置方法將這些數據轉換成不同的圖表、和地圖。",
          "在用 D3 實現數據可視化課程中，你將學習如何使用數據來創建不同的圖表、懸停元素及其他內容，用以創建動態和有吸引力的數據可視化。"
        ]
      },
      "json-apis-and-ajax": {
        "title": "JSON APIs 和 AJAX",
        "intro": [
          "類似於 UI 如何幫助人們使用程序，API（應用程序接口）幫助程序與其他程序互動。API 是計算機用來相互溝通的工具，部分用於發送和接收數據。",
          "程序員在使用 API 的時候，通常會使用 AJAX（同步 JavaScript 和 XML）。AJAX 指的是一組技術，這些技術向服務器提出異步請求以傳輸數據，然後將任何返回的數據加載到頁面。而且在瀏覽器和服務器之間傳輸的數據常常是一種 JSON（JavaScript 對象）格式。",
          "此課程將教你如何在瀏覽器中使用 API 和不同的 AJAX 技術的基礎知識。"
        ]
      },
      "data-visualization-projects": {
        "title": "數據可視化項目",
        "intro": [
          "現在你學習瞭如何使用 D3 、 APIs 和 AJAX 技術，構建這 5 個數據可視化項目來測試你的技術吧。",
          "在這些項目中，你需要獲取數據並解析數據集，然後使用 D3 創建不同的數據可視化。完成之後，你可以獲得數據可視化認證。"
        ]
      }
    }
  },
  "relational-database": {
    "title": "關係數據庫 V8",
    "intro": [
      "對於這些課程，你將使用真正的開發人員工具和軟件，包括 VS Code、PostgreSQL 和 Linux/Unix 命令行來完成交互式教程和構建項目。",
      "這些課程從基本的 Bash 命令開始。使用終端，你將學習從導航和操作文件系統、在 Bash 中編寫腳本到高級用法的所有內容。",
      "接下來，你將學習如何使用 PostgreSQL（數據庫管理系統）和 SQL（這些數據庫的語言）創建和使用關係數據庫。",
      "最後，你將學習 Git，版本控制系統，每個開發人員的必備工具。"
    ],
    "blocks": {
      "build-a-celestial-bodies-database-project": {
        "title": "天體數據庫",
        "intro": [
          "這是你獲得認證的必做項目。",
          "對於這個項目，你將使用 PostgreSQL 構建一個天體數據庫。"
        ]
      },
      "build-a-number-guessing-game-project": {
        "title": "猜數字遊戲",
        "intro": [
          "這是你獲得認證的必做項目。",
          "對於這個項目，你將使用 Bash 腳本、PostgreSQL 和 Git 創建一個在終端中運行並保存用戶信息的猜數遊戲。"
        ]
      },
      "build-a-periodic-table-database-project": {
        "title": "元素週期表數據庫",
        "intro": [
          "這是你獲得認證的必做項目。",
          "對於此項目，你將創建一個 bash 腳本，以獲取週期表數據庫中有關化學元素的信息。"
        ]
      },
      "build-a-salon-appointment-scheduler-project": {
        "title": "沙龍預約安排程序",
        "intro": [
          "這是你獲得認證的必做項目。",
          "對於這個項目，你將創建一個交互式 Bash 程序，該程序使用 PostgreSQL 來跟蹤你沙龍的客戶和約會。"
        ]
      },
      "build-a-world-cup-database-project": {
        "title": "世界盃數據庫",
        "intro": [
          "這是你獲得認證的必做項目。",
          "對於這個項目，你將創建一個 Bash 腳本，將世界盃賽中的信息存儲到 PostgreSQL 中，然後通過查詢數據庫來獲取有用的統計數據。"
        ]
      },
      "learn-advanced-bash-by-building-a-kitty-ipsum-translator": {
        "title": "通過創建 Kitty Ipsum 翻譯器學習高級 Bash",
        "intro": [
          "Bash 命令比你想象的更多。",
          "在第 140 課中，你會學習一些更復雜的命令以及命令如何工作的細節。"
        ]
      },
      "learn-bash-and-sql-by-building-a-bike-rental-shop": {
        "title": "通過創建自行車出租店學習 Bash 和 SQL",
        "intro": [
          "在這套 210 小節的課程中，你將建立一個交互式 Bash 程序，使用 PostgreSQL 存儲自行車租賃商店的租賃信息。"
        ]
      },
      "learn-bash-by-building-a-boilerplate": {
        "title": "通過創建模版學習 Bash",
        "intro": [
          "終端允許你將文本命令發送到你的計算機，可以操作文件系統、運行程序、自動化任務以及更多。",
          "在這套 170 小節的課程中，你將通過只使用命令行創建網站模板來學習終端命令。"
        ]
      },
      "learn-bash-scripting-by-building-five-programs": {
        "title": "通過創建五個程序學習 Bash 腳本",
        "intro": [
          "Bash 腳本將終端命令和邏輯合併到程序的可以執行任務或自動化任務等中。",
          "在第 220 課程中，你將通過創建五個小程序來學習更多終端命令以及如何在 Bash 腳本中使用它們。"
        ]
      },
      "learn-git-by-building-an-sql-reference-object": {
        "title": "通過創建 SQL 引用對象學習 Git",
        "intro": [
          "Git 是一個版本控制系統，用於跟蹤你對代碼片段所作的所有更改。",
          "在第 240 課中，你將通過創建一個包含常用的 SQL 命令的對象來學習 Git 如何跟蹤你的代碼。"
        ]
      },
      "learn-nano-by-building-a-castle": {
        "title": "通過創建城堡學習 Nano",
        "intro": [
          "Nano 是一個允許你在終端編輯文件的程序。",
          "在第 40 課中，你將學習如何在構建城堡時編輯終端中的文件。"
        ]
      },
      "learn-relational-databases-by-building-a-database-of-video-game-characters": {
        "title": "通過創建一個電子遊戲角色數據庫來學習關係型數據庫",
        "intro": [
          "關係型數據庫將數據組織成相互關聯的表格，並通過各種關係將這些表格連接起來。",
          "在這門共 165 節課的課程中，你將通過創建一個電子遊戲角色的 PostgreSQL 數據庫，學習關係型數據庫的基礎知識。"
        ]
      },
      "learn-sql-by-building-a-student-database-part-1": {
        "title": "通過創建學生數據庫學習 SQL：第 1 部分",
        "intro": [
          "SQL 又稱結構化查詢語言是與關聯數據庫通信的語言。",
          "在第 140 課中，你將創建一個 Bash 腳本，使用 SQL 將你的計算機科學學生信息存儲到 PostgreSQL 中。"
        ]
      },
      "learn-sql-by-building-a-student-database-part-2": {
        "title": "通過創建學生數據庫學習 SQL：第 2 部分",
        "intro": [
          "SQL 加入命令用於將關係數據庫中多個表格中的信息合併在一起",
          "在第 140 課課程中，你將會在更深入的 SQL 命令中完成學生數據庫。"
        ]
      }
    }
  },
  "back-end-development-and-apis": {
    "title": "Back-End Development and APIs V8",
    "intro": [
      "Until this point, you've only used JavaScript on the front-end to add interactivity to a page, solve algorithm challenges, or build an SPA. But JavaScript can also be used on the back-end, or server, to build entire web applications.",
      "今天，構建應用軟件的廣受歡迎的方法之一是微服務，這些微服務是一種小型模塊化的應用，能夠共同形成一個更大的整體。",
      "In the Back-End Development and APIs Certification, you'll learn how to write back-end apps with Node.js and npm. You'll also build web applications with the Express framework, and build a People Finder microservice with MongoDB and the Mongoose library."
    ],
    "note": "",
    "blocks": {
      "managing-packages-with-npm": {
        "title": "使用 NPM 管理軟件包",
        "intro": [
          "npm（Node 包管理工具）是一個命令行工具，用於安裝、創建和分享爲 Node.js 編寫的 JavaScript 代碼包。在 npm 上有許多開放源碼軟件包，所以在項目啓動之前，需要一些時間來探索，這樣你就不會最後重新創建輪子來處理像日期或從 API 獲取數據這樣的事項。",
          "在這個課程中，你將學習使用 npm 的基本知識，包括如何使用 <code>package.json</code> 和如何管理已安裝的依賴項。"
        ]
      },
      "basic-node-and-express": {
        "title": "基礎 Node 和 Express",
        "intro": [
          "Node.js is a JavaScript runtime that allows developers to write back-end (server-side) programs in JavaScript. Node.js comes with a handful of built-in modules — small, independent programs — that help with this. Some of the core modules include HTTP, which acts like a server, and File System, a module to read and modify files.",
          "在上一組課程中，你學到了怎麼從 npm下載和管理軟件包。這些軟件包是較小模塊的集合，可以幫助你構建更大更復雜的程序。",
          "Express 是一個輕量級的 Web 應用程序框架，是 npm 上最流行的包之一。 Express 可以更輕鬆地爲你的應用程序創建服務器和處理路由，例如在人們訪問特定端點（如 <pre>/blog</pre>）時將人們引導到正確頁面。",
          "在這個課程中，你將學習 Node 和 Express 的基礎知識，包括如何創建服務器、處理不同的文件，以及處理不同的瀏覽器請求。"
        ]
      },
      "mongodb-and-mongoose": {
        "title": "MongoDB 和 Mongoose",
        "intro": [
          "MongoDB 是一個存儲 JSON 文件（或記錄）的數據庫程序，你可以在自己的程序中使用這些 JSON 文件。與 SQL——另一種類型的數據庫——所不同的是，MongoDB 是一個非關係型數據庫，也被稱爲 “NoSQL”。這意味着 MongoDB 將所有相關數據都存儲在一個記錄中，而不是像 SQL 數據庫中那樣把數據存儲在許多預設表中。",
          "Mongoose 是一個廣泛使用的 npm 包，通常和 Mongo 一起安裝。通過 Mongoose，你可以使用 JavaScript 對象而不是 JSON ，這樣就更容易與 Mongo 配合使用。此外，它允許你創建文件架構，即 schema，所以你不會意外地保存錯誤的數據類型並出現 bug。",
          "在 MongoDB 和 Mongoose 課程中，你將學習處理數據的基本知識，包括如何建立模型，保存、刪除並在數據庫中查找文檔。"
        ]
      },
      "back-end-development-and-apis-projects": {
        "title": "Back-End Development and APIs Projects",
        "intro": [
          "你之前用過 API，但是現在你知道 npm、Node、Express、MongoDB 和 Mongoose，是時候創建應用了。用你到現在所學的所有知識來創建 5 個不同的微服務，這些微服務是使用範圍有限的小應用。",
          "After creating these, you'll have 5 cool microservice APIs you can show off to friends, family, and potential employers. Oh, and you'll have a shiny new Back-End Development and APIs Certification, too."
        ]
      }
    }
  },
  "quality-assurance": {
    "title": "質量保證",
    "intro": [
      "隨着你的程序或網頁應用程序變得更加複雜，你將想要測試它們，以確保新的更改不會破壞它們的原有功能。",
      "在質量保證認證中，你將學習如何使用 Chai 編寫測試，以確保你的應用程序按預期的方式工作。",
      "然後你將創建一個聊天應用程序來學習高級 Node 和 Express 概念。你還將使用 Pug 作爲模板引擎，用於身份驗證的 Passport 和 用於服務器和客戶端之間實時通信的 Socket.io。"
    ],
    "note": "",
    "blocks": {
      "quality-assurance-and-testing-with-chai": {
        "title": "使用 Chai 進行質量保證和測試",
        "intro": [
          "Chai 是一個JavaScript測試庫，幫助你確保程序能夠在你更改代碼後按照你的期望運行。",
          "使用 Chai，你可以寫測試描述你的程序的要求，並查看你的程序是否符合這些要求。",
          "在這個課程中，你會了解測試 JavaScript 應用程序的斷言、測試 API 和其他測試 JavaScript 應用的基礎知識。"
        ]
      },
      "advanced-node-and-express": {
        "title": "高級 Node 和 Express",
        "intro": [
          "現在是時候來使用高級 Node.js 和 Express.js 創建一個具有登錄系統的聊天應用了。",
          "爲了創建一個安全的登錄系統，你需要學習驗證，這是一個驗證個人身份或者過程的的操作。",
          "In this course, you'll learn how to use Passport to manage authentication, Pug to create reusable templates for quickly building the front-end, and web sockets for real-time communication between the clients and server."
        ]
      },
      "quality-assurance-projects": {
        "title": "質量保證項目",
        "intro": [
          "Now that you're well versed in both the front-end and back-end, it's time to apply all the skills and concepts you've learned up to this point. You'll build 5 different web applications, and write tests for each one to make sure they're working and can handle different edge cases.",
          "完成這 5 個質量保證項目後，你將獲得一個新的認證，你可以在自己的作品集中展示這 5 個項目和認證。"
        ]
      }
    }
  },
  "scientific-computing-with-python": {
    "title": "Python 科學計算",
    "intro": [
      "Python 科學計算課程將幫助你掌握使用 Python 進行數據分析和數據處理的技能。Python 是一種強大且功能豐富的編程語言。你將學習諸如數據結構、算法、面向對象編程等關鍵概念，並學會如何使用各種工具進行復雜的計算。",
      "這個綜合課程將指導你學習科學計算的基礎知識，包括數據結構和算法。"
    ],
    "note": "",
    "blocks": {
      "learn-string-manipulation-by-building-a-cipher": {
        "title": "通過創建密碼學習字符串操作",
        "intro": [
          "Python 是一種強大而流行的編程語言，廣泛應用於數據科學、數據可視化、web 開發、遊戲開發、機器學習等領域。",
          "在本項目中，你將學習 Python 的基本編程概念，如變量、函數、循環和條件語句。你將使用這些概念編寫第一個程序。"
        ]
      },
      "learn-how-to-work-with-numbers-and-strings-by-implementing-the-luhn-algorithm": {
        "title": "通過實現盧恩算法學習如何處理數字和字符串",
        "intro": [
          "盧恩算法被廣泛用於各種應用中的錯誤檢查，如驗證信用卡號碼。",
          "通過創建這個項目，你將獲得數字計算和字符串操作的經驗。"
        ]
      },
      "learn-list-comprehension-by-building-a-case-converter-program": {
        "title": "通過創建大小寫轉換器程序學習 Python 列表推導",
        "intro": [
          "列表推導是一種從可迭代類型（列表、元組和字符串）構建新的 Python 列表的方法。所有這些都無需使用 for 循環或 `.append()` 列表方法。",
          "在這個項目中，你將編寫一個程序，接收駝峯或帕斯卡命名格式的字符串，然後將其轉換爲蛇形命名格式。",
          "該項目分爲兩個階段：首先，你將使用 for 循環來執行程序。然後，你將學習如何使用列表推導代替循環來實現相同的結果。"
        ]
      },
      "learn-regular-expressions-by-building-a-password-generator": {
        "title": "通過創建密碼生成器學習正則表達式",
        "intro": [
          "Python 模塊是一個包含一系列語句和定義的文件，你可以在代碼中使用這些語句和定義。",
          "在本項目中，你將學習如何從 Python 標準庫中導入模塊。你還將通過構建自己的密碼生成器程序來學習如何使用正則表達式。"
        ]
      },
      "learn-algorithm-design-by-building-a-shortest-path-algorithm": {
        "title": "通過創建最短路徑算法學習算法設計",
        "intro": [
          "算法是開發者用來執行計算和解決計算問題的分步程序。",
          "在本項目中，你將學習如何使用函數、循環、條件語句和字典推導來實現最短路徑算法。"
        ]
      },
      "learn-recursion-by-solving-the-tower-of-hanoi-puzzle": {
        "title": "通過解決河內塔謎題學習遞歸",
        "intro": [
          "遞歸是一種編程方法，它讓你只需少量代碼就能解決複雜的計算問題。",
          "在本項目中，你將從基於循環的河內塔數學謎題解法開始。然後，你將學習如何實現遞歸解法。"
        ]
      },
      "learn-data-structures-by-building-the-merge-sort-algorithm": {
        "title": "通過創建歸併排序算法學習數據結構",
        "intro": [
          "歸併排序算法是一種基於分治原則的排序算法。",
          "在本項目中，你將學習如何使用歸併排序算法對隨機數列表進行排序，從而與數據結構進行交互。"
        ]
      },
      "learn-classes-and-objects-by-building-a-sudoku-solver": {
        "title": "通過創建數獨求解器學習類和對象",
        "intro": [
          "類和對象是重要的編程概念。這些面向對象編程工具可以幫助開發人員實現代碼的模塊化、抽象化和可讀性。它們還能提高代碼的可重用性。",
          "在這個數獨求解器項目中，你將學習如何使用類和對象來創建數獨網格並求解數獨謎題。"
        ]
      },
      "learn-tree-traversal-by-building-a-binary-search-tree": {
        "title": "通過創建二叉搜索樹學習樹形結構遍歷",
        "intro": [
          "二叉搜索樹（BST）是一種常見的數據結構，數據按層次排序。",
          "在本項目中，你將學習如何構建自己的 BST 並執行無序遍歷。你還將學習插入、搜索和刪除等關鍵操作。"
        ]
      },
      "learn-lambda-functions-by-building-an-expense-tracker": {
        "title": "通過創建費用跟蹤器學習 Lambda 函數",
        "intro": [
          "Lambda 函數爲你提供了一種簡潔的方法，讓你可以在代碼中編寫小型的、可丟棄的函數。",
          "在本項目中，你將通過創建一個費用跟蹤器來探索 Lambda 函數的強大功能。你創建的應用程序將展示如何使用 Lambda 函數實現高效、簡化的操作。"
        ]
      },
      "build-an-arithmetic-formatter-project": {
        "title": "創建算術格式化器項目",
        "intro": ["這是你要獲得認證必須做的項目之一。"]
      },
      "build-a-time-calculator-project": {
        "title": "創建時間計算器項目",
        "intro": ["這是你要獲得認證必須做的項目之一。"]
      },
      "build-a-budget-app-project": {
        "title": "創建預算應用程序項目",
        "intro": ["這是你要獲得認證必須做的項目之一。"]
      },
      "build-a-polygon-area-calculator-project": {
        "title": "創建多邊形面積計算器項目",
        "intro": ["這是你要獲得認證必須做的項目之一。"]
      },
      "build-a-probability-calculator-project": {
        "title": "創建概率計算器項目",
        "intro": ["這是你要獲得認證必須做的項目之一。"]
      },
      "learn-interfaces-by-building-an-equation-solver": {
        "title": "通過創建方程求解器學習接口",
        "intro": [
          "抽象類使你能夠定義正式的接口——這些對象作爲類的藍圖。",
          "在這個項目中，你將用 Python 構建一個簡單的方程求解程序，由此學習如何實現一個接口。"
        ]
      },
      "learn-special-methods-by-building-a-vector-space": {
        "title": "通過創建向量空間學習特殊方法",
        "intro": [
          "Python 特殊方法會在響應特定操作時被調用，使你能夠以詳細有效的方式自定義對象的行爲。",
          "在這個項目中，你將通過構建一個向量空間來探索一些最常見的特殊方法，同時學習關於向量的知識。"
        ]
      },
      "learn-encapsulation-by-building-a-projectile-trajectory-calculator": {
        "title": "通過創建拋射物軌跡計算器學習封裝",
        "intro": [
          "封裝是面向對象編程（OOP）的核心原則，基於該原則編寫的代碼會限制對數據的直接訪問。",
          "在本項目中，你將探索與封裝相關的新概念，如 getters、setters 和名字修飾，並將這些概念與已經學到的知識結合起來，創建一個計算拋射物軌跡的程序。"
        ]
      },
      "learn-the-bisection-method-by-finding-the-square-root-of-a-number": {
        "title": "通過尋找一個數的平方根學習二分法",
        "intro": [
          "數值方法用於估計數學問題的解，這些解題通常難以或不可能用解析方法得到。",
          "在本項目中，你將探索二分法的數值方法，通過迭代縮小可能包含平方根的值範圍來找到一個數的平方根。"
        ]
      }
    }
  },
  "data-analysis-with-python": {
    "title": "Python 數據分析",
    "intro": [
      "數據分析已經存在很長時間了。但是直到幾年前，開發人員還是使用昂貴的閉源工具（如 Tableau）來做數據分析。如今，Python、SQL 和其他開放的庫永遠改變了數據分析領域。",
      "在這個認證中，你會學習使用 Python 做數據分析的基礎知識。然後，你會學習怎麼從 CSV、SQL 等數據源讀取數據，並且怎麼使用 Numpy、Pandas、Matplotlib 和 Seaborn 等庫來處理和可視化數據。"
    ],
    "note": "",
    "blocks": {
      "data-analysis-with-python-course": {
        "title": "Python 數據分析",
        "intro": [
          "在 Santiago Basulto 創建的這些綜合視頻課程中，你會學習整個數據分析的過程。你會從 CSV、SQL、Excel 讀取數據，用 Numpy和 Pandas 來處理這些數據，以及使用 Matplotlib 和 Seaborn 來可視化數據。",
          "此外，你還可以通過完整的 Jupyter Notebook 課程和 Python 資料來刷新自己的編程技能。"
        ]
      },
      "numpy": {
        "title": "Numpy",
        "intro": [
          "通過下方 Keith Galli 創建的視頻課程學習 NumPy 庫基礎知識。",
          "在這個課程中，你將學習如何使用 NumPy 以及它與 Python 內置列表的區別。你還將學習如何使用 NumPy 編程，以及索引、調整形狀、應用統計信息等等知識。"
        ]
      },
      "data-analysis-with-python-projects": {
        "title": "Python 數據分析",
        "intro": [
          "使用 Python 分析數據的方法很多。通過完成這些項目，你可以證明自己掌握了使用 Python 進行數據分析的基礎知識。",
          "完成所有項目，即可獲得 Python 數據分析認證。"
        ]
      }
    }
  },
  "learn-python-for-beginners": {
    "title": "學習 Python 基礎",
    "summary": [
      "通過練習基礎概念和構建小項目，從頭學習 Python 編程的基礎知識。"
    ],
    "intro": [
      "Python 是當今最流行的編程語言之一。它易於學習、可讀性強且用途廣泛。",
      "在這門綜合課程中，你將從頭學習 Python 編程基礎。你將從變量和數據類型等基礎概念開始，逐步深入學習控制流和函數，然後通過構建項目來練習所學內容。"
    ],
    "note": "",
    "blocks": {
      "python-setup-first-steps": {
        "title": "Python Setup & First Steps",
        "intro": [
          "In these videos, popular programming instructor Mike Dane will introduce you to Python and show you how to setup your local environment."
        ]
      },
      "core-primitives-in-python": {
        "title": "Core Primitives in Python",
        "intro": [
          "In these videos, you will learn about variables, data types, strings, numbers, and getting input from the user."
        ]
      },
      "small-python-projects": {
        "title": "Small Python Projects",
        "intro": [
          "In these videos, you will practice what you have learned so far by building a basic calculator app and mad libs game."
        ]
      },
      "lists-and-tuples": {
        "title": "Lists and Tuples",
        "intro": [
          "In these videos, you will learn about lists, tuples and common operations."
        ]
      },
      "control-flow-and-functions-in-python": {
        "title": "Control Flow and Functions",
        "intro": [
          "In these videos, you will learn how to control the flow of your programs with if statements. You will also learn how to write reusable code with functions."
        ]
      },
      "dictionaries-and-loops": {
        "title": "Dictionaries and Loops",
        "intro": [
          "In these videos, you will learn how to work with dictionaries and various loops include the while and for loops."
        ]
      },
      "error-handling-files-and-modules-in-python": {
        "title": "Error Handling, Files, and Modules",
        "intro": [
          "In these videos, you will learn how to handle errors gracefully, read and write to files, and organize your code with modules and external packages."
        ]
      },
      "object-oriented-programming-with-python": {
        "title": "Object-Oriented Programming with Python",
        "intro": [
          "In these videos, you will learn about object-oriented programming by creating classes and objects. You will practice these skills by building a multiple choice quiz application."
        ]
      }
    }
  },
  "introduction-to-algorithms-and-data-structures": {
    "title": "Introduction to Algorithms and Data Structures",
    "summary": [
      "Learn about common algorithms and data structures in this introductory course."
    ],
    "intro": [
      "Algorithms and Data Structures are the backbone of programming. So it's important to learn how to work with them.",
      "In this comprehensive course, you will learn about common sorting and searching algorithms including merge sort, quicksort and binary search.",
      "You will also learn how to work with common data structures including arrays and linked lists."
    ],
    "note": "",
    "blocks": {
      "searching-algorithms": {
        "title": "Searching Algorithms",
        "intro": [
          "In these videos, you will learn what an algorithm is and learn how to work with the binary search and linear search algorithms."
        ]
      },
      "time-complexity": {
        "title": "Time Complexity",
        "intro": [
          "In these videos, you will learn about time complexity and how it works with measuring efficiency of algorithms."
        ]
      },
      "algorithms-in-code": {
        "title": "Algorithms in Code",
        "intro": [
          "In these videos, you will write Python code for the linear and binary search algorithms."
        ]
      },
      "recursion-and-space-complexity": {
        "title": "Recursion and Space Complexity",
        "intro": [
          "In these videos, you will learn about recursion and space complexity for algorithms."
        ]
      },
      "introduction-to-arrays": {
        "title": "Introduction to Arrays",
        "intro": [
          "In these videos, you will learn how to work with arrays. You will learn about different operations including insert, delete and search."
        ]
      },
      "introduction-to-linked-lists": {
        "title": "Introduction to Linked Lists",
        "intro": [
          "In these videos, you will learn about linked lists. You will learn how to add nodes to a list as well as remove and search a list."
        ]
      },
      "merge-sort-algorithm": {
        "title": "Merge Sort Algorithm",
        "intro": [
          "In these videos, you will learn about the merge sort algorithm."
        ]
      },
      "sorting-a-linked-list": {
        "title": "Sorting a Linked List",
        "intro": [
          "In these videos, you will learn more about how to sort linked lists."
        ]
      },
      "sorting-algorithms": {
        "title": "Sorting Algorithms",
        "intro": [
          "In these videos, you will learn about common sorting algorithms including selection sort and quicksort."
        ]
      },
      "searching-names-using-sorting-and-searching-algorithms": {
        "title": "Searching Names using Sorting and Searching Algorithms",
        "intro": [
          "In these videos, you will practice searching for names using the binary and linear search algorithms and comparing the runtimes for them."
        ]
      }
    }
  },
  "learn-rag-mcp-fundamentals": {
    "title": "Learn RAG and MCP Fundamentals",
    "summary": [
      "Learn the fundamentals of RAG and MCP in this comprehensive video course."
    ],
    "intro": [
      "RAG stands for Retrieval-Augmented Generation. MCP stands for Model Context Protocol. These are powerful frameworks for building AI agents that can retrieve information from a knowledge base, generate responses based on that information, and plan their actions accordingly.",
      "In this course, you'll learn the fundamentals of RAG and MCP and how to implement them in your own projects. You'll explore the components of RAG and MCP, including retrieval, generation, memory, context, and planning. By the end of this course, you'll have a solid understanding of how RAG and MCP work and how to use them to build intelligent agents."
    ],
    "note": "",
    "blocks": {
      "understanding-rag": {
        "title": "Understanding RAG",
        "intro": [
          "Learn the fundamentals of Retrieval-Augmented Generation (RAG), including what it is, when to use it, and core concepts."
        ]
      },
      "retrieval-engine-internals": {
        "title": "Retrieval Engine Internals",
        "intro": [
          "Dive into semantic search, embedding models, vector databases, and chunking to understand how retrieval works under the hood."
        ]
      },
      "designing-reliable-rag-systems": {
        "title": "Designing Reliable RAG Systems",
        "intro": [
          "Explore RAG architecture, monitoring, error handling, and how to deploy RAG systems in production."
        ]
      },
      "mcp-ecosystem-and-tooling": {
        "title": "MCP Ecosystem & Tooling",
        "intro": [
          "Learn why MCP exists, its architecture, JSON-RPC, and how to build and use MCP servers and clients effectively."
        ]
      }
    }
  },
  "introduction-to-precalculus": {
    "title": "Introduction to Precalculus",
    "summary": [
      "Learn the fundamentals of precalculus, including functions, and trigonometry."
    ],
    "intro": [
      "Precalculus is a branch of mathematics that prepares you for calculus. It covers a wide range of topics including functions, and trigonometry."
    ],
    "note": "",
    "blocks": {
      "function-basics": {
        "title": "Function Basics",
        "intro": [
          "In these videos, you will learn about functions and how to work with them."
        ]
      },
      "angles-and-circular-motion": {
        "title": "Angles and Circular Motion",
        "intro": [
          "In these videos, you will learn about angles and circular motion."
        ]
      },
      "right-triangle-trigonometry": {
        "title": "Right Triangle Trigonometry",
        "intro": [
          "In these videos, you will learn about right triangle trigonometry and how to work with it."
        ]
      },
      "trig-graphs-inverses": {
        "title": "Trigonometric Graphs and Inverses",
        "intro": [
          "In these videos, you will learn about trigonometric graphs and inverse functions."
        ]
      },
      "solving-trig-equations": {
        "title": "Solving Trigonometric Equations",
        "intro": [
          "In these videos, you will learn how to solve trigonometric equations."
        ]
      },
      "trig-identities-formulas": {
        "title": "Trigonometric Identities and Formulas",
        "intro": [
          "In these videos, you will learn about trigonometric identities and formulas."
        ]
      },
      "advanced-trig-conics": {
        "title": "Advanced Trigonometry and Conics",
        "intro": [
          "In these videos, you will learn about advanced trigonometry and conic sections."
        ]
      }
    }
  },
  "introduction-to-bash": {
    "title": "Introduction to Bash",
    "summary": [
      "Learn how to use the terminal and write Bash scripts to automate tasks and manage files and processes."
    ],
    "intro": [
      "Bash is a Unix shell and command language that provides a powerful interface for interacting with your computer's operating system. It allows you to execute commands, automate tasks, and manage files and processes efficiently.",
      "In this course, you'll learn the basics of Bash scripting, including how to navigate the file system, manipulate files and directories."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-the-command-line-and-working-with-bash": {
        "title": "Understanding the Command Line and Working with Bash",
        "intro": [
          "Learn about the Command Line and Working with Bash in these lessons."
        ]
      },
      "workshop-bash-boilerplate": {
        "title": "Build a Boilerplate",
        "intro": [
          "The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
          "In this 170-lesson workshop, you will learn terminal commands by creating a website boilerplate using only the command line."
        ]
      },
      "review-bash-commands": {
        "title": "Bash Commands Review",
        "intro": [
          "Review the Bash Commands concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-bash-commands": {
        "title": "Bash Commands Quiz",
        "intro": ["Test what you've learned bash commands with this quiz."]
      }
    }
  },
  "introduction-to-sql-and-postgresql": {
    "title": "Introduction to SQL and PostgreSQL",
    "summary": [
      "Learn how to use SQL and PostgreSQL to create and manage relational databases."
    ],
    "intro": [
      "SQL (Structured Query Language) is a programming language used to manage and manipulate relational databases. It allows you to create, read, update, and delete data in a database.",
      "PostgreSQL is a powerful, open-source relational database management system that uses SQL as its query language. It provides a robust and scalable platform for storing and managing data."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-relational-databases": {
        "title": "Working with Relational Databases",
        "intro": [
          "Learn how to work with Relational Databases in these lessons."
        ]
      },
      "workshop-database-of-video-game-characters": {
        "title": "Build a Database of Video Game Characters",
        "intro": [
          "A relational database organizes data into tables that are linked together through relationships.",
          "In this 165-lesson workshop, you will learn the basics of a relational database by creating a PostgreSQL database filled with video game characters."
        ]
      },
      "lab-celestial-bodies-database": {
        "title": "Build a Celestial Bodies Database",
        "intro": [
          "For this project, you will build a database of celestial bodies using PostgreSQL."
        ]
      },
      "review-sql-and-postgresql": {
        "title": "SQL and PostgreSQL Review",
        "intro": [
          "Review SQL and PostgreSQL concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-sql-and-postgresql": {
        "title": "SQL and PostgreSQL Quiz",
        "intro": [
          "Test what you've learned about SQL and PostgreSQL with this quiz."
        ]
      }
    }
  },
  "learn-bash-scripting": {
    "title": "Learn Bash Scripting",
    "summary": [
      "Learn how to write Bash scripts to automate tasks and manage files and processes."
    ],
    "intro": [
      "Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
      "In this course, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-bash-scripting": {
        "title": "Understanding Bash Scripting",
        "intro": ["Learn about Bash Scripting in these lessons."]
      },
      "workshop-bash-five-programs": {
        "title": "Build Five Programs",
        "intro": [
          "Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
          "In this 220-lesson workshop, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
        ]
      },
      "review-bash-scripting": {
        "title": "Bash Scripting Review",
        "intro": [
          "Review the bash scripting concepts you've learned to prepare for the upcoming quiz."
        ]
      },
      "quiz-bash-scripting": {
        "title": "Bash Scripting Quiz",
        "intro": ["Test what you've learned on bash scripting in this quiz."]
      }
    }
  },
  "learn-sql-and-bash": {
    "title": "Learn SQL and Bash",
    "summary": [
      "Learn how to use SQL and Bash together to manage and manipulate relational databases."
    ],
    "intro": [
      "SQL, or Structured Query Language, is the language for communicating with a relational database. Bash is a Unix shell and command language that provides a powerful interface for interacting with your computer's operating system.",
      "In this course, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-sql": {
        "title": "Working With SQL",
        "intro": [
          "In these lessons, you will learn about SQL injection, normalization, and the N+1 problem."
        ]
      },
      "workshop-sql-student-database-part-1": {
        "title": "Build a Student Database: Part 1",
        "intro": [
          "SQL, or Structured Query Language, is the language for communicating with a relational database.",
          "In this 140-lesson workshop, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
        ]
      },
      "workshop-sql-student-database-part-2": {
        "title": "Build a Student Database: Part 2",
        "intro": [
          "SQL join commands are used to combine information from multiple tables in a relational database",
          "In this 140-lesson workshop, you will complete your student database while diving deeper into SQL commands."
        ]
      },
      "lab-world-cup-database": {
        "title": "Build a World Cup Database",
        "intro": [
          "For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
        ]
      },
      "workshop-kitty-ipsum-translator": {
        "title": "Build a Kitty Ipsum Translator",
        "intro": [
          "There's more to Bash commands than you might think.",
          "In this 140-lesson workshop, you will learn some more complex commands, and the details of how commands work."
        ]
      },
      "workshop-bike-rental-shop": {
        "title": "Build a Bike Rental Shop",
        "intro": [
          "In this 210-lesson workshop, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
        ]
      },
      "lab-salon-appointment-scheduler": {
        "title": "Build a Salon Appointment Scheduler",
        "intro": [
          "For this lab, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
        ]
      },
      "review-bash-and-sql": {
        "title": "Bash and SQL Review",
        "intro": [
          "Review the Bash and SQL concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-bash-and-sql": {
        "title": "Bash and SQL Quiz",
        "intro": ["Test what you've learned in this quiz on Bash and SQL."]
      }
    }
  },
  "introduction-to-nano": {
    "title": "Introduction to Nano",
    "summary": [
      "Learn how to use the Nano text editor to create and edit files in the terminal."
    ],
    "intro": [
      "Nano is a simple, user-friendly text editor that runs in the terminal. It allows you to create and edit files without leaving the command line.",
      "In this course, you'll learn how to use Nano to create and edit files, navigate through text, and perform basic editing operations."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-nano": {
        "title": "Working With Nano",
        "intro": ["Learn about Nano in this lesson."]
      },
      "workshop-castle": {
        "title": "Build a Castle",
        "intro": [
          "Nano is a program that allows you to edit files right in the terminal.",
          "In this 40-lesson workshop, you will learn how to edit files in the terminal with Nano while building a castle."
        ]
      }
    }
  },
  "introduction-to-git-and-github": {
    "title": "Introduction to Git and GitHub",
    "summary": [
      "Learn how to use Git and GitHub to manage and collaborate on software projects."
    ],
    "intro": [
      "Git is a version control system that allows developers to track changes in their code and collaborate with others. GitHub is a web-based platform that provides hosting for Git repositories, making it easier for developers to share and collaborate on projects.",
      "In this course, you'll learn the basics of Git and GitHub, including how to create repositories, commit changes, and collaborate with others on software projects."
    ],
    "note": "",
    "blocks": {
      "lecture-introduction-to-git-and-github": {
        "title": "Introduction to Git and GitHub",
        "intro": ["Learn how to work with Git and GitHub in these lessons."]
      },
      "lecture-working-with-code-reviews-branching-deployment-and-ci-cd": {
        "title": "Working With Code Reviews, Branching, Deployment, and CI/CD",
        "intro": [
          "Learn about code reviews, branching, deployment, and CI/CD in these lessons."
        ]
      },
      "workshop-sql-reference-object": {
        "title": "Build an SQL Reference Object",
        "intro": [
          "Git is a version control system that keeps track of all the changes you make to your codebase.",
          "In this 240-lesson workshop, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
        ]
      },
      "review-git": {
        "title": "Git Review",
        "intro": ["Review Git concepts to prepare for the upcoming quiz."]
      },
      "quiz-git": {
        "title": "Git Quiz",
        "intro": ["Test what you've learned on Git with this quiz."]
      }
    }
  },
  "learn-oop-with-python": {
    "title": "Learn OOP with Python",
    "summary": [
      "In this video course, you will learn about object-oriented programming using Python."
    ],
    "intro": [
      "Object-Oriented Programming (OOP) is a programming paradigm based on the concept of objects, which can contain data and code to manipulate that data. This course introduces the key principles of OOP, including classes, objects, inheritance, and shows how to apply them in practice."
    ],
    "note": "",
    "blocks": {
      "oop-basics": {
        "title": "OOP Basics",
        "intro": [
          "In these videos, learn the basics of OOP including how to create classes and work with constructors."
        ]
      },
      "methods-and-inheritance": {
        "title": "Methods and Inheritance",
        "intro": [
          "In these videos, learn about methods and inheritance in OOP."
        ]
      },
      "advanced-oop-concepts": {
        "title": "Advanced OOP Concepts",
        "intro": [
          "In these videos, learn about advanced OOP concepts including getters, setters and other important OOP principles."
        ]
      }
    }
  },
  "introduction-to-python-basics": {
    "title": "Introduction to Python Basics",
    "summary": ["Learn the fundamentals of Python programming."],
    "intro": [
      "In this interactive course, you will learn the basic syntax, data types, and control structures of Python."
    ],
    "note": "",
    "blocks": {
      "lecture-introduction-to-python": {
        "title": "Introduction to Python",
        "intro": [
          "In these lessons, you will learn what Python is and how to set up your development environment."
        ]
      },
      "lecture-understanding-variables-and-data-types": {
        "title": "Understanding Variables and Data Types",
        "intro": [
          "In these lessons, you will learn about variables and data types in Python."
        ]
      },
      "workshop-report-card-printer": {
        "title": "Build a Report Card Printer",
        "intro": [
          "In this workshop, you will build a report card printer to work with primitive data types in Python."
        ]
      },
      "lecture-introduction-to-python-strings": {
        "title": "Introduction to Strings",
        "intro": ["In these lessons, you will learn about strings in Python."]
      },
      "workshop-employee-profile-generator": {
        "title": "Build an Employee Profile Generator",
        "intro": [
          "In this workshop, you will practice the fundamentals of string manipulation in Python by building a tool that generates formatted employee badges and analyzes employee codes."
        ]
      },
      "lecture-numbers-and-mathematical-operations": {
        "title": "Numbers and Mathematical Operations",
        "intro": [
          "In these lessons, you will learn about numbers and mathematical operations in Python."
        ]
      },
      "workshop-bill-splitter": {
        "title": "Build a Bill Splitter",
        "intro": [
          "In this workshop, you will build a bill splitter to practice working with numbers and mathematical operations in Python."
        ]
      },
      "lecture-booleans-and-conditionals": {
        "title": "Booleans and Conditionals",
        "intro": [
          "In these lessons, you will learn about booleans and conditionals in Python."
        ]
      },
      "workshop-movie-ticket-booking-calculator": {
        "title": "Build a Movie Ticket Booking Calculator",
        "intro": [
          "In this workshop, you will practice how to use booleans and conditional statements in Python by building a movie ticket booking calculator."
        ]
      },
      "lab-travel-weather-planner": {
        "title": "Build a Travel Weather Planner",
        "intro": [
          "In this lab, you will build a travel weather planner using conditionals."
        ]
      },
      "lecture-understanding-functions-and-scope": {
        "title": "Understanding Functions and Scope",
        "intro": [
          "In these lessons, you will learn about functions and scope in Python."
        ]
      },
      "lab-discount-calculator": {
        "title": "Build an Apply Discount Function",
        "intro": [
          "In this lab, you will practice basic Python by building a calculator to apply a discount to a price."
        ]
      },
      "workshop-caesar-cipher": {
        "title": "Build a Caesar Cipher",
        "intro": [
          "In this workshop, you'll build a Caesar cipher using basic Python concepts such as strings, conditionals, functions, and more."
        ]
      },
      "lab-rpg-character": {
        "title": "Build an RPG Character",
        "intro": [
          "In this lab you will practice basic Python by building an RPG character."
        ]
      },
      "review-python-basics": {
        "title": "Python Basics Review",
        "intro": [
          "Before you're quizzed on Python basics, you should review what you've learned about it.",
          "In this review page, you will review working with strings, functions, comparison operators and more."
        ]
      },
      "quiz-python-basics": {
        "title": "Python Basics Quiz",
        "intro": [
          "Test what you've learned about Python basics with this quiz."
        ]
      }
    }
  },
  "learn-python-loops-and-sequences": {
    "title": "Learn Python Loops and Sequences",
    "summary": ["Learn how to work with loops and sequences in Python."],
    "intro": [
      "In this interactive course, you will learn how to work with loops and sequences in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-loops-and-sequences": {
        "title": "Working with Loops and Sequences",
        "intro": [
          "Learn about working with loops and sequences in these lessons."
        ]
      },
      "workshop-pin-extractor": {
        "title": "Build a Pin Extractor",
        "intro": [
          "In this workshop you will build a function to extract secret pins hidden in poems."
        ]
      },
      "lab-number-pattern-generator": {
        "title": "Build a Number Pattern Generator",
        "intro": ["In this lab you will build a number pattern generator."]
      },
      "review-loops-and-sequences": {
        "title": "Loops and Sequences Review",
        "intro": [
          "Before you're quizzed on loops and sequences, you should review what you've learned about them.",
          "Open up this page to review concepts around loops, lists, tuples and some of their common methods."
        ]
      },
      "quiz-loops-and-sequences": {
        "title": "Loops and Sequences Quiz",
        "intro": [
          "Test what you've learned about loops and sequences in Python with this quiz."
        ]
      }
    }
  },
  "learn-python-dictionaries-and-sets": {
    "title": "Learn Python Dictionaries and Sets",
    "summary": ["Learn how to work with dictionaries and sets in Python."],
    "intro": [
      "In this interactive course, you will learn how to work with dictionaries and sets in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-dictionaries-and-sets": {
        "title": "Working with Dictionaries and Sets",
        "intro": [
          "Learn about working with dictionaries and sets in these lessons."
        ]
      },
      "lecture-working-with-modules": {
        "title": "Working with Modules",
        "intro": ["Learn about working with modules in these lessons."]
      },
      "workshop-medical-data-validator": {
        "title": "Build a Medical Data Validator",
        "intro": [
          "In this workshop, you'll practice working with dictionaries and sets while validating a collection of medical data."
        ]
      },
      "lab-user-configuration-manager": {
        "title": "Build a User Configuration Manager",
        "intro": [
          "In this lab, you will practice working with dictionaries in Python."
        ]
      },
      "review-dictionaries-and-sets": {
        "title": "Dictionaries and Sets Review",
        "intro": [
          "Before you're quizzed on dictionaries and sets, you should review what you've learned about them.",
          "Open up this page to review concepts around dictionaries, sets, and how to import modules."
        ]
      },
      "quiz-dictionaries-and-sets": {
        "title": "Dictionaries and Sets Quiz",
        "intro": [
          "Test what you've learned about dictionaries and sets in Python with this quiz."
        ]
      }
    }
  },
  "learn-error-handling-in-python": {
    "title": "Learn Error Handling in Python",
    "summary": ["Learn how to handle errors and exceptions in Python."],
    "intro": [
      "In this interactive course, you will learn how to handle errors and exceptions in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-error-handling": {
        "title": "Understanding Error Handling",
        "intro": [
          "In these lessons, you will learn about error handling in Python. You will learn about the different types of errors, some good debugging practices, what exceptions are, and how to handle them."
        ]
      },
      "lab-isbn-validator": {
        "title": "Debug an ISBN Validator",
        "intro": [
          "In this lab, you will start with a bugged app, and you will need to debug and fix the bugs until it is working properly."
        ]
      },
      "review-error-handling": {
        "title": "Error Handling Review",
        "intro": [
          "Before you're quizzed on error handling, you should review what you've learned about it."
        ]
      },
      "quiz-error-handling": {
        "title": "Error Handling Quiz",
        "intro": [
          "Test what you've learned about Error Handling in Python with this quiz."
        ]
      }
    }
  },
  "learn-python-classes-and-objects": {
    "title": "Learn Python Classes and Objects",
    "summary": ["Learn how to work with classes and objects in Python."],
    "intro": [
      "In this interactive course, you will learn how to work with classes and objects in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-classes-and-objects": {
        "title": "Classes and Objects",
        "intro": ["Learn about classes and objects in these lessons."]
      },
      "workshop-musical-instrument-inventory": {
        "title": "Build a Musical Instrument Inventory",
        "intro": [
          "In this workshop, you will learn about classes, objects, and methods in Python by building a simple musical instrument inventory."
        ]
      },
      "lab-planet-class": {
        "title": "Build a Planet Class",
        "intro": [
          "In this lab you will create a class that represents a planet."
        ]
      },
      "workshop-email-simulator": {
        "title": "Build an Email Simulator",
        "intro": [
          "In this workshop you will implement classes and objects by building an email simulator that simulates sending, receiving, and managing emails between different users."
        ]
      },
      "lab-budget-app": {
        "title": "Build a Budget App",
        "intro": [
          "In this lab you will build a budget app and practice creating a class and methods for that class."
        ]
      },
      "review-classes-and-objects": {
        "title": "Classes and Objects Review",
        "intro": [
          "Before you're quizzed on classes and objects, you should review what you've learned about them.",
          "Open up this page to review concepts like how classes work, what are objects, methods, attributes, special methods and more."
        ]
      },
      "quiz-classes-and-objects": {
        "title": "Classes and Objects Quiz",
        "intro": [
          "Test what you've learned about classes and objects in Python with this quiz."
        ]
      }
    }
  },
  "introduction-to-oop-in-python": {
    "title": "Introduction to OOP in Python",
    "summary": [
      "Learn the basics of Object-Oriented Programming (OOP) in Python."
    ],
    "intro": [
      "In this interactive course, you will learn the basics of Object-Oriented Programming (OOP) in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-object-oriented-programming-and-encapsulation": {
        "title": "Understanding Object Oriented Programming and Encapsulation",
        "intro": [
          "Learn about understanding object oriented programming and encapsulation in these lessons."
        ]
      },
      "workshop-salary-tracker": {
        "title": "Build a Salary Tracker",
        "intro": [
          "In this workshop, you'll practice encapsulation, properties, and other OOP concepts by building a salary tracking system for employees."
        ]
      },
      "lab-game-character-stats": {
        "title": "Build a Game Character Stats Tracker",
        "intro": [
          "In this lab, you will build a game character with different stats using object-oriented programming."
        ]
      },
      "lecture-understanding-inheritance-and-polymorphism": {
        "title": "Understanding Inheritance and Polymorphism",
        "intro": [
          "Learn about understanding inheritance and polymorphism in these lessons."
        ]
      },
      "workshop-media-catalogue": {
        "title": "Build a Media Catalogue",
        "intro": [
          "In this workshop, you will create a media catalogue application using object-oriented programming principles."
        ]
      },
      "lecture-understanding-abstraction": {
        "title": "Understanding Abstraction",
        "intro": ["Learn about understanding abstraction in these lessons."]
      },
      "workshop-discount-calculator": {
        "title": "Build a Discount Calculator",
        "intro": [
          "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic."
        ]
      },
      "lab-player-interface": {
        "title": "Build a Player Interface",
        "intro": [
          "In this lab, you'll use the <code>abc</code> module to build a player interface."
        ]
      },
      "lab-polygon-area-calculator": {
        "title": "Build a Polygon Area Calculator",
        "intro": [
          "In this lab, you will use object-oriented programming to calculate the areas of different polygons like squares and rectangles."
        ]
      },
      "review-object-oriented-programming": {
        "title": "Object Oriented Programming Review",
        "intro": [
          "Before you're quizzed on object oriented programming, you should review what you've learned about it."
        ]
      },
      "quiz-object-oriented-programming": {
        "title": "Object Oriented Programming Quiz",
        "intro": [
          "Test what you've learned about object oriented programming in Python with this quiz."
        ]
      }
    }
  },
  "introduction-to-linear-data-structures-in-python": {
    "title": "Introduction to Linear Data Structures in Python",
    "summary": ["Learn the basics of linear data structures in Python."],
    "intro": [
      "In this interactive course, you will learn the basics of linear data structures in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-common-data-structures": {
        "title": "Working with Common Data Structures",
        "intro": [
          "Learn about working with common data structures in these lessons."
        ]
      },
      "workshop-linked-list-class": {
        "title": "Build a Linked List",
        "intro": [
          "In this workshop, you'll practice working with data structures by building a linked list."
        ]
      },
      "lab-hash-table": {
        "title": "Build a Hash Table",
        "intro": [
          "A hash table is a data structure that is used to store key-value pairs and is optimized for quick lookups.",
          "In this lab, you will use your knowledge about data structures to build a hash table."
        ]
      },
      "review-data-structures": {
        "title": "Data Structures Review",
        "intro": [
          "Before you're quizzed on data structures, you should review what you've learned about them.",
          "Open up this page to review concepts like the different data structures, algorithms, time and space complexity, and big O notation."
        ]
      },
      "quiz-data-structures": {
        "title": "Data Structures Quiz",
        "intro": [
          "Test what you've learned about data structures in Python with this quiz."
        ]
      }
    }
  },
  "learn-algorithms-in-python": {
    "title": "Learn Algorithms in Python",
    "summary": ["Learn the basics of algorithms in Python."],
    "intro": [
      "In this interactive course, you will learn the basics of algorithms in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-searching-and-sorting-algorithms": {
        "title": "Searching and Sorting Algorithms",
        "intro": [
          "Learn about fundamental searching and sorting algorithms, including linear search, binary search, and merge sort.",
          "These lessons cover algorithm implementations, time and space complexity analysis, and the divide and conquer programming paradigm."
        ]
      },
      "workshop-binary-search": {
        "title": "Implement the Binary Search Algorithm",
        "intro": [
          "The binary search algorithm is a searching algorithm used to find a target item in a sorted list.",
          "In this workshop, you'll implement the binary search algorithm and return the path it took to find the target or return 'Value not found'."
        ]
      },
      "lab-bisection-method": {
        "title": "Implement the Bisection Method",
        "intro": [
          "In this lab, you will implement the bisection method to find the square root of a number."
        ]
      },
      "workshop-merge-sort": {
        "title": "Implement the Merge Sort Algorithm",
        "intro": [
          "The merge sort algorithm is a sorting algorithm based on the divide and conquer principle.",
          "In this workshop, you'll implement the merge sort algorithm to sort a list of random numbers."
        ]
      },
      "lab-quicksort": {
        "title": "Implement the Quicksort Algorithm",
        "intro": [
          "In this lab you will implement the quicksort algorithm to sort a list of integers."
        ]
      },
      "lab-selection-sort": {
        "title": "Implement the Selection Sort Algorithm",
        "intro": [
          "In this lab you will implement the selection sort algorithm."
        ]
      },
      "lab-luhn-algorithm": {
        "title": "Implement the Luhn Algorithm",
        "intro": [
          "In this lab, you will implement the Luhn algorithm to validate identification numbers such as credit card numbers."
        ]
      },
      "lab-tower-of-hanoi": {
        "title": "Implement the Tower of Hanoi Algorithm",
        "intro": [
          "In this lab, you will implement an algorithm to solve the Tower of Hanoi puzzle."
        ]
      },
      "review-searching-and-sorting-algorithms": {
        "title": "Searching and Sorting Algorithms Review",
        "intro": [
          "Before you're quizzed on searching and sorting algorithms, you should review what you've learned about them."
        ]
      },
      "quiz-searching-and-sorting-algorithms": {
        "title": "Searching and Sorting Algorithms Quiz",
        "intro": [
          "Test what you've learned about searching and sorting algorithms in Python with this quiz."
        ]
      }
    }
  },
  "learn-graphs-and-trees-in-python": {
    "title": "Learn Graphs and Trees in Python",
    "summary": ["Learn the basics of graphs and trees in Python."],
    "intro": [
      "In this interactive course, you will learn the basics of graphs and trees in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-graphs-and-trees": {
        "title": "Understanding Graphs and Trees",
        "intro": [
          "In this lesson, you will learn about fundamental data structures like graphs, trees, and their practical applications in computer science."
        ]
      },
      "workshop-shortest-path-algorithm": {
        "title": "Implement the Shortest Path Algorithm",
        "intro": [
          "In this workshop you will implement an algorithm to find the shortest path between two nodes in a graph."
        ]
      },
      "lab-adjacency-list-to-matrix-converter": {
        "title": "Build an Adjacency List to Matrix Converter",
        "intro": [
          "In this lab, you will implement a function that converts an adjacency list representation of a graph into an adjacency matrix representation."
        ]
      },
      "workshop-breadth-first-search": {
        "title": "Implement the Breadth-First Search Algorithm",
        "intro": [
          "In this workshop, you will use the breadth-first search algorithm to generate all valid combinations of parentheses."
        ]
      },
      "lab-depth-first-search": {
        "title": "Implement the Depth-First Search Algorithm",
        "intro": [
          "In this lab, you will implement the Depth-First Search Algorithm."
        ]
      },
      "lab-n-queens-problem": {
        "title": "Implement the N-Queens Problem",
        "intro": [
          "In this lab, you will implement a solution for the N-Queens problem."
        ]
      },
      "review-graphs-and-trees": {
        "title": "Graphs and Trees Review",
        "intro": [
          "Before you're quizzed on graphs and trees, you should review what you've learned about them."
        ]
      },
      "quiz-graphs-and-trees": {
        "title": "Graphs and Trees Quiz",
        "intro": [
          "Test what you've learned about graphs and trees in Python with this quiz."
        ]
      }
    }
  },
  "learn-dynamic-programming-in-python": {
    "title": "Learn Dynamic Programming in Python",
    "summary": ["Learn the basics of dynamic programming in Python."],
    "intro": [
      "In this interactive course, you will learn the basics of dynamic programming in Python."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-dynamic-programming": {
        "title": "Understanding Dynamic Programming",
        "intro": [
          "In this lesson, you will learn about dynamic programming, an algorithmic technique used to solve complex problems efficiently by breaking them down into simpler subproblems."
        ]
      },
      "lab-nth-fibonacci-number": {
        "title": "Build an Nth Fibonacci Number Calculator",
        "intro": [
          "In this lab you will implement a Fibonacci sequence calculator using a dynamic programming approach."
        ]
      },
      "review-dynamic-programming": {
        "title": "Dynamic Programming Review",
        "intro": [
          "Before you're quizzed on dynamic programming, you should review what you've learned about it."
        ]
      },
      "quiz-dynamic-programming": {
        "title": "Dynamic Programming Quiz",
        "intro": [
          "Test what you've learned about dynamic programming in Python with this quiz."
        ]
      }
    }
  },
  "introduction-to-variables-and-strings-in-javascript": {
    "title": "Introduction to Variables and Strings in JavaScript",
    "summary": ["Learn the basics of variables and strings in JavaScript."],
    "intro": [
      "In this interactive course, you will learn about variables and strings, which are fundamental concepts in JavaScript programming."
    ],
    "note": "",
    "blocks": {
      "lecture-introduction-to-javascript": {
        "title": "Introduction to JavaScript",
        "intro": [
          "In these lectures, you will learn the fundamentals of JavaScript. Topics covered include, but are not limited to, variables, data types, how JavaScript interacts with HTML and CSS, strings, and much more."
        ]
      },
      "lecture-introduction-to-strings": {
        "title": "Introduction to Strings",
        "intro": [
          "In these lessons, you will learn how to work with strings and string concatenation."
        ]
      },
      "lecture-understanding-code-clarity": {
        "title": "Understanding Code Clarity",
        "intro": [
          "In these lessons, you will learn about comments in JavaScript and the role of semicolons in programming."
        ]
      },
      "workshop-greeting-bot": {
        "title": "Build a Greeting Bot",
        "intro": [
          "In this workshop, you will learn JavaScript fundamentals by building a greeting bot.",
          "You will learn about variables, <code>let</code>, <code>const</code>, <code>console.log</code> and basic string usage."
        ]
      },
      "lab-javascript-trivia-bot": {
        "title": "Build a JavaScript Trivia Bot",
        "intro": [
          "In this lab, you'll practice working with JavaScript variables and strings by building a trivia bot."
        ]
      },
      "lab-sentence-maker": {
        "title": "Build a Sentence Maker",
        "intro": [
          "In this lab, you will continue practicing with strings and concatenation by creating and customizing various stories."
        ]
      },
      "lecture-working-with-data-types": {
        "title": "Working with Data Types",
        "intro": [
          "In the following lectures, you will learn how to work with data types in JavaScript. You will also learn how dynamic typing differs from static typing, the <code>typeof</code> operator, and the <code>typeof null</code> bug."
        ]
      },
      "review-javascript-variables-and-data-types": {
        "title": "JavaScript Variables and Data Types Review",
        "intro": [
          "Before you are quizzed on JavaScript variables and data types you first need to review the concepts.",
          "Open up this page to review variables, data types, logging and commenting."
        ]
      },
      "quiz-javascript-variables-and-data-types": {
        "title": "JavaScript Variables and Data Types Quiz",
        "intro": [
          "Test your knowledge of JavaScript variables and data types with this quiz."
        ]
      },
      "lecture-working-with-strings-in-javascript": {
        "title": "Working with Strings in JavaScript",
        "intro": [
          "In these lectures, you will learn how to work with strings in JavaScript. You will learn how to access characters from a string, how to use template literals and interpolation, how to create a new line in strings, and much more."
        ]
      },
      "workshop-teacher-chatbot": {
        "title": "Build a Teacher Chatbot",
        "intro": [
          "In this workshop, you will continue to learn more about JavaScript strings by building a chatbot.",
          "You will learn how to work with template literals, and the <code>indexOf</code> method."
        ]
      },
      "lecture-working-with-string-character-methods": {
        "title": "Working with String Character Methods",
        "intro": [
          "In this lecture you will learn about ASCII character encoding and how to use JavaScript's <code>charCodeAt()</code> and <code>fromCharCode()</code> methods to convert between characters and their numerical ASCII values."
        ]
      },
      "lecture-working-with-string-search-and-slice-methods": {
        "title": "Working with String Search and Slice Methods",
        "intro": [
          "In this lecture you will learn how to search for substrings using the <code>includes()</code> method and how to extract portions of strings using the <code>slice()</code> method."
        ]
      },
      "workshop-string-inspector": {
        "title": "Build a String Inspector",
        "intro": [
          "In this workshop, you will practice working with the <code>includes()</code> and <code>slice()</code> methods by building a string inspector."
        ]
      },
      "lecture-working-with-string-formatting-methods": {
        "title": "Working with String Formatting Methods",
        "intro": [
          "In this lecture you will learn how to format strings by changing their case using <code>toUpperCase()</code> and <code>toLowerCase()</code> methods, and how to remove whitespace using <code>trim()</code>, <code>trimStart()</code>, and <code>trimEnd()</code> methods."
        ]
      },
      "workshop-string-formatter": {
        "title": "Build a String Formatter",
        "intro": [
          "In this workshop, you will practice working with various string methods including <code>trim()</code>, <code>toUpperCase()</code> and <code>toLowerCase()</code>."
        ]
      },
      "lecture-working-with-string-modification-methods": {
        "title": "Working with String Modification Methods",
        "intro": [
          "In this lecture you will learn how to modify strings by replacing parts of them using the <code>replace()</code> method and how to repeat strings multiple times using the <code>repeat()</code> method."
        ]
      },
      "workshop-string-transformer": {
        "title": "Build a String Transformer",
        "intro": [
          "In this workshop, you will practice working with the <code>replace()</code>, <code>replaceAll()</code> and <code>repeat()</code> methods."
        ]
      },
      "review-javascript-strings": {
        "title": "JavaScript Strings Review",
        "intro": [
          "Before you are quizzed on working with JavaScript strings, you first need to review.",
          "Open up this page to review how to work with template literals, the <code>slice</code> method, the <code>includes</code> method, the <code>trim</code> method and more."
        ]
      },
      "quiz-javascript-strings": {
        "title": "JavaScript Strings Quiz",
        "intro": ["Test your knowledge of JavaScript strings with this quiz."]
      }
    }
  },
  "introduction-to-booleans-and-numbers-in-javascript": {
    "title": "Introduction to Booleans and Numbers in JavaScript",
    "summary": ["Learn the basics of booleans and numbers in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with booleans and numbers in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-numbers-and-arithmetic-operators": {
        "title": "Working with Numbers and Arithmetic Operators",
        "intro": [
          "In these lectures you will learn about the number type, arithmetic operators, and using them with numbers and strings."
        ]
      },
      "lab-debug-type-coercion-errors": {
        "title": "Debug Type Coercion Errors in a Buggy App",
        "intro": [
          "In this lab, you will be working with a buggy app that contains several type coercion errors.",
          "Your task is to identify and fix these errors to ensure the app functions correctly."
        ]
      },
      "lecture-working-with-operator-behavior": {
        "title": "Working with Operator Behavior",
        "intro": [
          "In these lectures you will learn about operator precedence, the increment and decrement operators, and compound assignment operators."
        ]
      },
      "lab-debug-increment-and-decrement-operator-errors": {
        "title": "Debug Increment and Decrement Operator Errors in a Buggy App",
        "intro": [
          "In this lab, you'll debug an app that has several errors related to the increment and decrement operators.",
          "Your task is to identify and fix the errors so that the app works as intended."
        ]
      },
      "lecture-working-with-comparison-and-boolean-operators": {
        "title": "Working with Comparison and Boolean Operators",
        "intro": [
          "In these lectures you will learn about booleans, and equality and inequality operators, and other comparison operators."
        ]
      },
      "workshop-logic-checker-app": {
        "title": "Build a Logic Checker App",
        "intro": [
          "In this workshop, you'll practice working with conditional statements and comparison operators by building a logic checker app."
        ]
      },
      "lecture-working-with-unary-and-bitwise-operators": {
        "title": "Working with Unary and Bitwise Operators",
        "intro": [
          "In these lectures, you will learn about unary and bitwise operators."
        ]
      },
      "lecture-working-with-conditional-logic-and-math-methods": {
        "title": "Working with Conditional Logic and Math Methods",
        "intro": [
          "In these lectures, you will learn about conditional statements, binary logical operators, and the <code>Math</code> object."
        ]
      },
      "workshop-mathbot": {
        "title": "Build a Mathbot",
        "intro": [
          "In this workshop, you will review how to work with the different Math object methods by building a Mathbot."
        ]
      },
      "lab-fortune-teller": {
        "title": "Build a Fortune Teller",
        "intro": [
          "In this lab, you'll build a fortune teller by randomly selecting a fortune from the available fortunes.",
          "You'll practice how to work with the <code>Math.random()</code> method and the <code>Math.floor()</code> method to generate random numbers."
        ]
      },
      "lecture-working-with-numbers-and-common-number-methods": {
        "title": "Working with Numbers and Common Number Methods",
        "intro": [
          "In these lectures, you will learn about numbers and common number methods. These include <code>isNaN()</code>, <code>parseInt()</code>, <code>parseFloat()</code>, and <code>toFixed()</code>."
        ]
      },
      "review-javascript-math": {
        "title": "JavaScript Math Review",
        "intro": [
          "Before you're quizzed on working with the <code>Math</code> object, you should review what you've learned.",
          "Open up this page to review how to work with the <code>Math.random()</code> method, the <code>Math.floor()</code> method and more."
        ]
      },
      "quiz-javascript-math": {
        "title": "JavaScript Math Quiz",
        "intro": [
          "Test your knowledge of the JavaScript <code>Math</code> object with this quiz."
        ]
      },
      "lecture-understanding-comparisons-and-conditionals": {
        "title": "Understanding Comparisons and Conditionals",
        "intro": [
          "In these lectures, you will learn about comparison operators and conditionals. You will learn how the various conditionals differ from one another, and how comparisons work with <code>null</code> and <code>undefined</code>."
        ]
      },
      "review-javascript-comparisons-and-conditionals": {
        "title": "JavaScript Comparisons and Conditionals Review",
        "intro": [
          "Before you're quizzed on working with conditionals, you should review what you've learned about them.",
          "Open up this page to review how to work with <code>switch</code> statements, other types of conditionals and more."
        ]
      },
      "quiz-javascript-comparisons-and-conditionals": {
        "title": "JavaScript Comparisons and Conditionals Quiz",
        "intro": [
          "Test your knowledge of JavaScript Comparisons and Conditionals with this quiz."
        ]
      }
    }
  },
  "introduction-functions-in-javascript": {
    "title": "Introduction to Functions in JavaScript",
    "summary": ["Learn the basics of functions in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with functions in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-functions": {
        "title": "Working with Functions",
        "intro": [
          "In these lectures, you will learn how to reuse a block of code with functions. You will learn what the purpose of a function is and how they work, and how scope works in programming. "
        ]
      },
      "workshop-calculator": {
        "title": "Build a Calculator",
        "intro": [
          "In this workshop, you will review your knowledge of functions by building a calculator."
        ]
      },
      "lab-boolean-check": {
        "title": "Build a Boolean Check Function",
        "intro": [
          "In this lab, you'll implement a function that checks if a value is a boolean."
        ]
      },
      "lab-email-masker": {
        "title": "Build an Email Masker",
        "intro": [
          "In this lab, you'll build an email masker that will take an email address and obscure it.",
          "You'll practice string slicing, concatenation, and using functions."
        ]
      },
      "workshop-loan-qualification-checker": {
        "title": "Build a Loan Qualification Checker",
        "intro": [
          "In this workshop, you will continue to learn how to work with conditionals by building a loan qualification checker app.",
          "You will learn more about <code>if</code> statements, and how to use comparison operators and multiple conditions in an <code>if</code> statement."
        ]
      },
      "lab-celsius-to-fahrenheit-converter": {
        "title": "Build a Celsius to Fahrenheit Converter",
        "intro": [
          "In this lab you will implement a function that converts the temperature from Celsius to Fahrenheit."
        ]
      },
      "lab-counting-cards": {
        "title": "Build a Card Counting Assistant",
        "intro": ["In this lab you will use JavaScript to count dealt cards."]
      },
      "lab-leap-year-calculator": {
        "title": "Build a Leap Year Calculator ",
        "intro": [
          "In this lab you'll use conditional statements and loops to determine if a year is a leap year."
        ]
      },
      "lab-truncate-string": {
        "title": "Implement the Truncate String Algorithm",
        "intro": [
          "In this lab, you will practice truncating a string at a certain length."
        ]
      },
      "lab-string-ending-checker": {
        "title": "Build a Confirm the Ending Tool",
        "intro": [
          "In this lab, you will implement a function that checks if a given string ends with a specified target string."
        ]
      },
      "review-javascript-functions": {
        "title": "JavaScript Functions Review",
        "intro": [
          "Before you're quizzed on JavaScript functions, you should review what you've learned about them.",
          "Open up this page to review functions, arrow functions and scope."
        ]
      },
      "quiz-javascript-functions": {
        "title": "JavaScript Functions Quiz",
        "intro": ["Test your knowledge of JavaScript functions with this quiz."]
      }
    }
  },
  "introduction-to-arrays-in-javascript": {
    "title": "Introduction to Arrays in JavaScript",
    "summary": ["Learn the basics of arrays in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with arrays in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-arrays": {
        "title": "Working with Arrays",
        "intro": [
          "In these lectures, you will learn how to work with JavaScript arrays. You will learn about what makes an array, one-dimensional and two-dimensional arrays, how to access and update the elements in an array, and much more."
        ]
      },
      "workshop-shopping-list": {
        "title": "Build a Shopping List",
        "intro": [
          "In this workshop, you will practice how to work with arrays by building a shopping list.",
          "You will review how to add and remove elements from an array using methods like <code>push</code>, <code>pop</code>, <code>shift</code>, and <code>unshift</code>."
        ]
      },
      "lab-lunch-picker-program": {
        "title": "Build a Lunch Picker Program",
        "intro": [
          "In this lab, you'll review working with arrays and random numbers by building a lunch picker program."
        ]
      },
      "lab-golf-score-translator": {
        "title": "Build a Golf Score Translator",
        "intro": [
          "For this lab, you will use array methods to translate golf scores into their nickname."
        ]
      },
      "lecture-working-with-common-array-methods": {
        "title": "Working with Common Array Methods",
        "intro": [
          "In these lectures, you will learn about the array methods for performing more advanced operations like getting the position of an item in an array, checking if an array contains a certain element, copying an array, and lots more."
        ]
      },
      "review-javascript-arrays": {
        "title": "JavaScript Arrays Review",
        "intro": [
          "Before you're quizzed on JavaScript arrays, you should review what you've learned about them.",
          "Open up this page to review concepts like array destructuring, how to add and remove elements from an array, and more."
        ]
      },
      "quiz-javascript-arrays": {
        "title": "JavaScript Arrays Quiz",
        "intro": ["Test your knowledge of JavaScript arrays with this quiz."]
      }
    }
  },
  "introduction-to-objects-in-javascript": {
    "title": "Introduction to Objects in JavaScript",
    "summary": ["Learn the basics of objects in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with objects in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-introduction-to-javascript-objects-and-their-properties": {
        "title": "Introduction to JavaScript Objects and Their Properties",
        "intro": [
          "In these lectures, you will learn the fundamentals of JavaScript objects, including how to create them, access their properties, and understand the difference between primitive and non-primitive data types."
        ]
      },
      "lecture-working-with-json": {
        "title": "Working with JSON",
        "intro": [
          "In these lectures, you will learn about JavaScript Object Notation (JSON), including how to access JSON data and use the <code>JSON.parse()</code> and <code>JSON.stringify()</code> methods."
        ]
      },
      "lecture-working-with-optional-chaining-and-object-destructuring": {
        "title": "Working with Optional Chaining and Object Destructuring",
        "intro": [
          "In these lectures, you will learn about advanced object manipulation techniques in JavaScript, including the optional chaining operator and object destructuring syntax."
        ]
      },
      "workshop-recipe-tracker": {
        "title": "Build a Recipe Tracker",
        "intro": [
          "In this workshop, you will review working with JavaScript objects by building a recipe tracker."
        ]
      },
      "lab-quiz-game": {
        "title": "Build a Quiz Game",
        "intro": [
          "In this lab, you'll build a quiz game using JavaScript arrays and objects.",
          "You'll also practice using functions to randomly select a question and an answer from an array and compare them."
        ]
      },
      "lab-record-collection": {
        "title": "Build a Record Collection",
        "intro": [
          "In this lab you will build a function to manage a record collection."
        ]
      },
      "review-javascript-objects": {
        "title": "JavaScript Objects Review",
        "intro": [
          "Before you're quizzed on JavaScript objects, you should review what you've learned about them.",
          "Open up this page to review concepts including how to access information from objects, object destructuring, working with JSON, and more."
        ]
      },
      "quiz-javascript-objects": {
        "title": "JavaScript Objects Quiz",
        "intro": ["Test your knowledge of JavaScript objects with this quiz."]
      }
    }
  },
  "introduction-to-loops-in-javascript": {
    "title": "Introduction to Loops in JavaScript",
    "summary": ["Learn the basics of loops in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with loops in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-loops": {
        "title": "Working with Loops",
        "intro": [
          "Loops are an essential part of JavaScript. That's why the following lectures have been prepared for you to learn about the different types of loops and how they work, and also how iteration works."
        ]
      },
      "workshop-sentence-analyzer": {
        "title": "Build a Sentence Analyzer",
        "intro": [
          "In this workshop, you'll review how to work with JavaScript loops by building a sentence analyzer app."
        ]
      },
      "lab-longest-word-in-a-string": {
        "title": "Build a Longest Word Finder App",
        "intro": [
          "In this lab, you will use JavaScript loops to find the length of the longest word in the given sentence."
        ]
      },
      "lab-factorial-calculator": {
        "title": "Build a Factorial Calculator ",
        "intro": [
          "In this lab, you'll build a factorial calculator.",
          "You'll practice using loops and conditionals to calculate the factorial of a number."
        ]
      },
      "lab-mutations": {
        "title": "Implement the Mutations Algorithm",
        "intro": [
          "In this lab, you will practice iterating over two different strings to compare their characters."
        ]
      },
      "lab-chunky-monkey": {
        "title": "Implement the Chunky Monkey Algorithm",
        "intro": [
          "In this lab, you will practice dividing an array into smaller arrays with the technique of your choice."
        ]
      },
      "lab-profile-lookup": {
        "title": "Build a Profile Lookup",
        "intro": [
          "In this lab, you'll create a function that looks up profile information."
        ]
      },
      "lab-repeat-a-string": {
        "title": "Build a String Repeating Function",
        "intro": [
          "In this lab, you will implement loops to repeat a string a specified number of times."
        ]
      },
      "lab-missing-letter-detector": {
        "title": "Build a Missing Letter Detector",
        "intro": [
          "In this lab, you will build a function that finds the missing letter in a given range of consecutive letters and returns it."
        ]
      },
      "review-javascript-loops": {
        "title": "JavaScript Loops Review",
        "intro": [
          "Before you're quizzed on the different JavaScript loops, you should review them.",
          "Open up this page to review the <code>for...of</code> loop, <code>while</code> loop, <code>break and continue</code> statements and more."
        ]
      },
      "quiz-javascript-loops": {
        "title": "JavaScript Loops Quiz",
        "intro": ["Test your knowledge of JavaScript loops with this quiz."]
      }
    }
  },
  "javascript-fundamentals-review": {
    "title": "JavaScript Fundamentals Review",
    "summary": ["Review the core concepts of JavaScript."],
    "intro": [
      "In this interactive course, you will practice core JavaScript fundamentals including loops, objects, arrays and more."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-types-and-objects": {
        "title": "Working with Types and Objects",
        "intro": [
          "In these lectures you will learn about string objects, the <code>toString()</code> method, the <code>Number</code> constructor and more."
        ]
      },
      "lecture-working-with-arrays-variables-and-naming-practices": {
        "title": "Working with Arrays, Variables, and Naming Practices",
        "intro": [
          "In these lectures you will learn about common practices for naming variables and functions, and how to work with arrays."
        ]
      },
      "lecture-working-with-code-quality-and-execution-concepts": {
        "title": "Working with Code Quality and Execution Concepts",
        "intro": [
          "In these lectures you will learn what are linters and formatters, what is memory management, and closures."
        ]
      },
      "lab-reverse-a-string": {
        "title": "Build a String Inverter",
        "intro": [
          "In this lab, you create a function that reverses a given string."
        ]
      },
      "lab-largest-number-finder": {
        "title": "Build the Largest Number Finder",
        "intro": [
          "In this lab, you will use JavaScript fundamentals to create a function that finds the largest number in each sub-array of a given array."
        ]
      },
      "lab-first-element-finder": {
        "title": "Build a First Element Finder",
        "intro": [
          "In this lab, you will create a function that looks through an array and returns the first element in it that passes a \"truth test\"."
        ]
      },
      "lab-slice-and-splice": {
        "title": "Implement the Slice and Splice Algorithm",
        "intro": [
          "In this lab, you will practice merging an array with another."
        ]
      },
      "lab-pyramid-generator": {
        "title": "Build a Pyramid Generator",
        "intro": [
          "In this lab you'll build a pyramid generator.",
          "You'll take a number as input and generate a pyramid with that many levels using a loop."
        ]
      },
      "lab-gradebook-app": {
        "title": "Build a Gradebook App",
        "intro": [
          "For this lab, you'll create a gradebook app.",
          "You'll practice conditionals to determine the student's grade based on their score."
        ]
      },
      "lecture-the-var-keyword-and-hoisting": {
        "title": "The var Keyword and Hoisting",
        "intro": [
          "In these lectures, you will learn about the <code>var</code> keyword and why it is not recommended for use anymore. You will also learn about hoisting in JavaScript so you can avoid subtle bugs in your code."
        ]
      },
      "lab-title-case-converter": {
        "title": "Build a Title Case Converter",
        "intro": [
          "In this lab, you will build a function that converts a string to title case."
        ]
      },
      "lab-falsy-remover": {
        "title": "Implement a Falsy Remover",
        "intro": [
          "In this lab, you will create a function that removes all falsy values from an array."
        ]
      },
      "lab-inventory-management-program": {
        "title": "Build an Inventory Management Program",
        "intro": [
          "For this lab, you'll build an inventory management program using JavaScript.",
          "You'll use JavaScript array of objects to manage the inventory."
        ]
      },
      "lecture-understanding-modules-imports-and-exports": {
        "title": "Understanding Modules, Imports, and Exports",
        "intro": [
          "In this lecture, you will learn about modules, imports, and exports in JavaScript."
        ]
      },
      "lecture-working-with-the-arguments-object-and-rest-parameters": {
        "title": "Working With the Arguments Object and Rest Parameters",
        "intro": [
          "In these lessons, you will learn how to work with the <code>arguments</code> object and rest parameter syntax."
        ]
      },
      "lab-unique-sorted-union": {
        "title": "Implement a Unique Sorted Union",
        "intro": [
          "In this lab, you will create a function that takes two or more arrays and returns a new array of unique values in the order of the original provided arrays."
        ]
      },
      "lab-password-generator": {
        "title": "Build a Password Generator App",
        "intro": [
          "In this lab, you'll build a password generator app based on the user's input."
        ]
      },
      "lab-sum-all-numbers-algorithm": {
        "title": "Design a Sum All Numbers Algorithm",
        "intro": [
          "In this lab, you will design a sum all numbers algorithm. This algorithm takes an array of two numbers and returns the sum of those two numbers plus the sum of all the numbers between them."
        ]
      },
      "lab-dna-pair-generator": {
        "title": "Implement a DNA Pair Generator",
        "intro": [
          "In this lab you will implement a DNA base pairing algorithm that converts a single DNA strand into complementary base pairs."
        ]
      },
      "lab-html-entitiy-converter": {
        "title": "Implement an HTML Entity Converter",
        "intro": [
          "In this lab, you will convert special characters in a string to their corresponding HTML entities."
        ]
      },
      "lab-odd-fibonacci-sum-calculator": {
        "title": "Build an Odd Fibonacci Sum Calculator",
        "intro": [
          "In this lab you will build an odd Fibonacci sum calculator that takes a number and returns the sum of all odd Fibonacci numbers that are less than or equal to that number."
        ]
      },
      "lab-element-skipper": {
        "title": "Implement an Element Skipper",
        "intro": [
          "In this lab you will create a function that skips elements in an array based on a specified step value."
        ]
      },
      "review-javascript-fundamentals": {
        "title": "JavaScript Fundamentals Review",
        "intro": [
          "Before you are quizzed on JavaScript fundamentals, you first need to review the concepts.",
          "Open up this page to review concepts like closures, memory management, and more."
        ]
      },
      "quiz-javascript-fundamentals": {
        "title": "JavaScript Fundamentals Quiz",
        "intro": [
          "Test your knowledge of JavaScript fundamentals with this quiz."
        ]
      }
    }
  },
  "introduction-to-higher-order-functions-and-callbacks-in-javascript": {
    "title": "Introduction to Higher-Order Functions and Callbacks in JavaScript",
    "summary": [
      "Learn the basics of higher-order functions and callbacks in JavaScript."
    ],
    "intro": [
      "In this interactive course, you will learn how to work with higher-order functions and callbacks in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-higher-order-functions-and-callbacks": {
        "title": "Working with Higher Order Functions and Callbacks",
        "intro": [
          "In these lectures, you will learn how to work with higher order functions and callbacks. The higher order functions you will learn include <code>map()</code>, <code>filter()</code>, <code>reduce()</code>, <code>sort()</code>, <code>every()</code>, and <code>some()</code>. You will also learn how to chain these methods together to achieve your desired results."
        ]
      },
      "workshop-library-manager": {
        "title": "Build a Library Manager",
        "intro": [
          "In this workshop, you will learn higher order array methods by building a library manager."
        ]
      },
      "lab-book-organizer": {
        "title": "Build a Book Organizer",
        "intro": [
          "In this lab, you'll build a book organizer using higher order functions in JavaScript."
        ]
      },
      "lab-sorted-index-finder": {
        "title": "Implement a Sorted Index Finder",
        "intro": [
          "In this lab, you will create a function that finds the index at which a given number should be inserted into a sorted array to maintain the array's sorted order."
        ]
      },
      "lab-symmetric-difference": {
        "title": "Build a Symmetric Difference Function",
        "intro": [
          "In this lab, you will practice using higher order functions to find the symmetric difference between two arrays."
        ]
      },
      "lab-value-remover-function": {
        "title": "Implement a Value Remover Function",
        "intro": [
          "In this lab, you will create a function that removes all instances of a specified value from an array."
        ]
      },
      "lab-matching-object-filter": {
        "title": "Implement a Matching Object Filter",
        "intro": [
          "In this lab, you will create a function that looks through an array of objects and returns an array of all objects that have matching property and value pairs."
        ]
      },
      "lab-prime-number-sum-calculator": {
        "title": "Build a Prime Number Sum Calculator",
        "intro": [
          "In this lab you will build a prime number sum calculator that takes a number and returns the sum of all prime numbers that are less than or equal to that number."
        ]
      },
      "lab-range-based-lcm-calculator": {
        "title": "Implement a Range-Based LCM Calculator",
        "intro": [
          "In this lab, you will create a function that takes an array of two numbers and returns the least common multiple (LCM) of those two numbers and all the numbers between them."
        ]
      },
      "lab-deep-flattening-tool": {
        "title": "Create a Deep Flattening Tool",
        "intro": [
          "In this lab you will create a function that can flatten deeply nested arrays, handling any level of nesting without using built-in flat methods."
        ]
      },
      "lab-all-true-property-validator": {
        "title": "Build an All-True Property Validator",
        "intro": [
          "In this lab you will build a function that checks if all objects in an array have a truthy value for a specific property."
        ]
      },
      "review-javascript-higher-order-functions": {
        "title": "JavaScript Higher Order Functions Review",
        "intro": [
          "Before you're quizzed on JavaScript higher order functions, you should review them.",
          "Open up this page to review concepts including how to work with the <code>map()</code>, <code>filter()</code>, and <code>reduce()</code> methods."
        ]
      },
      "quiz-javascript-higher-order-functions": {
        "title": "JavaScript Higher Order Functions Quiz",
        "intro": [
          "Test what you've learned about JavaScript higher order functions with this quiz."
        ]
      }
    }
  },
  "learn-dom-manipulation-and-events-with-javascript": {
    "title": "Learn DOM Manipulation and Events with JavaScript",
    "summary": [
      "Learn how to manipulate the DOM and work with events in JavaScript."
    ],
    "intro": [
      "In this interactive course, you will learn how to manipulate the DOM and work with events in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-the-dom-click-events-and-web-apis": {
        "title": "Working with the DOM, Click Events, and Web APIs",
        "intro": [
          "In these lectures, you will learn how to work with the Document Object Model (DOM), the <code>addEventListener()</code> method and events, and web APIs."
        ]
      },
      "workshop-storytelling-app": {
        "title": "Build a Storytelling App",
        "intro": [
          "In this workshop, you will build a storytelling app that will allow you to list different stories based on genre."
        ]
      },
      "workshop-emoji-reactor": {
        "title": "Build an Emoji Reactor",
        "intro": [
          "In this workshop, you will build an emoji reactor to practice <code>querySelector</code> and <code>querySelectorAll</code>."
        ]
      },
      "lab-favorite-icon-toggler": {
        "title": "Build a Favorite Icon Toggler",
        "intro": [
          "In this lab, you'll build a favorite icon toggler by utilizing JavaScript click events."
        ]
      },
      "lecture-understanding-the-event-object-and-event-delegation": {
        "title": "Understanding the Event Object and Event Delegation",
        "intro": [
          "In these lectures, you will learn about the event object, the change event, event bubbling, and event delegation."
        ]
      },
      "workshop-music-instrument-filter": {
        "title": "Build a Music Instrument Filter",
        "intro": [
          "In this workshop, you will build a music instrument filter with JavaScript."
        ]
      },
      "lab-real-time-counter": {
        "title": "Build a Real Time Counter",
        "intro": [
          "In this lab, you'll build a real-time character counter",
          "You'll practice how to work with the <code>input</code> event when the user types in the input field."
        ]
      },
      "lab-lightbox-viewer": {
        "title": "Build a Lightbox Viewer",
        "intro": [
          "In this lab, you'll build a lightbox viewer for viewing images in a focused mode.",
          "You'll practice click events and toggling classes."
        ]
      },
      "workshop-rps-game": {
        "title": "Build a Rock, Paper, Scissors Game",
        "intro": [
          "In this workshop, you will review DOM manipulation and events by building a Rock, Paper, Scissors Game."
        ]
      },
      "lab-football-team-cards": {
        "title": "Build a Set of Football Team Cards",
        "intro": [
          "In this lab, you'll use DOM manipulation, object destructuring, event handling, and data filtering to build a set of football team cards."
        ]
      },
      "review-dom-manipulation-and-click-events-with-javascript": {
        "title": "DOM Manipulation and Click Events with JavaScript Review",
        "intro": [
          "Before you're quizzed on the DOM, you should review what you've learned about it.",
          "Open up this page to review concepts including how to work with the <code>DOM</code>, <code>Web APIs</code>, the <code>addEventListener()</code> method, change events, event bubbling and more."
        ]
      },
      "quiz-dom-manipulation-and-click-event-with-javascript": {
        "title": "DOM Manipulation and Click Events with JavaScript Quiz",
        "intro": [
          "Test your knowledge of DOM manipulation and click events in JavaScript with this quiz."
        ]
      }
    }
  },
  "introduction-to-javascript-and-accessibility": {
    "title": "Introduction to JavaScript and Accessibility",
    "summary": ["Learn how to use JavaScript to enhance web accessibility."],
    "intro": [
      "In this interactive course, you will learn how to use JavaScript to enhance web accessibility."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-aria-expanded-aria-live-and-common-aria-states": {
        "title": "Understanding aria-expanded, aria-live, and Common ARIA States",
        "intro": [
          "In these lectures you will learn more about ARIA attributes like <code>aria-expanded</code>, <code>aria-live</code>, and common ARIA states."
        ]
      },
      "workshop-planets-tablist": {
        "title": "Build a Planets Tablist",
        "intro": [
          "In this workshop, you will build a dynamic tabbed interface that showcases facts about the planets in the solar system."
        ]
      },
      "workshop-note-taking-app": {
        "title": "Build a Note Taking App",
        "intro": [
          "In this workshop, you are going to build an accessible note taking app.",
          "This will provide you with the opportunity to practice working with <code>aria-live</code> attribute."
        ]
      },
      "lab-theme-switcher": {
        "title": "Build a Theme Switcher",
        "intro": [
          "In this lab, you will build a theme switcher and practice working with the <code>aria-haspopup</code>, <code>aria-expanded</code>, and <code>aria-controls</code> attributes."
        ]
      },
      "review-js-a11y": {
        "title": "JavaScript and Accessibility Review",
        "intro": [
          "Before you're quizzed on JavaScript and accessibility, you should review what you've learned about it.",
          "Open up this page to review concepts including how to work with the <code>aria-expanded</code>, <code>aria-live</code>, and <code>aria-controls</code> attributes."
        ]
      },
      "quiz-js-a11y": {
        "title": "JavaScript and Accessibility Quiz",
        "intro": [
          "Test your knowledge of JavaScript and accessibility best practices with this quiz."
        ]
      }
    }
  },
  "learn-javascript-debugging": {
    "title": "Learn JavaScript Debugging",
    "summary": ["Learn how to debug JavaScript code effectively."],
    "intro": [
      "In this interactive course, you will learn how to debug JavaScript code."
    ],
    "note": "",
    "blocks": {
      "lecture-debugging-techniques": {
        "title": "Debugging Techniques",
        "intro": [
          "In these lectures, you will learn about the common errors in JavaScript and the techniques you can use to fix them – a process called debugging."
        ]
      },
      "lab-random-background-color-changer": {
        "title": "Debug a Random Background Color Changer",
        "intro": [
          "In this lab, you'll debug a random background color changer and fix the errors to make it work properly."
        ]
      },
      "review-debugging-javascript": {
        "title": "Debugging JavaScript Review",
        "intro": [
          "Before you're quizzed on common debugging techniques, you should review what you've learned.",
          "Open up this page to review concepts including how to work with the <code>throw statement</code>, <code>try...catch...finally</code> and more."
        ]
      },
      "quiz-debugging-javascript": {
        "title": "Debugging JavaScript Quiz",
        "intro": ["Test your knowledge of JavaScript debugging with this quiz."]
      }
    }
  },
  "learn-basic-regex-with-javascript": {
    "title": "Learn Basic Regex with JavaScript",
    "summary": ["Learn the basics of regular expressions in JavaScript."],
    "intro": [
      "In this interactive course, you will learn the fundamentals of regular expressions and how to use them in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-regular-expressions": {
        "title": "Working with Regular Expressions",
        "intro": [
          "In these lectures, you will learn about regular expressions in JavaScript. You will learn about the methods for working with regular expressions, modifiers, character classes, lookaheads, lookbehinds, back-references, quantifiers, and more."
        ]
      },
      "workshop-spam-filter": {
        "title": "Build a Spam Filter",
        "intro": [
          "Regular expressions, often shortened to \"regex\" or \"regexp\", are patterns that help programmers match, search, and replace text. Regular expressions are powerful, but can be difficult to understand because they use so many special characters.",
          "In this workshop, you'll use capture groups, positive lookaheads, negative lookaheads, and other techniques to match any text you want."
        ]
      },
      "lab-palindrome-checker": {
        "title": "Build a Palindrome Checker",
        "intro": [
          "For this lab, you'll build an application that checks whether a given word is a palindrome."
        ]
      },
      "lab-regex-sandbox": {
        "title": "Build a RegEx Sandbox",
        "intro": ["In this lab you'll build a regex sandbox."]
      },
      "lab-spinal-case-converter": {
        "title": "Implement a Spinal Case Converter",
        "intro": [
          "In this lab, you will create a function that converts a given string to spinal case which is a style of writing where all letters are lowercase and separated by hyphens."
        ]
      },
      "lab-pig-latin": {
        "title": "Implement a Pig Latin Translator",
        "intro": [
          "In this lab, you'll implement a Pig Latin translator using JavaScript.",
          "You'll practice string manipulation, conditional logic, and regular expressions."
        ]
      },
      "lab-smart-word-replacement": {
        "title": "Build a Smart Word Replacement Function",
        "intro": [
          "In this lab, you will use regex to create a function that performs a search and replace operation on a given string."
        ]
      },
      "lab-markdown-to-html-converter": {
        "title": "Build a Markdown to HTML Converter",
        "intro": [
          "For this lab, you'll build a Markdown to HTML converter using JavaScript.",
          "You'll practice regular expressions, string manipulation, and more."
        ]
      },
      "review-javascript-regular-expressions": {
        "title": "JavaScript Regular Expressions Review",
        "intro": [
          "Before you're quizzed on Regular Expressions, you should review what you've learned.",
          "Open up this page to review concepts like lookaheads, lookbehinds, common regex modifiers and more."
        ]
      },
      "quiz-javascript-regular-expressions": {
        "title": "JavaScript Regular Expressions Quiz",
        "intro": [
          "Test your knowledge of JavaScript Regular Expressions with this quiz."
        ]
      }
    }
  },
  "introduction-to-dates-in-javascript": {
    "title": "Introduction to Dates in JavaScript",
    "summary": ["Learn how to work with dates in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with dates in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-dates": {
        "title": "Working with Dates",
        "intro": [
          "In these lectures, you will learn about the JavaScript date object. You will learn about the methods for working with dates and how to format dates."
        ]
      },
      "lab-date-conversion": {
        "title": "Build a Date Conversion Program",
        "intro": [
          "In this lab, you'll build a program to convert a date from one format to another."
        ]
      },
      "review-javascript-dates": {
        "title": "JavaScript Dates Review",
        "intro": [
          "Before you're quizzed on working with dates, you should review what you've learned.",
          "Open up this page to review the <code>Date()</code> object and common methods."
        ]
      },
      "quiz-javascript-dates": {
        "title": "JavaScript Dates Quiz",
        "intro": [
          "Test what you've learned about JavaScript Dates with this quiz."
        ]
      }
    }
  },
  "learn-audio-and-video-events-with-javascript": {
    "title": "Learn Audio and Video Events with JavaScript",
    "summary": ["Learn how to work with audio and video events in JavaScript."],
    "intro": [
      "In this interactive course, you will learn how to work with audio and video events in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-audio-and-video": {
        "title": "Working with Audio and Video",
        "intro": [
          "In these lectures, you will learn how to work with audio and video files using JavaScript. You will learn about the <code>Audio</code> and <code>Video</code> constructors, their methods and properties, audio and video formats, codecs, the <code>HTMLMediaElement</code> API, and much more."
        ]
      },
      "workshop-music-player": {
        "title": "Build a Music Player",
        "intro": [
          "In this workshop, you'll code a basic MP3 player using HTML, CSS, and JavaScript.",
          "The project covers fundamental concepts such as handling audio playback, managing a playlist, implementing play, pause, next, and previous functionalities and dynamically update your user interface based on the current song."
        ]
      },
      "lab-drum-machine": {
        "title": "Build a Drum Machine",
        "intro": [
          "For this lab you will use the <code>audio</code> element to build a drum machine."
        ]
      },
      "review-javascript-audio-and-video": {
        "title": "JavaScript Audio and Video Review",
        "intro": [
          "Before you're quizzed on working with audio and video in JavaScript, you should review what you've learned about them.",
          "Open up this page to review concepts including the <code>Audio</code> constructor, the <code>HTMLMediaElement</code> API and more."
        ]
      },
      "quiz-javascript-audio-and-video": {
        "title": "JavaScript Audio and Video Quiz",
        "intro": [
          "Test what you've learned about JavaScript audio and video with this quiz."
        ]
      }
    }
  },
  "introduction-to-maps-and-sets-in-javascript": {
    "title": "Introduction to Maps and Sets in JavaScript",
    "summary": ["Learn about the Map and Set objects in JavaScript."],
    "intro": [
      "In this interactive course, you will learn about the Map and Set objects in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-maps-and-sets": {
        "title": "Working with Maps and Sets",
        "intro": [
          "In these lectures, you will learn about JavaScript <code>Map</code> and <code>Set</code>. You will also learn how they both differ from <code>WeakSets</code> and <code>WeakMaps</code>."
        ]
      },
      "workshop-plant-nursery-catalog": {
        "title": "Build a Plant Nursery Catalog",
        "intro": [
          "In this workshop, you will practice using Maps and Sets by building a plant nursery catalog."
        ]
      },
      "lab-voting-system": {
        "title": "Build a Voting System",
        "intro": [
          "In this lab, you'll build a voting system using Maps and Sets.",
          "You'll practice how to use the <code>Map</code> object to store key-value pairs and the <code>Set</code> object to store unique values."
        ]
      },
      "review-javascript-maps-and-sets": {
        "title": "JavaScript Maps and Sets Review",
        "intro": [
          "Before you're quizzed on JavaScript Maps and Sets, you should review what you've learned about them.",
          "Open up this page to review concepts such as the <code>Map</code> and <code>Set</code> objects, as well as WeakSet and WeakMap."
        ]
      },
      "quiz-javascript-maps-and-sets": {
        "title": "JavaScript Maps and Sets Quiz",
        "intro": [
          "Test what you've learned about JavaScript Maps and Sets with this quiz."
        ]
      }
    }
  },
  "learn-localstorage-and-crud-operations-with-javascript": {
    "title": "Learn localStorage and CRUD Operations with JavaScript",
    "summary": [
      "Learn how to use localStorage and perform CRUD operations in JavaScript."
    ],
    "intro": [
      "In this interactive course, you will learn how to use localStorage and perform CRUD operations in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-working-with-client-side-storage-and-crud-operations": {
        "title": "Working with Client-Side Storage and CRUD Operations",
        "intro": [
          "In these lectures, you will learn about client-side storage and CRUD operations in JavaScript. You will learn about <code>localStorage</code> and <code>sessionStorage</code> alongside their methods and properties, cookies, the Cache API, IndexedDB, and much more."
        ]
      },
      "workshop-todo-app": {
        "title": "Build a Todo App using Local Storage",
        "intro": [
          "Local storage is a web browser feature that lets web applications store key-value pairs persistently within a user's browser. This allows web apps to save data during one session, then retrieve it in a later page session.",
          "In this workshop, you'll learn how to handle form inputs, manage local storage, perform CRUD (Create, Read, Update, Delete) operations on tasks, implement event listeners, and toggle UI elements."
        ]
      },
      "lab-bookmark-manager-app": {
        "title": "Build a Bookmark Manager App",
        "intro": [
          "For this lab, you'll build a bookmark manager app.",
          "You'll utilize local storage to store bookmarks, and practice how to add, remove, and display bookmarks."
        ]
      },
      "review-local-storage-and-crud": {
        "title": "Local Storage and CRUD Review",
        "intro": [
          "Before you are quizzed on working with <code>localStorage</code>, you first need to review the concepts.",
          "Open up this page to review the <code>localStorage</code> property, <code>sessionStorage</code> property and more."
        ]
      },
      "quiz-local-storage-and-crud": {
        "title": "Local Storage and CRUD Quiz",
        "intro": [
          "Test what you've learned about local storage and CRUD with this quiz."
        ]
      }
    }
  },
  "introduction-to-javascript-classes": {
    "title": "Introduction to JavaScript Classes",
    "summary": ["Learn about classes in JavaScript and how to use them."],
    "intro": [
      "In this interactive course, you will learn about classes in JavaScript and how to use them."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-how-to-work-with-classes-in-javascript": {
        "title": "Understanding How to Work with Classes in JavaScript",
        "intro": [
          "In these lectures, you will learn about classes in JavaScript. You will learn about inheritance, the <code>this</code> keyword, static properties and methods, and more."
        ]
      },
      "workshop-shopping-cart": {
        "title": "Build a Shopping Cart",
        "intro": [
          "In this workshop you'll create a shopping cart using JavaScript classes.",
          "You will practice how to use the this keyword, create class instances, implement methods for data manipulation and more."
        ]
      },
      "lab-project-idea-board": {
        "title": "Build a Project Idea Board",
        "intro": [
          "In this lab, you'll build a project idea board using OOP in JavaScript.",
          "You'll practice how to create classes, add methods to classes, and create instances of classes."
        ]
      },
      "lab-bank-account-manager": {
        "title": "Build a Bank Account Management Program",
        "intro": [
          "In this lab, you'll build a simple transaction management system for a bank account."
        ]
      },
      "review-javascript-classes": {
        "title": "JavaScript Classes Review",
        "intro": [
          "Before you're quizzed on how to work with classes, you should review what you've learned about them.",
          "Open up this page to review concepts including the <code>this</code> keyword, class inheritance and more."
        ]
      },
      "quiz-javascript-classes": {
        "title": "JavaScript Classes Quiz",
        "intro": [
          "Test what you've learned about JavaScript classes with this quiz."
        ]
      }
    }
  },
  "learn-recursion-with-javascript": {
    "title": "Learn Recursion with JavaScript",
    "summary": [
      "Understand the concept of recursion and how to implement it in JavaScript."
    ],
    "intro": [
      "In this interactive course, you'll learn about recursion in JavaScript and how to use it to solve problems."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-recursion-and-the-call-stack": {
        "title": "Understanding Recursion and the Call Stack",
        "intro": [
          "In this lecture, you will learn about recursion and the call stack."
        ]
      },
      "workshop-countup": {
        "title": "Build a Countup",
        "intro": [
          "In this workshop you will build a countup function that returns an array of numbers counting up from 1 to a given number."
        ]
      },
      "lab-countdown": {
        "title": "Build a Countdown",
        "intro": [
          "For this lab, you will build a countdown function that returns an array of numbers counting down from given number to 1."
        ]
      },
      "lab-range-of-numbers": {
        "title": "Build a Range of Numbers Generator",
        "intro": [
          "In this lab, you'll use recursion to generate an array of numbers within a specified range.",
          "You'll practice recursive function calls, base cases, and building arrays through recursion."
        ]
      },
      "workshop-decimal-to-binary-converter": {
        "title": "Build a Decimal to Binary Converter",
        "intro": [
          "Recursion is a programming concept where a function calls itself. This can reduce a complex problem into simpler sub-problems, until they become straightforward to solve.",
          "In this workshop, you'll build a decimal-to-binary converter using JavaScript. You'll practice the fundamental concepts of recursion, explore the call stack, and build out a visual representation of the recursion process through an animation."
        ]
      },
      "lab-permutation-generator": {
        "title": "Build a Permutation Generator",
        "intro": [
          "For this lab, you'll build a permutation generator that produces all possible permutations of a given string."
        ]
      },
      "review-recursion": {
        "title": "Recursion Review",
        "intro": [
          "Before you're quizzed on recursion, you should review what you've learned.",
          "Open up this page to review what is recursion and what is it used for."
        ]
      },
      "quiz-recursion": {
        "title": "Recursion Quiz",
        "intro": ["Test your knowledge of Recursion with this quiz."]
      }
    }
  },
  "introduction-to-functional-programming-with-javascript": {
    "title": "Introduction to Functional Programming with JavaScript",
    "summary": [
      "Learn the fundamentals of functional programming in JavaScript."
    ],
    "intro": [
      "In this interactive course, you will learn about functional programming concepts and techniques in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-functional-programming": {
        "title": "Understanding Functional Programming",
        "intro": [
          "In these lectures, you will learn about functional programming and how to nest functions using a technique called currying."
        ]
      },
      "workshop-recipe-ingredient-converter": {
        "title": "Build a Recipe Ingredient Converter",
        "intro": [
          "In the previous lectures, you learned the core concepts behind functional programming and currying.",
          "Now you will be able to apply what you have learned about currying and functional programming by building a recipe ingredient converter application."
        ]
      },
      "lab-optional-arguments-sum-function": {
        "title": "Build an Optional Arguments Sum Function",
        "intro": [
          "In this lab you will build a function that accepts up to two arguments, and sum them, but if there is only one argument returns a function that waits for the second number to sum."
        ]
      },
      "lab-sorting-visualizer": {
        "title": "Build a Sorting Visualizer",
        "intro": [
          "For this lab, you'll use JavaScript to visualize the steps that the Bubble Sort algorithm takes to reorder an array of integers."
        ]
      },
      "review-javascript-functional-programming": {
        "title": "JavaScript Functional Programming Review",
        "intro": [
          "Before you're quizzed on functional programming, you should review what you've learned.",
          "Open up this page to review concepts on functional programming, currying and more."
        ]
      },
      "quiz-javascript-functional-programming": {
        "title": "JavaScript Functional Programming Quiz",
        "intro": [
          "Test what you've learned about JavaScript functional programming with this quiz."
        ]
      }
    }
  },
  "introduction-to-asynchronous-javascript": {
    "title": "Introduction to Asynchronous JavaScript",
    "summary": [
      "Learn the fundamentals of asynchronous programming in JavaScript."
    ],
    "intro": [
      "In this interactive course, you will learn about asynchronous programming concepts and techniques in JavaScript."
    ],
    "note": "",
    "blocks": {
      "lecture-understanding-asynchronous-programming": {
        "title": "Understanding Asynchronous Programming",
        "intro": [
          "In these lectures, you will learn about asynchronous programming in JavaScript. You will learn about the differences between synchronous and asynchronous programming, how the <code>async</code> keyword works, the <code>Fetch</code> API, promises, <code>async/await</code>, the <code>Geolocation</code> API, and much more."
        ]
      },
      "workshop-fcc-authors-page": {
        "title": "Build an fCC Authors Page",
        "intro": [
          "One common aspect of web development is learning how to fetch data from an external API, then work with asynchronous JavaScript.",
          "In this workshop you will practice how to use the fetch method, dynamically update the DOM to display the fetched data and paginate your data so you can load results in batches."
        ]
      },
      "lab-fcc-forum-leaderboard": {
        "title": "Build an fCC Forum Leaderboard",
        "intro": [
          "For this lab you'll practice asynchronous JavaScript by coding your own freeCodeCamp forum leaderboard."
        ]
      },
      "lab-weather-app": {
        "title": "Build a Weather App",
        "intro": [
          "In this lab you'll build a Weather App using an API",
          "You'll practice how to fetch data from the API, store and display it on your app."
        ]
      },
      "review-asynchronous-javascript": {
        "title": "Asynchronous JavaScript Review",
        "intro": [
          "Review asynchronous JavaScript concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-asynchronous-javascript": {
        "title": "Asynchronous JavaScript Quiz",
        "intro": [
          "Test what you've learned about asynchronous JavaScript with this quiz."
        ]
      }
    }
  },
  "information-security": {
    "title": "信息安全",
    "intro": [
      "通過我們在線上的一切行爲，我們的電子郵件地址、密碼、電話號碼等等大量敏感信息處於風險之中。",
      "通過信息安全認證，你將使用 HelmetJS 構建安全的 Web 應用程序，以學習信息安全的基礎知識。",
      "你還將使用 Python 構建一個 TCP 客戶端以及一個 Nmap 和端口掃描程序，從而學習滲透測試的基礎知識。滲透測試是良好信息安全的重要組成部分。"
    ],
    "note": "",
    "blocks": {
      "information-security-with-helmetjs": {
        "title": "HelmetJS 與信息安全",
        "intro": [
          "這個課程的重點是 HelmetJS。HelmetJS 是一種用於基於 Express 的應用程序的中間件，可以自動設置 HTTP 標頭。這樣，它可以防止敏感信息被無意間在服務器和客戶端之間傳遞。",
          "以下課程將幫助你瞭解如何保護你的網站免遭惡意攻擊。"
        ]
      },
      "python-for-penetration-testing": {
        "title": "Python 與滲透測試",
        "intro": [
          "這些視頻課程教你使用 Python 進行滲透測試。滲透測試（penetration testing）也叫作 “pen test”，它是對系統的模擬攻擊，以檢查漏洞。",
          "在這個課程中，你將學習套接字、創建 TCP 服務器和客戶端、構建 Nmap 掃描儀以及滲透測試人員日常使用的其他工具和技術。"
        ]
      },
      "information-security-projects": {
        "title": "信息安全項目",
        "intro": [
          "現在是時候運用你的信息安全技能了。通過這些項目，你可以運用所學的信息安全技能、原理和概念。",
          "完成後，您將擁有大量的信息安全項目，並獲得認證，你可以向朋友、家人和僱主炫耀的證書。"
        ]
      }
    }
  },
  "machine-learning-with-python": {
    "title": "Python 機器學習",
    "intro": [
      "機器學習有許多實際應用程序，你可以在項目中或工作中使用它們。",
      "在這個認證中，你將使用 TensorFlow 框架構建多個神經網絡，同時，你將探索更先進的技術，例如自然語言處理和強化學習。",
      "你還將學習神經網絡，並瞭解深度、遞歸和卷積神經網絡背後的原理。"
    ],
    "note": "",
    "blocks": {
      "tensorflow": {
        "title": "TensorFlow",
        "intro": [
          "TensorFlow 是一個開源框架，使機器學習和神經網絡更易於使用。",
          "以下視頻課程是由 Tim Ruscica 創建的，也叫作 “Tech With Tim”。這個課程將幫助你瞭解 TensorFlow 及它的一些強大功能。"
        ]
      },
      "how-neural-networks-work": {
        "title": "神經網絡如何工作",
        "intro": [
          "神經網絡是如今我們所謂的人工智能的核心。但是從歷史上看，它們一直很難理解，特別是對於機器學習領域的初學者來說。",
          "即使你剛開始學習神經網絡，Brandon Rohrer 的這些視頻課程也可以幫助你熟悉它的概念和它背後的數學知識。"
        ]
      },
      "machine-learning-with-python-projects": {
        "title": "Python 機器學習項目",
        "intro": [
          "機器學習有許多實際應用。通過完成這些免費且具有挑戰性的編程項目，你可以證明自己掌握了機器學習基礎知識，並獲得認證。"
        ]
      }
    }
  },
  "college-algebra-with-python": {
    "title": "Python 大學數學",
    "intro": [
      "本課程設計爲一個學期的大學課程。它包含教學視頻、用於交互式跟進的 Google Colaboratory 筆記本、任務和具有挑戰性的項目。",
      "當你按順序學習本課程的每個部分時，你將全面瞭解代數以及如何編寫 Python 代碼來解決代數問題。",
      "在整個課程中，你還將創建自己的代數 Colab 筆記本，你將能夠用作自定義計算器。 這門課程（以及你在這裏寫的代碼）將爲你理解深度數學和數據科學打下基礎。"
    ],
    "note": "",
    "blocks": {
      "learn-ratios-and-proportions": {
        "title": "學習比率和比例",
        "intro": [
          "你的旅程從學習如何創建一個可以運行 Python 代碼的 Colab 筆記本開始，然後你使用筆記本和視頻學習通過 Python 解決比率和比例問題。"
        ]
      },
      "learn-how-to-solve-for-x": {
        "title": "學習如何求解 X",
        "intro": [
          "這個單元將着重運用書面代數和 Python 代碼求解一個未知數（通常被稱爲 “x”）。"
        ]
      },
      "learn-fractions-and-decimals": {
        "title": "學習分數和小數",
        "intro": ["這個學習單元將側重於將小數轉換爲分數和百分比。"]
      },
      "learn-functions-and-graphing": {
        "title": "學習函數和圖像",
        "intro": ["這個單元將會教你數學函數。"]
      },
      "learn-linear-functions": {
        "title": "學習線性函數",
        "intro": ["這個單元將向你展示如何從兩個點來構建線性方程。"]
      },
      "learn-common-factors-and-square-roots": {
        "title": "學習公因數和平方根",
        "intro": [
          "在這個單元中，你將學習如何找到公因數和分解公因數。這將有助於簡化分數和簡化平方根式。"
        ]
      },
      "build-a-multi-function-calculator-project": {
        "title": "多功能計算器",
        "intro": [
          "這是你獲得認證必做的項目之一。",
          "在這個項目中，你將創建一個多功能計算器。"
        ]
      },
      "learn-how-to-graph-systems-of-equations": {
        "title": "學習如何繪製方程組對應的圖像",
        "intro": [
          "這個單位將側重於繪製同一座標平面上的兩個方程式的圖像，以便你可以看到線條相交的地方。"
        ]
      },
      "learn-how-to-solve-systems-of-equations": {
        "title": "學習如何解方程組",
        "intro": [
          "在這個單元中，你將學習如何求解一個由兩個方程式（兩個變量）組成的方程組，而無需圖像。 你將會看到如何用 Python 分解因式和求解某個變量。 學完這個單元，你將能用一個代碼塊來求解方程組並繪製圖像。"
        ]
      },
      "learn-applications-of-linear-systems": {
        "title": "學習線性方程組的應用",
        "intro": [
          "在這個單元中，你將看到如何使用你目前學到的代數來解決真實世界中的問題。"
        ]
      },
      "learn-quadratic-equations": {
        "title": "學習二次方程",
        "intro": [
          "這個單元將在線性方程的基礎上，結合指數和拋物線圖像。 你將學習如何在拋物線中找到關鍵點，以及如何解二次方程。"
        ]
      },
      "build-a-graphing-calculator-project": {
        "title": "圖形計算器",
        "intro": [
          "這是你獲得認證必做的項目之一。",
          "在這個項目中，你將創建一個圖形計算器。"
        ]
      },
      "learn-parent-graphs-and-polynomials": {
        "title": "學習父圖像和多項式",
        "intro": [
          "這個單元將顯示許多不同類型的“父”圖像，即構成更復雜圖像的基本模式。多項式是帶有“多件事”的數學表達式，是由基本模式構建的更復雜的方程式。你會看到這些圖像是什麼樣的、如何修改它們，以及如何使用 Python 代碼來做這一切。"
        ]
      },
      "build-three-math-games-project": {
        "title": "三個數學遊戲",
        "intro": [
          "這是你獲得認證必做的項目之一。",
          "在這個項目中，你將創建三個數學遊戲。"
        ]
      },
      "learn-business-applications-of-college-algebra": {
        "title": "學習大學代數的商業應用",
        "intro": [
          "這個單元將向你展示如何應用你的解答和繪圖技能來求解成本、收入和利潤。你將從兩個點寫代碼來開發一個需求函數。你將看到價格如何影響利潤圖，以及所有這些方程如何相互關聯。"
        ]
      },
      "learn-simple-and-compound-interest": {
        "title": "學習單利和複利",
        "intro": [
          "這個單位將向你展示如何計算利息、貸款支付和投資的估值。你將看到數學公式，並將其變成代碼。由於這些公式往往很複雜，因此你只需要修改一部分值的代碼。"
        ]
      },
      "learn-exponents-and-logarithms": {
        "title": "學習指數和對數",
        "intro": [
          "這個單元將向你展示指數和對數是反函數，以及你如何在各種應用程序中使用這些函數。"
        ]
      },
      "build-a-financial-calculator-project": {
        "title": "金融計算器",
        "intro": [
          "這是你獲得認證必做的項目之一。",
          "對於這個項目，你將創建一個財務計算器。"
        ]
      },
      "college-algebra-with-python-conclusion": {
        "title": "Python 大學數學：總結",
        "intro": [
          "這將是本課程的最後一個單元。讓我們看看如何能夠將你的數學和 Python 知識與外部數據連接起來。"
        ]
      },
      "build-a-data-graph-explorer-project": {
        "title": "數據圖表瀏覽器",
        "intro": [
          "這是你獲得認證必做的項目之一。",
          "對於這個項目，你將創建一個數據圖表瀏覽器。"
        ]
      }
    }
  },
  "python-for-everybody": {
    "title": "（舊版）通用 Python 課程",
    "intro": [
      "Python 是目前最流行的、最靈活的編程語言之一。你可以用它來做很多事，包括從基礎算法到機器學習。"
    ],
    "note": "",
    "blocks": {
      "python-for-everybody": {
        "title": "通用 Python 課程",
        "intro": [
          "通用 Python 課程是一個講解 Python 3 基礎的系列免費視頻課程。",
          "這些課程是 Dr. Charles Severance（Dr. Chuck）創建的。他是密歇根大學信息學院的教授，他教授各種技術課程，包括編程、數據庫設計和 web 開發。"
        ]
      }
    }
  },
  "coding-interview-prep": {
    "title": "面試攻略",
    "intro": [
      "如果你正在尋找免費的編程訓練來幫你爲下一個工作面試做準備，我們已經幫你準備好了。",
      "這個部分包含數十個編碼挑戰，旨在檢驗你對算法、數據結構和數學知識的掌握程度。同時還提供多個可帶回家完成的項目，可用於強化你的技能或豐富個人作品集。",
      "這個項目包含了來自 <a href=\"https://www.wikipedia.org/\" target=\"_blank\">Wikipedia</a> 網站的材料，這些材料採用 <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\" target=\"_blank\">Creative Commons Attribution-ShareAlike License 4.0</a> 許可。原始內容可能已經被修改和調整。要查看原始版本和更多信息，請訪問 <a href=\"https://www.wikipedia.org/\" target\"_blank\">Wikipedia</a> 上的原始頁面。"
    ],
    "blocks": {
      "algorithms": {
        "title": "算法",
        "intro": [
          "這些免費的編程練習將教你一些現實生活中可能會遇到的常見算法。它們是提高你的邏輯和編程技能的絕佳機會。",
          "這些算法經常在工作面試中被用來測試候選人的技能。我們將爲你提供簡潔明瞭的解釋，說明不同算法是如何運行的，以便你爲每道算法題目編寫解決方案。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      },
      "data-structures": {
        "title": "數據結構",
        "intro": [
          "這些免費的編程課程旨在幫助你處理可能你還不太熟悉的大型的、複雜的數據結構。",
          "通過下面的課程，你將學習不同類型的數據結構，並通過算法來增強你對它們的理解。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      },
      "take-home-projects": {
        "title": "私人項目",
        "intro": [
          "人們在編程面試的時候通常都是很緊張的。有時求職者會拿到一個帶回家的項目，在面試之外完成它。這種類型的面試通常需要求職者做大量工作，但對於僱主來說，這是查看你在工作中表現如何的好方法。",
          "通過下方的額外的編程項目，進行更多練習。慢慢來，做得好一點，然後將它們放在你的簡歷或作品集中，以向潛在的僱主展示。"
        ]
      }
    }
  },
  "the-odin-project": {
    "title": "Odin 項目 - freeCodeCamp Remix",
    "intro": [
      "The Odin Project 由開發人員 Erik Trautman 創建於 2013 年。多年來，開源社區不斷維護和擴展該項目。",
      "freeCodeCamp 在開源課程的基礎上進行了擴展，使其可以在瀏覽器中交互運行，並通過測試來評估你的代碼，確保你理解了關鍵概念。",
      "如果你想體驗在本地計算機上配置運行所有 The Odin Project，可以在 <a href='https://www.theodinproject.com/' target='_blank' rel='noopener noreferrer nofollow'>The Odin Project 網站</a> 上查看原始的 Odin Project。衷心感謝 The Odin Project 社區持續爲世界各地的開發人員維護這一寶貴的學習資源。",
      "本課程爲非官方課程，未經 Odin 項目認可。Odin 項目課程內容已作修改，本課程所有教學材料均遵循 <a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' target='_blank' rel='noopener noreferrer nofollow'>CC-BY-SA-NC 4.0</a> 許可",
      "<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/deed' target='_blank' rel='noopener noreferrer nofollow'>&copy; The Odin Project</a>",
      "本課程包含來自 <a href='https://javascript.info/' target='_blank' rel='noopener noreferrer nofollow'>JavaScript.info</a> 的內容，該內容採用 <a href='https://creativecommons.org/licenses/by-nc-sa/4.0/' target='_blank' rel='noopener noreferrer nofollow'>CC-BY-NC-SA 4.0</a> 許可。"
    ],
    "blocks": {
      "top-learn-html-foundations": {
        "title": "學習 HTML 基礎",
        "intro": [
          "通過本課程紮實掌握 HTML 基本知識。從構建網頁到理解語義標籤，你將爲在 web 端創建條理清晰、易於訪問的內容打下堅實的基礎。"
        ]
      },
      "top-working-with-text": {
        "title": "使用文本",
        "intro": [
          "探索 web 開發中文本處理的技巧。學習文本格式設置、處理和展示，提升你創建 web 內容的技能。"
        ]
      },
      "top-links-and-images": {
        "title": "鏈接和圖像",
        "intro": [
          "學習如何在你的 web 項目中添加鏈接和圖片。本課程涵蓋創建鏈接和嵌入圖片的基礎知識，使你的網站更具互動性和視覺吸引力。"
        ]
      },
      "top-build-a-recipe-project": {
        "title": "通過創建食譜頁面學習 HTML 基礎",
        "intro": [
          "通過創建一個菜譜頁面，在實踐中鍛鍊你的 HTML 技能。這個項目使你可以運用所學的知識創建一個功能性網頁，同時鞏固 HTML 開發的關鍵概念。"
        ]
      },
      "top-learn-css-foundations": {
        "title": "學習 CSS 基礎",
        "intro": [
          "深入層疊樣式表（CSS）的世界，學習如何爲 HTML 元素設計樣式。探索樣式屬性、選擇器和佈局，讓你的網頁栩栩如生。"
        ]
      },
      "top-learn-css-foundations-projects": {
        "title": "學習 CSS 基礎項目",
        "intro": [
          "通過實踐項目，讓你的 CSS 技能更上一層樓。你將在本課程中應用 CSS 爲實際場景創建響應式設計。"
        ]
      },
      "top-learn-css-specificity": {
        "title": "學習 CSS 優先級",
        "intro": [
          "學習 CSS 的特性，更好地瞭解如何給 HTML 元素添加樣式。本課程探討 CSS 規則的細微差別，幫助你爲網頁編寫高效、有針對性的樣式。"
        ]
      },
      "top-the-box-model": {
        "title": "學習盒模型",
        "intro": [
          "通過本課程學習 CSS 盒模型。瞭解元素在網頁上的呈現方式，學習如何處理間距、邊框和邊距，以實現理想的佈局和設計。"
        ]
      },
      "top-introduction-to-flexbox": {
        "title": "Flexbox 簡介",
        "intro": [
          "瞭解 Flexbox 的強大功能，這種佈局模型可簡化靈活、響應性強的網頁佈局設計。瞭解如何輕鬆創建動態的和自適應的頁面結構。"
        ]
      },
      "top-learn-block-and-inline": {
        "title": "學習塊和內聯之間的差異",
        "intro": [
          "探索 HTML 和 CSS 中塊元素和內聯元素之間的區別。本課程讓你深入瞭解這些顯示類型如何影響佈局和行爲，使你能夠做出明智的設計決策。"
        ]
      },
      "top-learn-variables-and-operators": {
        "title": "學習變量和運算符",
        "intro": [
          "通過學習變量和運算符開始學習 JavaScript。本課程涵蓋 JavaScript 編程的基礎知識，包括數據類型、運算符和變量聲明。"
        ]
      },
      "top-learn-data-types-and-conditionals": {
        "title": "學習數據類型和條件",
        "intro": ["在 JavaScript 中學習數據類型和條件"]
      },
      "top-learn-function-basics": {
        "title": "學習函數基礎",
        "intro": ["學習 JavaScript 中的函數。"]
      },
      "top-basic-function-projects": {
        "title": "基礎函數項目",
        "intro": ["通過構建基本函數來測試你的 JavaScript 技能。"]
      },
      "top-learn-arrays-and-loops": {
        "title": "學習數組和循環",
        "intro": ["學習 JavaScript 中的數組和循環。"]
      },
      "top-learn-to-solve-problems-and-understand-errors": {
        "title": "學習如何解決問題和理解報錯",
        "intro": ["學習如何解決問題並理解 JavaScript 中的報錯。"]
      },
      "top-build-a-rock-paper-scissors-game": {
        "title": "創建石頭剪刀布遊戲",
        "intro": ["通過創建石頭剪刀布遊戲測試你的 JavaScript 技能。"]
      }
    }
  },
  "project-euler": {
    "title": "歐拉計劃",
    "intro": [
      "完成下方來自歐拉計劃的編程挑戰，這將強化你的算法和數學知識。",
      "這些問題的難度各不相同，對於許多人來說，這是一個歸納性學習的過程。也就是說，通過解決一個問題，你將接觸到一個新概念，然後你可以解決自己以前無法解決的問題。你能完成全部挑戰嗎？"
    ],
    "blocks": {
      "project-euler-problems-1-to-100": {
        "title": "歐拉計劃問題 1 - 100",
        "intro": [
          "在這第一組挑戰中，你將使用斐波那契數列、素數定理和離散數學這樣的數學概念編寫算法來解決這些問題。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      },
      "project-euler-problems-101-to-200": {
        "title": "歐拉計劃問題 101 - 200",
        "intro": [
          "在這一系列的挑戰中，你將在課程第一部分的基礎上，結合更高級的概念，如矢量計算方法、楊輝三角（帕斯卡三角）和 RSA 算法來有效地解決這些問題。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      },
      "project-euler-problems-201-to-300": {
        "title": "歐拉計劃問題 201 - 300",
        "intro": [
          "在這組挑戰中，你將繼續利用你之前學到的技能，並使用二項式定理、漢明和考拉茲序列等概念來進一步提升你的數學和解決問題的技能。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      },
      "project-euler-problems-301-to-400": {
        "title": "歐拉計劃問題 301 - 400",
        "intro": [
          "在這裏，你將繼續發揮你的數學和算法技能，使用組合博弈論、位運算和 Golomb 的自描述序列等概念來開發這些問題的有效解決方案。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      },
      "project-euler-problems-401-to-480": {
        "title": "歐拉計劃問題 401 - 480",
        "intro": [
          "在這最後一組挑戰中，你將需要使用你目前所學到的一切，並使用像元因數、卡普雷卡爾算法等等高級概念來解決這些複雜問題。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      }
    }
  },
  "foundational-c-sharp-with-microsoft": {
    "title": "Microsoft 免費 C# 基礎認證",
    "intro": [
      "本課程全面介紹 C# 編程，涵蓋其核心概念、語法和在軟件開發中的實際應用。",
      "通過實踐練習和項目，你將學習 C# 的基礎知識，包括變量、數據類型、控制結構和麪向對象編程原理。",
      "課程結束時，你將獲得所需的實用技能和知識，從而自信地使用 C# 構建應用程序。"
    ],
    "note": "以下每個部分都有一個獎盃，你必須在 Microsoft Learn 平臺上獲得該獎盃。獲得每個獎盃後，你需要在 freeCodeCamp 上進行驗證。完成驗證後，你就有資格參加認證考試。",
    "blocks": {
      "write-your-first-code-using-c-sharp": {
        "title": "使用 C# 編寫你的第一行代碼",
        "intro": [
          "學習使用 C# 編寫第一段代碼，開始你的編程之旅。探索這門語言的基本原理和語法，打下堅實的基礎，爲你的編程冒險搭建舞臺。"
        ]
      },
      "create-and-run-simple-c-sharp-console-applications": {
        "title": "創建和運行簡單的 C# 控制檯應用程序",
        "intro": [
          "掌握創建和運行簡單 C# 控制檯應用程序的藝術。深入基於控制檯的編程世界，在這裏你將執行你的代碼，並查看它如何運行，獲得實踐經驗。"
        ]
      },
      "add-logic-to-c-sharp-console-applications": {
        "title": "向 C# 控制檯應用程序添加邏輯",
        "intro": [
          "在 C# 控制檯應用程序中釋放邏輯的力量。瞭解如何在代碼中添加邏輯和決策功能，使你的應用程序能夠做出動態選擇，並對不同場景做出智能響應。"
        ]
      },
      "work-with-variable-data-in-c-sharp-console-applications": {
        "title": "在 C# 控制檯應用程序中使用變量數據",
        "intro": [
          "探索 C# 控制檯應用程序中變量數據的多功能性。在深入學習變量和數據處理的基本概念後，你將掌握存儲和處理不同類型數據（如數字和文本）的能力。"
        ]
      },
      "create-methods-in-c-sharp-console-applications": {
        "title": "在 C# 控制檯應用程序中創建方法",
        "intro": [
          "掌握創建方法的藝術，讓你的 C# 控制檯應用程序更上一層樓。學習如何組織和模塊化你的代碼，使其更易於管理、可重用和高效。"
        ]
      },
      "debug-c-sharp-console-applications": {
        "title": "調試 C# 控制檯應用程序",
        "intro": [
          "在深入調試 C# 控制檯應用程序的過程中，提升你解決問題的能力。掌握識別和修復代碼問題的能力，確保應用程序順利運行並交付預期結果。"
        ]
      },
      "foundational-c-sharp-with-microsoft-certification-exam": {
        "title": "微軟基礎 C# 認證考試",
        "intro": ["利用所學知識通過考試，獲得你的微軟基礎 C# 認證"]
      }
    }
  },
  "a2-english-for-developers": {
    "title": "A2 開發者英語認證（測試版）",
    "intro": [
      "在開發者英語課程中，你將學習英語交流的基本要素。課程遵循歐洲共同語言參考標準（CEFR）的 A2 級，側重於對開發者有用的詞彙。",
      "課程的前半部分將幫助你熟悉英語語法和用法。你將通過大量的實踐練習學習自我介紹、聊天和討論工作等基礎知識。",
      "在後半部分，你將練習軟件開發的專用詞彙。你將學習如何描述代碼、討論技術趨勢和參加站立會議。",
      "整個 A2 級課程包括 105 個不同的對話。每一個對話都旨在幫助你積累詞彙、增強在專業技術環境中演講的信心。"
    ],
    "note": "This certification is currently in beta.",
    "blocks": {
      "learn-greetings-in-your-first-day-at-the-office": {
        "title": "學習第一天上班的問候語",
        "intro": [
          "在第一節課程中，你將學習第一天上班可能遇到的情境中的常用表達方式。你將學習自我介紹、認識別人、詢問午餐推薦以及從安保處領取門禁卡。"
        ]
      },
      "en-a2-quiz-first-day-conversations-at-work": {
        "title": "First Day Conversations at Work Quiz",
        "intro": ["", ""]
      },
      "learn-introductions-in-an-online-team-meeting": {
        "title": "學習在線上團隊會議中自我介紹",
        "intro": [
          "在本課程中，你將學習如何進行個人介紹。你還將學習如何在小組會議中陳述自己的職業和分享自己的目標。"
        ]
      },
      "en-a2-quiz-meeting-introductions-at-work": {
        "title": "Meeting Introductions at Work Quiz",
        "intro": ["", ""]
      },
      "learn-conversation-starters-in-the-break-room": {
        "title": "學習在休息室中的對話開場白",
        "intro": [
          "在本課程中，你將學習如何在休閒場合開始對話。你還將學習如何談論自己的愛好和個性特徵。你甚至還將學習如何詢問城市周邊的情況。"
        ]
      },
      "en-a2-quiz-conversation-starters-at-work": {
        "title": "Break Room Conversations Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-talk-about-a-typical-workday-and-tasks": {
        "title": "學習如何談論典型的工作日和任務",
        "intro": [
          "在本課程中，你將學習如何談論你的工作日和你在工作場所執行的任務，以及如何與別人分享這些內容。課程主要關注用於描述你的活動的結構以及與任務相關的詞彙。"
        ]
      },
      "en-a2-quiz-work-routines-and-tasks": {
        "title": "Talking About Your Workday Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-discuss-your-morning-or-evening-routine": {
        "title": "學習如何討論你的晨間或晚間例行活動",
        "intro": [
          "在本課程中，你將學習如何談論並與別人分享你的例行活動細節。課程的重點是用於談論例行活動的結構和相關詞彙。"
        ]
      },
      "en-a2-quiz-daily-life-routines": {
        "title": "Daily Routines at Work Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-describe-your-current-project": {
        "title": "學習如何描述你當前的項目",
        "intro": [
          "在本課程中，你將學習如何談論自己參與的項目，以及如何告知別人自己在這些項目中的工作。課程的重點是用於告知別人的結構和相關詞彙。"
        ]
      },
      "en-a2-quiz-what-are-you-working-on": {
        "title": "Describing Your Current Project Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-ask-and-share-about-educational-and-professional-background": {
        "title": "學習如何詢問和分享教育和專業背景",
        "intro": [
          "在本課程中，你將學習如何詢問別人的教育和職業背景，並學習如何分享有關你的背景信息。"
        ]
      },
      "en-a2-quiz-educational-and-professional-background": {
        "title": "Educational and Professional Background Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-talk-about-hobbies-and-interests": {
        "title": "學習如何談論興趣與愛好",
        "intro": [
          "在本課程中，你將學習用不同的方式談論自己的愛好和感興趣的事物。你還將學習如何詢問別人的愛好，以及如何邀請別人參加這些活動。"
        ]
      },
      "en-a2-quiz-hobbies-and-interests": {
        "title": "Talking About Hobbies and Interests Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-discuss-roles-and-responsibilities": {
        "title": "學習如何談論角色和責任",
        "intro": [
          "在本課程中，你將討論人們在公司內外的角色和責任。你將學習如何詢問關於角色和職責的信息，以及如何分享你自己這方面的信息。"
        ]
      },
      "en-a2-quiz-discuss-roles-responsibilities": {
        "title": "角色與職責測驗",
        "intro": ["", ""]
      },
      "learn-how-to-have-a-conversation-about-preferences-and-motivations": {
        "title": "學習如何就偏好和動機進行對話",
        "intro": [
          "在本課程中，你將學習如何詢問人們在個人和職業生活中受到哪些因素驅動，如何回答與自身動機相關的問題，以及如何探討人們的偏好。"
        ]
      },
      "en-a2-quiz-preferences-and-motivations": {
        "title": "Preferences and Motivations Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-discuss-popular-trends-in-technology": {
        "title": "學習如何討論流行的技術趨勢",
        "intro": [
          "在本課程中，你將學習如何討論當今科技領域大家都在談論的話題。"
        ]
      },
      "en-a2-quiz-sharing-opinions": {
        "title": "Technology Trends Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-clarify-information-in-different-interactions": {
        "title": "學習如何在不同的互動中闡明信息",
        "intro": [
          "在本課程中，你將學習如何覈查現有信息的正確性，以及在遇到不明確的情況時如何提出澄清請求。"
        ]
      },
      "en-a2-quiz-getting-the-details-right": {
        "title": "Clarifying Information Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-use-basic-programming-vocabulary-in-conversations": {
        "title": "學習如何在對話中使用基本編程詞彙",
        "intro": [
          "本課程將介紹與編程相關的基本詞彙。你將學習如何提出與基本編程概念相關的問題。"
        ]
      },
      "en-a2-quiz-basic-programming-vocabulary": {
        "title": "基礎編程詞彙測驗",
        "intro": ["", ""]
      },
      "learn-how-to-use-code-related-concepts-and-terms": {
        "title": "學習如何使用代碼相關的概念和術語",
        "intro": [
          "在本課程中，你將學習與編程相關的術語，並學習如何在對話中使用它們。"
        ]
      },
      "en-a2-quiz-key-programming-terms": {
        "title": "Code Concepts and Terms Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-discuss-tech-trends-and-updates": {
        "title": "學習如何談論技術趨勢和更新",
        "intro": [
          "在本課程中，你將瞭解科技領域的一些最新趨勢，並學習如何用英語討論這些話題。"
        ]
      },
      "en-a2-quiz-discussing-new-ideas": {
        "title": "Tech Updates and Trends Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-help-a-coworker-troubleshoot-on-github": {
        "title": "學習如何在 GitHub 上幫助同事解決問題",
        "intro": [
          "在本課程中，你將學習如何向同事尋求幫助以及如何向同事提供幫助的相關表達。"
        ]
      },
      "en-a2-quiz-discussing-problems-and-solutions": {
        "title": "Helping a Coworker on GitHub Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-share-your-progress-in-weekly-stand-up-meetings": {
        "title": "學習如何在每週站立會議上分享你的進展",
        "intro": [
          "本課程將指導你如何圍繞項目進展展開討論，包括已完成的工作內容以及當前正在推進的任務。"
        ]
      },
      "en-a2-quiz-collaborating-in-meetings": {
        "title": "Weekly Meeting Progress Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-ask-for-clarification-on-code-understanding": {
        "title": "學習如何要求澄清對代碼的理解",
        "intro": ["在本課程中，你將學習如何對代碼中你不清楚的地方提問。"]
      },
      "en-a2-quiz-understanding-problems": {
        "title": "Asking for Code Clarification Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-document-code-for-a-project": {
        "title": "學習如何爲項目寫代碼文檔",
        "intro": ["本課程將介紹給代碼寫文檔時的相關表達。"]
      },
      "en-a2-quiz-document-code-project": {
        "title": "記錄代碼測驗",
        "intro": ["", ""]
      },
      "learn-how-to-read-and-understand-code-documentation": {
        "title": "學習如何閱讀和理解代碼文檔",
        "intro": ["本課程將進一步介紹代碼文檔的相關表達，並指導你理解文檔。"]
      },
      "en-a2-quiz-read-understand-code-documentation": {
        "title": "理解代碼文檔測驗",
        "intro": ["", ""]
      },
      "learn-how-to-analyze-code-documentation": {
        "title": "學習如何分析代碼文檔",
        "intro": [
          "在本課程中，你將瞭解一些有助於你以簡單方式理解文檔並進行分析的方法。"
        ]
      },
      "en-a2-quiz-analyzing-documentation": {
        "title": "Analyzing Code Documentation Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-share-progress-and-accomplishments": {
        "title": "學習如何分享進度和成就",
        "intro": [
          "在本課程中，你將學習如何與同事分享你的進展，以及如何講述你在項目中取得的成果。"
        ]
      },
      "en-a2-quiz-discussing-progress-and-results": {
        "title": "Sharing Progress and Achievements Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-talk-about-updates-and-plans-for-tasks-and-projects": {
        "title": "學習如何談論任務和項目的更新和計劃",
        "intro": ["本課程將指導你如何闡述項目中的最新進展以及未來規劃。"]
      },
      "en-a2-quiz-task-project-updates-plans": {
        "title": "任務與項目更新測驗",
        "intro": ["", ""]
      },
      "learn-how-to-express-agreement-or-disagreement": {
        "title": "學習如何表達同意或不同意",
        "intro": [
          "本課程將介紹如何表達對他人觀點的認同，以及如何禮貌地表明不同意對方的觀點。"
        ]
      },
      "en-a2-quiz-express-agreement-disagreement": {
        "title": "表達贊同與反對測驗",
        "intro": ["", ""]
      },
      "learn-how-to-offer-technical-support-and-guidance": {
        "title": "學習如何提供技術支持和指導",
        "intro": ["在本課程中，你將瞭解如何在技術細節方面爲他人提供幫助。"]
      },
      "en-a2-quiz-following-best-practices": {
        "title": "Offering Technical Support Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-request-and-receive-guidance": {
        "title": "學習如何請求和接受指導",
        "intro": ["本課程將教你如何在需要時向同事尋求幫助。"]
      },
      "en-a2-quiz-asking-for-help": {
        "title": "Requesting and Receiving Guidance Quiz",
        "intro": ["", ""]
      },
      "learn-how-to-provide-explanations-when-helping-others": {
        "title": "學習如何在幫助別人時提供解釋",
        "intro": ["本課程將指導你如何在需要時向同事尋求幫助。"]
      },
      "en-a2-quiz-giving-adivice-and-suggestions": {
        "title": "Explaining Things to Others Quiz",
        "intro": ["", ""]
      },
      "en-a2-certification-exam": {
        "title": "A2 開發者英語認證考試",
        "intro": ["參加這個考試是申請 A2 開發者英語認證的必要條件。"]
      }
    }
  },
  "b1-english-for-developers": {
    "title": "B1 開發者英語認證（測試版）",
    "intro": [
      "在這個開發者英語課程中，你將掌握英語溝通的核心要點。課程內容遵循歐洲語言共同參考框架（CEFR）的 B1 級別標準，並重點聚焦對開發者尤爲實用的詞彙體系。",
      "它將幫助你鞏固基礎技能，同時引入更復雜的語法和用法。你將學會如何描述地點和事物，分享過往經歷，並自信運用現在完成時和將來時等時態。課程還包含實用溝通策略，例如掌控對話節奏、表達觀點，以及在討論中建立共識或表達異議。",
      "你還將重點學習如何在專業技術場景中運用這些技能。你將練習使用開發人員必備的詞彙和短語，例如描述代碼、參與會議以及探討技術趨勢等。進階內容涵蓋條件句、比較結構及對話管理，助你爲科技行業的實際交流場景做好準備。",
      "這套完整的 B1 級別課程包含 73 個不同對話場景。每個對話都旨在幫助你積累專業技術領域的詞彙量，並在技術交流場合提升你的表達自信。"
    ],
    "note": "This certification is currently in beta.",
    "blocks": {
      "learn-how-to-describe-places-and-events": {
        "title": "學習如何描述地點和事件",
        "intro": ["本課程將指導你如何在對話中談論地點和事件。"]
      },
      "en-b1-quiz-describe-places-events": {
        "title": "描述地點與事件測驗",
        "intro": ["", ""]
      },
      "learn-how-to-talk-about-past-experiences": {
        "title": "學習如何談論過去的經歷",
        "intro": ["在本課程中，你將學習如何分享過去的經驗。"]
      },
      "en-b1-quiz-past-experiences": {
        "title": "談論過去經歷測驗",
        "intro": ["", ""]
      },
      "learn-how-to-talk-about-past-activities": {
        "title": "學習如何談論以前的活動",
        "intro": ["在本課程中，你將學習如何談論自己做過的事情。"]
      },
      "en-b1-quiz-past-activities": {
        "title": "談論過去活動測驗",
        "intro": ["", ""]
      },
      "learn-present-perfect-while-talking-about-accessibility": {
        "title": "通過談論無障礙學習現在完成時",
        "intro": [
          "在本課程中，你將學習使用現在完成時結構，並瞭解更多有關可訪問性的知識。"
        ]
      },
      "en-b1-quiz-present-perfect-accessibility": {
        "title": "現在完成時與可訪問性測驗",
        "intro": ["", ""]
      },
      "learn-how-to-plan-future-events": {
        "title": "學習如何規劃未來事件",
        "intro": [
          "在本課程中，你將學習使用不同的將來時形式規劃即將發生的事件。"
        ]
      },
      "en-b1-quiz-plan-future-events": {
        "title": "規劃未來事件測驗",
        "intro": ["", ""]
      },
      "learn-future-continuous-while-describing-actions": {
        "title": "通過描述動作來學習將來進行時",
        "intro": [
          "在本課程中，你將學習如何使用將來進行時，以及如何描述即將進行的動作。"
        ]
      },
      "en-b1-quiz-future-continuous-actions": {
        "title": "將來進行時測驗",
        "intro": ["", ""]
      },
      "learn-how-to-use-conditionals": {
        "title": "學習如何使用條件句",
        "intro": [
          "在本課程中，你將學習使用條件句描述在特定條件成立時可能發生的假設性結果。"
        ]
      },
      "en-b1-quiz-conditionals": {
        "title": "使用條件句測驗",
        "intro": ["", ""]
      },
      "learn-how-to-share-feedback": {
        "title": "學習如何分享反饋",
        "intro": [
          "在本課程中，你將學習如何向他人表達對其工作的看法，既突出其優勢，也指出需要改進的地方。"
        ]
      },
      "en-b1-quiz-share-feedback": {
        "title": "分享反饋測驗",
        "intro": ["", ""]
      },
      "learn-how-to-share-your-opinion": {
        "title": "學習如何分享你的意見",
        "intro": ["本課程將指導你如何在討論中表達自己對話題的想法與感受。"]
      },
      "en-b1-quiz-share-opinions": {
        "title": "表達意見測驗",
        "intro": ["", ""]
      },
      "learn-how-to-express-agreement": {
        "title": "學習如何表達贊同",
        "intro": ["在本課程中，你將學習如何在不同的職業場合表達贊同。"]
      },
      "en-b1-quiz-express-agreement": {
        "title": "表達贊同測驗",
        "intro": ["", ""]
      },
      "learn-how-to-express-disagreement": {
        "title": "學習如何表達反對",
        "intro": ["在本課程中，你將學習如何在不同的職業場合表達不同意。"]
      },
      "en-b1-quiz-express-disagreement": {
        "title": "表達反對測驗",
        "intro": ["", ""]
      },
      "learn-how-to-express-concerns": {
        "title": "學習如何表達關切",
        "intro": [
          "在本課程中，你將學習向他人表達你對項目和任務可能出現的問題感到擔憂。"
        ]
      },
      "en-b1-quiz-express-concerns": {
        "title": "表達關切測驗",
        "intro": ["", ""]
      },
      "learn-how-to-express-decisions-based-on-comparisons": {
        "title": "學習如何通過比較表達決策",
        "intro": [
          "在本課程中，你將學習如何運用“更好”、“更快”和“最佳”等詞彙來比較工具或公司等事物。你還將練習通過友好對話表達觀點並做出決策。"
        ]
      },
      "en-b1-quiz-decisions-comparisons": {
        "title": "通過比較進行決策測驗",
        "intro": ["", ""]
      },
      "learn-how-to-use-modal-verbs": {
        "title": "學習如何使用情態動詞",
        "intro": [
          "在本課程中，你將學習如何談論規則、描述必要事項以及違反規則可能導致的後果。你還將練習清晰地提問與回答問題，並在表達觀點時添加有用的細節。"
        ]
      },
      "en-b1-quiz-modal-verbs": {
        "title": "使用情態動詞測驗",
        "intro": ["", ""]
      },
      "learn-how-to-manage-a-conversation": {
        "title": "學習如何掌控對話",
        "intro": [
          "在本課程中，你將學習如何管理工作中的對話——例如如何在中斷後繼續談話、禮貌地轉換話題，或在必要時打斷對話。你還將練習使用實用表達，使對話保持清晰、友好且條理分明。"
        ]
      },
      "en-b1-quiz-manage-conversations": {
        "title": "掌控對話測驗",
        "intro": ["", ""]
      },
      "learn-how-to-clarify-misunderstandings": {
        "title": "學習如何澄清誤解",
        "intro": [
          "在本課程中，你將學習如何在不清楚的情況下使用禮貌的問題和有用的回答進行詢問和解釋。你還將練習猜測新單詞的含義，描述問題，並以友好和專業的方式消除誤解。"
        ]
      },
      "en-b1-quiz-clarify-misunderstandings": {
        "title": "澄清誤解測驗",
        "intro": ["", ""]
      },
      "learn-about-speculation-and-requests": {
        "title": "學習做出推測和提出請求",
        "intro": [
          "在本課程中，你將學習如何談論過去本應發生或可能發生的事情，以及如何提出建議或禮貌地提出請求。你還將練習使用各種表達方式來推測問題可能的原因，並學習如何以清晰且尊重的方式共同解決問題。"
        ]
      },
      "en-b1-quiz-speculation-requests": {
        "title": "推測與請求測驗",
        "intro": ["", ""]
      },
      "learn-about-adverbial-phrases": {
        "title": "學習副詞短語",
        "intro": [
          "在本課程中，你將學習如何使用表達時間、地點、頻率或程度的短語。你還將練習使用這些短語來描述工作任務、討論計劃安排，並在日常工作中更清晰地闡述工作成果。"
        ]
      },
      "en-b1-quiz-adverbial-phrases": {
        "title": "副詞短語測驗",
        "intro": ["", ""]
      },
      "learn-how-to-use-adjectives-in-conversations": {
        "title": "學習如何在對話中使用形容詞",
        "intro": [
          "在本課程中，你將學習如何運用形容詞清晰描述事物、比較選項，並在專業對話中突出重要細節。你還將練習如何使觀點更具說服力，從而增強表達效果。"
        ]
      },
      "en-b1-quiz-adjectives-conversations": {
        "title": "在對話中使用形容詞測驗",
        "intro": ["", ""]
      },
      "learn-determiners-and-advanced-use-of-articles": {
        "title": "學習限定詞和冠詞的高級用法",
        "intro": [
          "在本課程中，你將學習如何使用限定詞清晰表達數量、選擇及分佈信息。你還將練習更高級的冠詞用法，尤其在涉及規劃、任務和資源的專業對話中。"
        ]
      },
      "en-b1-quiz-determiners-articles": {
        "title": "限定詞與冠詞測驗",
        "intro": ["", ""]
      },
      "learn-how-to-use-reported-speech": {
        "title": "學習如何使用間接引語",
        "intro": [
          "在本課程中，您將學習如何以清晰自然的方式報告別人說的話。您還將練習使用正確的動詞時態和句子結構來分享反饋，解釋情況，並在專業對話中談論過去的事件。"
        ]
      },
      "en-b1-quiz-reported-speech": {
        "title": "使用間接引語測驗",
        "intro": ["", ""]
      },
      "learn-how-to-use-prepositions-according-to-context": {
        "title": "學習如何根據上下文使用介詞",
        "intro": [
          "在本課程中，你將學習如何使用介詞在日常工作場景中清晰地描述時間、地點和方向。你還將練習用自然準確的語言談論日程安排、提供路線指引，以及說明人員或物品的位置。"
        ]
      },
      "en-b1-quiz-prepositions-context": {
        "title": "按語境使用介詞測驗",
        "intro": ["", ""]
      },
      "learn-how-to-talk-about-numbers-with-a-coworker": {
        "title": "學習如何與同事談論數字",
        "intro": [
          "在本課程中，你將學習如何運用數字在工作場所討論任務、日程安排、預算及資源配置。你將練習使用基數詞、序數詞、百分比和分數來統籌工作、說明進度，並清晰地向團隊通報庫存或財務動態。"
        ]
      },
      "en-b1-quiz-numbers-at-work": {
        "title": "在工作中談論數字測驗",
        "intro": ["", ""]
      },
      "learn-common-phrasal-verbs-and-idioms": {
        "title": "學習常見的短語動詞和習語",
        "intro": [
          "在本課程中，你將學習如何運用常見的短語動詞和習語，使職場表達更自然自信。你將練習使用各類表達方式，在日常專業對話中發表意見、提出建議、組織會議以及討論工作任務。"
        ]
      },
      "en-b1-quiz-phrasal-verbs-idioms": {
        "title": "短語動詞與習語測驗",
        "intro": ["", ""]
      },
      "en-b1-certification-exam": {
        "title": "B1 開發者英語認證測驗",
        "intro": ["參加這個考試是申請 B1 開發者英語認證的必要條件。"]
      }
    }
  },
  "rosetta-code": {
    "title": "羅塞塔代碼",
    "intro": [
      "通過完成經典的羅塞塔代碼庫中的這些免費編程任務來提升你的創造性問題解決能力。",
      "這些挑戰可能很困難，但是它們會將進一步提升你的算法邏輯。",
      "<a href='https://rosettacode.org/wiki/Rosetta_Code' target='_blank' rel='noopener noreferrer nofollow'>Attribute: Rosetta Code</a>"
    ],
    "blocks": {
      "rosetta-code-challenges": {
        "title": "羅塞塔代碼挑戰",
        "intro": [
          "這些是羅賽塔代碼的挑戰。",
          "注意：這些挑戰只支持用 JavaScript 解答。"
        ]
      }
    }
  },
  "javascript-v9": {
    "title": "JavaScript 認證",
    "intro": [
      "本課程教授核心的 JavaScript 編程概念，例如使用變量、函數、對象、數組和控制流。你還將學習如何操作 DOM、處理事件，並應用諸如異步編程、函數式編程和無障礙的最佳實踐。",
      "要獲得你的 JavaScript 認證：",
      "- 完成五個必做項目，即可具備參加認證考試的資格。",
      "- 通過 JavaScript 認證考試。"
    ],
    "chapters": {
      "javascript": "JavaScript",
      "javascript-certification-exam": "JavaScript 認證考試"
    },
    "modules": {
      "javascript-variables-and-strings": "變量與字符串",
      "javascript-booleans-and-numbers": "布爾值與數字",
      "javascript-functions": "函數",
      "javascript-arrays": "數組",
      "javascript-objects": "對象",
      "javascript-loops": "循環",
      "review-javascript-fundamentals": "JavaScript 基礎複習",
      "higher-order-functions-and-callbacks": "高階函數與回調函數",
      "dom-manipulation-and-events": "DOM 操作與事件",
      "js-a11y": "JavaScript 與無障礙",
      "debugging-javascript": "調試",
      "basic-regex": "基礎正則表達式",
      "lab-markdown-to-html-converter": "構建一個 Markdown 轉 HTML 的轉換器",
      "form-validation": "表單驗證",
      "javascript-dates": "日期",
      "audio-and-video-events": "音頻與視頻事件",
      "lab-drum-machine": "創建一臺鼓機",
      "maps-and-sets": "映射與集合",
      "lab-voting-system": "創建一個投票系統",
      "localstorage-and-crud-operations": "localStorage 和 CRUD 操作",
      "classes-and-the-this-keyword": "類",
      "lab-bank-account-manager": "創建一個銀行賬戶管理程序",
      "recursion": "遞歸",
      "data-structures": "數據結構",
      "algorithms": "算法",
      "graphs-and-trees": "圖與樹",
      "dynamic-programming": "動態規劃",
      "functional-programming": "函數式編程",
      "asynchronous-javascript": "異步 JavaScript",
      "lab-weather-app": "創建一個天氣應用",
      "review-javascript": "JavaScript 複習",
      "javascript-certification-exam": "JavaScript 認證考試"
    },
    "module-intros": {
      "data-structures": {
        "note": "將於 2026 年春季發佈",
        "intro": ["在本模塊中，你將學習鏈表、棧、隊列等。"]
      },
      "algorithms": {
        "note": "將於 2026 年春季發佈",
        "intro": [
          "在本模塊中，你將學習常見的排序與搜索算法，包括冒泡排序、二分搜索等。"
        ]
      },
      "graphs-and-trees": {
        "note": "將於 2026 年春季發佈",
        "intro": ["在本模塊中，你將學習圖、樹與字典樹。"]
      },
      "dynamic-programming": {
        "note": "將於 2026 年春季發佈",
        "intro": ["在本模塊中，你將學習動態規劃的工作原理。"]
      }
    },
    "blocks": {
      "lecture-introduction-to-javascript": {
        "title": "JavaScript 入門講座",
        "intro": [
          "在這些講座中，你將學習 JavaScript 的基礎知識。涵蓋的主題包括但不限於變量、數據類型、JavaScript 與 HTML 和 CSS 的交互、字符串等。"
        ]
      },
      "lecture-introduction-to-strings": {
        "title": "字符串簡介",
        "intro": ["在這些課程中，你將學習如何處理字符串與字符串拼接。"]
      },
      "lecture-understanding-code-clarity": {
        "title": "理解代碼清晰性",
        "intro": [
          "在這些課程中，你將學習 JavaScript 中的註釋以及分號在編程中的作用。"
        ]
      },
      "workshop-greeting-bot": {
        "title": "構建一個問候機器人",
        "intro": [
          "在本工作坊中，你將通過構建一個問候機器人來學習 JavaScript 基礎。",
          "你將學習變量、 <code> let </code>、 <code> const </code>、 <code> console.log </code> 以及基本的字符串使用方法。"
        ]
      },
      "lab-javascript-trivia-bot": {
        "title": "構建一個 JavaScript 趣味問答機器人",
        "intro": [
          "在本實驗中，你將通過構建一個趣味問答機器人來練習 JavaScript 變量與字符串。"
        ]
      },
      "lab-sentence-maker": {
        "title": "構建一個句子生成器",
        "intro": [
          "在本實驗中，你將通過創建和自定義各種故事繼續練習字符串與拼接。"
        ]
      },
      "lecture-working-with-data-types": {
        "title": "處理數據類型",
        "intro": [
          "在接下來的講座中，你將學習如何處理 JavaScript 中的數據類型。你還將學習動態類型如何不同於靜態類型、 <code> typeof </code> 運算符，以及 <code> typeof null </code> 的 問題。"
        ]
      },
      "review-javascript-variables-and-data-types": {
        "title": "JavaScript 變量與數據類型複習",
        "intro": [
          "在測試你對 JavaScript 變量和數據類型的掌握之前，你需要先複習相關概念。",
          "打開此頁面以複習變量、數據類型、日誌記錄與註釋。"
        ]
      },
      "quiz-javascript-variables-and-data-types": {
        "title": "JavaScript 變量與數據類型測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 變量與數據類型的掌握程度。"]
      },
      "lecture-working-with-strings-in-javascript": {
        "title": "在 JavaScript 中處理字符串",
        "intro": [
          "在這些講座中，你將學習如何在 JavaScript 中處理字符串。你將學習如何訪問字符串中的字符、如何使用模板字面量與插值、如何在字符串中創建新行等。"
        ]
      },
      "workshop-teacher-chatbot": {
        "title": "構建一個教師聊天機器人",
        "intro": [
          "在本工作坊中，你將通過構建一個聊天機器人繼續學習 JavaScript 字符串。",
          "你將學習如何使用模板字面量，以及 <code> indexOf </code> 方法。"
        ]
      },
      "lecture-working-with-string-character-methods": {
        "title": "處理字符串字符方法",
        "intro": [
          "在本講座中，你將學習 ASCII 字符編碼，以及如何使用 JavaScript 的 <code> charCodeAt() </code> 和 <code> fromCharCode() </code> 方法在字符與其數值 ASCII 值之間轉換。"
        ]
      },
      "lecture-working-with-string-search-and-slice-methods": {
        "title": "處理字符串搜索與切片方法",
        "intro": [
          "在本講座中，你將學習如何使用 <code> includes() </code> 方法搜索子字符串，以及如何使用 <code> slice() </code> 方法提取字符串的部分內容。"
        ]
      },
      "workshop-string-inspector": {
        "title": "創建一個字符串檢查器",
        "intro": [
          "在本工作坊中，你將通過構建一個字符串檢查器練習使用 <code>includes()</code> 和 <code>slice()</code> 方法。"
        ]
      },
      "lecture-working-with-string-formatting-methods": {
        "title": "處理字符串格式化方法",
        "intro": [
          "在本講座中，你將學習如何使用 <code> toUpperCase() </code> 與 <code> toLowerCase() </code> 方法更改字符串大小寫，以及如何使用 <code> trim() </code>、 <code> trimStart() </code> 和 <code> trimEnd() </code> 方法去除空白。"
        ]
      },
      "workshop-string-formatter": {
        "title": "創建一個字符串格式化器",
        "intro": [
          "在本工作坊中，你將練習使用各種字符串方法，包括 <code>trim()</code>、<code>toUpperCase()</code> 和 <code>toLowerCase()</code>。"
        ]
      },
      "lecture-working-with-string-modification-methods": {
        "title": "處理字符串修改方法",
        "intro": [
          "在本講座中，你將學習如何使用 <code> replace() </code> 方法替換字符串的部分內容，以及如何使用 <code> repeat() </code> 方法重複字符串多次。"
        ]
      },
      "workshop-string-transformer": {
        "title": "構建一個字符串轉換器",
        "intro": [
          "在本工作坊中，你將練習使用 <code> replace() </code>、<code> replaceAll() </code> 與 <code> repeat() </code> 方法。"
        ]
      },
      "review-javascript-strings": {
        "title": "JavaScript 字符串複習",
        "intro": [
          "在測試你對 JavaScript 字符串的掌握之前，你需要先複習。",
          "打開此頁面以複習如何使用模板字面量、<code> slice </code> 方法、<code> includes </code> 方法、<code> trim </code> 方法等。"
        ]
      },
      "quiz-javascript-strings": {
        "title": "JavaScript 字符串測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 字符串的掌握程度。"]
      },
      "lecture-working-with-numbers-and-arithmetic-operators": {
        "title": "處理數字與算術運算符",
        "intro": [
          "在這些講座中，你將學習數字類型、算術運算符，以及如何將它們與數字和字符串一起使用。"
        ]
      },
      "lab-debug-type-coercion-errors": {
        "title": "調試有類型強制轉換錯誤的有缺陷應用",
        "intro": [
          "在本實驗中，你將處理一個存在多個類型強制轉換錯誤的應用程序。",
          "你的任務是識別並修復這些錯誤，以確保應用正常運行。"
        ]
      },
      "lecture-working-with-operator-behavior": {
        "title": "學習運算符行爲",
        "intro": [
          "在這些講座中，你將學習運算符優先級、自增與自減運算符以及複合賦值運算符。"
        ]
      },
      "lab-debug-increment-and-decrement-operator-errors": {
        "title": "調試有缺陷應用中的自增和自減運算符錯誤",
        "intro": [
          "在本實驗中，你將調試一個在自增和自減運算符方面存在多個錯誤的應用。",
          "你的任務是識別並修復這些錯誤，以使應用按預期工作。"
        ]
      },
      "lecture-working-with-comparison-and-boolean-operators": {
        "title": "運用比較與布爾運算符",
        "intro": [
          "在這些講座中，你將學習布爾值，以及相等和不等運算符和其他比較運算符。"
        ]
      },
      "workshop-logic-checker-app": {
        "title": "創建一個邏輯檢查應用",
        "intro": [
          "在本工作坊中，你將通過構建一個邏輯檢查應用來練習使用條件語句和比較運算符。"
        ]
      },
      "lecture-working-with-unary-and-bitwise-operators": {
        "title": "使用一元運算符和位運算符",
        "intro": ["在這些講座中，你將學習一元運算符和位運算符。"]
      },
      "lecture-working-with-conditional-logic-and-math-methods": {
        "title": "使用條件邏輯與 Math 方法",
        "intro": [
          "在這些講座中，你將學習條件語句、二元邏輯運算符以及 <code> Math </code> 對象。"
        ]
      },
      "workshop-mathbot": {
        "title": "創建一個 Mathbot",
        "intro": [
          "在本工作坊中，你將通過創建一個 Mathbot 來複習如何使用不同的 Math 對象方法。"
        ]
      },
      "lab-fortune-teller": {
        "title": "創建一個占卜程序",
        "intro": [
          "在本實驗中，你將創建一個占卜程序，通過隨機選取預存的占卜語句來生成占卜結果。",
          "你將練習如何使用 <code> Math.random() </code> 方法和 <code> Math.floor() </code> 方法來生成隨機數。"
        ]
      },
      "lecture-working-with-numbers-and-common-number-methods": {
        "title": "學習數字運算與常用數字方法",
        "intro": [
          "在這些講座中，你將學習數字與常見的數字方法，包括 <code> isNaN() </code>、 <code> parseInt() </code>、 <code> parseFloat() </code> 和 <code> toFixed() </code>。"
        ]
      },
      "review-javascript-math": {
        "title": "JavaScript 數學複習",
        "intro": [
          "在測試你對 <code>Math</code> 對象的使用之前，你應該複習已學內容。",
          "打開此頁面以複習如何使用 <code> Math.random() </code> 方法、<code> Math.floor() </code> 方法等。"
        ]
      },
      "quiz-javascript-math": {
        "title": "JavaScript 數學測驗",
        "intro": [
          "通過這個測驗檢驗你對 JavaScript <code>Math</code> 對象的瞭解程度。"
        ]
      },
      "lecture-understanding-comparisons-and-conditionals": {
        "title": "理解比較與條件語句",
        "intro": [
          "在本系列講座中，你將學習比較運算符和條件語句。你將瞭解不同條件語句之間的區別，以及比較運算在涉及 <code>null</code> 和 <code>undefined</code> 時的運作方式。"
        ]
      },
      "review-javascript-comparisons-and-conditionals": {
        "title": "JavaScript 比較與條件語句複習",
        "intro": [
          "在進行條件語句應用測試之前，你應該複習已掌握的相關知識。在進行條件語句操作的測驗之前，你應該複習一下關於條件語句的學習內容。",
          "打開此頁面以複習如何使用 <code> switch </code> 語句、其他類型的條件語句等。"
        ]
      },
      "quiz-javascript-comparisons-and-conditionals": {
        "title": "JavaScript 比較與條件語句測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 比較與條件語句的掌握程度。"]
      },
      "lecture-working-with-functions": {
        "title": "處理函數",
        "intro": [
          "在本系列講座中，你將學習如何通過函數複用代碼塊。你將瞭解函數的用途及其工作原理，並掌握程序設計中作用域的運作機制。"
        ]
      },
      "workshop-calculator": {
        "title": "創建一個計算器",
        "intro": ["在本工作坊中，你將通過創建一個計算器來複習函數相關知識。"]
      },
      "lab-boolean-check": {
        "title": "創建一個布爾值檢查函數",
        "intro": ["在本實驗中，你將實現一個檢查值是否爲布爾值的函數。"]
      },
      "lab-email-masker": {
        "title": "創建一個電子郵件掩碼器",
        "intro": [
          "在本實驗中，你將創建一個電子郵件掩碼器，用於接收電子郵件地址並將其混淆。",
          "你將練習字符串切片、拼接和使用函數。"
        ]
      },
      "workshop-loan-qualification-checker": {
        "title": "創建一個貸款資格檢查器",
        "intro": [
          "在本工作坊中，你將通過構建一個貸款資格檢查應用繼續學習如何使用條件語句。",
          "你將進一步學習 <code> if </code> 語句，以及如何在 <code> if </code> 中使用比較運算符和多個條件。"
        ]
      },
      "lab-celsius-to-fahrenheit-converter": {
        "title": "創建一個攝氏度轉華氏度轉換器",
        "intro": ["在本實驗中，你將實現一個將溫度從攝氏度轉換爲華氏度的函數。"]
      },
      "lab-counting-cards": {
        "title": "創建一個記牌助手",
        "intro": ["在本實驗中，你將使用 JavaScript 統計已發出的牌數。"]
      },
      "lab-leap-year-calculator": {
        "title": "創建一個閏年計算器",
        "intro": ["在本實驗中，你將使用條件語句和循環來判斷某年是否爲閏年。"]
      },
      "lab-truncate-string": {
        "title": "實現字符串截取算法",
        "intro": ["在本實驗中，你將練習將字符串截取到一定長度。"]
      },
      "lab-string-ending-checker": {
        "title": "創建一個結尾確認工具",
        "intro": [
          "在本實驗中，你將實現一個函數，用於檢查給定字符串是否以指定目標字符串結尾。"
        ]
      },
      "review-javascript-functions": {
        "title": "JavaScript 函數複習",
        "intro": [
          "在進行 JavaScript 函數測驗之前，你應該複習一下你所學過的相關內容。",
          "打開此頁面以複習函數、箭頭函數與作用域。"
        ]
      },
      "quiz-javascript-functions": {
        "title": "JavaScript 函數測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 函數的掌握程度。"]
      },
      "lecture-working-with-arrays": {
        "title": "學習數組",
        "intro": [
          "在這些講座中，你將學習如何處理 JavaScript 數組。你將瞭解數組的構成、一維和二維數組、如何訪問和更新數組中的元素等。"
        ]
      },
      "workshop-shopping-list": {
        "title": "創建一個購物清單",
        "intro": [
          "在本工作坊中，你將通過創建購物清單來練習如何處理數組。",
          "你將複習如何使用像 <code> push </code>、 <code> pop </code>、 <code> shift </code> 和 <code> unshift </code> 這樣的方法從數組中添加和刪除元素。"
        ]
      },
      "lab-lunch-picker-program": {
        "title": "創建一個午餐選擇程序",
        "intro": [
          "在本實驗中，你將通過創建午餐選擇程序來複習數組和隨機數的使用。"
        ]
      },
      "lab-golf-score-translator": {
        "title": "創建一個高爾夫得分翻譯器",
        "intro": ["在本實驗中，你將使用數組方法將高爾夫得分翻譯爲其暱稱。"]
      },
      "lecture-working-with-common-array-methods": {
        "title": "學習常見數組方法",
        "intro": [
          "在這些講座中，你將學習用於執行更高級操作的數組方法，例如獲取元素位置、檢查數組是否包含某元素、複製數組等。"
        ]
      },
      "review-javascript-arrays": {
        "title": "JavaScript 數組複習",
        "intro": [
          "在進行 JavaScript 數組測驗之前，你應該複習一下你所學過的相關知識。",
          "打開此頁面以複習數組解構、如何添加與刪除數組元素等概念。"
        ]
      },
      "quiz-javascript-arrays": {
        "title": "JavaScript 數組測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 數組的掌握程度。"]
      },
      "lecture-introduction-to-javascript-objects-and-their-properties": {
        "title": "JavaScript 對象及其屬性簡介",
        "intro": [
          "在這些講座中，你將學習 JavaScript 對象的基礎，包括如何創建對象、訪問其屬性，以及理解原始類型與非原始類型的區別。"
        ]
      },
      "workshop-wildlife-tracker": {
        "title": "Build a Wildlife Tracker",
        "intro": [
          "In this workshop, you will build a simple Wildlife Tracker using JavaScript objects.",
          "You will practice creating objects, accessing and updating properties, removing properties, checking for property existence, and working with bracket notation."
        ]
      },
      "lab-cargo-manifest-validator": {
        "title": "Build a Cargo Manifest Validator",
        "intro": [
          "In this lab, you will use JavaScript to normalize and validate cargo manifests."
        ]
      },
      "lecture-working-with-json": {
        "title": "學習 JSON",
        "intro": [
          "在這些講座中，你將學習 JavaScript 對象表示法（JSON），包括如何訪問 JSON 數據以及使用 <code> JSON.parse() </code> 和 <code> JSON.stringify() </code> 方法。"
        ]
      },
      "lecture-working-with-optional-chaining-and-object-destructuring": {
        "title": "學習可選鏈與對象解構",
        "intro": [
          "在這些講座中，你將學習 JavaScript 中的高級對象處理技術，包括可選鏈運算符和對象解構語法。"
        ]
      },
      "workshop-recipe-tracker": {
        "title": "創建一個食譜追蹤器",
        "intro": [
          "在本工作坊中，你將通過創建一個食譜追蹤器來複習 JavaScript 對象的使用。"
        ]
      },
      "lab-quiz-game": {
        "title": "創建一個測驗遊戲",
        "intro": [
          "在本實驗中，你將使用 JavaScript 數組與對象創建一個測驗遊戲。",
          "你還將練習使用函數從數組中隨機選擇問題和答案並進行比較。"
        ]
      },
      "lab-record-collection": {
        "title": "創建音樂專輯集",
        "intro": ["在本實驗中，你將創建一個用於管理音樂專輯集的函數。"]
      },
      "review-javascript-objects": {
        "title": "JavaScript 對象複習",
        "intro": [
          "在進行 JavaScript 對象測驗之前，你應該複習一下你所學過的相關知識。",
          "打開此頁面以複習如何從對象中訪問信息、對象解構、處理 JSON 等概念。"
        ]
      },
      "quiz-javascript-objects": {
        "title": "JavaScript 對象測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 對象的掌握程度。"]
      },
      "lecture-working-with-loops": {
        "title": "學習循環",
        "intro": [
          "循環是 JavaScript 的核心部分。因此以下講座將幫助你學習不同類型的循環及其工作原理，以及迭代的運作方式。"
        ]
      },
      "workshop-word-counter": {
        "title": "Build a Word Counter",
        "intro": [
          "In this workshop, you will practice using <code>for...of</code> loops by building a function that counts the occurrences of a string in an array of strings."
        ]
      },
      "workshop-sentence-analyzer": {
        "title": "創建一個句子分析程序",
        "intro": [
          "在本工作坊中，你將通過構建一個句子分析應用來複習如何使用 JavaScript 循環。"
        ]
      },
      "workshop-space-mission-roster": {
        "title": "Build a Space Mission Roster",
        "intro": [
          "In this workshop, you'll leverage JavaScript loops to build a space mission roster."
        ]
      },
      "workshop-heritage-library-catalog": {
        "title": "Build a Heritage Library Catalog",
        "intro": [
          "In this workshop, you will digitize historical catalog cards for a heritage library.",
          "You will practice using loops, objects, and string methods to parse raw text data, search and group entries, render formatted output, and export to JSON and CSV."
        ]
      },
      "lab-longest-word-in-a-string": {
        "title": "創建一個最長單詞查找應用",
        "intro": [
          "在本實驗中，你將使用 JavaScript 循環找到給定句子中最長單詞的長度。"
        ]
      },
      "lab-factorial-calculator": {
        "title": "創建一個階乘計算器",
        "intro": [
          "在本實驗中，你將構建一個階乘計算器。",
          "你將練習使用循環和條件語句來計算一個數的階乘。"
        ]
      },
      "lab-mutations": {
        "title": "實現字符串字母包含算法",
        "intro": ["在本實驗中，你將練習迭代兩個不同字符串以比較它們的字符。"]
      },
      "lab-chunky-monkey": {
        "title": "實現數組分塊算法",
        "intro": [
          "在本實驗中，你將練習將數組劃分爲更小數組，可選擇任意方法實現。"
        ]
      },
      "lab-profile-lookup": {
        "title": "實現資料查詢函數",
        "intro": ["在本實驗中，你將創建一個用於查詢個人資料信息的函數。"]
      },
      "lab-repeat-a-string": {
        "title": "實現字符串重複函數",
        "intro": ["在本實驗中，你將使用循環結構，將一個字符串重複指定的次數。"]
      },
      "workshop-festival-crowd-flow-simulator": {
        "title": "Build a Festival Crowd Flow Simulator",
        "intro": [
          "In this workshop, you will use JavaScript to simulate the flow of attendants at a music festival."
        ]
      },
      "lab-missing-letter-detector": {
        "title": "實現缺失字母檢測函數",
        "intro": [
          "在本實驗中，你將實現一個函數，用於查找給定連續字母範圍中缺失的字母，並返回該字母。"
        ]
      },
      "lab-smart-pantry-restocker": {
        "title": "Build a Smart Pantry Restocker",
        "intro": [
          "In this lab, you will build a small pantry management program using basic JavaScript concepts like arrays, objects, loops, and conditionals."
        ]
      },
      "lab-proofreading-tool": {
        "title": "Build a Proofreading Tool",
        "intro": [
          "In this lab, you will build a proofreading tool that analyzes arrays of words for palindromes and repeated phrases.",
          "You will practice for loops and nested loops to check palindromes and find repeated word sequences."
        ]
      },
      "review-javascript-loops": {
        "title": "JavaScript 循環複習",
        "intro": [
          "在測試你對不同 JavaScript 循環的掌握之前，你應該先複習它們。",
          "打開此頁面以複習 <code> for...of </code> 循環、<code> while </code> 循環、<code> break and continue </code> 語句等。"
        ]
      },
      "quiz-javascript-loops": {
        "title": "JavaScript 循環測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 循環的掌握程度。"]
      },
      "lecture-working-with-types-and-objects": {
        "title": "學習類型與對象",
        "intro": [
          "在這些講座中，你將學習字符串對象、<code> toString() </code> 方法、<code> Number </code> 構造函數等。"
        ]
      },
      "lecture-working-with-arrays-variables-and-naming-practices": {
        "title": "學習數組、變量與命名實踐",
        "intro": [
          "在這些講座中，你將學習給變量和函數命名的常見做法，以及如何處理數組。"
        ]
      },
      "lecture-working-with-code-quality-and-execution-concepts": {
        "title": "學習代碼質量與執行概念",
        "intro": [
          "在這些講座中，你將學習什麼是 linter 和格式化工具、什麼是內存管理，以及閉包等概念。"
        ]
      },
      "lab-reverse-a-string": {
        "title": "創建一個字符串反轉器",
        "intro": ["在本實驗中，你將創建一個反轉給定字符串的函數。"]
      },
      "lab-largest-number-finder": {
        "title": "實現最大數字查找函數",
        "intro": [
          "在本實驗中，你將使用 JavaScript 基礎語法實現一個函數，找出給定數組中每個子數組的最大值。"
        ]
      },
      "lab-first-element-finder": {
        "title": "構建第一個元素查找器",
        "intro": [
          "在本實驗中，你將創建一個函數，遍歷數組並返回第一個通過“真實性測試”的元素。"
        ]
      },
      "lab-slice-and-splice": {
        "title": "實現切片與拼接算法",
        "intro": ["在本實驗中，你將練習將一個數組與另一個數組合並。"]
      },
      "lab-pyramid-generator": {
        "title": "創建金字塔生成器",
        "intro": [
          "在本實驗中，你將創建一個金字塔生成器。",
          "你將接收一個數字作爲參數，並通過循環結構生成指定層數的金字塔圖形。"
        ]
      },
      "lab-gradebook-app": {
        "title": "創建成績簿應用",
        "intro": [
          "在本實驗中，你將創建一個成績簿應用。",
          "你將練習使用條件語句根據學生的分數確定其等級。"
        ]
      },
      "lecture-the-var-keyword-and-hoisting": {
        "title": "var 關鍵字與提升",
        "intro": [
          "在這些講座中，你將學習 <code> var </code> 關鍵字以及爲什麼不再推薦使用它。你還將瞭解 JavaScript 中的提升，以便避免代碼中的細微錯誤。"
        ]
      },
      "lab-title-case-converter": {
        "title": "實現標題格式轉換函數",
        "intro": ["在本實驗中，你將編寫一個函數，用於將字符串轉換爲標題格式。"]
      },
      "lab-falsy-remover": {
        "title": "實現假值移除函數",
        "intro": ["在本實驗中，你將創建一個函數，用於從數組中移除所有假值。"]
      },
      "lab-inventory-management-program": {
        "title": "創建庫存管理程序",
        "intro": [
          "在本實驗中，你將使用 JavaScript 構建一個庫存管理程序。",
          "你將使用 JavaScript 的對象數組來管理庫存。"
        ]
      },
      "lecture-understanding-modules-imports-and-exports": {
        "title": "理解模塊、導入與導出",
        "intro": ["在本講座中，你將學習 JavaScript 中的模塊、導入與導出。"]
      },
      "lecture-working-with-the-arguments-object-and-rest-parameters": {
        "title": "學習 arguments 對象與剩餘參數",
        "intro": [
          "在這些課程中，你將學習如何使用 <code> arguments </code> 對象與剩餘參數語法。"
        ]
      },
      "lab-unique-sorted-union": {
        "title": "實現去重並集函數",
        "intro": [
          "在本實驗中，你將創建一個函數，該函數接收兩個或多個數組，並返回一個按原數組順序排列且不包含重複值的新數組。"
        ]
      },
      "lab-password-generator": {
        "title": "創建密碼生成器應用",
        "intro": ["在本實驗中，你將根據用戶輸入構建一個密碼生成器應用。"]
      },
      "lab-sum-all-numbers-algorithm": {
        "title": "設計一個求和算法",
        "intro": [
          "在本實驗中，你將設計一個求和算法。該算法接受一個由兩個數字組成的數組，返回這兩個數字以及它們之間所有數字的和。"
        ]
      },
      "lab-dna-pair-generator": {
        "title": "實現 DNA 配對生成器",
        "intro": [
          "在本實驗中，你將實現一個 DNA 鹼基配對算法，將單條 DNA 鏈轉換爲互補鹼基對。"
        ]
      },
      "lab-html-entitiy-converter": {
        "title": "實現 HTML 實體轉換器",
        "intro": [
          "在本實驗中，你將把字符串中的特殊字符轉換爲對應的 HTML 實體。"
        ]
      },
      "lab-odd-fibonacci-sum-calculator": {
        "title": "創建奇數斐波那契求和計算器",
        "intro": [
          "在本實驗中，你將構建一個奇數斐波那契求和計算器，該計算器接受一個數字並返回小於或等於該數字的所有奇數斐波那契數之和。"
        ]
      },
      "lab-element-skipper": {
        "title": "實現元素跳過函數",
        "intro": [
          "在本實驗中，你將創建一個函數，根據指定的步長值跳過數組中的元素。"
        ]
      },
      "lab-playlist-remix-engine": {
        "title": "Build a Playlist Remix Engine",
        "intro": [
          "In this lab, you will build a Playlist Remix Engine using JavaScript arrays.",
          "You will apply array methods and logic to transform data and generate a final remix schedule."
        ]
      },
      "review-javascript-fundamentals": {
        "title": "JavaScript 基礎複習",
        "intro": [
          "在測試你對 JavaScript 基礎的掌握之前，你需要先複習相關概念。",
          "打開此頁面以複習閉包、內存管理等概念。"
        ]
      },
      "quiz-javascript-fundamentals": {
        "title": "JavaScript 基礎測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 基礎的掌握程度。"]
      },
      "lecture-working-with-higher-order-functions-and-callbacks": {
        "title": "學習高階函數與回調函數",
        "intro": [
          "在這些講座中，你將學習如何使用高階函數和回調函數。你將學習的高階函數包括 <code> map() </code>、<code> filter() </code>、<code> reduce() </code>、<code> sort() </code>、<code> every() </code> 和 <code> some() </code>。你還將學習如何將這些方法鏈式調用以達到預期結果。"
        ]
      },
      "workshop-library-manager": {
        "title": "創建圖書館管理器",
        "intro": [
          "在本工作坊中，你將通過構建一個圖書館管理器來學習高階數組方法。"
        ]
      },
      "lab-book-organizer": {
        "title": "構建圖書整理器",
        "intro": [
          "在本實驗中，你將使用 JavaScript 高階函數構建一個圖書整理器。"
        ]
      },
      "lab-sorted-index-finder": {
        "title": "實現有序索引查找函數",
        "intro": [
          "在本實驗中，你將實現一個函數，確定一個數字在有序數組中的插入索引，使數組保持排序狀態。"
        ]
      },
      "lab-symmetric-difference": {
        "title": "實現對稱差函數",
        "intro": ["在本實驗中，你將練習使用高階函數求兩個數組之間的對稱差。"]
      },
      "lab-value-remover-function": {
        "title": "實現指定值移除函數",
        "intro": [
          "在本實驗中，你將創建一個函數，用於從數組中移除指定值的所有實例。"
        ]
      },
      "lab-matching-object-filter": {
        "title": "實現對象匹配過濾函數",
        "intro": [
          "在本實驗中，你將實現一個函數，從對象數組中篩選出所有包含匹配屬性和值對的對象。"
        ]
      },
      "lab-prime-number-sum-calculator": {
        "title": "創建質數求和計算器",
        "intro": [
          "在本實驗中，你將創建一個質數求和計算器，計算並返回小於或等於指定數字的所有質數之和。"
        ]
      },
      "lab-range-based-lcm-calculator": {
        "title": "實現區間最小公倍數計算器",
        "intro": [
          "在本實驗中，你將創建一個函數，接受一個由兩個數字組成的數組，並返回這兩個數字以及它們之間所有數字的最小公倍數（LCM）。"
        ]
      },
      "lab-deep-flattening-tool": {
        "title": "創建一個深度扁平化工具",
        "intro": [
          "在本實驗中，你將創建一個函數，用來將任意層級嵌套的數組進行扁平化處理，並且不使用內置的 flat 方法。"
        ]
      },
      "lab-all-true-property-validator": {
        "title": "創建一個全爲真屬性校驗器",
        "intro": [
          "在本實驗中，你將編寫一個函數，用於檢查數組中的所有對象在指定屬性上是否都具有真值。"
        ]
      },
      "review-javascript-higher-order-functions": {
        "title": "JavaScript 高階函數複習",
        "intro": [
          "在進行 JavaScript 高階函數測驗之前，你應該先複習它們。",
          "打開此頁面以複習如何使用 <code> map() </code>、<code> filter() </code> 和 <code> reduce() </code> 方法等概念。"
        ]
      },
      "quiz-javascript-higher-order-functions": {
        "title": "JavaScript 高階函數測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 高階函數的掌握程度。"]
      },
      "lecture-working-with-the-dom-click-events-and-web-apis": {
        "title": "學習 DOM、點擊事件與 Web API",
        "intro": [
          "在這些講座中，你將學習如何處理文檔對象模型（DOM）、<code> addEventListener() </code> 方法與事件，以及 Web API。"
        ]
      },
      "workshop-storytelling-app": {
        "title": "創建一個講故事應用",
        "intro": [
          "在本工作坊中，你將構建一個講故事應用，允許你根據類型列出不同的故事。"
        ]
      },
      "workshop-emoji-reactor": {
        "title": "創建 Emoji 反應器",
        "intro": [
          "在本工作坊中，你將構建一個 Emoji 反應器以練習 <code> querySelector </code> 與 <code> querySelectorAll </code>。"
        ]
      },
      "lab-favorite-icon-toggler": {
        "title": "創建收藏圖標切換器",
        "intro": [
          "在本實驗中，你將利用 JavaScript 的點擊事件構建一個收藏圖標切換器。"
        ]
      },
      "lecture-understanding-the-event-object-and-event-delegation": {
        "title": "理解事件對象與事件委託",
        "intro": [
          "在這些講座中，你將學習事件對象、change 事件、事件冒泡與事件委託。"
        ]
      },
      "workshop-music-instrument-filter": {
        "title": "創建樂器篩選器",
        "intro": ["在本工作坊中，你將使用 JavaScript 構建一個樂器篩選器。"]
      },
      "lab-real-time-counter": {
        "title": "構建實時計數器",
        "intro": [
          "在本實驗中，你將構建一個實時字符計數器。",
          "你將練習在用戶在輸入字段中輸入時處理 <code> input </code> 事件。"
        ]
      },
      "lab-lightbox-viewer": {
        "title": "創建燈箱查看器",
        "intro": [
          "在本實驗中，你將構建一個燈箱查看器，用於以聚焦模式瀏覽圖片。",
          "你將練習點擊事件與切換類。"
        ]
      },
      "workshop-rps-game": {
        "title": "創建石頭剪刀布遊戲",
        "intro": [
          "在本工作坊中，你將通過構建一個石頭剪刀布遊戲來複習 DOM 操作與事件。"
        ]
      },
      "lab-football-team-cards": {
        "title": "創建一組足球隊卡片",
        "intro": [
          "在本實驗中，你將使用 DOM 操作、對象解構、事件處理與數據過濾來構建一組足球隊卡片。"
        ]
      },
      "review-dom-manipulation-and-click-events-with-javascript": {
        "title": "JavaScript 中的 DOM 操作與點擊事件複習",
        "intro": [
          "在進行 DOM 測驗之前，你應該複習一下所學的相關內容。",
          "打開此頁面以複習如何使用 <code> DOM </code>、<code> Web APIs </code>、<code> addEventListener() </code> 方法、change 事件、事件冒泡等概念。"
        ]
      },
      "quiz-dom-manipulation-and-click-event-with-javascript": {
        "title": "DOM 操作與點擊事件測驗",
        "intro": [
          "使用本測驗檢驗你對 JavaScript 中 DOM 操作與點擊事件的掌握程度。"
        ]
      },
      "lecture-understanding-aria-expanded-aria-live-and-common-aria-states": {
        "title": "理解 aria-expanded、aria-live 與常見 ARIA 狀態",
        "intro": [
          "在這些講座中，你將深入瞭解諸如 <code>aria-expanded</code>、<code>aria-live</code> 等 ARIA 屬性，以及常見的 ARIA 狀態。"
        ]
      },
      "workshop-planets-tablist": {
        "title": "創建行星標籤頁列表",
        "intro": [
          "在本工作坊中，你將構建一個動態的標籤頁界面，用於展示太陽系各行星的相關事實。"
        ]
      },
      "workshop-note-taking-app": {
        "title": "創建筆記應用",
        "intro": [
          "在本工作坊中，你將構建一個可訪問的筆記應用。",
          "這將爲你提供練習使用 <code> aria-live </code> 屬性的機會。"
        ]
      },
      "lab-theme-switcher": {
        "title": "創建主題切換器",
        "intro": [
          "在本實驗中，你將構建一個主題切換器並練習使用 <code> aria-haspopup </code>、<code> aria-expanded </code> 和 <code> aria-controls </code> 屬性。"
        ]
      },
      "review-js-a11y": {
        "title": "JavaScript 與無障礙複習",
        "intro": [
          "在進行 JavaScript 與無障礙測驗之前，你應該複習一下你所學過的相關知識。",
          "打開此頁面以複習如何使用 <code> aria-expanded </code>、<code> aria-live </code> 和 <code> aria-controls </code> 屬性等概念。"
        ]
      },
      "quiz-js-a11y": {
        "title": "JavaScript 與無障礙測驗",
        "intro": ["使用本測驗檢驗你對 JavaScript 與無障礙最佳實踐的掌握程度。"]
      },
      "lecture-debugging-techniques": {
        "title": "Debugging Techniques",
        "intro": [
          "In these lectures, you will learn about the common errors in JavaScript and the techniques you can use to fix them – a process called debugging."
        ]
      },
      "lab-random-background-color-changer": {
        "title": "Debug a Random Background Color Changer",
        "intro": [
          "In this lab, you'll debug a random background color changer and fix the errors to make it work properly."
        ]
      },
      "review-debugging-javascript": {
        "title": "Debugging JavaScript Review",
        "intro": [
          "Before you're quizzed on common debugging techniques, you should review what you've learned.",
          "Open up this page to review concepts including how to work with the <code>throw statement</code>, <code>try...catch...finally</code> and more."
        ]
      },
      "quiz-debugging-javascript": {
        "title": "Debugging JavaScript Quiz",
        "intro": ["Test your knowledge of JavaScript debugging with this quiz."]
      },
      "lecture-working-with-regular-expressions": {
        "title": "Working with Regular Expressions",
        "intro": [
          "In these lectures, you will learn about regular expressions in JavaScript. You will learn about the methods for working with regular expressions, modifiers, character classes, lookaheads, lookbehinds, back-references, quantifiers, and more."
        ]
      },
      "workshop-spam-filter": {
        "title": "Build a Spam Filter",
        "intro": [
          "Regular expressions, often shortened to \"regex\" or \"regexp\", are patterns that help programmers match, search, and replace text. Regular expressions are powerful, but can be difficult to understand because they use so many special characters.",
          "In this workshop, you'll use capture groups, positive lookaheads, negative lookaheads, and other techniques to match any text you want."
        ]
      },
      "lab-palindrome-checker": {
        "title": "Build a Palindrome Checker",
        "intro": [
          "For this lab, you'll build an application that checks whether a given word is a palindrome."
        ]
      },
      "lab-regex-sandbox": {
        "title": "Build a RegEx Sandbox",
        "intro": ["In this lab you'll build a regex sandbox."]
      },
      "lab-spinal-case-converter": {
        "title": "Implement a Spinal Case Converter",
        "intro": [
          "In this lab, you will create a function that converts a given string to spinal case which is a style of writing where all letters are lowercase and separated by hyphens."
        ]
      },
      "lab-pig-latin": {
        "title": "Implement a Pig Latin Translator",
        "intro": [
          "In this lab, you'll implement a Pig Latin translator using JavaScript.",
          "You'll practice string manipulation, conditional logic, and regular expressions."
        ]
      },
      "lab-smart-word-replacement": {
        "title": "Build a Smart Word Replacement Function",
        "intro": [
          "In this lab, you will use regex to create a function that performs a search and replace operation on a given string."
        ]
      },
      "review-javascript-regular-expressions": {
        "title": "JavaScript Regular Expressions Review",
        "intro": [
          "Before you're quizzed on Regular Expressions, you should review what you've learned.",
          "Open up this page to review concepts like lookaheads, lookbehinds, common regex modifiers and more."
        ]
      },
      "quiz-javascript-regular-expressions": {
        "title": "JavaScript Regular Expressions Quiz",
        "intro": [
          "Test your knowledge of JavaScript Regular Expressions with this quiz."
        ]
      },
      "lab-markdown-to-html-converter": {
        "title": "Build a Markdown to HTML Converter",
        "intro": [
          "For this lab, you'll build a Markdown to HTML converter using JavaScript.",
          "You'll practice regular expressions, string manipulation, and more."
        ]
      },
      "lecture-understanding-form-validation": {
        "title": "Understanding Form Validation",
        "intro": [
          "In these lectures, you will learn about form validation in JavaScript. You will learn about the various ways to validate forms, how the <code>preventDefault()</code> method works, and how the submit event works."
        ]
      },
      "workshop-calorie-counter": {
        "title": "Build a Calorie Counter",
        "intro": [
          "Sometimes when you're coding a web application, you'll need to be able to accept input from a user. In this calorie counter workshop, you'll practice how to validate user input, perform calculations based on that input, and dynamically update your interface to display the results.",
          "You'll also practice basic regular expressions, template literals, the <code>addEventListener()</code> method, and more."
        ]
      },
      "lab-customer-complaint-form": {
        "title": "Build a Customer Complaint Form",
        "intro": [
          "For this lab, you'll use JavaScript to validate a customer complaint form.",
          "You'll practice how to validate form inputs, display error messages, and prevent the form from submitting if there are errors."
        ]
      },
      "review-form-validation-with-javascript": {
        "title": "Form Validation with JavaScript Review",
        "intro": [
          "Before you're quizzed on form validation, you should review what you've learned.",
          "Open up this page to review concepts including the <code>preventDefault()</code> method, the submit event and more."
        ]
      },
      "quiz-form-validation-with-javascript": {
        "title": "Form Validation with JavaScript Quiz",
        "intro": [
          "Test what you've learned about JavaScript form validation with this quiz."
        ]
      },
      "lecture-working-with-dates": {
        "title": "Working with Dates",
        "intro": [
          "In these lectures, you will learn about the JavaScript date object. You will learn about the methods for working with dates and how to format dates."
        ]
      },
      "lab-date-conversion": {
        "title": "Build a Date Conversion Program",
        "intro": [
          "In this lab, you'll build a program to convert a date from one format to another."
        ]
      },
      "review-javascript-dates": {
        "title": "JavaScript Dates Review",
        "intro": [
          "Before you're quizzed on working with dates, you should review what you've learned.",
          "Open up this page to review the <code>Date()</code> object and common methods."
        ]
      },
      "quiz-javascript-dates": {
        "title": "JavaScript Dates Quiz",
        "intro": [
          "Test what you've learned about JavaScript Dates with this quiz."
        ]
      },
      "lecture-working-with-audio-and-video": {
        "title": "Working with Audio and Video",
        "intro": [
          "In these lectures, you will learn how to work with audio and video files using JavaScript. You will learn about the <code>Audio</code> and <code>Video</code> constructors, their methods and properties, audio and video formats, codecs, the <code>HTMLMediaElement</code> API, and much more."
        ]
      },
      "workshop-music-player": {
        "title": "Build a Music Player",
        "intro": [
          "In this workshop, you'll code a basic MP3 player using HTML, CSS, and JavaScript.",
          "The project covers fundamental concepts such as handling audio playback, managing a playlist, implementing play, pause, next, and previous functionalities and dynamically update your user interface based on the current song."
        ]
      },
      "review-javascript-audio-and-video": {
        "title": "JavaScript Audio and Video Review",
        "intro": [
          "Before you're quizzed on working with audio and video in JavaScript, you should review what you've learned about them.",
          "Open up this page to review concepts including the <code>Audio</code> constructor, the <code>HTMLMediaElement</code> API and more."
        ]
      },
      "quiz-javascript-audio-and-video": {
        "title": "JavaScript Audio and Video Quiz",
        "intro": [
          "Test what you've learned about JavaScript audio and video with this quiz."
        ]
      },
      "lab-drum-machine": {
        "title": "Build a Drum Machine",
        "intro": [
          "For this lab you will use the <code>audio</code> element to build a drum machine."
        ]
      },
      "lecture-working-with-maps-and-sets": {
        "title": "Working with Maps and Sets",
        "intro": [
          "In these lectures, you will learn about JavaScript <code>Map</code> and <code>Set</code>. You will also learn how they both differ from <code>WeakSets</code> and <code>WeakMaps</code>."
        ]
      },
      "workshop-plant-nursery-catalog": {
        "title": "Build a Plant Nursery Catalog",
        "intro": [
          "In this workshop, you will practice using Maps and Sets by building a plant nursery catalog."
        ]
      },
      "review-javascript-maps-and-sets": {
        "title": "JavaScript Maps and Sets Review",
        "intro": [
          "Before you're quizzed on JavaScript Maps and Sets, you should review what you've learned about them.",
          "Open up this page to review concepts such as the <code>Map</code> and <code>Set</code> objects, as well as WeakSet and WeakMap."
        ]
      },
      "quiz-javascript-maps-and-sets": {
        "title": "JavaScript Maps and Sets Quiz",
        "intro": [
          "Test what you've learned about JavaScript Maps and Sets with this quiz."
        ]
      },
      "lab-voting-system": {
        "title": "Build a Voting System",
        "intro": [
          "In this lab, you'll build a voting system using Maps and Sets.",
          "You'll practice how to use the <code>Map</code> object to store key-value pairs and the <code>Set</code> object to store unique values."
        ]
      },
      "lecture-working-with-client-side-storage-and-crud-operations": {
        "title": "Working with Client-Side Storage and CRUD Operations",
        "intro": [
          "In these lectures, you will learn about client-side storage and CRUD operations in JavaScript. You will learn about <code>localStorage</code> and <code>sessionStorage</code> alongside their methods and properties, cookies, the Cache API, IndexDB, and much more."
        ]
      },
      "workshop-todo-app": {
        "title": "Build a Todo App using Local Storage",
        "intro": [
          "Local storage is a web browser feature that lets web applications store key-value pairs persistently within a user's browser. This allows web apps to save data during one session, then retrieve it in a later page session.",
          "In this workshop, you'll learn how to handle form inputs, manage local storage, perform CRUD (Create, Read, Update, Delete) operations on tasks, implement event listeners, and toggle UI elements."
        ]
      },
      "lab-bookmark-manager-app": {
        "title": "Build a Bookmark Manager App",
        "intro": [
          "For this lab, you'll build a bookmark manager app.",
          "You'll utilize local storage to store bookmarks, and practice how to add, remove, and display bookmarks."
        ]
      },
      "review-local-storage-and-crud": {
        "title": "Local Storage and CRUD Review",
        "intro": [
          "Before you are quizzed on working with <code>localStorage</code>, you first need to review the concepts.",
          "Open up this page to review the <code>localStorage</code> property, <code>sessionStorage</code> property and more."
        ]
      },
      "quiz-local-storage-and-crud": {
        "title": "Local Storage and CRUD Quiz",
        "intro": [
          "Test what you've learned about local storage and CRUD with this quiz."
        ]
      },
      "lecture-understanding-how-to-work-with-classes-in-javascript": {
        "title": "Understanding How to Work with Classes in JavaScript",
        "intro": [
          "In these lectures, you will learn about classes in JavaScript. You will learn about inheritance, the <code>this</code> keyword, static properties and methods, and more."
        ]
      },
      "workshop-shopping-cart": {
        "title": "Build a Shopping Cart",
        "intro": [
          "In this workshop you'll create a shopping cart using JavaScript classes.",
          "You will practice how to use the this keyword, create class instances, implement methods for data manipulation and more."
        ]
      },
      "lab-project-idea-board": {
        "title": "Build a Project Idea Board",
        "intro": [
          "In this lab, you'll build a project idea board using OOP in JavaScript.",
          "You'll practice how to create classes, add methods to classes, and create instances of classes."
        ]
      },
      "review-javascript-classes": {
        "title": "JavaScript Classes Review",
        "intro": [
          "Before you're quizzed on how to work with classes, you should review what you've learned about them.",
          "Open up this page to review concepts including the <code>this</code> keyword, class inheritance and more."
        ]
      },
      "quiz-javascript-classes": {
        "title": "JavaScript Classes Quiz",
        "intro": [
          "Test what you've learned about JavaScript classes with this quiz."
        ]
      },
      "lab-bank-account-manager": {
        "title": "Build a Bank Account Management Program",
        "intro": [
          "In this lab, you'll build a simple transaction management system for a bank account."
        ]
      },
      "lecture-understanding-recursion-and-the-call-stack": {
        "title": "Understanding Recursion and the Call Stack",
        "intro": [
          "In this lecture, you will learn about recursion and the call stack."
        ]
      },
      "workshop-countup": {
        "title": "Build a Countup",
        "intro": [
          "In this workshop you will build a countdown function that returns an array of numbers counting up from 1 to a given number."
        ]
      },
      "lab-countdown": {
        "title": "Build a Countdown",
        "intro": [
          "For this lab, you will build a countdown function that returns an array of numbers counting down from given number to 1."
        ]
      },
      "lab-range-of-numbers": {
        "title": "Build a Range of Numbers Generator",
        "intro": [
          "In this lab, you'll use recursion to generate an array of numbers within a specified range.",
          "You'll practice recursive function calls, base cases, and building arrays through recursion."
        ]
      },
      "workshop-decimal-to-binary-converter": {
        "title": "Build a Decimal to Binary Converter",
        "intro": [
          "Recursion is a programming concept where a function calls itself. This can reduce a complex problem into simpler sub-problems, until they become straightforward to solve.",
          "In this workshop, you'll build a decimal-to-binary converter using JavaScript. You'll practice the fundamental concepts of recursion, explore the call stack, and build out a visual representation of the recursion process through an animation."
        ]
      },
      "lab-permutation-generator": {
        "title": "Build a Permutation Generator",
        "intro": [
          "For this lab, you'll build a permutation generator that produces all possible permutations of a given string."
        ]
      },
      "review-recursion": {
        "title": "Recursion Review",
        "intro": [
          "Before you're quizzed on recursion, you should review what you've learned.",
          "Open up this page to review what is recursion and what is it used for."
        ]
      },
      "quiz-recursion": {
        "title": "Recursion Quiz",
        "intro": ["Test your knowledge of Recursion with this quiz."]
      },
      "lecture-working-with-common-data-structures-js": {
        "title": "Working with Common Data Structures",
        "intro": [
          "Learn about common data structures and how to work with them in JavaScript."
        ]
      },
      "workshop-linked-list-js": {
        "title": "Build a Linked List",
        "intro": [
          "In the previous lessons, you learned about some common data structures.",
          "In this workshop, you will build a linked list using JavaScript."
        ]
      },
      "lab-linked-list-operations": {
        "title": "Implement Linked List Operations",
        "intro": [
          "In this lab you will implement common linked list operations such as insertion, deletion, and traversal."
        ]
      },
      "lab-implement-a-stack": {
        "title": "Implement a Stack",
        "intro": [
          "In this lab, you will implement a stack data structure using functions."
        ]
      },
      "lab-implement-a-queue": {
        "title": "Implement a Queue",
        "intro": [
          "In this lab, you will implement a queue data structure using functions."
        ]
      },
      "review-data-structures-js": {
        "title": "Data Structures Review",
        "intro": [
          "Before you're quizzed on data structures, you should review what you've learned about them.",
          "Open up this page to review concepts like the different data structures, algorithms, time and space complexity, and big O notation."
        ]
      },
      "quiz-data-structures-js": {
        "title": "Data Structures Quiz",
        "intro": [
          "Test what you've learned about data structures in JavaScript with this quiz."
        ]
      },
      "lecture-introduction-to-common-searching-and-sorting-algorithms": {
        "title": "Introduction to Common Searching and Sorting Algorithms",
        "intro": [
          "Learn about fundamental searching and sorting algorithms, including linear search, binary search, and merge sort.",
          "These lessons cover algorithm implementations, time and space complexity analysis, and the divide and conquer programming paradigm."
        ]
      },
      "workshop-binary-search-js": {
        "title": "Implement the Binary Search Algorithm",
        "intro": [
          "The binary search algorithm is a searching algorithm used to find a target item in a sorted list.",
          "In this workshop, you'll implement the binary search algorithm and return the path it took to find the target or return 'Value not found'."
        ]
      },
      "workshop-merge-sort-js": {
        "title": "Implement the Merge Sort Algorithm",
        "intro": [
          "The merge sort algorithm is a sorting algorithm based on the divide and conquer principle.",
          "In this workshop, you'll implement the merge sort algorithm to sort a list of random numbers."
        ]
      },
      "lab-bubble-sort-algorithm": {
        "title": "Implement the Bubble Sort Algorithm",
        "intro": [
          "In this lab, you will implement the bubble sort algorithm to sort an array of integers in ascending order."
        ]
      },
      "lab-selection-sort-js": {
        "title": "Implement the Selection Sort Algorithm",
        "intro": [
          "In this lab you will implement the selection sort algorithm."
        ]
      },
      "lab-insertion-sort": {
        "title": "Implement the Insertion Sort Algorithm",
        "intro": [
          "In this lab, you will implement the insertion sort algorithm to sort an array of integers in ascending order."
        ]
      },
      "lab-quicksort-js": {
        "title": "Implement the Quicksort Algorithm",
        "intro": [
          "In this lab you will implement the quicksort algorithm to sort an array of integers."
        ]
      },
      "review-searching-and-sorting-algorithms-js": {
        "title": "Searching and Sorting Algorithms Review",
        "intro": [
          "Before you are quizzed on Algorithms, you should review what you've learned about searching and sorting algorithms."
        ]
      },
      "quiz-searching-and-sorting-algorithms-js": {
        "title": "Searching and Sorting Algorithms Quiz",
        "intro": [
          "Test your knowledge of searching and sorting algorithms with this quiz."
        ]
      },
      "lecture-understanding-graphs-and-trees-js": {
        "title": "Understanding Graphs and Trees",
        "intro": [
          "In this lesson, you will learn about fundamental data structures like graphs, trees, and their practical applications in computer science."
        ]
      },
      "workshop-shortest-path-algorithm-js": {
        "title": "Implement the Shortest Path Algorithm",
        "intro": [
          "The shortest path algorithm finds the minimum distance between nodes in a weighted graph.",
          "In this workshop, you'll implement the shortest path algorithm in JavaScript and return both the shortest distances and the paths taken."
        ]
      },
      "lab-adjacency-list-to-matrix-converter-js": {
        "title": "Build an Adjacency List to Matrix Converter",
        "intro": [
          "In this lab, you will implement a function that converts an adjacency list representation of a graph into an adjacency matrix representation."
        ]
      },
      "workshop-breadth-first-search-js": {
        "title": "Implement the Breadth-First Search Algorithm",
        "intro": [
          "In this workshop, you will use the breadth-first search algorithm to generate all valid combinations of parentheses."
        ]
      },
      "lab-depth-first-search-js": {
        "title": "Implement the Depth-First Search Algorithm",
        "intro": [
          "In this lab, you will implement a solution for the depth-first search algorithm."
        ]
      },
      "lab-n-queens-problem-js": {
        "title": "Implement the N-Queens Problem",
        "intro": [
          "In this lab, you will implement a solution for the N-Queens problem."
        ]
      },
      "review-graphs-and-trees-js": {
        "title": "Graphs and Trees Review",
        "intro": [
          "Graphs and Trees Review",
          "Before you are quizzed on graphs and trees, you should review what you've learned."
        ]
      },
      "quiz-graph-and-trees-js": {
        "title": "Graphs and Trees Quiz",
        "intro": [
          "Graphs and Trees Quiz",
          "Test what you've learned about graphs and trees with this quiz."
        ]
      },
      "lecture-understanding-dynamic-programming-js": {
        "title": "Understanding Dynamic Programming",
        "intro": [
          "In this lesson, you will learn about dynamic programming, an algorithmic technique used to solve complex problems efficiently by breaking them down into simpler subproblems."
        ]
      },
      "lab-nth-fibonacci-number-js": {
        "title": "Build an Nth Fibonacci Number Calculator",
        "intro": [
          "In this lab, you'll practice dynamic programming by implementing a Fibonacci sequence calculator in JavaScript."
        ]
      },
      "review-dynamic-programming-js": {
        "title": "Dynamic Programming Review",
        "intro": [
          "Before you're quizzed on dynamic programming, you should review what you've learned about it."
        ]
      },
      "quiz-dynamic-programming-js": {
        "title": "Dynamic Programming Quiz",
        "intro": [
          "Test what you've learned about dynamic programming in JavaScript with this quiz."
        ]
      },
      "lecture-understanding-functional-programming": {
        "title": "Understanding Functional Programming",
        "intro": [
          "In these lectures, you will learn about functional programming and how to nest functions using a technique called currying."
        ]
      },
      "workshop-recipe-ingredient-converter": {
        "title": "Build a Recipe Ingredient Converter",
        "intro": [
          "In the previous lectures, you learned the core concepts behind functional programming and currying.",
          "Now you will be able to apply what you have learned about currying and functional programming by building a recipe ingredient converter application."
        ]
      },
      "lab-optional-arguments-sum-function": {
        "title": "實現可選參數求和函數",
        "intro": [
          "在本實驗中，你將實現一個函數，它最多接受兩個參數並計算其和；當僅提供一個參數時，該函數應返回一個新的函數，用於接收第二個參數並完成求和。"
        ]
      },
      "lab-sorting-visualizer": {
        "title": "Build a Sorting Visualizer",
        "intro": [
          "For this lab, you'll use JavaScript to visualize the steps that the Bubble Sort algorithm takes to reorder an array of integers."
        ]
      },
      "review-javascript-functional-programming": {
        "title": "JavaScript Functional Programming Review",
        "intro": [
          "Before you're quizzed on functional programming, you should review what you've learned.",
          "Open up this page to review concepts on functional programming, currying and more."
        ]
      },
      "quiz-javascript-functional-programming": {
        "title": "JavaScript Functional Programming Quiz",
        "intro": [
          "Test what you've learned about JavaScript functional programming with this quiz."
        ]
      },
      "lecture-understanding-asynchronous-programming": {
        "title": "Understanding Asynchronous Programming",
        "intro": [
          "In these lectures, you will learn about asynchronous programming in JavaScript. You will learn about the differences between synchronous and asynchronous programming, how the <code>async</code> keyword works, the <code>Fetch</code> API, promises, <code>async/await</code>, the <code>Geolocation</code> API, and much more."
        ]
      },
      "workshop-fcc-authors-page": {
        "title": "Build an fCC Authors Page",
        "intro": [
          "One common aspect of web development is learning how to fetch data from an external API, then work with asynchronous JavaScript.",
          "In this workshop you will practice how to use the fetch method, dynamically update the DOM to display the fetched data and paginate your data so you can load results in batches."
        ]
      },
      "lab-fcc-forum-leaderboard": {
        "title": "Build an fCC Forum Leaderboard",
        "intro": [
          "For this lab you'll practice asynchronous JavaScript by coding your own freeCodeCamp forum leaderboard."
        ]
      },
      "review-asynchronous-javascript": {
        "title": "Asynchronous JavaScript Review",
        "intro": [
          "Review asynchronous JavaScript concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-asynchronous-javascript": {
        "title": "Asynchronous JavaScript Quiz",
        "intro": [
          "Test what you've learned about asynchronous JavaScript with this quiz."
        ]
      },
      "lab-weather-app": {
        "title": "Build a Weather App",
        "intro": [
          "In this lab you'll build a Weather App using an API",
          "You'll practice how to fetch data from the API, store and display it on your app."
        ]
      },
      "review-javascript": {
        "title": "JavaScript Review",
        "intro": [
          "Before you take the JavaScript prep exam, you should review everything you've learned about JavaScript.",
          "Open up this page to review all of the concepts taught including variables, strings, booleans, functions, objects, arrays, debugging, working with the DOM and more."
        ]
      },
      "exam-javascript-certification": {
        "title": "JavaScript Certification Exam",
        "intro": ["Pass this exam to earn your JavaScript Certification."]
      }
    }
  },
  "front-end-development-libraries-v9": {
    "title": "Front-End Development Libraries Certification",
    "intro": [
      "This course teaches you the libraries that developers use to build webpages: React, TypeScript, and more.",
      "To earn your Front-End Development Libraries Certification:",
      "- Complete the five required projects to qualify for the certification exam.",
      "- Pass the Front-End Development Libraries Certification exam."
    ],
    "note": "",
    "chapters": {
      "front-end-development-libraries": "Front-End Development Libraries",
      "front-end-development-libraries-certification-exam": "Front-End Development Libraries Certification Exam"
    },
    "modules": {
      "react-fundamentals": "React Fundamentals",
      "react-state-hooks-and-routing": "React State, Hooks, and Routing",
      "lab-currency-converter": "Build a Currency Converter",
      "lab-tic-tac-toe": "Build a Tic-Tac-Toe Game",
      "performance": "Performance",
      "testing": "Testing",
      "css-libraries-and-frameworks": "CSS Libraries and Frameworks",
      "lab-photography-exhibit": "Design a Photography Exhibit",
      "typescript-fundamentals": "TypeScript Fundamentals",
      "lab-flashcard-quiz-app": "Build a Flashcard Quiz App",
      "lab-digital-pet-game": "Build a Digital Pet Game",
      "data-visualization": "Data Visualization and D3",
      "review-front-end-libraries": "Front-End Libraries Review",
      "front-end-development-libraries-certification-exam": "Front-End Development Libraries Certification Exam"
    },
    "module-intros": {
      "typescript-fundamentals": {
        "intro": [
          "In this module, you will be introduced to TypeScript, which is a superset of JavaScript that allows you to add static typing to your JavaScript code. You will build several workshops and labs that will give you practice in working with generics, type narrowing, TSX, and more. Then you will test your knowledge of TypeScript fundamentals with a short quiz."
        ]
      },
      "data-visualization": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will be introduced to data visualization and learn how to work with the D3 library."
        ]
      },
      "front-end-development-libraries-certification-exam": {
        "note": "Coming 2026",
        "intro": [
          "Pass this exam to earn your Front-End Development Libraries Certification."
        ]
      }
    },
    "blocks": {
      "lecture-introduction-to-javascript-libraries-and-frameworks": {
        "title": "Introduction to JavaScript Libraries and Frameworks",
        "intro": [
          "In these lessons, you will get an introduction to JavaScript libraries and frameworks. You will learn about the roles of JavaScript libraries and frameworks, single page applications (SPAs) and the issue surrounding them, and React, the most popular front-end JavaScript library."
        ]
      },
      "workshop-reusable-mega-navbar": {
        "title": "Build a Reusable Mega Navbar",
        "intro": [
          "In the previous lessons, you learned how to work with components in React.",
          "In this workshop, you will build a reusable Navbar component using React."
        ]
      },
      "lab-reusable-footer": {
        "title": "Build a Reusable Footer",
        "intro": ["In this lab, you'll use React to build a reusable footer."]
      },
      "lecture-working-with-data-in-react": {
        "title": "Working with Data in React",
        "intro": [
          "In these lessons, you will learn how to work with data in React. You will learn about <code>props</code> and how to pass them around, conditional rendering, how to render lists, and how to use inline styles."
        ]
      },
      "workshop-reusable-profile-card-component": {
        "title": "Build a Reusable Profile Card Component",
        "intro": [
          "In this workshop, you will learn how to work with props by building a reusable profile card component."
        ]
      },
      "lab-mood-board": {
        "title": "Build a Mood Board",
        "intro": [
          "In this lab, you'll create a mood board using React.",
          "You'll practice how to pass data from a parent component to a child component using props."
        ]
      },
      "review-react-basics": {
        "title": "React Basics Review",
        "intro": [
          "Review basic React concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-react-basics": {
        "title": "React Basics Quiz",
        "intro": ["Test your knowledge of React basics with this quiz."]
      },
      "lecture-working-with-state-and-responding-to-events-in-react": {
        "title": "Working with State and Responding to Events in React",
        "intro": [
          "In these lessons, you will learn about working with state and responding to events with React."
        ]
      },
      "workshop-toggle-text-app": {
        "title": "Toggle Text App",
        "intro": [
          "In this workshop, you will continue to learn about the <code>useState()</code> hook by building an application that hides and shows a piece of text on the screen."
        ]
      },
      "lab-color-picker": {
        "title": "Build a Color Picker App",
        "intro": [
          "In this lab you'll build a Color Picker.",
          "You'll practice using state and hooks to manage the properties of an element."
        ]
      },
      "lecture-understanding-effects-and-referencing-values-in-react": {
        "title": "Understanding Effects and Referencing Values in React",
        "intro": [
          "In these lessons, you will learn about effects and referencing values with React."
        ]
      },
      "workshop-fruit-search-app": {
        "title": "Build a Fruit Search App",
        "intro": [
          "In this workshop, you will continue to learn about the <code>useEffect()</code> hook by building an application that fetches fruit data from an API based on user input and displays the results dynamically."
        ]
      },
      "lab-one-time-password-generator": {
        "title": "Build a One-Time Password Generator",
        "intro": [
          "In this lab you'll build a one-time password generator.",
          "You'll practice using the useEffect hooks to create a timer and generate a random OTP."
        ]
      },
      "review-react-state-and-hooks": {
        "title": "React State and Hooks Review",
        "intro": [
          "Before you're quizzed on React state and hooks, you should review what you've learned.",
          "Open up this page to review working with state, custom hooks and more."
        ]
      },
      "quiz-react-state-and-hooks": {
        "title": "React State and Hooks Quiz",
        "intro": [
          "Test what you've learned about React's <code>useState</code> and <code>useEffect</code> hooks with this quiz."
        ]
      },
      "lecture-working-with-forms-in-react": {
        "title": "Working with Forms in React",
        "intro": [
          "In these lessons, you will learn about working with forms in React."
        ]
      },
      "workshop-superhero-application-form": {
        "title": "Build a Superhero Application Form",
        "intro": [
          "In this workshop, you will build a superhero application form."
        ]
      },
      "lab-event-rsvp": {
        "title": "Build an Event RSVP",
        "intro": [
          "In this lab, you'll build an Event RSVP form using React.",
          "You'll practice using the useState hook to manage form input and display user responses."
        ]
      },
      "lecture-working-with-data-fetching-and-memoization-in-react": {
        "title": "Working with Data Fetching and Memoization in React",
        "intro": [
          "In these lessons, you will learn about data fetching and memoization in React."
        ]
      },
      "workshop-shopping-list-app": {
        "title": "Build a Shopping List App",
        "intro": [
          "In this workshop, you'll use the <code>useMemo()</code> and <code>useCallback()</code> hooks in React to build a simple shopping list app. You'll learn more about state and the lifecycle of React components, and how to use memoization to reduce re-renders and make your apps more efficient."
        ]
      },
      "lecture-routing-react-frameworks-and-dependency-management-tools": {
        "title": "Routing, React Frameworks, and Dependency Management Tools",
        "intro": [
          "In these lessons, you will learn about routing in React, React frameworks, and dependency management tools."
        ]
      },
      "lecture-react-strategies-and-debugging": {
        "title": "React Strategies and Debugging",
        "intro": [
          "In these lessons, you will learn about different strategies and debugging in React."
        ]
      },
      "review-react-forms-data-fetching-and-routing": {
        "title": "React Forms, Data Fetching and Routing Review",
        "intro": [
          "Before you take the React forms, data fetching and routing quiz, you should review everything you've learned so far.",
          "Open up this page, to review all of the concepts taught including routing, forms, state management, prop drilling, data fetching and more."
        ]
      },
      "quiz-react-forms-data-fetching-and-routing": {
        "title": "React Forms, Data Fetching and Routing Quiz",
        "intro": [
          "Test what you've learned about routing, forms, and data fetching with this quiz."
        ]
      },
      "lab-currency-converter": {
        "title": "Build a Currency Converter",
        "intro": [
          "For this lab, you'll build a currency converter app.",
          "You'll use React state, memoization, and controlled components to convert between currencies."
        ]
      },
      "lab-tic-tac-toe": {
        "title": "Build a Tic-Tac-Toe Game",
        "intro": [
          "In this lab, you'll build a Tic-Tac-Toe game using React.",
          "You'll practice managing state, handling user interactions, and updating the UI dynamically."
        ]
      },
      "lecture-understanding-performance-in-web-applications": {
        "title": "Understanding Performance in Web Applications",
        "intro": [
          "In these lessons, you will learn performance in web applications."
        ]
      },
      "review-web-performance": {
        "title": "Web Performance Review",
        "intro": [
          "Before you take the web performance quiz, you should review everything you've learned so far.",
          "Open up this page to review all of the concepts taught including INP, key metrics for measuring performance, Performance Web APIs and more."
        ]
      },
      "quiz-web-performance": {
        "title": "Web Performance Quiz",
        "intro": [
          "Test what you've learned about Web Performance with this quiz."
        ]
      },
      "lecture-understanding-the-different-types-of-testing": {
        "title": "Understanding the Different Types of Testing",
        "intro": [
          "In these lessons, you will learn about the different types of testing."
        ]
      },
      "review-testing": {
        "title": "Testing Review",
        "intro": [
          "Before you take the testing quiz, you should review everything you've learned so far.",
          "Open up this page to review all of the concepts taught including unit testing, end-to-end testing, functional testing and more."
        ]
      },
      "quiz-testing": {
        "title": "Testing Quiz",
        "intro": ["Test what you've learned on testing with this quiz."]
      },
      "lecture-working-with-css-libraries-and-frameworks": {
        "title": "Working with CSS Libraries and Frameworks",
        "intro": [
          "In these lessons, you will learn how to work with CSS libraries and frameworks."
        ]
      },
      "workshop-error-message-component": {
        "title": "Build an Error Message Component",
        "intro": [
          "In this workshop, you will learn the basics of Tailwind CSS by building out an error message component."
        ]
      },
      "workshop-tailwind-cta-component": {
        "title": "Build a CTA Component",
        "intro": [
          "In this workshop, you will build a call to action (CTA) component using Tailwind CSS."
        ]
      },
      "workshop-tailwind-pricing-component": {
        "title": "Build a Pricing Component",
        "intro": [
          "In this workshop, you will build a pricing component using Tailwind CSS.",
          "You will practice working with Tailwind CSS grid utility classes."
        ]
      },
      "lab-music-shopping-cart-page": {
        "title": "Build a Music Shopping Cart Page",
        "intro": [
          "In this lab, you will build a music shopping cart page with Tailwind CSS.",
          "You will practice working with Tailwind CSS utility classes for flexbox layouts, colors, breakpoints and more."
        ]
      },
      "lab-photography-exhibit": {
        "title": "Design a Photography Exhibit",
        "intro": [
          "In this lab, you will practice working with Tailwind CSS by designing a photography exhibit webpage."
        ]
      },
      "review-css-libraries-and-frameworks": {
        "title": "CSS Libraries and Frameworks Review",
        "intro": [
          "Before you take the CSS libraries and frameworks quiz, you should review everything you've learned so far.",
          "Open up this page to review all of the concepts taught including CSS frameworks, CSS preprocessors, Sass and more."
        ]
      },
      "quiz-css-libraries-and-frameworks": {
        "title": "CSS Libraries and Frameworks Quiz",
        "intro": [
          "Test what you've learned about CSS Libraries and Frameworks with this quiz."
        ]
      },
      "lecture-introduction-to-typescript": {
        "title": "Introduction to TypeScript",
        "intro": [
          "In these lessons, you will learn what TypeScript is and how to use it."
        ]
      },
      "workshop-type-safe-user-profile": {
        "title": "Build a Type Safe User Profile",
        "intro": [
          "In this workshop, you will practice working with type annotations, array types, object types and more by building out a user profile."
        ]
      },
      "workshop-type-safe-math-toolkit": {
        "title": "Build a Type Safe Math Toolkit",
        "intro": [
          "In this workshop, you will practice typing functions by building a math toolkit project."
        ]
      },
      "lecture-understanding-type-composition": {
        "title": "Understanding Type Composition",
        "intro": [
          "In these lessons, you will learn how to work with union types, interfaces, void types and more."
        ]
      },
      "workshop-shape-manager": {
        "title": "Build a Shape Manager",
        "intro": [
          "In this workshop, you will practice basic TypeScript features like types and interfaces by building a shape manager program."
        ]
      },
      "lab-motorcycle-shop": {
        "title": "Build a Motorcycle Shop",
        "intro": [
          "For this lab, you will use TypeScript to build a Motorcycle Shop."
        ]
      },
      "lecture-working-with-generics-and-type-narrowing": {
        "title": "Working with Generics and Type Narrowing",
        "intro": [
          "In these lessons, you will learn about generics and type narrowing in TypeScript."
        ]
      },
      "workshop-bug-emoji-picker": {
        "title": "Build a Bug Emoji Picker",
        "intro": [
          "In this workshop, you will learn about TypeScript abstract classes and generics by building a bug species selector that displays different bug emojis."
        ]
      },
      "lab-product-showcase": {
        "title": "Build a Product Showcase",
        "intro": [
          "In this lab, you will practice generics and type narrowing in TypeScript."
        ]
      },
      "lecture-working-with-typescript-configuration-files": {
        "title": "Working with TypeScript Configuration Files",
        "intro": [
          "In this lesson, you will learn about TypeScript configuration files and how to use them."
        ]
      },
      "workshop-fortune-teller-app": {
        "title": "Build a Fortune Telling App",
        "intro": [
          "In this workshop, you will continue to practice working with TypeScript by building a fortune telling app."
        ]
      },
      "lab-flashcard-quiz-app": {
        "title": "Build a Flashcard Quiz App",
        "intro": [
          "In this lab, you will practice using TypeScript by building a flashcard quiz app."
        ]
      },
      "lab-digital-pet-game": {
        "title": "Build a Digital Pet Game",
        "intro": [
          "In this lab, you'll practice what you learned about TypeScript and React by building a digital pet game."
        ]
      },
      "workshop-build-a-football-player-card-builder": {
        "title": "Build a Football Player Card Builder",
        "intro": [
          "In this workshop, you'll learn how to work with React in TypeScript by building a football player card builder."
        ]
      },
      "review-typescript": {
        "title": "TypeScript Review",
        "intro": [
          "Before you take the TypeScript quiz, you should review everything you've learned so far.",
          "Open up this page to review all of the concepts taught including data types in TypeScript, generics, type narrowing and more."
        ]
      },
      "quiz-typescript": {
        "title": "TypeScript Quiz",
        "intro": ["Test what you've learned on TypeScript with this quiz."]
      },
      "lecture-introduction-to-data-visualization": {
        "title": "Introduction to Data Visualization",
        "intro": [
          "In these lessons, you will learn about basic data visualization concepts."
        ]
      },
      "lab-bar-chart": {
        "title": "Build a Bar Chart",
        "intro": ["In this lab you will use d3 to build a bar chart."]
      },
      "lab-scatterplot-graph": {
        "title": "Build a Scatterplot Graph",
        "intro": [
          "In this lab you will create a d3 scatterplot graph using a provided dataset."
        ]
      },
      "review-front-end-libraries": {
        "title": "Front-End Libraries Review",
        "intro": [
          "Review the Front-End Libraries concepts to prepare for the upcoming quiz."
        ]
      },
      "exam-front-end-development-libraries-certification": {
        "title": "Front-End Development Libraries Certification Exam",
        "intro": [
          "Pass this exam to earn your Front-End Development Libraries Certification"
        ]
      }
    }
  },
  "python-v9": {
    "title": "Python Certification",
    "intro": [
      "This course teaches you the fundamentals of Python programming.",
      "To earn your Python Certification:",
      "- Complete the five required projects to qualify for the certification exam.",
      "- Pass the Python Certification exam."
    ],
    "chapters": {
      "python": "Python",
      "python-certification-exam": "Python Certification Exam"
    },
    "modules": {
      "python-basics": "Python Basics",
      "python-installation": "Install Python",
      "python-loops-and-sequences": "Loops and Sequences",
      "python-dictionaries-and-sets": "Dictionaries and Sets",
      "lab-user-configuration-manager": "Build a User Configuration Manager",
      "python-error-handling": "Error Handling",
      "python-classes-and-objects": "Classes and Objects",
      "lab-budget-app": "Build a Budget App",
      "python-object-oriented-programming": "Object-Oriented Programming (OOP)",
      "lab-polygon-area-calculator": "Build a Polygon Area Calculator",
      "python-linear-data-structures": "Linear Data Structures",
      "lab-hash-table": "Build a Hash Table",
      "python-algorithms": "Algorithms",
      "lab-tower-of-hanoi": "Implement the Tower of Hanoi Algorithm",
      "python-graphs-and-trees": "Graphs and Trees",
      "python-dynamic-programming": "Dynamic Programming",
      "review-python": "Python Review",
      "python-certification-exam": "Python Certification Exam"
    },
    "blocks": {
      "lecture-introduction-to-python": {
        "title": "Introduction to Python",
        "intro": [
          "In these lessons, you will learn what Python is and common uses in the industry."
        ]
      },
      "lecture-understanding-variables-and-data-types": {
        "title": "Understanding Variables and Data Types",
        "intro": [
          "In these lessons, you will learn about variables and data types in Python."
        ]
      },
      "workshop-report-card-printer": {
        "title": "Build a Report Card Printer",
        "intro": [
          "In this workshop, you will build a report card printer to work with primitive data types in Python."
        ]
      },
      "lecture-introduction-to-python-strings": {
        "title": "Introduction to Strings",
        "intro": ["In these lessons, you will learn about strings in Python."]
      },
      "workshop-employee-profile-generator": {
        "title": "Build an Employee Profile Generator",
        "intro": [
          "In this workshop, you will practice the fundamentals of string manipulation in Python by building a tool that generates formatted employee badges and analyzes employee codes."
        ]
      },
      "lecture-numbers-and-mathematical-operations": {
        "title": "Numbers and Mathematical Operations",
        "intro": [
          "In these lessons, you will learn about numbers and mathematical operations in Python."
        ]
      },
      "workshop-bill-splitter": {
        "title": "Build a Bill Splitter",
        "intro": [
          "In this workshop you will build a bill splitter to practice working with numbers and mathematical operations in Python"
        ]
      },
      "lecture-booleans-and-conditionals": {
        "title": "Booleans and Conditionals",
        "intro": [
          "In these lessons, you will learn about booleans and conditionals in Python."
        ]
      },
      "workshop-movie-ticket-booking-calculator": {
        "title": "Build a Movie Ticket Booking Calculator",
        "intro": [
          "In this workshop, you will practice how to use booleans and conditional statements in Python by building a movie ticket booking calculator."
        ]
      },
      "lab-travel-weather-planner": {
        "title": "Build a Travel Weather Planner",
        "intro": [
          "In this lab, you will build a travel weather planner using conditionals."
        ]
      },
      "lecture-understanding-functions-and-scope": {
        "title": "Understanding Functions and Scope",
        "intro": [
          "In these lessons, you will learn about functions and scope in Python."
        ]
      },
      "lab-discount-calculator": {
        "title": "Build an Apply Discount Function",
        "intro": [
          "In this lab, you will practice basic Python by building a calculator to apply a discount to a price."
        ]
      },
      "workshop-caesar-cipher": {
        "title": "Build a Caesar Cipher",
        "intro": [
          "In this workshop, you'll build a Caesar cipher using basic Python concepts such as strings, conditionals, functions, and more."
        ]
      },
      "lab-rpg-character": {
        "title": "Build an RPG Character",
        "intro": [
          "In this lab you will practice basic python by building an RPG character."
        ]
      },
      "review-python-basics": {
        "title": "Python Basics Review",
        "intro": [
          "Before you're quizzed on Python basics, you should review what you've learned about it.",
          "In this review page, you will review working with strings, functions, comparison operators and more."
        ]
      },
      "quiz-python-basics": {
        "title": "Python Basics Quiz",
        "intro": [
          "Test what you've learned about Python basics with this quiz."
        ]
      },
      "lecture-python-installation": {
        "title": "Installing Python and Running Code Locally",
        "intro": [
          "In these lessons, you will learn how to install Python on your local device and run code locally."
        ]
      },
      "review-python-installation": {
        "title": "Python Installation Review",
        "intro": [
          "Before you are quizzed on working with Python locally, you should review the concepts covered in the lessons."
        ]
      },
      "quiz-python-installation": {
        "title": "Python Installation Quiz",
        "intro": [
          "Test what you've learned about installing Python locally with this quiz."
        ]
      },
      "lecture-working-with-loops-and-sequences": {
        "title": "Working with Loops and Sequences",
        "intro": [
          "Learn about working with loops and sequences in these lessons."
        ]
      },
      "workshop-pin-extractor": {
        "title": "Build a Pin Extractor",
        "intro": [
          "In this workshop you will build a function to extract secret pins hidden in poems."
        ]
      },
      "lab-number-pattern-generator": {
        "title": "Build a Number Pattern Generator",
        "intro": ["In this lab you will build a number pattern generator."]
      },
      "review-loops-and-sequences": {
        "title": "Loops and Sequences Review",
        "intro": [
          "Before you're quizzed on loops and sequences, you should review what you've learned about them.",
          "Open up this page to review concepts around loops, lists, tuples and some of their common methods."
        ]
      },
      "quiz-loops-and-sequences": {
        "title": "Loops and Sequences Quiz",
        "intro": [
          "Test what you've learned about loops and sequences in Python with this quiz."
        ]
      },
      "lecture-working-with-dictionaries-and-sets": {
        "title": "Working with Dictionaries and Sets",
        "intro": [
          "Learn about working with dictionaries and sets in these lessons."
        ]
      },
      "lecture-working-with-modules": {
        "title": "Working with Modules",
        "intro": ["Learn about working with modules in these lessons."]
      },
      "workshop-medical-data-validator": {
        "title": "Build a Medical Data Validator",
        "intro": [
          "In this workshop, you'll practice working with dictionaries and sets while validating a collection of medical data."
        ]
      },
      "review-dictionaries-and-sets": {
        "title": "Dictionaries and Sets review",
        "intro": [
          "Before you're quizzed on dictionaries and sets, you should review what you've learned about them.",
          "Open up this page to review concepts around dictionaries, sets, and how to import modules."
        ]
      },
      "quiz-dictionaries-and-sets": {
        "title": "Dictionaries and Sets Quiz",
        "intro": [
          "Test what you've learned about dictionaries and sets in Python with this quiz."
        ]
      },
      "lab-user-configuration-manager": {
        "title": "Build a User Configuration Manager",
        "intro": [
          "In this lab, you will practice working with dictionaries in Python."
        ]
      },
      "lecture-understanding-error-handling": {
        "title": "Understanding Error Handling",
        "intro": [
          "In these lessons, you will learn about error handling in Python. You will learn about the different types of errors, some good debugging practices, what exceptions are, and how to handle them."
        ]
      },
      "lab-isbn-validator": {
        "title": "Debug an ISBN Validator",
        "intro": [
          "In this lab, you will start with a bugged app, and you will need to debug and fix the bugs until it is working properly."
        ]
      },
      "review-error-handling": {
        "title": "Error Handling Review",
        "intro": [
          "Before you're quizzed on error handling, you should review what you've learned about it."
        ]
      },
      "quiz-error-handling": {
        "title": "Error Handling Quiz",
        "intro": [
          "Test what you've learned about Error Handling in Python with this quiz."
        ]
      },
      "lecture-classes-and-objects": {
        "title": "Classes and Objects",
        "intro": ["Learn about classes and objects in these lessons."]
      },
      "workshop-musical-instrument-inventory": {
        "title": "Build a Musical Instrument Inventory",
        "intro": [
          "In this workshop, you will learn about classes, objects, and methods in Python by building a simple musical instrument inventory."
        ]
      },
      "lab-planet-class": {
        "title": "Build a Planet Class",
        "intro": [
          "In this lab you will create a class that represents a planet."
        ]
      },
      "workshop-email-simulator": {
        "title": "Build an Email Simulator",
        "intro": [
          "In this workshop you will implement classes and objects by building an email simulator that simulates sending, receiving, and managing emails between different users."
        ]
      },
      "review-classes-and-objects": {
        "title": "Classes and Objects Review",
        "intro": [
          "Before you're quizzed on classes and objects, you should review what you've learned about them.",
          "Open up this page to review concepts like how classes work, what are objects, methods, attributes, special methods and more."
        ]
      },
      "quiz-classes-and-objects": {
        "title": "Classes and Objects Quiz",
        "intro": [
          "Test what you've learned about classes and objects in Python with this quiz."
        ]
      },
      "lab-budget-app": {
        "title": "Build a Budget App",
        "intro": [
          "In this lab you will build a budget app and practice creating a class and methods for that class."
        ]
      },
      "lecture-understanding-object-oriented-programming-and-encapsulation": {
        "title": "Understanding Object Oriented Programming and Encapsulation",
        "intro": [
          "Learn about understanding object oriented programming and encapsulation in these lessons."
        ]
      },
      "workshop-salary-tracker": {
        "title": "Build a Salary Tracker",
        "intro": [
          "In this workshop, you'll practice encapsulation, properties, and other OOP concepts by building a salary tracking system for employees."
        ]
      },
      "lab-game-character-stats": {
        "title": "Build a Game Character Stats Tracker",
        "intro": [
          "In this lab, you will build a game character with different stats using object-oriented programming."
        ]
      },
      "lecture-understanding-inheritance-and-polymorphism": {
        "title": "Understanding Inheritance and Polymorphism",
        "intro": [
          "Learn about understanding inheritance and polymorphism in these lessons."
        ]
      },
      "workshop-media-catalogue": {
        "title": "Build a Media Catalogue",
        "intro": [
          "In this workshop, you will create a media catalogue application using object-oriented programming principles."
        ]
      },
      "lecture-understanding-abstraction": {
        "title": "Understanding Abstraction",
        "intro": ["Learn about understanding abstraction in these lessons."]
      },
      "workshop-discount-calculator": {
        "title": "Build a Discount Calculator",
        "intro": [
          "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic."
        ]
      },
      "lab-player-interface": {
        "title": "Build a Player Interface",
        "intro": [
          "In this lab, you'll use the <code>abc</code> module to build a player interface."
        ]
      },
      "review-object-oriented-programming": {
        "title": "Object Oriented Programming Review",
        "intro": [
          "Before you're quizzed on object oriented programming, you should review what you've learned about it."
        ]
      },
      "quiz-object-oriented-programming": {
        "title": "Object Oriented Programming Quiz",
        "intro": [
          "Test what you've learned about object oriented programming in python with this quiz."
        ]
      },
      "lab-polygon-area-calculator": {
        "title": "Build a Polygon Area Calculator",
        "intro": [
          "In this lab, you will use object-oriented programming to calculate the areas of different polygons like squares and rectangles."
        ]
      },
      "lecture-working-with-common-data-structures": {
        "title": "Working with Common Data Structures",
        "intro": [
          "Learn about working with common data structures in these lessons."
        ]
      },
      "workshop-linked-list-class": {
        "title": "Build a Linked List",
        "intro": [
          "In this workshop, you'll practice working with data structures by building a linked list."
        ]
      },
      "review-data-structures": {
        "title": "Data Structures Review",
        "intro": [
          "Before you're quizzed on data structures, you should review what you've learned about them.",
          "Open up this page to review concepts like the different data structures, algorithms, time and space complexity, and big O notation."
        ]
      },
      "quiz-data-structures": {
        "title": "Data Structures Quiz",
        "intro": [
          "Test what you've learned about data structures in Python with this quiz."
        ]
      },
      "lab-hash-table": {
        "title": "Build a Hash Table",
        "intro": [
          "A hash table is a data structure that is used to store key-value pairs and is optimized for quick lookups.",
          "In this lab, you will use your knowledge about data structures to build a hash table."
        ]
      },
      "lecture-searching-and-sorting-algorithms": {
        "title": "Searching and Sorting Algorithms",
        "intro": [
          "Learn about fundamental searching and sorting algorithms, including linear search, binary search, and merge sort.",
          "These lessons cover algorithm implementations, time and space complexity analysis, and the divide and conquer programming paradigm."
        ]
      },
      "workshop-binary-search": {
        "title": "Implement the Binary Search Algorithm",
        "intro": [
          "The binary search algorithm is a searching algorithm used to find a target item in a sorted list.",
          "In this workshop, you'll implement the binary search algorithm and return the path it took to find the target or return 'Value not found'."
        ]
      },
      "lab-bisection-method": {
        "title": "Implement the Bisection Method",
        "intro": [
          "In this lab, you will implement the bisection method to find the square root of a number."
        ]
      },
      "workshop-merge-sort": {
        "title": "Implement the Merge Sort Algorithm",
        "intro": [
          "The merge sort algorithm is a sorting algorithm based on the divide and conquer principle.",
          "In this workshop, you'll implement the merge sort algorithm to sort a list of random numbers."
        ]
      },
      "lab-quicksort": {
        "title": "Implement the Quicksort Algorithm",
        "intro": [
          "In this lab you will implement the quicksort algorithm to sort a list of integers."
        ]
      },
      "lab-selection-sort": {
        "title": "Implement the Selection Sort Algorithm",
        "intro": [
          "In this lab you will implement the selection sort algorithm."
        ]
      },
      "lab-luhn-algorithm": {
        "title": "Implement the Luhn Algorithm",
        "intro": [
          "In this lab, you will implement the Luhn algorithm to validate identification numbers such as credit card numbers."
        ]
      },
      "review-searching-and-sorting-algorithms": {
        "title": "Searching and Sorting Algorithms Review",
        "intro": [
          "Before you're quizzed on searching and sorting algorithms, you should review what you've learned about them."
        ]
      },
      "quiz-searching-and-sorting-algorithms": {
        "title": "Searching and Sorting Algorithms Quiz",
        "intro": [
          "Test what you've learned about searching and sorting algorithms in Python with this quiz."
        ]
      },
      "lab-tower-of-hanoi": {
        "title": "Implement the Tower of Hanoi Algorithm",
        "intro": [
          "In this lab, you will implement an algorithm to solve the Tower of Hanoi puzzle."
        ]
      },
      "lecture-understanding-graphs-and-trees": {
        "title": "Understanding Graphs and Trees",
        "intro": [
          "In this lesson, you will learn about fundamental data structures like graphs, trees, and their practical applications in computer science."
        ]
      },
      "workshop-shortest-path-algorithm": {
        "title": "Implement the Shortest Path Algorithm",
        "intro": [
          "In this workshop you will implement an algorithm to find the shortest path between two nodes in a graph."
        ]
      },
      "lab-adjacency-list-to-matrix-converter": {
        "title": "Build an Adjacency List to Matrix Converter",
        "intro": [
          "In this lab, you will implement a function that converts an adjacency list representation of a graph into an adjacency matrix representation."
        ]
      },
      "workshop-breadth-first-search": {
        "title": "Implement the Breadth-First Search Algorithm",
        "intro": [
          "In this workshop, you will use the bread-first search algorithm to generate all valid combinations of parentheses."
        ]
      },
      "lab-depth-first-search": {
        "title": "Implement the Depth-First Search Algorithm",
        "intro": [
          "In this lab, you will implement the Depth-First Search Algorithm."
        ]
      },
      "lab-n-queens-problem": {
        "title": "Implement the N-Queens Problem",
        "intro": [
          "In this lab, you will implement a solution for the N-Queens problem."
        ]
      },
      "review-graphs-and-trees": {
        "title": "Graphs and Trees Review",
        "intro": [
          "Before you're quizzed on graphs and trees, you should review what you've learned about them."
        ]
      },
      "quiz-graphs-and-trees": {
        "title": "Graphs and Trees Quiz",
        "intro": [
          "Test what you've learned about graphs and trees in Python with this quiz."
        ]
      },
      "lecture-understanding-dynamic-programming": {
        "title": "Understanding Dynamic Programming",
        "intro": [
          "In this lesson, you will learn about dynamic programming, an algorithmic technique used to solve complex problems efficiently by breaking them down into simpler subproblems."
        ]
      },
      "lab-nth-fibonacci-number": {
        "title": "Build an Nth Fibonacci Number Calculator",
        "intro": [
          "In this lab you will implement a Fibonacci sequence calculator using a dynamic programming approach."
        ]
      },
      "review-dynamic-programming": {
        "title": "Dynamic Programming Review",
        "intro": [
          "Before you're quizzed on dynamic programming, you should review what you've learned about it."
        ]
      },
      "quiz-dynamic-programming": {
        "title": "Dynamic Programming Quiz",
        "intro": [
          "Test what you've learned about dynamic programming in python with this quiz."
        ]
      },
      "review-python": {
        "title": "Python Review",
        "intro": ["Review Python concepts to prepare for the upcoming exam."]
      },
      "exam-python-certification": {
        "title": "Python Certification Exam",
        "intro": ["Pass this exam to earn your Python Certification"]
      }
    }
  },
  "relational-databases-v9": {
    "title": "Relational Databases Certification",
    "intro": [
      "This course teaches you the fundamentals of relational databases.",
      "To earn your Relational Databases Certification:",
      "- Complete the five required projects to qualify for the certification exam.",
      "- Pass the Relational Databases Certification exam."
    ],
    "chapters": {
      "relational-databases": "Relational Databases",
      "relational-databases-certification-exam": "Relational Databases Certification Exam"
    },
    "modules": {
      "code-editors": "Code Editors",
      "bash-fundamentals": "Bash Fundamentals",
      "sql-and-postgresql": "SQL and PostgreSQL",
      "lab-celestial-bodies-database": "Build a Celestial Bodies Database",
      "bash-scripting": "Bash Scripting",
      "sql-and-bash": "SQL and Bash",
      "lab-world-cup-database": "Build a World Cup Database",
      "lab-salon-appointment-scheduler": "Build a Salon Appointment Scheduler",
      "git": "Git",
      "lab-periodic-table-database": "Build a Periodic Table Database",
      "lab-number-guessing-game": "Build a Number Guessing Game",
      "review-relational-databases": "Relational Databases Review",
      "relational-databases-certification-exam": "Relational Databases Certification Exam"
    },
    "blocks": {
      "lecture-working-with-code-editors-and-ides": {
        "title": "Working with Code Editors and IDEs",
        "intro": [
          "In these lessons, you will learn how to work with code editors and IDEs. You will learn various concepts about the most popular code editor, VS Code such as its installation, how to create a project in it, keyboard shortcuts, and extensions."
        ]
      },
      "lecture-understanding-the-command-line-and-working-with-bash": {
        "title": "Understanding the Command Line and Working with Bash",
        "intro": [
          "Learn about the Command Line and Working with Bash in these lessons."
        ]
      },
      "workshop-bash-boilerplate": {
        "title": "Build a Boilerplate",
        "intro": [
          "The terminal allows you to send text commands to your computer that can manipulate the file system, run programs, automate tasks, and much more.",
          "In this 170-lesson workshop, you will learn terminal commands by creating a website boilerplate using only the command line."
        ]
      },
      "review-bash-commands": {
        "title": "Bash Commands Review",
        "intro": [
          "Review the Bash Commands concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-bash-commands": {
        "title": "Bash Commands Quiz",
        "intro": ["Test what you've learned bash commands with this quiz."]
      },
      "lecture-working-with-relational-databases": {
        "title": "Working with Relational Databases",
        "intro": [
          "Learn how to work with Relational Databases in these lessons."
        ]
      },
      "workshop-database-of-video-game-characters": {
        "title": "Build a Database of Video Game Characters",
        "intro": [
          "A relational database organizes data into tables that are linked together through relationships.",
          "In this 165-lesson workshop, you will learn the basics of a relational database by creating a PostgreSQL database filled with video game characters."
        ]
      },
      "review-sql-and-postgresql": {
        "title": "SQL and PostgreSQL Review",
        "intro": [
          "Review SQL and PostgreSQL concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-sql-and-postgresql": {
        "title": "SQL and PostgreSQL Quiz",
        "intro": [
          "Test what you've learned about SQL and PostgreSQL with this quiz."
        ]
      },
      "lab-celestial-bodies-database": {
        "title": "Build a Celestial Bodies Database",
        "intro": [
          "For this project, you will build a database of celestial bodies using PostgreSQL."
        ]
      },
      "lecture-understanding-bash-scripting": {
        "title": "Understanding Bash Scripting",
        "intro": ["Learn about Bash Scripting in these lessons."]
      },
      "workshop-bash-five-programs": {
        "title": "Build Five Programs",
        "intro": [
          "Bash scripts combine terminal commands and logic into programs that can execute or automate tasks, and much more.",
          "In this 220-lesson workshop, you will learn more terminal commands and how to use them within Bash scripts by creating five small programs."
        ]
      },
      "review-bash-scripting": {
        "title": "Bash Scripting Review",
        "intro": [
          "Review the bash scripting concepts you've learned to prepare for the upcoming quiz."
        ]
      },
      "quiz-bash-scripting": {
        "title": "Bash Scripting Quiz",
        "intro": ["Test what you've learned on bash scripting in this quiz."]
      },
      "lecture-working-with-sql": {
        "title": "Working With SQL",
        "intro": [
          "In these lessons, you will learn about SQL injection, normalization, and the N+1 problem."
        ]
      },
      "workshop-sql-student-database-part-1": {
        "title": "Build a Student Database: Part 1",
        "intro": [
          "SQL, or Structured Query Language, is the language for communicating with a relational database.",
          "In this 140-lesson workshop, you will create a Bash script that uses SQL to enter information about your computer science students into PostgreSQL."
        ]
      },
      "workshop-sql-student-database-part-2": {
        "title": "Build a Student Database: Part 2",
        "intro": [
          "SQL join commands are used to combine information from multiple tables in a relational database",
          "In this 140-lesson workshop, you will complete your student database while diving deeper into SQL commands."
        ]
      },
      "workshop-kitty-ipsum-translator": {
        "title": "Build a Kitty Ipsum Translator",
        "intro": [
          "There's more to Bash commands than you might think.",
          "In this 140-lesson workshop, you will learn some more complex commands, and the details of how commands work."
        ]
      },
      "workshop-bike-rental-shop": {
        "title": "Build a Bike Rental Shop",
        "intro": [
          "In this 210-lesson workshop, you will build an interactive Bash program that stores rental information for your bike rental shop using PostgreSQL."
        ]
      },
      "review-bash-and-sql": {
        "title": "Bash and SQL Review",
        "intro": [
          "Review the Bash and SQL concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-bash-and-sql": {
        "title": "Bash and SQL Quiz",
        "intro": ["Test what you've learned in this quiz on Bash and SQL."]
      },
      "lab-world-cup-database": {
        "title": "Build a World Cup Database",
        "intro": [
          "For this project, you will create a Bash script that enters information from World Cup games into PostgreSQL, then query the database for useful statistics."
        ]
      },
      "lab-salon-appointment-scheduler": {
        "title": "Build a Salon Appointment Scheduler",
        "intro": [
          "For this lab, you will create an interactive Bash program that uses PostgreSQL to track the customers and appointments for your salon."
        ]
      },
      "lecture-working-with-nano": {
        "title": "Working With Nano",
        "intro": ["Learn about Nano in this lesson."]
      },
      "workshop-castle": {
        "title": "Build a Castle",
        "intro": [
          "Nano is a program that allows you to edit files right in the terminal.",
          "In this 40-lesson workshop, you will learn how to edit files in the terminal with Nano while building a castle."
        ]
      },
      "lecture-introduction-to-git-and-github": {
        "title": "Introduction to Git and GitHub",
        "intro": ["Learn how to work with Git and GitHub in these lessons."]
      },
      "lecture-working-with-code-reviews-branching-deployment-and-ci-cd": {
        "title": "Working With Code Reviews, Branching, Deployment, and CI/CD",
        "intro": [
          "Learn about code reviews, branching, deployment, and CI/CD in these lessons."
        ]
      },
      "workshop-sql-reference-object": {
        "title": "Build an SQL Reference Object",
        "intro": [
          "Git is a version control system that keeps track of all the changes you make to your codebase.",
          "In this 240-lesson workshop, you will learn how Git keeps track of your code by creating an object containing commonly used SQL commands."
        ]
      },
      "review-git": {
        "title": "Git Review",
        "intro": ["Review Git concepts to prepare for the upcoming quiz."]
      },
      "quiz-git": {
        "title": "Git Quiz",
        "intro": ["Test what you've learned on Git with this quiz."]
      },
      "lab-periodic-table-database": {
        "title": "Build a Periodic Table Database",
        "intro": [
          "For this lab, you will create a Bash script to get information about chemical elements from a periodic table database."
        ]
      },
      "lab-number-guessing-game": {
        "title": "Build a Number Guessing Game",
        "intro": [
          "For this lab, you will use Bash scripting, PostgreSQL, and Git to create a number guessing game that runs in the terminal and saves user information."
        ]
      },
      "review-relational-databases": {
        "title": "Relational Databases Review",
        "intro": [
          "Review relational databases concepts to prepare for the exam."
        ]
      },
      "exam-relational-databases-certification": {
        "title": "Relational Databases Certification Exam",
        "intro": [
          "Pass this exam to earn your Relational Databases Certification"
        ]
      }
    }
  },
  "back-end-development-and-apis-v9": {
    "title": "Back-End Development and APIs Certification",
    "intro": [
      "This course teaches you the fundamentals of back-end development and APIs.",
      "To earn your Back-End Development and APIs Certification:",
      "- Complete the five required projects to qualify for the certification exam.",
      "- Pass the Back-End Development and APIs Certification exam."
    ],
    "note": "",
    "chapters": {
      "back-end-development-and-apis": "Back-End Development and APIs",
      "back-end-development-and-apis-certification-exam": "Back-End Development and APIs Certification Exam"
    },
    "modules": {
      "introduction-to-nodejs": "Introduction to Node.js",
      "nodejs-core-modules": "Node.js Core Modules",
      "node-package-manager": "Node Package Manager",
      "http-and-the-web-standards-model": "HTTP and the Web Standards Model",
      "rest-api-and-web-services": "REST API and Web Services",
      "introduction-to-express": "Introduction to Express",
      "express-middleware": "Express Middleware",
      "error-handling-in-express": "Error Handling in Express",
      "websockets": "WebSockets",
      "node-and-sql": "Node and SQL",
      "security-and-privacy": "Security and Privacy",
      "authentication": "Authentication",
      "tooling-and-deployment": "Tooling and Deployment",
      "back-end-development-and-apis-certification-exam": "Back-End Development and APIs Certification Exam"
    },
    "module-intros": {
      "introduction-to-nodejs": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn the basics of working with Node.js."
        ]
      },
      "nodejs-core-modules": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about common Node.js core modules including the fs, os, path and more. Then you will get to practice what you have learned through workshops and labs and test your knowledge through a short quiz."
        ]
      },
      "node-package-manager": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will be introduced to the Node Package Manager, which developers use to manage project dependencies and scripts. Then you will get to practice what you have learned through workshops and labs and test your knowledge with a short quiz."
        ]
      },
      "http-and-the-web-standards-model": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about HTTP (Hypertext Transfer Protocol) and other important concepts including the request-response model, common response codes, DNS, TCP/IP, and more. Then you will get to practice what you have learned through a build your own web server workshop and test your knowledge with a short quiz."
        ]
      },
      "rest-api-and-web-services": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about the REST API (Representational State Transfer Application Programming Interface) and how microservices work. Then you will take a short quiz to test your knowledge."
        ]
      },
      "introduction-to-express": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will be introduced to Express.js, which is a framework used to build RESTful APIs. Then you will practice your skills through workshops and labs and test your knowledge with a short quiz."
        ]
      },
      "express-middleware": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about middleware in Express.js, which is used to handle requests and responses between the client and server. You will then practice your skills through a workshop and lab and test your knowledge with a short quiz."
        ]
      },
      "error-handling-in-express": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about how error handling, debugging, and health checks work in Express.js. You will then practice what you have learned in a lab and test your knowledge with a short quiz."
        ]
      },
      "websockets": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will be introduced to websockets, which is a protocol used for real time communication with the client and server. You will then practice what you have learned in labs and workshops and test your knowledge with a short quiz."
        ]
      },
      "node-and-sql": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will practice building applications with Node and SQL. Then you will take a short quiz to test your knowledge."
        ]
      },
      "security-and-privacy": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about the differences between security and privacy as well as other concepts including  CSPs, Permissions-Policies, PII, working with CORS, and more. Then you will take a short quiz to test your knowledge."
        ]
      },
      "authentication": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about how authentication works in web applications along with other important concepts including JWTs, CSRFs, Passport, Helmet, cryptography and encryption, and more.  You will then practice what you have learned in labs and workshops and test your knowledge with a short quiz."
        ]
      },
      "tooling-and-deployment": {
        "note": "Coming Late 2026",
        "intro": [
          "In this module, you will learn about common tools used in the industry for deploying your full-stack applications. Then you will take a short quiz to test your knowledge."
        ]
      },
      "back-end-development-and-apis-certification-exam": {
        "note": "Coming Late 2026",
        "intro": [
          "Pass this exam to earn your Back-End Development and APIs Certification."
        ]
      }
    },
    "blocks": {
      "lecture-working-with-nodejs-and-event-driven-architecture": {
        "title": "Working with NodeJS and event driven architecture",
        "intro": [
          "Learn about Node.js core libraries, how to install Node.js on your computer, and the advantages and disadvantages of using Node.js on the back-end."
        ]
      },
      "review-node-js-intro": {
        "title": "NodeJS Intro Review",
        "intro": [
          "Review the basics of NodeJS to prepare for the upcoming quiz."
        ]
      },
      "quiz-node-js-intro": {
        "title": "NodeJS Intro Quiz",
        "intro": ["Test what you have learned about NodeJS in this quiz."]
      },
      "lecture-working-with-node-core-modules": {
        "title": "Working with Node Core Modules",
        "intro": [
          "Learn about the node.js core modules, such as fs, buffer, stream, path modules, and more, so you can understand what Node gives you out of the box to build efficient applications without relying on third-party libraries."
        ]
      },
      "review-node-js-core-modules": {
        "title": "Node JS Core Modules Review",
        "intro": [
          "Review Node JS Core Modules concepts to prepare for the upcoming quiz."
        ]
      },
      "quiz-node-js-core-modules": {
        "title": "NodeJS Core Modules Quiz",
        "intro": [
          "Test what you've learned about Node.js core modules with this quiz."
        ]
      },
      "lecture-introduction-to-npm": {
        "title": "Introduction to npm",
        "intro": [
          "In these lessons, you will learn about npm, and how it can help you manage your project's dependencies."
        ]
      },
      "lecture-working-with-npm-scripts": {
        "title": "Working with npm Scripts",
        "intro": [
          "Learn about npm scripts, publishing packages to the npm registry, and working with CommonJS and ES modules. These lessons cover essential Node.js development tools and module systems."
        ]
      },
      "review-npm": {
        "title": "NPM Review",
        "intro": ["Review npm concepts to prepare for the upcoming quiz."]
      },
      "quiz-npm": {
        "title": "NPM Quiz",
        "intro": ["Test what you have learned about npm in this quiz."]
      },
      "lecture-understanding-how-http-dns-tcpip-work": {
        "title": "Understanding how HTTP, DNS and TCP/IP work",
        "intro": [
          "Learn the fundamental concepts of how the internet works, focusing on HTTP, DNS, and TCP/IP."
        ]
      },
      "lecture-understanding-the-http-request-response-model": {
        "title": "Understanding the HTTP Request-Response Model",
        "intro": [
          "Learn the fundamentals of how web communication works through the HTTP request-response model, explore different types of web assets and responses, and understand how forms handle data submission using various HTTP methods."
        ]
      },
      "quiz-http-and-the-web-standards-model": {
        "title": "HTTP and the Web Standards Model Quiz",
        "intro": [
          "Test your knowledge of HTTP, DNS, TCP/IP, the request-response model, and web standards.",
          ""
        ]
      },
      "lecture-understanding-rest-api-and-web-services": {
        "title": "Understanding the REST API and Web Services",
        "intro": [
          "In these lessons, you will learn about REST APIs and web services, and how they allow different applications to communicate with each other over the internet."
        ]
      },
      "lecture-working-with-express": {
        "title": "Working with Express",
        "intro": [
          "In these lessons, you will learn what Express.js is, why developers use it for building web servers and APIs, and how to set up a basic Express application with routes and request handling."
        ]
      },
      "lecture-understanding-routing-in-express-js": {
        "title": "Understanding Routing in ExpressJS",
        "intro": [
          "Understanding Routing in ExpressJS",
          "In these lessons, you will learn about routing in ExpressJS, which is how you define the different endpoints of your web application and how they respond to client requests."
        ]
      },
      "lecture-understanding-error-handling-and-health-checks": {
        "title": "Understanding Error Handling and Health Checks",
        "intro": [
          "In these lessons, you'll learn about error handling and health checks in Express."
        ]
      },
      "quiz-error-handling-in-express": {
        "title": "Error Handling in Express Quiz",
        "intro": [
          "Test your knowledge of HTTP status codes, error handling, debugging, logging, health checks, and graceful shutdowns."
        ]
      },
      "exam-back-end-development-and-apis-certification": {
        "title": "Back-End Development and APIs Certification Exam",
        "intro": [
          "Pass this exam to earn your Back-End Development and APIs Certification"
        ]
      }
    }
  },
  "full-stack-developer-v9": {
    "title": "Certified Full-Stack Developer Curriculum",
    "intro": [
      "This certification represents the culmination of your full-stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.",
      "To qualify for the exam, you must earn the certifications below. Pass the exam to earn your Full-Stack Developer Certification."
    ],
    "note": "",
    "chapters": {
      "certified-full-stack-developer-exam": "Certified Full-Stack Developer Exam"
    },
    "modules": {
      "certified-full-stack-developer-exam": "Certified Full-Stack Developer Exam"
    },
    "module-intros": {
      "certified-full-stack-developer-exam": {
        "note": "Coming Late 2026",
        "intro": [
          "This exam will test what you have learned throughout the previous six certifications."
        ]
      }
    },
    "blocks": {
      "exam-certified-full-stack-developer": {
        "title": "Certified Full-Stack Developer Exam",
        "intro": ["Pass this exam to become a Certified Full-Stack Developer."]
      }
    }
  },
  "html-forms-and-tables": {
    "title": "Learn HTML Forms and Tables",
    "summary": [
      "Learn how to build accessible forms and data tables with semantic HTML."
    ],
    "intro": [
      "Learn how to build accessible forms and data tables with semantic HTML.",
      "Practice structuring inputs, labels, and tabular data so everyone can navigate and submit information confidently."
    ],
    "blocks": {
      "lecture-working-with-forms": {
        "title": "Working with Forms",
        "intro": [
          "In these lessons, you will learn about forms, the role of labels, inputs and buttons in creating forms, client-side form validation, and form states."
        ]
      },
      "workshop-hotel-feedback-form": {
        "title": "Build a Hotel Feedback Form",
        "intro": [
          "In this workshop, you will build a Hotel Feedback Form.",
          "You will practice working with labels, inputs, fieldsets, legends, textareas and buttons."
        ]
      },
      "lecture-working-with-tables": {
        "title": "Working with Tables",
        "intro": [
          "In these lessons, you will learn about HTML tables, how to create them, and when to use them."
        ]
      },
      "workshop-final-exams-table": {
        "title": "Build a Final Exams Table",
        "intro": [
          "In this workshop, you will practice working with HTML tables by building a table of final exams."
        ]
      },
      "lab-book-catalog-table": {
        "title": "Build a Book Catalog Table",
        "intro": [
          "In this lab, you'll review HTML tables by building a book information table.",
          "You'll practice the different table components like the <code>thead</code>, <code>tbody</code>, <code>th</code>, <code>tr</code>, and <code>td</code> elements."
        ]
      },
      "lecture-working-with-html-tools": {
        "title": "Working with HTML Tools",
        "intro": [
          "In these lectures, you will learn about HTML tools and how they let you write better code. These tools include HTML validators, DOM Inspector, and the browser developer tools."
        ]
      },
      "lab-survey-form": {
        "title": "Build a Survey Form",
        "intro": [
          "In this lab, you'll review HTML forms by creating a survey form.",
          "You'll practice working with the <code>label</code> element, the different <code>input</code> elements, the <code>required</code> attribute, and more. "
        ]
      },
      "review-html-tables-and-forms": {
        "title": "HTML Tables and Forms Review",
        "intro": [
          "Before you are quizzed on HTML forms, tables and tools, you first need to review the concepts.",
          "Open up this page to review the <code>table</code>, <code>input</code>, and <code>button</code> elements as well as commonly used tools like the HTML validator and more."
        ]
      },
      "quiz-html-tables-and-forms": {
        "title": "HTML Tables and Forms Quiz",
        "intro": [
          "The following quiz will test your knowledge of HTML tables, forms and commonly used HTML tools.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      }
    }
  },
  "a1-professional-spanish": {
    "title": "A1 Professional Spanish Certification (Beta)",
    "note": "This certification is currently in active development. New content will be published as our instructional design team develops it. Once all content is available, we will release the certification exam.",
    "intro": [
      "This course teaches you the fundamentals of Spanish at the A1 level of the Common European Framework of Reference (CEFR), with lessons focused on professional settings. Each module is broken down into sections:",
      "- A Warm-up section for quick review.",
      "- Learn sections with new vocabulary and grammar.",
      "- Practice sections to check your comprehension and writing skills.",
      "- A Review section with key grammar and vocabulary."
    ],
    "chapters": {
      "es-a1-chapter-welcome-to-a1-professional-spanish": "Welcome to A1 Professional Spanish",
      "es-a1-chapter-spanish-fundamentals": "Spanish Fundamentals",
      "es-a1-chapter-greetings-and-introductions": "Greetings and Introductions",
      "es-a1-chapter-basic-personal-details": "Basic Personal Details",
      "es-a1-chapter-describing-company-and-people": "Describing a Company and Its People"
    },
    "modules": {
      "es-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview",
      "es-a1-module-letters-sounds-and-first-numbers": "Letters, Sounds and First Numbers",
      "es-a1-module-greetings-and-farewells": "Greetings and Farewells",
      "es-a1-module-introducing-yourself": "Introducing Yourself",
      "es-a1-module-first-questions": "First Questions",
      "es-a1-module-numbers-10-to-29": "Numbers 10 to 29",
      "es-a1-module-sharing-your-personal-details": "Sharing Your Personal Details",
      "es-a1-module-numbers-30-to-100": "Numbers 30 to 100",
      "es-a1-module-describing-a-company": "Describing a Company",
      "es-a1-module-describing-people-at-work": "Describing People at Work"
    },
    "module-intros": {
      "es-a1-module-describing-a-company": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will learn how to identify and describe basic information about a company, such as name, website, location, number of employees, and departments."
        ]
      },
      "es-a1-module-describing-people-at-work": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will learn third-person descriptions and how to identify simple corrections in short conversations."
        ]
      }
    },
    "blocks": {
      "es-a1-warm-up-greetings-and-farewells-basics": {
        "title": "Greetings and Farewells Basics",
        "intro": ["", ""]
      },
      "es-a1-learn-greetings-during-the-day": {
        "title": "Greetings During the Day",
        "intro": ["", ""]
      },
      "es-a1-practice-greetings-and-farewells": {
        "title": "Greetings and Farewells Practice",
        "intro": ["", ""]
      },
      "es-a1-review-greetings-and-farewells": {
        "title": "Greetings and Farewells Review",
        "intro": ["", ""]
      },
      "es-a1-quiz-greetings-and-farewells": {
        "title": "Greetings and Farewells Quiz",
        "intro": ["", ""]
      },
      "es-a1-learn-certification-introduction": {
        "title": "Certification Introduction",
        "intro": ["", ""]
      },
      "es-a1-learn-alphabet-and-accents": {
        "title": "Alphabet and Accents",
        "intro": ["", ""]
      },
      "es-a1-learn-punctuation": {
        "title": "Punctuation",
        "intro": ["", ""]
      },
      "es-a1-quiz-spanish-fundamentals": {
        "title": "Spanish Fundamentals Quiz",
        "intro": ["", ""]
      },
      "es-a1-warm-up-introducing-yourself-basics": {
        "title": "Introducing Yourself Basics",
        "intro": ["", ""]
      },
      "es-a1-learn-meet-luna": {
        "title": "Meet Luna",
        "intro": ["", ""]
      },
      "es-a1-learn-meet-mateo": {
        "title": "Meet Mateo",
        "intro": ["", ""]
      },
      "es-a1-learn-meet-julieta": {
        "title": "Meet Julieta",
        "intro": ["", ""]
      },
      "es-a1-practice-introducing-yourself": {
        "title": "Introducing Yourself Practice",
        "intro": ["", ""]
      },
      "es-a1-review-introducing-yourself": {
        "title": "Introducing Yourself Review",
        "intro": ["", ""]
      },
      "es-a1-quiz-introducing-yourself": {
        "title": "Introducing Yourself Quiz",
        "intro": ["", ""]
      },
      "es-a1-warm-up-first-questions-basics": {
        "title": "First Questions Basics",
        "intro": ["", ""]
      },
      "es-a1-learn-meet-angela-and-basti": {
        "title": "Meet Angela and Basti",
        "intro": ["", ""]
      },
      "es-a1-practice-first-questions": {
        "title": "First Questions Practice",
        "intro": ["", ""]
      },
      "es-a1-review-first-questions": {
        "title": "First Questions Review",
        "intro": ["", ""]
      },
      "es-a1-quiz-first-questions": {
        "title": "First Questions Quiz",
        "intro": ["", ""]
      },
      "es-a1-learn-vowels": {
        "title": "Vowels",
        "intro": ["", ""]
      },
      "es-a1-learn-consonants-and-special-characters": {
        "title": "Consonants and Special Characters",
        "intro": ["", ""]
      },
      "es-a1-review-spanish-fundamentals": {
        "title": "Spanish Fundamentals Review",
        "intro": ["", ""]
      },
      "es-a1-practice-the-alphabet": {
        "title": "The Spanish Alphabet Practice",
        "intro": ["", ""]
      },
      "es-a1-warm-up-remember-first-numbers": {
        "title": "Remember First Numbers",
        "intro": ["", ""]
      },
      "es-a1-learn-numbers-10-to-29": {
        "title": "Numbers 10 to 29",
        "intro": ["", ""]
      },
      "es-a1-practice-using-numbers-10-to-29": {
        "title": "Using Numbers 10 to 29",
        "intro": ["", ""]
      },
      "es-a1-review-numbers-10-to-29": {
        "title": "Numbers 10 to 29 Review",
        "intro": ["", ""]
      },
      "es-a1-quiz-numbers-10-to-29": {
        "title": "Numbers 10 to 29 Quiz",
        "intro": ["", ""]
      },
      "es-a1-warm-up-getting-ready-to-share-personal-details": {
        "title": "Getting Ready to Share Personal Details",
        "intro": ["", ""]
      },
      "es-a1-learn-basic-personal-information": {
        "title": "Basic Personal Information",
        "intro": ["", ""]
      },
      "es-a1-learn-contact-information-and-spelling": {
        "title": "Contact Information and Spelling",
        "intro": ["", ""]
      },
      "es-a1-practice-personal-details-in-action": {
        "title": "Personal Details in Action",
        "intro": ["", ""]
      },
      "es-a1-review-sharing-your-personal-details": {
        "title": "Sharing Your Personal Details Review",
        "intro": ["", ""]
      },
      "es-a1-quiz-sharing-your-personal-details": {
        "title": "Sharing Your Personal Details Quiz",
        "intro": ["", ""]
      },
      "es-a1-learn-the-first-ten-numbers": {
        "title": "The First Ten Numbers",
        "intro": ["", ""]
      },
      "es-a1-practice-the-first-ten-numbers": {
        "title": "The First Ten Numbers Practice",
        "intro": ["", ""]
      },
      "es-a1-learn-numbers-30-to-60": {
        "title": "Numbers 30 to 60",
        "intro": ["", ""]
      },
      "es-a1-warm-up-describing-a-company-basics": {
        "title": "Describing a Company Basics",
        "intro": ["", ""]
      },
      "es-a1-learn-numbers-61-to-100": {
        "title": "Numbers 61 to 100",
        "intro": ["", ""]
      },
      "es-a1-practice-using-the-first-100-numbers": {
        "title": "Using The First 100 Numbers",
        "intro": ["", ""]
      },
      "es-a1-review-first-100-numbers": {
        "title": "First 100 Numbers Review",
        "intro": ["", ""]
      },
      "es-a1-quiz-numbers-30-to-100": {
        "title": "Numbers 30 to 100 Quiz",
        "intro": ["", ""]
      },
      "es-a1-learn-what-the-company-does": {
        "title": "What the Company Does",
        "intro": ["", ""]
      },
      "es-a1-learn-asking-about-a-company": {
        "title": "Asking about a Company",
        "intro": ["", ""]
      },
      "es-a1-practice-company-profile": {
        "title": "Company Profile",
        "intro": ["", ""]
      },
      "es-a1-review-talking-about-a-company": {
        "title": "Talking About a Company",
        "intro": ["", ""]
      },
      "es-a1-quiz-describing-a-company": {
        "title": "Describing a Company Quiz",
        "intro": ["", ""]
      },
      "es-a1-warm-up-describing-people-at-work-basics": {
        "title": "Describing People at Work Basics",
        "intro": ["", ""]
      },
      "es-a1-learn-mini-biographies": {
        "title": "Mini Biographies ",
        "intro": ["", ""]
      },
      "es-a1-practice-asking-about-mini-biographies": {
        "title": "Asking About Mini Biographies",
        "intro": ["", ""]
      },
      "es-a1-learn-short-workplace-profile": {
        "title": "Short Workplace Profile ",
        "intro": ["", ""]
      },
      "es-a1-practice-asking-about-short-workplace-profiles": {
        "title": "Asking About Short Workplace Profiles",
        "intro": ["", ""]
      },
      "es-a1-review-describing-people-at-work": {
        "title": "Describing People at Work",
        "intro": ["", ""]
      },
      "es-a1-quiz-describing-people-at-work": {
        "title": "Describing People at Work",
        "intro": ["", ""]
      },
      "es-a1-learn-talking-about-colleagues": {
        "title": "Talking About Colleagues",
        "intro": ["", ""]
      },
      "es-a1-practice-what-departments-do": {
        "title": "What Departments Do",
        "intro": ["", ""]
      }
    }
  },
  "responsive-web-design-v9": {
    "title": "Responsive Web Design Certification",
    "intro": [
      "This course teaches the fundamentals of HTML and CSS, including modern layout, design, accessibility, and responsive web development. You'll build practical projects and gain the skills to create professional, user-friendly webpages.",
      "要獲得你的響應式 Web 設計認證：",
      "- Complete the five required projects to qualify for the certification exam.",
      "- 通過響應式 Web 設計認證考試。"
    ],
    "chapters": {
      "html": "HTML",
      "computers": "Computers",
      "css": "CSS",
      "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam"
    },
    "modules": {
      "basic-html": "Basic HTML",
      "semantic-html": "Semantic HTML",
      "html-forms-and-tables": "Forms and Tables",
      "lab-survey-form": "Build a Survey Form",
      "html-and-accessibility": "Accessibility",
      "review-html": "HTML Review",
      "computer-basics": "Computer Basics",
      "basic-css": "Basic CSS",
      "design-for-developers": "Design",
      "absolute-and-relative-units": "Absolute and Relative Units",
      "pseudo-classes-and-elements": "Pseudo Classes and Elements",
      "css-colors": "Colors",
      "styling-forms": "Styling Forms",
      "css-box-model": "The Box Model",
      "css-flexbox": "Flexbox",
      "lab-page-of-playing-cards": "Build a Page of Playing Cards",
      "css-typography": "Typography",
      "css-and-accessibility": "Accessibility",
      "css-positioning": "Positioning",
      "attribute-selectors": "Attribute Selectors",
      "lab-book-inventory-app": "Build a Book Inventory App",
      "responsive-design": "Responsive Design",
      "lab-technical-documentation-page": "Build a Technical Documentation Page",
      "css-variables": "Variables",
      "css-grid": "Grid",
      "lab-product-landing-page": "Build a Product Landing Page",
      "css-animations": "Animations",
      "review-css": "CSS Review",
      "responsive-web-design-certification-exam": "Responsive Web Design Certification Exam"
    },
    "blocks": {
      "workshop-curriculum-outline": {
        "title": "Build a Curriculum Outline",
        "intro": [
          "Welcome to freeCodeCamp!",
          "This workshop will serve as your introduction to HTML and coding in general. You will learn about headings and paragraph elements."
        ]
      },
      "lab-debug-camperbots-profile-page": {
        "title": "Debug Camperbot's Profile Page",
        "intro": [
          "Camperbot is learning how to code too and needs some help with their HTML.",
          "In this lab, you will help Camperbot find and fix the errors in their code."
        ]
      },
      "lecture-understanding-html-attributes": {
        "title": "Understanding HTML Attributes",
        "intro": [
          "In these lectures, you will learn more about HTML (HyperText Markup Language), a markup language for creating web pages.",
          "You will learn about HTML's role on the web, and what HTML attributes are."
        ]
      },
      "lab-debug-pet-adoption-page": {
        "title": "Debug a Pet Adoption Page",
        "intro": [
          "In this lab, you will need to find and fix the errors in this pet adoption page."
        ]
      },
      "lecture-understanding-the-html-boilerplate": {
        "title": "Understanding the HTML Boilerplate",
        "intro": [
          "In these lectures, you will learn about the HTML boilerplate which is a ready-made template for your webpages.",
          "You will learn how to work with the <code>link</code> element, <code>meta</code> element and more."
        ]
      },
      "workshop-cat-photo-app": {
        "title": "Build a Cat Photo App",
        "intro": [
          "HTML stands for HyperText Markup Language and it represents the content and structure of a web page.",
          "In this workshop, you will learn how to work with basic HTML elements such as headings, paragraphs, images, links, and lists."
        ]
      },
      "lab-recipe-page": {
        "title": "Build a Recipe Page",
        "intro": [
          "In this lab, you'll review HTML basics by creating a web page of your favorite recipe. You'll create an HTML boilerplate and work with headings, lists, images, and more."
        ]
      },
      "lecture-html-fundamentals": {
        "title": "HTML Fundamentals",
        "intro": [
          "In these lectures, you will learn about HTML fundamentals like the <code>div</code> element, the <code>id</code> and <code>class</code> attributes, the HTML boilerplate, HTML entities, and more."
        ]
      },
      "workshop-bookstore-page": {
        "title": "Build a Bookstore Page",
        "intro": [
          "In this workshop, you will practice working with classes, ids and the <code>div</code> element by building a bookstore page."
        ]
      },
      "lecture-understanding-how-html-affects-seo": {
        "title": "Understanding How HTML Affects SEO",
        "intro": [
          "In these lectures, you will learn how your HTML code impacts search engine optimization."
        ]
      },
      "lab-travel-agency-page": {
        "title": "Build a Travel Agency Page",
        "intro": [
          "In this lab, you'll review working with HTML fundamentals by creating a web page for a travel agency. You'll work with images, the <code>figure</code> element, the <code>figcaption</code> element, the <code>anchor</code> element, and more."
        ]
      },
      "lecture-working-with-audio-and-video-elements": {
        "title": "Working with Audio and Video Elements",
        "intro": [
          "In these lectures, you will learn how to work with the <code>audio</code> and <code>video</code> elements."
        ]
      },
      "workshop-html-music-player": {
        "title": "Build an HTML Music Player",
        "intro": [
          "In this workshop, you'll use HTML to create a basic music player.",
          "This project will cover the <code>audio</code> element, the audio player setup, and more."
        ]
      },
      "workshop-html-video-player": {
        "title": "Build an HTML Video Player",
        "intro": [
          "In this workshop, you'll use HTML to create a basic video player.",
          "This project will cover the <code>video</code> element, the video player setup, and more."
        ]
      },
      "lab-html-audio-and-video-player": {
        "title": "Build an HTML Audio and Video Player",
        "intro": [
          "In this lab, you will build an HTML audio and video player using the <code>video</code> and <code>audio</code> elements with controls and source attributes."
        ]
      },
      "lecture-working-with-images-and-svgs": {
        "title": "Working with Images and SVGs",
        "intro": [
          "In these lectures, you will learn how to work with SVGs and learn about techniques for optimizing your images."
        ]
      },
      "workshop-build-a-heart-icon": {
        "title": "Build a Heart Icon",
        "intro": [
          "In this workshop, you will practice working with SVGs by building a heart icon"
        ]
      },
      "lecture-working-with-media": {
        "title": "Working with the iframe Element",
        "intro": [
          "In these lectures, you will learn how to work with the <code>iframe</code> element which is used to embed an external site on your web page."
        ]
      },
      "workshop-build-a-video-display-using-iframe": {
        "title": "Build a Video Display Using iframe",
        "intro": [
          "In this workshop, you'll learn how to work with the <code>iframe</code> element by building a video display."
        ]
      },
      "lab-video-compilation-page": {
        "title": "Build a Video Compilation Page",
        "intro": [
          "In this lab, you'll create a video compilation web page. You'll practice working with the <code>iframe</code> element."
        ]
      },
      "lecture-working-with-links": {
        "title": "Working with Links",
        "intro": [
          "In these lectures, you will learn about links, the <code>target</code> attribute, different link states, absolute, and relative paths, and more."
        ]
      },
      "review-basic-html": {
        "title": "Basic HTML Review",
        "intro": [
          "Before you are quizzed on the HTML knowledge you have gained so far, you first need to review the concepts.",
          "Open up this page to review the HTML boilerplate, <code>audio</code> and <code>video</code> elements, the different <code>target</code> attribute values and more."
        ]
      },
      "quiz-basic-html": {
        "title": "Basic HTML Quiz",
        "intro": [
          "The following quiz will test your knowledge of the basic HTML concepts you have learned so far.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      },
      "lecture-importance-of-semantic-html": {
        "title": "Importance of Semantic HTML",
        "intro": [
          "In these lectures, you will learn about semantic HTML and why you should care about it, semantic elements, how semantic HTML differs from presentational HTML, and more."
        ]
      },
      "lecture-understanding-nuanced-semantic-elements": {
        "title": "Understanding Nuanced Semantic Elements",
        "intro": [
          "In these lectures, you will learn when you should use certain semantic elements like the <code>em</code> element over the <code>i</code> element, description lists, and more."
        ]
      },
      "workshop-major-browsers-list": {
        "title": "Build a List of Major Web Browsers",
        "intro": [
          "In this workshop, you will build a description list and work with the <code>dl</code>, <code>dt</code>, and <code>dd</code> elements."
        ]
      },
      "lecture-working-with-text-and-time-semantic-elements": {
        "title": "Working with Text and Time Semantic Elements ",
        "intro": [
          "In this lecture, you will learn about the importance of semantics in conveying meaning for text and time-related content including the <code>time</code>, <code>blockquote</code> elements and more."
        ]
      },
      "workshop-quincys-job-tips": {
        "title": "Build Quincy's Job Tips Page",
        "intro": [
          "In this workshop, you will practice working with semantic HTML by using the <code>q</code>, <code>blockquote</code> and <code>cite</code> elements."
        ]
      },
      "lecture-working-with-specialized-semantic-elements": {
        "title": "Working with Specialized Semantic Elements",
        "intro": [
          "In this lecture, you will learn about specialized semantic elements like <code>u</code>, <code>s</code>, <code>code</code> elements and more."
        ]
      },
      "workshop-blog-page": {
        "title": "Build a Cat Blog Page",
        "intro": [
          "In this workshop, you will build an HTML only blog page using semantic elements including the <code>main</code>, <code>nav</code>, <code>article</code> and <code>footer</code> elements."
        ]
      },
      "lab-event-hub": {
        "title": "Build an Event Hub",
        "intro": [
          "In this lab, you'll build an event hub and review semantic elements like <code>header</code>, <code>nav</code>, <code>article</code>, and more."
        ]
      },
      "review-semantic-html": {
        "title": "Semantic HTML Review",
        "intro": [
          "Before you are quizzed on semantic HTML, you first need to review the concepts.",
          "Open up this page to review the <code>em</code>, <code>strong</code>, <code>blockquote</code>, <code>address</code> and more semantic HTML elements."
        ]
      },
      "quiz-semantic-html": {
        "title": "Semantic HTML Quiz",
        "intro": [
          "The following quiz will test your knowledge on semantic HTML concepts you have learned so far.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      },
      "lecture-working-with-forms": {
        "title": "Working with Forms",
        "intro": [
          "In these lectures, you will learn about forms, the role of labels, inputs and buttons in creating forms, client-side form validation, and form states."
        ]
      },
      "workshop-hotel-feedback-form": {
        "title": "Build a Hotel Feedback Form",
        "intro": [
          "In this workshop, you will build a Hotel Feedback Form.",
          "You will practice working with labels, inputs, fieldsets, legends, textareas and buttons."
        ]
      },
      "lecture-working-with-tables": {
        "title": "Working with Tables",
        "intro": [
          "In these lectures, you will learn about HTML tables, how to create them, and when to use them."
        ]
      },
      "workshop-final-exams-table": {
        "title": "Build a Final Exams Table",
        "intro": [
          "In this workshop, you will practice working with HTML tables by building a table of final exams."
        ]
      },
      "lab-book-catalog-table": {
        "title": "Build a Book Catalog Table",
        "intro": [
          "In this lab, you'll review HTML tables by building a book information table.",
          "You'll practice the different table components like the <code>thead</code>, <code>tbody</code>, <code>th</code>, <code>tr</code>, and <code>td</code> elements."
        ]
      },
      "lecture-working-with-html-tools": {
        "title": "Working with HTML Tools",
        "intro": [
          "In these lectures, you will learn about HTML tools and how they let you write better code. These tools include HTML validators, DOM Inspector, and the browser developer tools."
        ]
      },
      "review-html-tables-and-forms": {
        "title": "HTML Tables and Forms Review",
        "intro": [
          "Before you are quizzed on HTML forms, tables and tools, you first need to review the concepts.",
          "Open up this page to review the <code>table</code>, <code>input</code>, and <code>button</code> elements as well as commonly used tools like the HTML validator and more."
        ]
      },
      "quiz-html-tables-and-forms": {
        "title": "HTML Tables and Forms Quiz",
        "intro": [
          "The following quiz will test your knowledge of HTML tables, forms and commonly used HTML tools.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      },
      "lab-survey-form": {
        "title": "Build a Survey Form",
        "intro": [
          "In this lab, you'll review HTML forms by creating a survey form.",
          "You'll practice working with the <code>label</code> element, the different <code>input</code> elements, the <code>required</code> attribute, and more. "
        ]
      },
      "lecture-importance-of-accessibility-and-good-html-structure": {
        "title": "Importance of Accessibility and Good HTML Structure",
        "intro": [
          "In these lectures, you will learn about accessibility and its importance, assistive tools for people with disabilities, HTML attributes that let you create inclusive websites, accessibility best practices, and much more."
        ]
      },
      "workshop-debug-coding-journey-blog-page": {
        "title": "Debug a Coding Journey Blog Page",
        "intro": [
          "In this workshop, you will debug and fix accessibility errors in a coding blog page."
        ]
      },
      "lecture-accessible-tables-forms": {
        "title": "Working with Accessible Tables and Forms",
        "intro": [
          "In these lectures, you will learn about how to create accessible tables and forms."
        ]
      },
      "workshop-tech-conference-schedule": {
        "title": "Build a Tech Conference Schedule Table",
        "intro": [
          "In this workshop, you will build an accessible tech conference schedule table."
        ]
      },
      "lab-debug-donation-form": {
        "title": "Debug a Donation Form",
        "intro": [
          "In this lab you will debug a donation form by fixing HTML syntax errors and improving accessibility."
        ]
      },
      "lecture-introduction-to-aria": {
        "title": "Introduction to ARIA",
        "intro": [
          "In these lectures, you will learn about working with ARIA roles."
        ]
      },
      "workshop-accessible-audio-controller": {
        "title": "Build an Accessible Audio Controller",
        "intro": [
          "In this workshop, you will practice accessible HTML by building an audio controller that uses the <code>aria-labelledby</code> attribute."
        ]
      },
      "lecture-accessible-media-elements": {
        "title": "Working with Accessible Media Elements",
        "intro": [
          "In these lectures, you will learn about how to create accessible links, audio and video content."
        ]
      },
      "lab-checkout-page": {
        "title": "Build a Checkout Page",
        "intro": [
          "In this lab, you'll create an accessible checkout page.",
          "You'll practice concepts like <code>alt</code> attributes and ARIA roles."
        ]
      },
      "lab-movie-review-page": {
        "title": "Design a Movie Review Page",
        "intro": [
          "In this lab, you'll create a movie review page.",
          "You'll practice concepts like semantic HTML, <code>alt</code> attributes, accessible lists, and hiding decorative content from screen readers using <code>aria-hidden</code>."
        ]
      },
      "lab-multimedia-player": {
        "title": "Build a Multimedia Player",
        "intro": [
          "In this lab, you'll build a multimedia player.",
          "You will practice working with the <code>audio</code> and <code>video</code> elements, the <code>controls</code> attribute, and the <code>aria-label</code> attribute."
        ]
      },
      "review-html-accessibility": {
        "title": "HTML Accessibility Review",
        "intro": [
          "Before you are quizzed on HTML and accessibility, you first need to review the concepts.",
          "Open up this page to review concepts including the <code>aria-hidden</code>, <code>aria-describedby</code>, <code>tabindex</code> attributes and more."
        ]
      },
      "quiz-html-accessibility": {
        "title": "HTML Accessibility Quiz",
        "intro": [
          "The following quiz will test your knowledge on the accessibility concepts you have learned so far.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      },
      "review-html": {
        "title": "HTML Review",
        "intro": [
          "Before you take the HTML prep exam, you first need to review the concepts taught in the previous modules.",
          "Open up this page to review concepts around the basics of HTML elements, semantic HTML, tables, forms and accessibility."
        ]
      },
      "lecture-understanding-computer-internet-and-tooling-basics": {
        "title": "Understanding Computer, Internet, and Tooling Basics",
        "intro": [
          "In these lectures, you will learn about the computer, its different parts, internet service providers (ISPs), and the tools professional developers use."
        ]
      },
      "lecture-working-with-file-systems": {
        "title": "Working with File Systems",
        "intro": [
          "In these lectures, you will learn how to work with file and folder systems on your computers. You will learn how to create, move, and delete files and folders, the best practices for naming and organizing files and folders, and more."
        ]
      },
      "lecture-browsing-the-web-effectively": {
        "title": "Browsing the Web Effectively",
        "intro": [
          "In these lectures, you will learn about what websites, search engine, and web browsers are, the different browsers available, and how to get the best out of a search engine."
        ]
      },
      "review-computer-basics": {
        "title": "Computer Basics Review",
        "intro": [
          "Before you are quizzed on basic computer and internet concepts, you first need to review.",
          "Open up this page to review concepts like RAM, Internet service providers, common web browsers, search engines and more."
        ]
      },
      "quiz-computer-basics": {
        "title": "Computer Basics Quiz",
        "intro": [
          "Test what you've learned in this quiz of basic computer knowledge."
        ]
      },
      "lecture-what-is-css": {
        "title": "What Is CSS?",
        "intro": [
          "The following lectures are all about CSS. You will learn what CSS is and its role on the web, a CSS rule and its anatomy, the three ways to write CSS and when to use each, inline and block elements, and many more."
        ]
      },
      "workshop-cafe-menu": {
        "title": "Design a Cafe Menu",
        "intro": [
          "CSS tells the browser how to display your webpage. You can use CSS to set the color, font, size, and other aspects of HTML elements.",
          "In this workshop, you'll learn CSS by designing a menu page for a cafe webpage."
        ]
      },
      "lab-business-card": {
        "title": "Design a Business Card",
        "intro": [
          "In this lab, you'll create a business card and style it using CSS.",
          "You'll practice style properties like <code>color</code>, <code>font-size</code>, <code>text-align</code>, and more."
        ]
      },
      "lecture-css-specificity-the-cascade-algorithm-and-inheritance": {
        "title": "CSS Specificity, the Cascade Algorithm, and Inheritance",
        "intro": [
          "In these lectures, you will learn about CSS specificity, the common selectors and their specificities, the cascade algorithm, inheritance, and more."
        ]
      },
      "review-basic-css": {
        "title": "CSS Fundamentals Review",
        "intro": [
          "Before you are quizzed on basic CSS concepts, you first need to review.",
          "Open up this page to review concepts including <code>margin</code>, <code>padding</code>, CSS combinators, CSS specificity and more."
        ]
      },
      "quiz-basic-css": {
        "title": "CSS Fundamentals Quiz",
        "intro": [
          "Test what you've learned in this quiz of basic CSS knowledge."
        ]
      },
      "lecture-styling-lists-and-links": {
        "title": "Styling Lists and Links",
        "intro": [
          "In these lectures, you will learn the properties you need to know to effectively style lists and links, including link states like <code>link</code>, <code>visited</code>, <code>hover</code>, and <code>active</code>."
        ]
      },
      "lab-stylized-to-do-list": {
        "title": "Build a Stylized To-Do List",
        "intro": [
          "In this lab, you'll build a To-Do list and apply different styles to the links",
          "You'll practice style properties like <code>text-decoration</code>, <code>list-style-type</code> and how to change styles on hover or click."
        ]
      },
      "lecture-working-with-backgrounds-and-borders": {
        "title": "Working with Backgrounds and Borders",
        "intro": [
          "In these lectures, you will learn about the properties and values you need to know to style backgrounds and borders of elements, alongside the accessibility considerations for backgrounds."
        ]
      },
      "lab-blog-post-card": {
        "title": "Design a Blog Post Card",
        "intro": [
          "In this lab, you'll design a blog post card using HTML and CSS",
          "You'll practice concepts like <code>background-color</code>, <code>border-radius</code>, margins, paddings, and more."
        ]
      },
      "review-css-backgrounds-and-borders": {
        "title": "Lists, Links, CSS Background and Borders Review",
        "intro": [
          "Before you are quizzed on CSS backgrounds and borders, you first need to review.",
          "Open up this page to review concepts including the <code>background-image</code> property, <code>border</code> property and more."
        ]
      },
      "quiz-css-backgrounds-and-borders": {
        "title": "CSS Backgrounds and Borders Quiz",
        "intro": [
          "Test what you've learned in this quiz of backgrounds and borders in CSS."
        ]
      },
      "lecture-user-interface-design-fundamentals": {
        "title": "User Interface Design Fundamentals",
        "intro": [
          "In these lectures, you will learn about the fundamentals of user interface (UI) design. You will learn about the terms you need to know to communicate with designers, visual hierarchy, scaling, alignment, whitespace, and much more."
        ]
      },
      "lecture-user-centered-design": {
        "title": "User-Centered Design",
        "intro": [
          "In these lectures, you will learn about best practices for designing user-facing features like dark mode, breadcrumbs, modal dialogs, and much more. You will also learn how to conduct user research, user requirements and testing."
        ]
      },
      "lecture-common-design-tools": {
        "title": "Common Design Tools",
        "intro": [
          "In these lectures, you will learn about the common design tools developers should know. You will also learn about design briefs and how developers work with them."
        ]
      },
      "review-design-fundamentals": {
        "title": "Design Fundamentals Review",
        "intro": [
          "Before you are quizzed on the design fundamentals you have learned so far, you first need to review.",
          "Open up this page to review concepts like user-centered design, scale, alignment, good visual hierarchy and more."
        ]
      },
      "quiz-design-fundamentals": {
        "title": "Design Fundamentals Quiz",
        "intro": [
          "Test what you've learned in this quiz of UI design fundamentals."
        ]
      },
      "lecture-working-with-relative-and-absolute-units": {
        "title": "Working with Relative and Absolute Units",
        "intro": [
          "In these lectures, you will learn about relative and absolute units, and how they both impact what you see in the browser."
        ]
      },
      "lab-event-flyer-page": {
        "title": "Build an Event Flyer Page",
        "intro": [
          "In this lab, you'll create an event flyer page.",
          "You will practice aligning elements using absolute and relative CSS."
        ]
      },
      "review-css-relative-and-absolute-units": {
        "title": "CSS Relative and Absolute Units Review",
        "intro": [
          "Before you are quizzed on relative and absolute units, you first need to review.",
          "Open up this page to review concepts like percentages, <code>px</code>, <code>rem</code>, <code>em</code>, and more."
        ]
      },
      "quiz-css-relative-and-absolute-units": {
        "title": "CSS Relative and Absolute Units Quiz",
        "intro": [
          "Test what you've learned in this quiz of relative and absolute units in CSS."
        ]
      },
      "lecture-working-with-pseudo-classes-and-pseudo-elements-in-css": {
        "title": "Working with Pseudo-Classes and Pseudo-Elements in CSS",
        "intro": [
          "In these lectures, you will learn about pseudo-classes and pseudo-elements, alongside their examples and how they work."
        ]
      },
      "workshop-greeting-card": {
        "title": "Design a Greeting Card",
        "intro": [
          "In the previous lectures, you learned how to work with the different types of pseudo-classes.",
          "In this workshop, you will have a chance to practice what you have learned by designing a greeting card."
        ]
      },
      "workshop-parent-teacher-conference-form": {
        "title": "Design a Parent Teacher Conference Form",
        "intro": [
          "In this workshop, you will practice how to style radio buttons with different types of pseudo-selectors by building a parent-teacher conference form.",
          "You'll practice concepts including the <code>::before</code> pseudo-element selector, the <code>transform</code> property, and more."
        ]
      },
      "lab-job-application-form": {
        "title": "Build a Job Application Form",
        "intro": [
          "In this lab you'll build a job application form and style it using pseudo-classes.",
          "You'll practice concepts like <code>:hover</code>, <code>:active</code>, <code>:focus</code>, and more."
        ]
      },
      "review-css-pseudo-classes": {
        "title": "CSS Pseudo-classes Review",
        "intro": [
          "Before you're quizzed on CSS pseudo-classes and pseudo-elements, you should review what you've learned about them.",
          "Open up this page to review concepts like the <code>::before</code> and <code>::after</code> pseudo-elements as well as the <code>:hover</code>, <code>:active</code> pseudo-classes and more."
        ]
      },
      "quiz-css-pseudo-classes": {
        "title": "CSS Pseudo-classes Quiz",
        "intro": ["Test your knowledge of CSS pseudo-classes with this quiz."]
      },
      "lecture-working-with-colors-in-css": {
        "title": "Working with Colors in CSS",
        "intro": [
          "In these lectures, you will learn about linear and radial gradients, the color theory, different kinds of colors like named, RGB, Hex, and HSL colors. You will learn how these colors work, and which to use in specific cases."
        ]
      },
      "workshop-colored-markers": {
        "title": "Build a Set of Colored Markers",
        "intro": [
          "In this workshop, you'll build a set of colored markers. You'll practice different ways to set color values and how to pair colors with each other."
        ]
      },
      "lab-colored-boxes": {
        "title": "Design a Set of Colored Boxes",
        "intro": [
          "In this lab, you'll create a color grid and practice adding background colors to the grid items using hex codes, RGB, and predefined color names."
        ]
      },
      "review-css-colors": {
        "title": "CSS Colors Review",
        "intro": [
          "Before you're quizzed on CSS colors, you should review what you've learned about them.",
          "Open up this page to review concepts like the <code>rgb()</code> function, <code>hsl()</code> function, <code>hex codes</code>, and more."
        ]
      },
      "quiz-css-colors": {
        "title": "CSS Colors Quiz",
        "intro": ["Test your knowledge of CSS colors with this quiz."]
      },
      "lecture-best-practices-for-styling-forms": {
        "title": "Best Practices for Styling Forms",
        "intro": [
          "In these lectures, you will learn about the best practices for styling forms and issues you can encounter while styling special inputs like <code>color</code> and <code>datetime-local</code>."
        ]
      },
      "workshop-registration-form": {
        "title": "Design a Registration Form",
        "intro": [
          "In this workshop, you'll learn how to design HTML forms by designing a signup page. You'll learn how to control what types of data people can type into your form, and some new CSS tools for styling your page."
        ]
      },
      "lab-contact-form": {
        "title": "Design a Contact Form",
        "intro": [
          "In this lab, you'll design a contact form in HTML and style it using CSS."
        ]
      },
      "workshop-game-settings-panel": {
        "title": "Build a Game Settings Panel",
        "intro": [
          "In this workshop, you will practice styling checkboxes by building a game settings panel."
        ]
      },
      "lab-feature-selection": {
        "title": "Design a Feature Selection Page",
        "intro": [
          "In this lab, you'll build a feature selection page with custom-styled checkboxes.",
          "You'll create feature cards with labels and checkboxes, then give custom styling to the checkboxes."
        ]
      },
      "review-styling-forms": {
        "title": "Styling Forms Review",
        "intro": [
          "Before you're quizzed on styling forms, you should review what you've learned.",
          "Open up this page to review how to style form inputs, working with <code>appearance: none</code> and more."
        ]
      },
      "quiz-styling-forms": {
        "title": "Styling Forms Quiz",
        "intro": [
          "In this quiz, you will test your knowledge of how to style forms."
        ]
      },
      "lecture-working-with-css-transforms-overflow-and-filters": {
        "title": "Working with CSS Transforms, Overflow, and Filters",
        "intro": [
          "In these lectures, you will learn about working with CSS transforms, overflow, and filters. You will also learn about the box model and how it works."
        ]
      },
      "workshop-rothko-painting": {
        "title": "Design a Rothko Painting",
        "intro": [
          "Every HTML element is its own box – with its own spacing and a border. This is called the Box Model.",
          "In this workshop, you'll use CSS and the Box Model to create your own Rothko-style rectangular art pieces."
        ]
      },
      "lab-confidential-email-page": {
        "title": "Build a Confidential Email Page",
        "intro": [
          "In this lab, you'll create a web page using HTML and mask the content using CSS properties."
        ]
      },
      "review-css-layout-and-effects": {
        "title": "CSS Layouts and Effects Review",
        "intro": [
          "Before you are quizzed on CSS Layouts and Effects, you first need to review.",
          "Open up this page to review concepts like the <code>transform</code> property, the box model, the <code>overflow</code> property and more."
        ]
      },
      "quiz-css-layout-and-effects": {
        "title": "CSS Layout and Effects Quiz",
        "intro": [
          "In this quiz, you will test your knowledge of the box model, transforms, filters, and overflow in CSS."
        ]
      },
      "lecture-working-with-css-flexbox": {
        "title": "Working with CSS Flexbox",
        "intro": [
          "In these lectures, you will learn how CSS flexbox works, its properties, and when you should use it."
        ]
      },
      "workshop-flexbox-photo-gallery": {
        "title": "Build a Flexbox Photo Gallery",
        "intro": [
          "In this workshop, you'll use Flexbox to build a responsive photo gallery webpage."
        ]
      },
      "workshop-colorful-boxes": {
        "title": "Design a Set of Colorful Boxes",
        "intro": [
          "In this workshop, you will practice working with CSS flexbox by designing a set of colored boxes."
        ]
      },
      "lab-pricing-plans-layout": {
        "title": "Design a Pricing Plans Layout Page",
        "intro": [
          "In this lab, you'll use flexbox to create a common three-card tier layout.",
          "You'll practice aligning elements using flexbox properties like <code>flex</code>, <code>flex-grow</code>, <code>order</code>, and more."
        ]
      },
      "review-css-flexbox": {
        "title": "CSS Flexbox Review",
        "intro": [
          "Before you're quizzed on CSS flexbox, you should review what you've learned.",
          "Open up this page to review concepts like the <code>flex-direction</code>, <code>justify-content</code>, <code>align-items</code>, <code>flex-wrap</code> properties, and more."
        ]
      },
      "quiz-css-flexbox": {
        "title": "CSS Flexbox Quiz",
        "intro": ["Test what you've learned on CSS flexbox with this quiz."]
      },
      "lab-page-of-playing-cards": {
        "title": "Build a Page of Playing Cards",
        "intro": [
          "In this lab, you'll use flexbox to create a webpage of playing cards.",
          "You'll practice aligning elements using flexbox properties like <code>flex-direction</code>, <code>justify-content</code>, <code>align-self</code>, and more."
        ]
      },
      "lecture-working-with-css-fonts": {
        "title": "Working with CSS Fonts",
        "intro": [
          "In these lectures, you will learn about typography and its best practices, fonts, and the <code>text-shadow</code> property."
        ]
      },
      "workshop-nutritional-label": {
        "title": "Build a Nutritional Label",
        "intro": [
          "Typography is the art of styling your text to be easily readable and suit its purpose.",
          "In this workshop, you'll use typography to build a nutrition label webpage. You'll practice how to style text, adjust line height, and position your text using CSS."
        ]
      },
      "lab-newspaper-article": {
        "title": "Build a Newspaper Article",
        "intro": [
          "In this lab, you'll build a newspaper article page using HTML and CSS.",
          "You'll style the fonts using properties like <code>font-family</code>, <code>font-size</code>, <code>font-weight</code>, and more."
        ]
      },
      "review-css-typography": {
        "title": "CSS Typography Review",
        "intro": [
          "Before you're quizzed on the fundamentals of typography, you should review what you've learned.",
          "Open up this page to review concepts like web safe fonts, the <code>font-family</code> property and more."
        ]
      },
      "quiz-css-typography": {
        "title": "CSS Typography Quiz",
        "intro": ["Test your knowledge of typography with this quiz."]
      },
      "lecture-best-practices-for-accessibility-and-css": {
        "title": "Best Practices for Accessibility and CSS",
        "intro": [
          "In these lectures, you will learn about best practices for accessibility in CSS, and the tools for checking good color contrast on websites."
        ]
      },
      "workshop-accessibility-quiz": {
        "title": "Build a Quiz Webpage",
        "intro": [
          "Accessibility is the process of making your webpages usable for everyone, including people with disabilities.",
          "In this workshop, you'll build a quiz webpage. You'll learn accessibility tools such as keyboard shortcuts, ARIA attributes, and design best practices."
        ]
      },
      "lab-tribute-page": {
        "title": "Build a Tribute Page",
        "intro": [
          "In this lab, you'll build a tribute page for a subject of your choosing, fictional or real."
        ]
      },
      "review-css-accessibility": {
        "title": "CSS Accessibility Review",
        "intro": [
          "Before you're quizzed on CSS and accessibility, you should review what you've learned.",
          "Open up this page to review concepts like color contrast tools and accessibility best practices."
        ]
      },
      "quiz-css-accessibility": {
        "title": "CSS Accessibility Quiz",
        "intro": [
          "In this quiz, you'll test what you've learned about making your webpages accessible with CSS."
        ]
      },
      "lecture-understanding-how-to-work-with-floats-and-positioning-in-css": {
        "title": "Understanding How to Work with Floats and Positioning in CSS",
        "intro": [
          "In these lectures, you will learn how to use CSS positioning and floats. You will learn about <code>absolute</code>, <code>relative</code>, <code>fixed</code>, and <code>sticky</code> positioning. You will also use the <code>z-index</code> property."
        ]
      },
      "workshop-cat-painting": {
        "title": "Build a Cat Painting",
        "intro": [
          "Mastering CSS positioning is essential for creating visually appealing and responsive web layouts.",
          "In this workshop, you will build a cat painting. You'll learn about how to work with absolute positioning, the <code>z-index</code> property, and the <code>transform</code> property."
        ]
      },
      "lab-house-painting": {
        "title": "Build a House Painting",
        "intro": [
          "In this lab, you'll build a house painting using CSS.",
          "You'll design individual elements of the house and position them using CSS properties like <code>position</code>, <code>top</code>, <code>left</code>, and more."
        ]
      },
      "review-css-positioning": {
        "title": "CSS Positioning Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS positioning, you should review what you've learned.",
          "Open up this page to review concepts like floats, relative positioning, absolute positioning and more."
        ]
      },
      "quiz-css-positioning": {
        "title": "CSS Positioning Quiz",
        "intro": ["Test your knowledge of CSS positioning with this quiz."]
      },
      "lecture-working-with-attribute-selectors": {
        "title": "Working with Attribute Selectors",
        "intro": [
          "In these lectures, you will learn about attribute selectors and how to use them to target elements like links and lists."
        ]
      },
      "workshop-balance-sheet": {
        "title": "Build a Balance Sheet",
        "intro": [
          "In this workshop, you'll build a balance sheet using pseudo selectors. You'll learn how to change the style of an element when you hover over it with your mouse, and trigger other events on your webpage."
        ]
      },
      "review-css-attribute-selectors": {
        "title": "CSS Attribute Selectors Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS attribute selectors, you should review what you've learned about them.",
          "Open up this page to review concepts like how to work with different attribute selectors that target links with the <code>href</code> and <code>title</code> attributes."
        ]
      },
      "quiz-css-attribute-selectors": {
        "title": "CSS Attribute Selectors Quiz",
        "intro": [
          "Test your knowledge of CSS attribute selectors with this quiz."
        ]
      },
      "lab-book-inventory-app": {
        "title": "Build a Book Inventory App",
        "intro": [
          "In this lab, you'll create a book inventory app.",
          "You'll practice CSS attribute selectors like <code>[attribute]</code>, <code>[attribute=value]</code>, <code>[attribute~=value]</code>, and more."
        ]
      },
      "lecture-best-practices-for-responsive-web-design": {
        "title": "Best Practices for Responsive Web Design",
        "intro": [
          "In these lectures, you will learn about the best practices for responsive web design, the roles concepts like grid, flexbox, media queries, and media breakpoints play in responsive design, and more."
        ]
      },
      "workshop-piano": {
        "title": "Design a Piano",
        "intro": [
          "Responsive Design tells your webpage how it should look on different-sized screens.",
          "In this workshop, you'll use CSS and responsive design to code a piano. You'll also practice media queries and pseudo selectors."
        ]
      },
      "review-responsive-web-design": {
        "title": "Responsive Web Design Review",
        "intro": [
          "Before you're quizzed on the fundamentals of responsive design, you should review what you've learned.",
          "Open up this page to review concepts like media queries, media breakpoints and mobile first approach design."
        ]
      },
      "quiz-responsive-web-design": {
        "title": "Responsive Web Design Quiz",
        "intro": [
          "Test what you've learned about making your webpages responsive with this quiz."
        ]
      },
      "lab-technical-documentation-page": {
        "title": "Build a Technical Documentation Page",
        "intro": [
          "In this lab, you'll build a technical documentation page to serve as instruction or reference for a topic.",
          "You'll also practice media queries to create a responsive design."
        ]
      },
      "lecture-working-with-css-variables": {
        "title": "Working with CSS Variables",
        "intro": [
          "In these lectures, you will learn how to define and use custom properties (also known as CSS variables). You will also learn about the <code>@property</code> rule and how it works."
        ]
      },
      "workshop-city-skyline": {
        "title": "Build a City Skyline",
        "intro": [
          "CSS variables help you organize your styles and reuse them.",
          "In this workshop, you'll build a city skyline. You'll practice how to configure CSS variables so you can reuse them whenever you want."
        ]
      },
      "lab-availability-table": {
        "title": "Build an Availability Table",
        "intro": [
          "For this lab, you'll create an availability table that shows the availability of people for a meeting.",
          "You'll practice using CSS variables to store and reuse colors, fonts, and other styles."
        ]
      },
      "review-css-variables": {
        "title": "CSS Variables Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS variables, you should review what you've learned.",
          "Open up this page to review how to work with CSS custom properties (CSS variables) and the <code>@property</code> rule."
        ]
      },
      "quiz-css-variables": {
        "title": "CSS Variables Quiz",
        "intro": ["Test your knowledge of CSS variables with this quiz."]
      },
      "lecture-working-with-css-grid": {
        "title": "Working with CSS Grid",
        "intro": [
          "In these lectures, you will learn about CSS grid, its several properties and how to use them, and how CSS grid differs from flexbox."
        ]
      },
      "workshop-magazine": {
        "title": "Build a Magazine",
        "intro": [
          "CSS Grid gives you control over the rows and columns of your webpage design.",
          "In this workshop, you'll build a magazine article. You'll practice how to use CSS Grid, including concepts like grid rows and grid columns."
        ]
      },
      "lab-newspaper-layout": {
        "title": "Design a Newspaper Layout",
        "intro": [
          "In this lab, you will design a newspaper layout using CSS Grid, including concepts like grid rows and grid columns."
        ]
      },
      "lecture-debugging-css": {
        "title": "Debugging CSS",
        "intro": [
          "In this lecture, you'll learn how to debug CSS using your browser's developer tools and CSS validators."
        ]
      },
      "review-css-grid": {
        "title": "CSS Grid Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS Grid, you should review what you've learned.",
          "Open up this page to review how to work with the different CSS Grid properties like <code>grid-template-columns</code>, <code>grid-gap</code> and more."
        ]
      },
      "quiz-css-grid": {
        "title": "CSS Grid Quiz",
        "intro": ["Test your knowledge of CSS Grid with this quiz."]
      },
      "lab-product-landing-page": {
        "title": "Build a Product Landing Page",
        "intro": [
          "In this project, you'll build a product landing page to market a product of your choice."
        ]
      },
      "lecture-animations-and-accessibility": {
        "title": "Animations and Accessibility",
        "intro": [
          "In these lectures, you will learn about CSS animations and their accessibility concerns. You will also learn how <code>prefers-reduced-motion</code> can help address those accessibility concerns."
        ]
      },
      "workshop-ferris-wheel": {
        "title": "Build an Animated Ferris Wheel",
        "intro": [
          "You can use CSS animation to draw attention to specific sections of your webpage and make it more engaging.",
          "In this workshop, you'll build a Ferris wheel. You'll practice how to use CSS to animate elements, transform them, and adjust their speed."
        ]
      },
      "lab-moon-orbit": {
        "title": "Build a Moon Orbit",
        "intro": [
          "In this lab, you'll create an animation of the moon orbiting the earth.",
          "You'll practice animation properties like <code>animation-name</code>, <code>animation-duration</code>, <code>animation-timing-function</code>, and more."
        ]
      },
      "workshop-flappy-penguin": {
        "title": "Build a Flappy Penguin",
        "intro": [
          "You can transform HTML elements to create appealing designs that draw your reader's eye. You can use transforms to rotate elements, scale them, and more.",
          "In this workshop, you'll build a penguin. You'll use CSS transforms to position and resize the parts of your penguin, create a background, and animate your work."
        ]
      },
      "lab-personal-portfolio": {
        "title": "Build a Personal Portfolio",
        "intro": [
          "In this project, you'll build your own personal portfolio page."
        ]
      },
      "review-css-animations": {
        "title": "CSS Animations Review",
        "intro": [
          "Before you're quizzed on working with CSS animations, you should review what you've learned about them.",
          "Open up this page to review concepts including <code>prefers-reduced-motion</code>, the <code>@keyframes</code> rule and more."
        ]
      },
      "quiz-css-animations": {
        "title": "CSS Animations Quiz",
        "intro": ["Test your knowledge of CSS animations with this quiz."]
      },
      "review-css": {
        "title": "CSS Review",
        "intro": [
          "Before you take the CSS prep exam, you first need to review the concepts taught in the previous modules.",
          "打開此頁面以複習 CSS 基礎、響應式 Web 設計、動畫、可訪問性等概念。"
        ]
      },
      "exam-responsive-web-design-certification": {
        "title": "Responsive Web Design Certification Exam",
        "intro": [
          "Pass this exam to earn your Responsive Web Design Certification Exam"
        ]
      }
    }
  },
  "a2-professional-spanish": {
    "title": "A2 Professional Spanish Certification (Beta)",
    "note": "This certification is currently in active development. New content will be published as our instructional design team develops it. Once all content is available, we will release the certification exam.",
    "intro": ["Placeholder intro"],
    "blocks": {
      "talk-about-who-you-are-by-using-key-verbs": {
        "title": "Talk About Who You Are by Using Key Verbs",
        "intro": [
          "Learn how to introduce yourself in Spanish in a simple and professional way. In this module you'll learn how to say who you are, where you are from, what you do, how you feel, and what you like or don't like."
        ]
      },
      "get-to-know-others-by-asking-simple-questions": {
        "title": "Get to Know Others by Asking Simple Questions",
        "intro": [
          "Learn how to ask and answer questions in simple conversations. Through five short dialogues, practice talking about routines, feelings, preferences, workspaces, and personal information. You'll also learn to ask polite questions, give short answers, and use negation naturally."
        ]
      }
    }
  },
  "a2-professional-chinese": {
    "title": "A2 Professional Chinese Certification (Beta)",
    "note": "This certification is currently in active development. New content will be published as our instructional design team develops it. Once all content is available, we will release the certification exam.",
    "intro": ["Placeholder intro"],
    "blocks": {
      "talk-about-what-you-do-by-using-key-verbs": {
        "title": "Talk About What You Do by Using Key Verbs",
        "intro": [
          "Learn how to introduce yourself in Chinese in a simple and professional way. In this module you'll learn how to say who you are, where you are from, what you do, how you feel, and what you like or don't like."
        ]
      },
      "get-to-know-colleagues-by-asking-simple-questions": {
        "title": "Get to Know Colleagues by Asking Simple Questions",
        "intro": [
          "Learn how to ask and answer questions in simple conversations. Through five short dialogues, practice talking about routines, feelings, preferences, workspaces, and personal information. You'll also learn to ask polite questions, give short answers, and use negation naturally."
        ]
      }
    }
  },
  "a1-professional-chinese": {
    "title": "A1 Professional Chinese Certification (Beta)",
    "note": "This certification is currently in active development. New content will be published as our instructional design team develops it. Once all content is available, we will release the certification exam.",
    "intro": [
      "In this A1 Professional Chinese Curriculum, you'll learn the building blocks of the Chinese language. This will follow the A1 level of the Common European Framework of Reference (CEFR). And we've focused on vocabulary that is particularly useful for professional settings.",
      "The curriculum is broken down into several modules that include warm-up, learning, practice, review pages, and quizzes to make sure that you truly understand the material before moving on to the next module.",
      "Each chapter includes hundreds of interactive tasks designed to help you take your first steps in learning Chinese with confidence."
    ],
    "chapters": {
      "zh-a1-chapter-welcome-to-a1-professional-chinese": "Welcome to A1 Professional Chinese",
      "zh-a1-chapter-pinyin": "Pinyin",
      "zh-a1-chapter-greetings-and-introductions": "Greetings and Introductions",
      "zh-a1-chapter-numbers-and-personal-information": "Numbers and Personal Information",
      "zh-a1-chapter-expressing-what-you-can-and-cant-do": "Expressing What You Can and Can't Do"
    },
    "modules": {
      "zh-a1-module-introduction-and-certification-overview": "Introduction and Certification Overview",
      "zh-a1-module-initials-and-finals": "Initials and Finals",
      "zh-a1-module-greetings-and-basic-introductions": "Greetings and Basic Introductions",
      "zh-a1-module-asking-and-giving-basic-information": "Asking and Giving Basic Information",
      "zh-a1-module-numbers-below-100": "Numbers Below 100",
      "zh-a1-module-communicating-personal-information": "Communicating Personal Information",
      "zh-a1-module-talking-about-personal-skills": "Talking about Personal Skills",
      "zh-a1-module-discussing-team-skills": "Discussing Team Skills"
    },
    "module-intros": {
      "zh-a1-module-introducing-others": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will practice understanding short monologues that introduce information about other people, such as name, role, nationality, and age."
        ]
      },
      "zh-a1-module-getting-to-know-the-team": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will practice understanding a short conversation that asks and answers simple questions about colleagues."
        ]
      },
      "zh-a1-module-communicating-personal-information": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will practice understanding conversations that communicate personal information, such as age and phone numbers."
        ]
      },
      "zh-a1-module-talking-about-personal-skills": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will practice understanding short monologues about what people can and cannot do, such as languages and work skills."
        ]
      },
      "zh-a1-module-discussing-team-skills": {
        "note": "Coming 2026",
        "intro": [
          "In this module, you will practice understanding a short conversation about who can do which tasks on a team and how a project starts."
        ]
      }
    },
    "blocks": {
      "zh-a1-learn-certification-introduction": {
        "title": "Certification Introduction",
        "intro": ["", ""]
      },
      "zh-a1-learn-simple-finals": {
        "title": "Simple Finals",
        "intro": ["", ""]
      },
      "zh-a1-learn-initials": {
        "title": "Initials",
        "intro": ["", ""]
      },
      "zh-a1-learn-compound-finals": {
        "title": "Compound Finals",
        "intro": ["", ""]
      },
      "zh-a1-learn-nasal-finals": {
        "title": "Nasal Finals",
        "intro": ["", ""]
      },
      "zh-a1-warm-up-greeting-new-colleagues": {
        "title": "Greeting New Colleagues",
        "intro": ["", ""]
      },
      "zh-a1-learn-understanding-greetings-and-introductions": {
        "title": "Understanding Greetings and Introductions",
        "intro": ["", ""]
      },
      "zh-a1-practice-introducing-yourself": {
        "title": "​Introducing Yourself",
        "intro": ["", ""]
      },
      "zh-a1-review-greetings-and-introductions": {
        "title": "Greetings and Introductions Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-greetings-and-introductions": {
        "title": "Greetings and Introductions Quiz",
        "intro": ["", ""]
      },
      "zh-a1-learn-understanding-questions-and-answers": {
        "title": "Understanding Questions and Answers",
        "intro": ["", ""]
      },
      "zh-a1-practice-exchanging-basic-information": {
        "title": "Exchanging Basic Information",
        "intro": ["", ""]
      },
      "zh-a1-review-introduction-questions": {
        "title": "Introduction Questions Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-introduction-questions": {
        "title": "Introduction Questions Quiz",
        "intro": ["", ""]
      },
      "zh-a1-warm-up-introducing-others-basics": {
        "title": "Introducing Others Basics",
        "intro": ["", ""]
      },
      "zh-a1-learn-meeting-the-team": {
        "title": "Meeting the Team",
        "intro": ["", ""]
      },
      "zh-a1-learn-a-new-colleague": {
        "title": "A New Colleague",
        "intro": ["", ""]
      },
      "zh-a1-learn-my-family": {
        "title": "My Family",
        "intro": ["", ""]
      },
      "zh-a1-practice-introducing-others": {
        "title": "Introducing Others Practice",
        "intro": ["", ""]
      },
      "zh-a1-review-introducing-others": {
        "title": "Introducing Others Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-check-your-introduction": {
        "title": "Check Your Introduction",
        "intro": ["", ""]
      },
      "zh-a1-warm-up-knowing-the-team-basics": {
        "title": "Knowing the Team Basics",
        "intro": ["", ""]
      },
      "zh-a1-learn-asking-about-the-team": {
        "title": "Asking about the Team",
        "intro": ["", ""]
      },
      "zh-a1-practice-talking-about-others": {
        "title": "Talking about Others",
        "intro": ["", ""]
      },
      "zh-a1-review-team-introduction": {
        "title": "Team Introduction Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-team-introduction": {
        "title": "Team Introduction Quiz",
        "intro": ["", ""]
      },
      "zh-a1-warm-up-personal-skills-basics": {
        "title": "Personal Skills Basics",
        "intro": ["", ""]
      },
      "zh-a1-learn-can-or-cannot": {
        "title": "Can or Can't",
        "intro": ["", ""]
      },
      "zh-a1-practice-personal-skills": {
        "title": "Personal Skills Practice",
        "intro": ["", ""]
      },
      "zh-a1-review-describing-skills": {
        "title": "Describing Skills Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-describing-skills": {
        "title": "Describing Skills Quiz",
        "intro": ["", ""]
      },
      "zh-a1-warm-up-team-skills-basics": {
        "title": "Team Skills Basics",
        "intro": ["", ""]
      },
      "zh-a1-learn-who-can-do-what-on-the-team": {
        "title": "Who Can Do What on the Team",
        "intro": ["Learn to discuss team member capabilities and roles."]
      },
      "zh-a1-practice-talking-about-skills": {
        "title": "Talking about Skills",
        "intro": ["Practice discussing various skills in team contexts."]
      },
      "zh-a1-review-discussing-team-skills": {
        "title": "Discussing Team Skills Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-discussing-team-skills": {
        "title": "Discussing Team Skills Quiz",
        "intro": ["", ""]
      },
      "zh-a1-warm-up-meeting-new-teammates": {
        "title": "Meeting New Teammates",
        "intro": ["", ""]
      },
      "zh-a1-learn-special-spelling-rules": {
        "title": "Special Spelling Rules",
        "intro": ["", ""]
      },
      "zh-a1-practice-pinyin": {
        "title": "Pinyin Practice",
        "intro": ["", ""]
      },
      "zh-a1-learn-numbers-0-to-10": {
        "title": "Numbers 0 to 10",
        "intro": ["", ""]
      },
      "zh-a1-practice-numbers-0-to-10": {
        "title": "Numbers 0 to 10 Practice",
        "intro": ["", ""]
      },
      "zh-a1-learn-numbers-11-to-19": {
        "title": "Numbers 11 to 19",
        "intro": ["", ""]
      },
      "zh-a1-practice-numbers-11-to-19": {
        "title": "Numbers 11 to 19 Practice",
        "intro": ["", ""]
      },
      "zh-a1-learn-numbers-20-to-99": {
        "title": "Numbers 20 to 99",
        "intro": ["", ""]
      },
      "zh-a1-practice-numbers-20-to-99": {
        "title": "Numbers 20 to 99 Practice",
        "intro": ["", ""]
      },
      "zh-a1-review-numbers-below-100": {
        "title": "Numbers Below 100 Review",
        "intro": ["", ""]
      },
      "zh-a1-quiz-numbers-below-100": {
        "title": "Numbers Below 100 Quiz",
        "intro": ["", ""]
      }
    }
  },
  "basic-html": {
    "title": "Learn Basic HTML",
    "summary": [
      "Learn how to build simple webpages using HTML tags to add text, images, and links."
    ],
    "intro": [
      "HTML stands for HyperText Markup Language and represents the content and structure for a web page. In this course, you will learn the basics of writing HTML."
    ],
    "blocks": {
      "workshop-curriculum-outline": {
        "title": "Build a Curriculum Outline",
        "intro": [
          "Welcome to freeCodeCamp!",
          "This workshop will serve as your introduction to HTML and coding in general. You will learn about headings and paragraph elements."
        ]
      },
      "lab-debug-camperbots-profile-page": {
        "title": "Debug Camperbot's Profile Page",
        "intro": [
          "Camperbot is learning how to code too and needs some help with their HTML.",
          "In this lab, you will help Camperbot find and fix the errors in their code."
        ]
      },
      "lecture-understanding-html-attributes": {
        "title": "Understanding HTML Attributes",
        "intro": [
          "In these lectures, you will learn more about HTML (HyperText Markup Language), a markup language for creating web pages.",
          "You will learn about HTML's role on the web, and what HTML attributes are."
        ]
      },
      "lab-debug-pet-adoption-page": {
        "title": "Debug a Pet Adoption Page",
        "intro": [
          "In this lab, you will need to find and fix the errors in this pet adoption page."
        ]
      },
      "lecture-understanding-the-html-boilerplate": {
        "title": "Understanding the HTML Boilerplate",
        "intro": [
          "In these lectures, you will learn about the HTML boilerplate which is a ready-made template for your webpages.",
          "You will learn how to work with the <code>link</code> element, <code>meta</code> element and more."
        ]
      },
      "workshop-cat-photo-app": {
        "title": "Build a Cat Photo App",
        "intro": [
          "HTML stands for HyperText Markup Language and it represents the content and structure of a web page.",
          "In this workshop, you will learn how to work with basic HTML elements such as headings, paragraphs, images, links, and lists."
        ]
      },
      "lab-recipe-page": {
        "title": "Build a Recipe Page",
        "intro": [
          "In this lab, you'll review HTML basics by creating a web page of your favorite recipe. You'll create an HTML boilerplate and work with headings, lists, images, and more."
        ]
      },
      "lecture-html-fundamentals": {
        "title": "HTML Fundamentals",
        "intro": [
          "In these lectures, you will learn about HTML fundamentals like the <code>div</code> element, the <code>id</code> and <code>class</code> attributes, the HTML boilerplate, HTML entities, and more."
        ]
      },
      "workshop-bookstore-page": {
        "title": "Build a Bookstore Page",
        "intro": [
          "In this workshop, you will practice working with classes, ids and the <code>div</code> element by building a bookstore page."
        ]
      },
      "lecture-understanding-how-html-affects-seo": {
        "title": "Understanding How HTML Affects SEO",
        "intro": [
          "In these lectures, you will learn how your HTML code impacts search engine optimization."
        ]
      },
      "lab-travel-agency-page": {
        "title": "Build a Travel Agency Page",
        "intro": [
          "In this lab, you'll review working with HTML fundamentals by creating a web page for a travel agency. You'll work with images, the <code>figure</code> element, the <code>figcaption</code> element, the <code>anchor</code> element, and more."
        ]
      },
      "lecture-working-with-audio-and-video-elements": {
        "title": "Working with Audio and Video Elements",
        "intro": [
          "In these lectures, you will learn how to work with the <code>audio</code> and <code>video</code> elements."
        ]
      },
      "workshop-html-video-player": {
        "title": "Build an HTML Video Player",
        "intro": [
          "In this workshop, you'll use HTML to create a basic video player.",
          "This project will cover the <code>video</code> element, the video player setup, and more."
        ]
      },
      "lab-html-audio-and-video-player": {
        "title": "Build an HTML Audio and Video Player",
        "intro": [
          "In this lab, you will build an HTML audio and video player using the <code>video</code> and <code>audio</code> elements with controls and source attributes."
        ]
      },
      "lecture-working-with-images-and-svgs": {
        "title": "Working with Images and SVGs",
        "intro": [
          "In these lectures, you will learn how to work with SVGs and learn about techniques for optimizing your images."
        ]
      },
      "workshop-build-a-heart-icon": {
        "title": "Build a Heart Icon",
        "intro": [
          "In this workshop, you will practice working with SVGs by building a heart icon"
        ]
      },
      "lecture-working-with-media": {
        "title": "Working with the iframe Element",
        "intro": [
          "In these lectures, you will learn how to work with the <code>iframe</code> element which is used to embed an external site on your web page."
        ]
      },
      "workshop-build-a-video-display-using-iframe": {
        "title": "Build a Video Display Using iframe",
        "intro": [
          "In this workshop, you'll learn how to work with the <code>iframe</code> element by building a video display."
        ]
      },
      "lab-video-compilation-page": {
        "title": "Build a Video Compilation Page",
        "intro": [
          "In this lab, you'll create a video compilation web page. You'll practice working with the <code>iframe</code> element."
        ]
      },
      "lecture-working-with-links": {
        "title": "Working with Links",
        "intro": [
          "In these lectures, you will learn about links, the <code>target</code> attribute, different link states, absolute, and relative paths, and more."
        ]
      },
      "review-basic-html": {
        "title": "Basic HTML Review",
        "intro": [
          "Before you are quizzed on the HTML knowledge you have gained so far, you first need to review the concepts.",
          "Open up this page to review the HTML boilerplate, <code>audio</code> and <code>video</code> elements, the different <code>target</code> attribute values and more."
        ]
      },
      "quiz-basic-html": {
        "title": "Basic HTML Quiz",
        "intro": [
          "The following quiz will test your knowledge of the basic HTML concepts you have learned so far.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      }
    }
  },
  "semantic-html": {
    "title": "Learn Semantic HTML",
    "summary": [
      "Discover how to write cleaner, more meaningful HTML using semantic tags that improve structure, accessibility, and SEO."
    ],
    "intro": [
      "In this interactive course, you will practice writing semantic HTML."
    ],
    "blocks": {
      "lecture-importance-of-semantic-html": {
        "title": "Importance of Semantic HTML",
        "intro": [
          "In these lectures, you will learn about semantic HTML and why you should care about it, semantic elements, how semantic HTML differs from presentational HTML, and more."
        ]
      },
      "lecture-understanding-nuanced-semantic-elements": {
        "title": "Understanding Nuanced Semantic Elements",
        "intro": [
          "In these lectures, you will learn when you should use certain semantic elements like the <code>em</code> element over the <code>i</code> element, description lists, and more."
        ]
      },
      "workshop-major-browsers-list": {
        "title": "Build a List of Major Web Browsers",
        "intro": [
          "In this workshop, you will build a description list and work with the <code>dl</code>, <code>dt</code>, and <code>dd</code> elements."
        ]
      },
      "lecture-working-with-text-and-time-semantic-elements": {
        "title": "Working with Text and Time Semantic Elements ",
        "intro": [
          "In this lecture, you will learn about the importance of semantics in conveying meaning for text and time-related content including the <code>time</code>, <code>blockquote</code> elements and more."
        ]
      },
      "workshop-quincys-job-tips": {
        "title": "Build Quincy's Job Tips Page",
        "intro": [
          "In this workshop, you will practice working with semantic HTML by using the <code>q</code>, <code>blockquote</code> and <code>cite</code> elements."
        ]
      },
      "lecture-working-with-specialized-semantic-elements": {
        "title": "Working with Specialized Semantic Elements",
        "intro": [
          "In this lecture, you will learn about specialized semantic elements like <code>u</code>, <code>s</code>, <code>code</code> elements and more."
        ]
      },
      "workshop-blog-page": {
        "title": "Build a Cat Blog Page",
        "intro": [
          "In this workshop, you will build an HTML only blog page using semantic elements including the <code>main</code>, <code>nav</code>, <code>article</code> and <code>footer</code> elements."
        ]
      },
      "lab-event-hub": {
        "title": "Build an Event Hub",
        "intro": [
          "In this lab, you'll build an event hub and review semantic elements like <code>header</code>, <code>nav</code>, <code>article</code>, and more."
        ]
      },
      "review-semantic-html": {
        "title": "Semantic HTML Review",
        "intro": [
          "Before you are quizzed on semantic HTML, you first need to review the concepts.",
          "Open up this page to review the <code>em</code>, <code>strong</code>, <code>blockquote</code>, <code>address</code> and more semantic HTML elements."
        ]
      },
      "quiz-semantic-html": {
        "title": "Semantic HTML Quiz",
        "intro": [
          "The following quiz will test your knowledge on semantic HTML concepts you have learned so far.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      }
    }
  },
  "html-and-accessibility": {
    "title": "Learn HTML and Accessibility",
    "summary": [
      "Learn how to write inclusive HTML using accessibility best practices and ARIA."
    ],
    "intro": [
      "Practice writing accessible HTML structures and form experiences."
    ],
    "blocks": {
      "lecture-importance-of-accessibility-and-good-html-structure": {
        "title": "Importance of Accessibility and Good HTML Structure",
        "intro": [
          "In these lessons, you will learn about accessibility and its importance, assistive tools for people with disabilities, HTML attributes that let you create inclusive websites, accessibility best practices, and much more."
        ]
      },
      "workshop-debug-coding-journey-blog-page": {
        "title": "Debug a Coding Journey Blog Page",
        "intro": [
          "In this workshop, you will debug and fix accessibility errors in a coding blog page."
        ]
      },
      "lecture-accessible-tables-forms": {
        "title": "Working with Accessible Tables and Forms",
        "intro": [
          "In these lessons, you will learn about how to create accessible tables and forms."
        ]
      },
      "workshop-tech-conference-schedule": {
        "title": "Build a Tech Conference Schedule Table",
        "intro": [
          "In this workshop, you will build an accessible tech conference schedule table."
        ]
      },
      "lab-debug-donation-form": {
        "title": "Debug a Donation Form",
        "intro": [
          "In this lab you will debug a donation form by fixing HTML syntax errors and improving accessibility."
        ]
      },
      "lecture-introduction-to-aria": {
        "title": "Introduction to ARIA",
        "intro": [
          "In these lectures, you will learn about working with ARIA roles."
        ]
      },
      "workshop-accessible-audio-controller": {
        "title": "Build an Accessible Audio Controller",
        "intro": [
          "In this workshop, you will practice accessible HTML by building an audio controller that uses the <code>aria-labelledby</code> attribute."
        ]
      },
      "lecture-accessible-media-elements": {
        "title": "Working with Accessible Media Elements",
        "intro": [
          "In these lectures, you will learn about how to create accessible links, audio and video content."
        ]
      },
      "lab-checkout-page": {
        "title": "Build a Checkout Page",
        "intro": [
          "In this lab, you'll create an accessible checkout page.",
          "You'll practice concepts like <code>alt</code> attributes and ARIA roles."
        ]
      },
      "lab-movie-review-page": {
        "title": "Design a Movie Review Page",
        "intro": [
          "In this lab, you'll create a movie review page.",
          "You'll practice concepts like semantic HTML, <code>alt</code> attributes, accessible lists, and hiding decorative content from screen readers using <code>aria-hidden</code>."
        ]
      },
      "lab-multimedia-player": {
        "title": "Build a Multimedia Player",
        "intro": [
          "In this lab, you'll build a multimedia player.",
          "You will practice working with the <code>audio</code> and <code>video</code> elements, the <code>controls</code> attribute, and the <code>aria-label</code> attribute."
        ]
      },
      "review-html-accessibility": {
        "title": "HTML Accessibility Review",
        "intro": [
          "Before you are quizzed on HTML and accessibility, you first need to review the concepts.",
          "Open up this page to review concepts including the <code>aria-hidden</code>, <code>aria-describedby</code>, <code>tabindex</code> attributes and more."
        ]
      },
      "quiz-html-accessibility": {
        "title": "HTML Accessibility Quiz",
        "intro": [
          "The following quiz will test your knowledge on the accessibility concepts you have learned so far.",
          "If you're getting ready for the exam, there are several quiz sets available for practice. After completing a quiz, you can revisit this page to access a new set of questions."
        ]
      }
    }
  },
  "computer-basics": {
    "title": "Learn Computer Basics",
    "summary": [
      "Build a foundation in computer, internet, and tooling basics for web development."
    ],
    "intro": [
      "Get comfortable with the tools and concepts that power modern web development."
    ],
    "blocks": {
      "lecture-understanding-computer-internet-and-tooling-basics": {
        "title": "Understanding Computer, Internet, and Tooling Basics",
        "intro": [
          "In these lessons, you will learn about the computer, its different parts, internet service providers (ISPs), and the tools professional developers use."
        ]
      },
      "lecture-working-with-file-systems": {
        "title": "Working with File Systems",
        "intro": [
          "In these lessons, you will learn how to work with file and folder systems on your computers. You will learn how to create, move, and delete files and folders, the best practices for naming and organizing files and folders, and more."
        ]
      },
      "lecture-browsing-the-web-effectively": {
        "title": "Browsing the Web Effectively",
        "intro": [
          "In these lessons, you will learn about what websites, search engine, and web browsers are, the different browsers available, and how to get the best out of a search engine."
        ]
      },
      "review-computer-basics": {
        "title": "Computer Basics Review",
        "intro": [
          "Before you are quizzed on basic computer and internet concepts, you first need to review.",
          "Open up this page to review concepts like RAM, Internet service providers, common web browsers, search engines and more."
        ]
      },
      "quiz-computer-basics": {
        "title": "Computer Basics Quiz",
        "intro": [
          "Test what you've learned in this quiz of basic computer knowledge."
        ]
      }
    }
  },
  "basic-css": {
    "title": "Learn Basic CSS",
    "summary": [
      "Learn core CSS concepts and start styling real-world layouts."
    ],
    "intro": [
      "Learn the fundamentals of CSS and apply them to practical layouts."
    ],
    "blocks": {
      "lecture-what-is-css": {
        "title": "What Is CSS?",
        "intro": [
          "The following lessons are all about CSS. You will learn what CSS is and its role on the web, a CSS rule and its anatomy, the three ways to write CSS and when to use each, inline and block elements, and many more."
        ]
      },
      "workshop-cafe-menu": {
        "title": "Design a Cafe Menu",
        "intro": [
          "CSS tells the browser how to display your webpage. You can use CSS to set the color, font, size, and other aspects of HTML elements.",
          "In this workshop, you'll learn CSS by designing a menu page for a cafe webpage."
        ]
      },
      "lab-business-card": {
        "title": "Design a Business Card",
        "intro": [
          "In this lab, you'll create a business card and style it using CSS.",
          "You'll practice style properties like <code>color</code>, <code>font-size</code>, <code>text-align</code>, and more."
        ]
      },
      "lecture-css-specificity-the-cascade-algorithm-and-inheritance": {
        "title": "CSS Specificity, the Cascade Algorithm, and Inheritance",
        "intro": [
          "In these lessons, you will learn about CSS specificity, the common selectors and their specificities, the cascade algorithm, inheritance, and more."
        ]
      },
      "review-basic-css": {
        "title": "CSS Fundamentals Review",
        "intro": [
          "Before you are quizzed on basic CSS concepts, you first need to review.",
          "Open up this page to review concepts including <code>margin</code>, <code>padding</code>, CSS combinators, CSS specificity and more."
        ]
      },
      "quiz-basic-css": {
        "title": "CSS Fundamentals Quiz",
        "intro": [
          "Test what you've learned in this quiz of basic CSS knowledge."
        ]
      },
      "lecture-styling-lists-and-links": {
        "title": "Styling Lists and Links",
        "intro": [
          "In these lessons, you will learn the properties you need to know to effectively style lists and links, including link states like <code>link</code>, <code>visited</code>, <code>hover</code>, and <code>active</code>."
        ]
      },
      "lab-stylized-to-do-list": {
        "title": "Build a Stylized To-Do List",
        "intro": [
          "In this lab, you'll build a To-Do list and apply different styles to the links",
          "You'll practice style properties like <code>text-decoration</code>, <code>list-style-type</code> and how to change styles on hover or click."
        ]
      },
      "lecture-working-with-backgrounds-and-borders": {
        "title": "Working with Backgrounds and Borders",
        "intro": [
          "In these lessons, you will learn about the properties and values you need to know to style backgrounds and borders of elements, alongside the accessibility considerations for backgrounds."
        ]
      },
      "lab-blog-post-card": {
        "title": "Design a Blog Post Card",
        "intro": [
          "In this lab, you'll design a blog post card using HTML and CSS",
          "You'll practice concepts like <code>background-color</code>, <code>border-radius</code>, margins, paddings, and more."
        ]
      },
      "review-css-backgrounds-and-borders": {
        "title": "Lists, Links, CSS Background and Borders Review",
        "intro": [
          "Before you are quizzed on CSS backgrounds and borders, you first need to review.",
          "Open up this page to review concepts including the <code>background-image</code> property, <code>border</code> property and more."
        ]
      },
      "quiz-css-backgrounds-and-borders": {
        "title": "CSS Backgrounds and Borders Quiz",
        "intro": [
          "Test what you've learned in this quiz of backgrounds and borders in CSS."
        ]
      }
    }
  },
  "design-for-developers": {
    "title": "Introduction to UI/UX Design",
    "summary": [
      "Explore UI design fundamentals and user-centered design principles for developers."
    ],
    "intro": [
      "Learn the design principles that help developers build better interfaces."
    ],
    "blocks": {
      "lecture-user-interface-design-fundamentals": {
        "title": "User Interface Design Fundamentals",
        "intro": [
          "In these lessons, you will learn about the fundamentals of user interface (UI) design. You will learn about the terms you need to know to communicate with designers, visual hierarchy, scaling, alignment, whitespace, and much more."
        ]
      },
      "lecture-user-centered-design": {
        "title": "User-Centered Design",
        "intro": [
          "In these lessons, you will learn about best practices for designing user-facing features like dark mode, breadcrumbs, modal dialogs, and much more. You will also learn how to conduct user research, user requirements and testing."
        ]
      },
      "lecture-common-design-tools": {
        "title": "Common Design Tools",
        "intro": [
          "In these lessons, you will learn about the common design tools developers should know. You will also learn about design briefs and how developers work with them."
        ]
      },
      "review-design-fundamentals": {
        "title": "Design Fundamentals Review",
        "intro": [
          "Before you are quizzed on the design fundamentals you have learned so far, you first need to review.",
          "Open up this page to review concepts like user-centered design, scale, alignment, good visual hierarchy and more."
        ]
      },
      "quiz-design-fundamentals": {
        "title": "Design Fundamentals Quiz",
        "intro": [
          "Test what you've learned in this quiz of UI design fundamentals."
        ]
      }
    }
  },
  "absolute-and-relative-units": {
    "title": "Learn Absolute and Relative Units in CSS",
    "summary": [
      "Understand when to use absolute and relative CSS units to build flexible layouts."
    ],
    "intro": ["Learn to size elements responsively with CSS units."],
    "blocks": {
      "lecture-working-with-relative-and-absolute-units": {
        "title": "Working with Relative and Absolute Units",
        "intro": [
          "In these lessons, you will learn about relative and absolute units, and how they both impact what you see in the browser."
        ]
      },
      "lab-event-flyer-page": {
        "title": "Build an Event Flyer Page",
        "intro": [
          "In this lab, you'll create an event flyer page.",
          "You will practice aligning elements using absolute and relative CSS."
        ]
      },
      "review-css-relative-and-absolute-units": {
        "title": "CSS Relative and Absolute Units Review",
        "intro": [
          "Before you are quizzed on relative and absolute units, you first need to review.",
          "Open up this page to review concepts like percentages, <code>px</code>, <code>rem</code>, <code>em</code>, and more."
        ]
      },
      "quiz-css-relative-and-absolute-units": {
        "title": "CSS Relative and Absolute Units Quiz",
        "intro": [
          "Test what you've learned in this quiz of relative and absolute units in CSS."
        ]
      }
    }
  },
  "pseudo-classes-and-elements": {
    "title": "Learn CSS Pseudo Classes and Elements",
    "summary": [
      "Use pseudo-classes and pseudo-elements to create richer, more interactive styles."
    ],
    "intro": [
      "Add interaction and detail with CSS pseudo-classes and pseudo-elements."
    ],
    "blocks": {
      "lecture-working-with-pseudo-classes-and-pseudo-elements-in-css": {
        "title": "Working with Pseudo-Classes and Pseudo-Elements in CSS",
        "intro": [
          "In these lessons, you will learn about pseudo-classes and pseudo-elements, alongside their examples and how they work."
        ]
      },
      "workshop-greeting-card": {
        "title": "Design a Greeting Card",
        "intro": [
          "In the previous lessons, you learned how to work with the different types of pseudo-classes.",
          "In this workshop, you will have a chance to practice what you have learned by designing a greeting card."
        ]
      },
      "workshop-parent-teacher-conference-form": {
        "title": "Design a Parent Teacher Conference Form",
        "intro": [
          "In this workshop, you will practice how to style radio buttons with different types of pseudo-selectors by building a parent-teacher conference form.",
          "You'll practice concepts including the <code>::before</code> pseudo-element selector, the <code>transform</code> property, and more."
        ]
      },
      "lab-job-application-form": {
        "title": "Build a Job Application Form",
        "intro": [
          "In this lab you'll build a job application form and style it using pseudo-classes.",
          "You'll practice concepts like <code>:hover</code>, <code>:active</code>, <code>:focus</code>, and more."
        ]
      },
      "review-css-pseudo-classes": {
        "title": "CSS Pseudo-classes Review",
        "intro": [
          "Before you're quizzed on CSS pseudo-classes and pseudo-elements, you should review what you've learned about them.",
          "Open up this page to review concepts like the <code>::before</code> and <code>::after</code> pseudo-elements as well as the <code>:hover</code>, <code>:active</code> pseudo-classes and more."
        ]
      },
      "quiz-css-pseudo-classes": {
        "title": "CSS Pseudo-classes Quiz",
        "intro": ["Test your knowledge of CSS pseudo-classes with this quiz."]
      }
    }
  },
  "css-colors": {
    "title": "Learn CSS Colors",
    "summary": [
      "Work with CSS color formats and build cohesive color palettes."
    ],
    "intro": ["Learn to apply color with CSS to create polished visuals."],
    "blocks": {
      "lecture-working-with-colors-in-css": {
        "title": "Working with Colors in CSS",
        "intro": [
          "In these lessons, you will learn about linear and radial gradients, the color theory, different kinds of colors like named, RGB, Hex, and HSL colors. You will learn how these colors work, and which to use in specific cases."
        ]
      },
      "workshop-colored-markers": {
        "title": "Build a Set of Colored Markers",
        "intro": [
          "In this workshop, you'll build a set of colored markers. You'll practice different ways to set color values and how to pair colors with each other."
        ]
      },
      "lab-colored-boxes": {
        "title": "Design a Set of Colored Boxes",
        "intro": [
          "In this lab, you'll create a color grid and practice adding background colors to the grid items using hex codes, RGB, and predefined color names."
        ]
      },
      "review-css-colors": {
        "title": "CSS Colors Review",
        "intro": [
          "Before you're quizzed on CSS colors, you should review what you've learned about them.",
          "Open up this page to review concepts like the <code>rgb()</code> function, <code>hsl()</code> function, <code>hex codes</code>, and more."
        ]
      },
      "quiz-css-colors": {
        "title": "CSS Colors Quiz",
        "intro": ["Test your knowledge of CSS colors with this quiz."]
      }
    }
  },
  "styling-forms": {
    "title": "Learn How to Style Forms Using CSS",
    "summary": ["Apply CSS techniques to create clean, usable form layouts."],
    "intro": ["Style form elements to improve usability and visual clarity."],
    "blocks": {
      "lecture-best-practices-for-styling-forms": {
        "title": "Best Practices for Styling Forms",
        "intro": [
          "In these lessons, you will learn about the best practices for styling forms and issues you can encounter while styling special inputs like <code>color</code> and <code>datetime-local</code>."
        ]
      },
      "workshop-registration-form": {
        "title": "Design a Registration Form",
        "intro": [
          "In this workshop, you'll learn how to design HTML forms by designing a signup page. You'll learn how to control what types of data people can type into your form, and some new CSS tools for styling your page."
        ]
      },
      "lab-contact-form": {
        "title": "Design a Contact Form",
        "intro": [
          "In this lab, you'll design a contact form in HTML and style it using CSS."
        ]
      },
      "workshop-game-settings-panel": {
        "title": "Build a Game Settings Panel",
        "intro": [
          "In this workshop, you will practice styling checkboxes by building a game settings panel."
        ]
      },
      "lab-feature-selection": {
        "title": "Design a Feature Selection Page",
        "intro": [
          "In this lab, you'll build a feature selection page with custom-styled checkboxes.",
          "You'll create feature cards with labels and checkboxes, then give custom styling to the checkboxes."
        ]
      },
      "review-styling-forms": {
        "title": "Styling Forms Review",
        "intro": [
          "Before you're quizzed on styling forms, you should review what you've learned.",
          "Open up this page to review how to style form inputs, working with <code>appearance: none</code> and more."
        ]
      },
      "quiz-styling-forms": {
        "title": "Styling Forms Quiz",
        "intro": [
          "In this quiz, you will test your knowledge of how to style forms."
        ]
      }
    }
  },
  "css-box-model": {
    "title": "Learn the CSS Box Model",
    "summary": [
      "Master the CSS box model, spacing, and layout effects for precise designs."
    ],
    "intro": ["Learn how spacing, borders, and layout effects work together."],
    "blocks": {
      "lecture-working-with-css-transforms-overflow-and-filters": {
        "title": "Working with CSS Transforms, Overflow, and Filters",
        "intro": [
          "In these lessons, you will learn about working with CSS transforms, overflow, and filters. You will also learn about the box model and how it works."
        ]
      },
      "workshop-rothko-painting": {
        "title": "Design a Rothko Painting",
        "intro": [
          "Every HTML element is its own box – with its own spacing and a border. This is called the Box Model.",
          "In this workshop, you'll use CSS and the Box Model to create your own Rothko-style rectangular art pieces."
        ]
      },
      "lab-confidential-email-page": {
        "title": "Build a Confidential Email Page",
        "intro": [
          "In this lab, you'll create a web page using HTML and mask the content using CSS properties."
        ]
      },
      "review-css-layout-and-effects": {
        "title": "CSS Layouts and Effects Review",
        "intro": [
          "Before you are quizzed on CSS Layouts and Effects, you first need to review.",
          "Open up this page to review concepts like the <code>transform</code> property, the box model, the <code>overflow</code> property and more."
        ]
      },
      "quiz-css-layout-and-effects": {
        "title": "CSS Layout and Effects Quiz",
        "intro": [
          "In this quiz, you will test your knowledge of the box model, transforms, filters, and overflow in CSS."
        ]
      }
    }
  },
  "css-flexbox": {
    "title": "Learn CSS Flexbox",
    "summary": [
      "Build responsive layouts using the Flexbox model and alignment tools."
    ],
    "intro": ["Use Flexbox to build responsive, aligned layouts."],
    "blocks": {
      "lecture-working-with-css-flexbox": {
        "title": "Working with CSS Flexbox",
        "intro": [
          "In these lessons, you will learn how CSS flexbox works, its properties, and when you should use it."
        ]
      },
      "workshop-flexbox-photo-gallery": {
        "title": "Build a Flexbox Photo Gallery",
        "intro": [
          "In this workshop, you'll use Flexbox to build a responsive photo gallery webpage."
        ]
      },
      "lab-pricing-plans-layout": {
        "title": "Build a Pricing Plans Layout",
        "intro": [
          "In this lab, you'll create a pricing plans layout.",
          "You'll practice aligning elements using flexbox properties like <code>flex-direction</code>, <code>justify-content</code>, <code>align-self</code>, and more."
        ]
      },
      "lab-page-of-playing-cards": {
        "title": "Build a Page of Playing Cards",
        "intro": [
          "In this lab, you'll use flexbox to create a webpage of playing cards.",
          "You'll practice aligning elements using flexbox properties like <code>flex-direction</code>, <code>justify-content</code>, <code>align-self</code>, and more."
        ]
      },
      "review-css-flexbox": {
        "title": "CSS Flexbox Review",
        "intro": [
          "Before you're quizzed on CSS flexbox, you should review what you've learned.",
          "Open up this page to review concepts like the <code>flex-direction</code>, <code>justify-content</code>, <code>align-items</code>, <code>flex-wrap</code> properties, and more."
        ]
      },
      "quiz-css-flexbox": {
        "title": "CSS Flexbox Quiz",
        "intro": ["Test what you've learned on CSS flexbox with this quiz."]
      }
    }
  },
  "css-typography": {
    "title": "Learn CSS Typography",
    "summary": [
      "Learn how to style text for readability, hierarchy, and visual balance."
    ],
    "intro": ["Use typography to improve readability and visual hierarchy."],
    "blocks": {
      "lecture-working-with-css-fonts": {
        "title": "Working with CSS Fonts",
        "intro": [
          "In these lessons, you will learn about typography and its best practices, fonts, and the <code>text-shadow</code> property."
        ]
      },
      "workshop-nutritional-label": {
        "title": "Build a Nutritional Label",
        "intro": [
          "Typography is the art of styling your text to be easily readable and suit its purpose.",
          "In this workshop, you'll use typography to build a nutrition label webpage. You'll practice how to style text, adjust line height, and position your text using CSS."
        ]
      },
      "lab-newspaper-article": {
        "title": "Build a Newspaper Article",
        "intro": [
          "In this lab, you'll build a newspaper article page using HTML and CSS.",
          "You'll style the fonts using properties like <code>font-family</code>, <code>font-size</code>, <code>font-weight</code>, and more."
        ]
      },
      "review-css-typography": {
        "title": "CSS Typography Review",
        "intro": [
          "Before you're quizzed on the fundamentals of typography, you should review what you've learned.",
          "Open up this page to review concepts like web safe fonts, the <code>font-family</code> property and more."
        ]
      },
      "quiz-css-typography": {
        "title": "CSS Typography Quiz",
        "intro": ["Test your knowledge of typography with this quiz."]
      }
    }
  },
  "css-and-accessibility": {
    "title": "Learn CSS and Accessibility",
    "summary": [
      "Apply CSS techniques that support accessible and inclusive interfaces."
    ],
    "intro": ["Design with accessibility in mind while styling UI elements."],
    "blocks": {
      "lecture-best-practices-for-accessibility-and-css": {
        "title": "Best Practices for Accessibility and CSS",
        "intro": [
          "In these lessons, you will learn about best practices for accessibility in CSS, and the tools for checking good color contrast on websites."
        ]
      },
      "workshop-accessibility-quiz": {
        "title": "Build a Quiz Webpage",
        "intro": [
          "Accessibility is the process of making your webpages usable for everyone, including people with disabilities.",
          "In this workshop, you'll build a quiz webpage. You'll learn accessibility tools such as keyboard shortcuts, ARIA attributes, and design best practices."
        ]
      },
      "lab-tribute-page": {
        "title": "Build a Tribute Page",
        "intro": [
          "In this lab, you'll build a tribute page for a subject of your choosing, fictional or real."
        ]
      },
      "review-css-accessibility": {
        "title": "CSS Accessibility Review",
        "intro": [
          "Before you're quizzed on CSS and accessibility, you should review what you've learned.",
          "Open up this page to review concepts like color contrast tools and accessibility best practices."
        ]
      },
      "quiz-css-accessibility": {
        "title": "CSS Accessibility Quiz",
        "intro": [
          "In this quiz, you'll test what you've learned about making your webpages accessible with CSS."
        ]
      }
    }
  },
  "css-positioning": {
    "title": "Learn CSS Positioning",
    "summary": [
      "Use positioning and floats to control layout and element flow."
    ],
    "intro": ["Control layout with floats and CSS positioning tools."],
    "blocks": {
      "lecture-understanding-how-to-work-with-floats-and-positioning-in-css": {
        "title": "Understanding How to Work with Floats and Positioning in CSS",
        "intro": [
          "In these lessons, you will learn how to use CSS positioning and floats. You will learn about <code>absolute</code>, <code>relative</code>, <code>fixed</code>, and <code>sticky</code> positioning. You will also use the <code>z-index</code> property."
        ]
      },
      "workshop-cat-painting": {
        "title": "Build a Cat Painting",
        "intro": [
          "Mastering CSS positioning is essential for creating visually appealing and responsive web layouts.",
          "In this workshop, you will build a cat painting. You'll learn about how to work with absolute positioning, the <code>z-index</code> property, and the <code>transform</code> property."
        ]
      },
      "lab-house-painting": {
        "title": "Build a House Painting",
        "intro": [
          "In this lab, you'll build a house painting using CSS.",
          "You'll design individual elements of the house and position them using CSS properties like <code>position</code>, <code>top</code>, <code>left</code>, and more."
        ]
      },
      "review-css-positioning": {
        "title": "CSS Positioning Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS positioning, you should review what you've learned.",
          "Open up this page to review concepts like floats, relative positioning, absolute positioning and more."
        ]
      },
      "quiz-css-positioning": {
        "title": "CSS Positioning Quiz",
        "intro": ["Test your knowledge of CSS positioning with this quiz."]
      }
    }
  },
  "attribute-selectors": {
    "title": "Learn CSS Attribute Selectors",
    "summary": ["Target elements precisely with CSS attribute selectors."],
    "intro": ["Select elements with precision using attribute selectors."],
    "blocks": {
      "lecture-working-with-attribute-selectors": {
        "title": "Working with Attribute Selectors",
        "intro": [
          "In these lessons, you will learn about attribute selectors and how to use them to target elements like links and lists."
        ]
      },
      "workshop-balance-sheet": {
        "title": "Build a Balance Sheet",
        "intro": [
          "In this workshop, you'll build a balance sheet using pseudo selectors. You'll learn how to change the style of an element when you hover over it with your mouse, and trigger other events on your webpage."
        ]
      },
      "lab-book-inventory-app": {
        "title": "Build a Book Inventory App",
        "intro": [
          "In this lab, you'll create a book inventory app.",
          "You'll practice CSS attribute selectors like <code>[attribute]</code>, <code>[attribute=value]</code>, <code>[attribute~=value]</code>, and more."
        ]
      },
      "review-css-attribute-selectors": {
        "title": "CSS Attribute Selectors Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS attribute selectors, you should review what you've learned about them.",
          "Open up this page to review concepts like how to work with different attribute selectors that target links with the <code>href</code> and <code>title</code> attributes."
        ]
      },
      "quiz-css-attribute-selectors": {
        "title": "CSS Attribute Selectors Quiz",
        "intro": [
          "Test your knowledge of CSS attribute selectors with this quiz."
        ]
      }
    }
  },
  "responsive-design": {
    "title": "Learn Responsive Design",
    "summary": [
      "Learn responsive design principles and build layouts that adapt to any screen."
    ],
    "intro": ["Make layouts adapt to different screen sizes and devices."],
    "blocks": {
      "lecture-best-practices-for-responsive-web-design": {
        "title": "Best Practices for Responsive Web Design",
        "intro": [
          "在這些課程中，你將學習響應式 Web 設計的最佳實踐、網格、flexbox、媒體查詢與斷點在響應式設計中的作用等。"
        ]
      },
      "workshop-piano": {
        "title": "Design a Piano",
        "intro": [
          "Responsive Design tells your webpage how it should look on different-sized screens.",
          "In this workshop, you'll use CSS and responsive design to code a piano. You'll also practice media queries and pseudo selectors."
        ]
      },
      "lab-technical-documentation-page": {
        "title": "Build a Technical Documentation Page",
        "intro": [
          "In this lab, you'll build a technical documentation page to serve as instruction or reference for a topic.",
          "You'll also practice media queries to create a responsive design."
        ]
      },
      "review-responsive-web-design": {
        "title": "響應式 Web 設計複習",
        "intro": [
          "Before you're quizzed on the fundamentals of responsive design, you should review what you've learned.",
          "Open up this page to review concepts like media queries, media breakpoints and mobile first approach design."
        ]
      },
      "quiz-responsive-web-design": {
        "title": "響應式 Web 設計測驗",
        "intro": [
          "Test what you've learned about making your webpages responsive with this quiz."
        ]
      }
    }
  },
  "css-variables": {
    "title": "Learn CSS Variables",
    "summary": ["Use CSS variables to build reusable, theme-friendly styles."],
    "intro": ["Create maintainable styles using CSS custom properties."],
    "blocks": {
      "lecture-working-with-css-variables": {
        "title": "Working with CSS Variables",
        "intro": [
          "In these lessons, you will learn how to define and use custom properties (also known as CSS variables). You will also learn about the <code>@property</code> rule and how it works."
        ]
      },
      "workshop-city-skyline": {
        "title": "Build a City Skyline",
        "intro": [
          "CSS variables help you organize your styles and reuse them.",
          "In this workshop, you'll build a city skyline. You'll practice how to configure CSS variables so you can reuse them whenever you want."
        ]
      },
      "lab-availability-table": {
        "title": "Build an Availability Table",
        "intro": [
          "For this lab, you'll create an availability table that shows the availability of people for a meeting.",
          "You'll practice using CSS variables to store and reuse colors, fonts, and other styles."
        ]
      },
      "review-css-variables": {
        "title": "CSS Variables Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS variables, you should review what you've learned.",
          "Open up this page to review how to work with CSS custom properties (CSS variables) and the <code>@property</code> rule."
        ]
      },
      "quiz-css-variables": {
        "title": "CSS Variables Quiz",
        "intro": ["Test your knowledge of CSS variables with this quiz."]
      }
    }
  },
  "css-grid": {
    "title": "Learn CSS Grid",
    "summary": ["Design complex layouts using the CSS Grid system."],
    "intro": ["Build multi-dimensional layouts with CSS Grid."],
    "blocks": {
      "lecture-working-with-css-grid": {
        "title": "Working with CSS Grid",
        "intro": [
          "In these lessons, you will learn about CSS grid, its several properties and how to use them, and how CSS grid differs from flexbox."
        ]
      },
      "workshop-magazine": {
        "title": "Build a Magazine",
        "intro": [
          "CSS Grid gives you control over the rows and columns of your webpage design.",
          "In this workshop, you'll build a magazine article. You'll practice how to use CSS Grid, including concepts like grid rows and grid columns."
        ]
      },
      "lab-newspaper-layout": {
        "title": "Design a Newspaper Layout",
        "intro": [
          "In this lab, you will design a newspaper layout using CSS Grid, including concepts like grid rows and grid columns."
        ]
      },
      "lecture-debugging-css": {
        "title": "Debugging CSS",
        "intro": [
          "In this lesson, you'll learn how to debug CSS using your browser's developer tools and CSS validators."
        ]
      },
      "lab-product-landing-page": {
        "title": "Build a Product Landing Page",
        "intro": [
          "In this project, you'll build a product landing page to market a product of your choice."
        ]
      },
      "review-css-grid": {
        "title": "CSS Grid Review",
        "intro": [
          "Before you're quizzed on the fundamentals of CSS Grid, you should review what you've learned.",
          "Open up this page to review how to work with the different CSS Grid properties like <code>grid-template-columns</code>, <code>grid-gap</code> and more."
        ]
      },
      "quiz-css-grid": {
        "title": "CSS Grid Quiz",
        "intro": ["Test your knowledge of CSS Grid with this quiz."]
      }
    }
  },
  "css-animations": {
    "title": "Learn CSS Animations",
    "summary": ["Create engaging UI motion with accessible CSS animations."],
    "intro": [
      "Add motion with CSS animations while keeping usability in mind."
    ],
    "blocks": {
      "lecture-animations-and-accessibility": {
        "title": "Animations and Accessibility",
        "intro": [
          "In these lessons, you will learn about CSS animations and their accessibility concerns. You will also learn how <code>prefers-reduced-motion</code> can help address those accessibility concerns."
        ]
      },
      "workshop-ferris-wheel": {
        "title": "Build an Animated Ferris Wheel",
        "intro": [
          "You can use CSS animation to draw attention to specific sections of your webpage and make it more engaging.",
          "In this workshop, you'll build a Ferris wheel. You'll practice how to use CSS to animate elements, transform them, and adjust their speed."
        ]
      },
      "lab-moon-orbit": {
        "title": "Build a Moon Orbit",
        "intro": [
          "In this lab, you'll create an animation of the moon orbiting the earth.",
          "You'll practice animation properties like <code>animation-name</code>, <code>animation-duration</code>, <code>animation-timing-function</code>, and more."
        ]
      },
      "workshop-flappy-penguin": {
        "title": "Build a Flappy Penguin",
        "intro": [
          "You can transform HTML elements to create appealing designs that draw your reader's eye. You can use transforms to rotate elements, scale them, and more.",
          "In this workshop, you'll build a penguin. You'll use CSS transforms to position and resize the parts of your penguin, create a background, and animate your work."
        ]
      },
      "lab-personal-portfolio": {
        "title": "Build a Personal Portfolio",
        "intro": [
          "In this project, you'll build your own personal portfolio page."
        ]
      },
      "review-css-animations": {
        "title": "CSS Animations Review",
        "intro": [
          "Before you're quizzed on working with CSS animations, you should review what you've learned about them.",
          "Open up this page to review concepts including <code>prefers-reduced-motion</code>, the <code>@keyframes</code> rule and more."
        ]
      },
      "quiz-css-animations": {
        "title": "CSS Animations Quiz",
        "intro": ["Test your knowledge of CSS animations with this quiz."]
      }
    }
  },
  "dev-playground": {
    "title": "Dev Playground",
    "intro": ["Playground for creating and testing challenges"],
    "blocks": {
      "daily-coding-challenges-javascript": {
        "title": "Daily Coding Challenges JavaScript",
        "intro": ["Place to create JavaScript daily coding challenges."]
      },
      "daily-coding-challenges-python": {
        "title": "Daily Coding Challenges Python",
        "intro": ["Place to create Python daily coding challenges."]
      }
    }
  },
  "full-stack-open": {
    "title": "Full-Stack Open",
    "intro": ["A good intro is to be added here."],
    "blocks": {
      "workshop-blog-page": {
        "title": "Build a Cat Blog Page",
        "intro": [
          "In this workshop, you will build an HTML only blog page using semantic elements including the <code>main</code>, <code>nav</code>, <code>article</code> and <code>footer</code> elements."
        ]
      }
    },
    "chapters": {
      "part-0": "Fundamentals of Web Apps",
      "part-1": "Introduction to React",
      "part-2": "Communicating with Servers",
      "part-3": "Programming a Server with NodeJS and Express",
      "part-4": "Testing Express Servers, User Administration",
      "part-5": "Testing React Apps",
      "part-6": "Advanced State Management",
      "part-7": "React router, custom hooks, styling app with CSS and webpack",
      "part-8": "GraphQL",
      "part-9": "TypeScript",
      "part-10": "React Native",
      "part-11": "CI/CD",
      "part-12": "Containers",
      "part-13": "Using Relational Databases"
    },
    "modules": {
      "basic-html": "Basic HTML"
    },
    "module-intros": {
      "basic-html": {
        "title": "Basic HTML",
        "intro": [
          "Learn how to build simple webpages using HTML tags to add text, images, and links."
        ]
      }
    }
  },
  "daily-coding-challenge": {
    "title": "Daily Coding Challenge",
    "blocks": {
      "daily-coding-challenge": {
        "title": "Daily Coding Challenge"
      }
    }
  },
  "misc-text": {
    "browse-other": "Browse our other free certifications",
    "courses": "課程",
    "requirements": "Requirements",
    "steps": "步驟",
    "expand": "展開課程",
    "collapse": "收起課程",
    "legacy-header": "舊版課程",
    "legacy-desc": "這些課程不再是認證路徑的一部分，但仍可供你進一步學習。",
    "legacy-go-back": "進入當前版本的課程。",
    "course-maintenance": "這些課程正在維護中。如果它們不可用，你可以學習如何在本地運行這些課程 <0>https://www.freecodecamp.org/chinese/news/how-to-run-freecodecamps-relational-databases-curriculum-using-docker-vscode-and-coderoad</0>。",
    "course-disabling-soon": "這些課程的瀏覽器版本即將被暫時停用，你的虛擬機也將被刪除。虛擬機中的任何進度都將丟失。如果你有任何想要的文件，請將它們保存到你的計算機中。對於給你帶來的不便，我們深表歉意。我們希望在未來幾周內能再次提供這些課程的改進的瀏覽器版本。",
    "course-disabled": "這些課程暫時無法在瀏覽器中運行。不便之處，敬請原諒。你可以通過 <0>https://www.freecodecamp.org/chinese/news/how-to-run-freecodecamps-relational-databases-curriculum-using-docker-vscode-and-coderoad</0> 瞭解如何在本地運行這些課程。我們希望能儘快推出改進後的瀏覽器版本。",
    "run-locally": "目前，我們建議你在本地計算機上運行課程。你可以通過 <0>https://www.freecodecamp.org/chinese/news/how-to-run-freecodecamps-relational-databases-curriculum-using-docker-vscode-and-coderoad</0> 瞭解如何操作。",
    "progress-wont-save": "當你在本地運行它們時，你的進度不會被保存到你的 freeCodeCamp 賬戶。",
    "go-back-to-learn": "回到正式版課程",
    "read-database-cert-article": "請在繼續之前閱讀這個論壇帖子。",
    "enable-cookies": "你必須在開始之前啓用第三方 cookies。",
    "english-only": "本部分的課程只提供英文。我們目前只能翻譯標題和介紹，而不能翻譯課程本身。",
    "exam-english-only": "請注意，認證考試目前只有英語版本。課程的其餘部分有其他語言版本。"
  }
}
