{
  "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": "请注意，认证考试目前只有英语版本。课程的其余部分有其他语言版本。"
  }
}
