# 设计课程

在设计课程的过程中，通常需要结合课程任务难易程度、完成课程时长、覆盖知识点等方面综合考虑，给学员营造易于上手、有趣的课程学习体验。

## 课程构思

Learning Lab 旨在帮助学员快速的掌握相关知识点的入门知识。因此，设计课程的第一步需要我们先构思好我们的课程。为了便于完成你的课程构思，我们建议你参考以下问题清单来进行：

- 我的课程对学员实用吗？
    1. 学员在课程结束后可以炫耀什么？可以是一个游戏、作品集、一个可用于未来项目的模板、一份简历甚至是一个 Pages 站点；
    2. 该课程项目现实吗？
    3. 学员会以炫耀自己的作品而感到自豪吗？
- 学习某个特定技能
    1. 在课程结束时，学员可以继续朝哪个方向努力？
- 设计现实的互动
    1. 您是否通过 CODE CHINA 提供的仓库功能在教学员？或者说静态媒体（例如指南或教程）的形式是否更适合课程内容？
    2. 互动感觉自然吗？如果你在教朋友，你将如何在仓库中与他们互动？
    3. 避免使用一般性的回答，例如关闭每个步骤的问题来让学员表明已阅读完毕？
    4. 每次互动都会让学员更熟悉课程所期望的技能吗？
- 保持课程任务的简单
    1. 可以通过8-15个任务来教授技能吗？如果没有，请考虑将其分解为多个课程。
    2. 学员可以一次学完吗？
    3. 一段时间后，学员可以轻松地再次进入课程学习吗？

## 创建课程目标

花几分钟时间为你的课程创建一些目标。课程目标最好能够包含以下内容：

- 完成课程后，学员将能收获什么？
- 学员在开始之前应该有什么经验？
- 完成课程后，他们可以做些什么来继续发展项目？

## 创建课程大纲

结合课程目标，创建学习者将要完成的任务列表。比如类似下面这样的：

1. 创建index.html文件
2. 添加基本标签`<html>，<head>，<body>`
3. 添加“ Hello world”文本
4. 部署到 Pages

## 将任务与CODE CHINA 事件相关联

Learning Lab 会侦听学习仓库上发生的事件，并响应这些事件。将每个任务与你希望在 CODE CHINA 上看到的事件以及事件中要查找的数据相关联：

| 任务 | CODE CHINA 事件|
|:--:|:--|
|创建index.html文件|创建文件将创建一个 push 事件|
|添加基本标签`<html>，<head>，<body>`|这将创建一个 push 事件|
|添加“ Hello world”文本|另一个 push 事件|
|部署到 Pages| 这将创建一个page_build事件|

## 将事件与Learning Lab的动作联系起来

Learning Lab 使用动作来响应学员生成的事件。它有助于在计划过程中开始考虑这些操作。以上面的例子为例：

- 第一步我们将要求用户创建 index.html 文件并推送到仓库
- 我们将使用 getTree 来查看提交
- 然后，gate 操作来查看该提交是否包含名为 index.html 的文件
- 如果是这样，我们可以使用响应来进行下一步的评论
- 如果不是，则可以使用“响应”来提供有关如何创建或重命名文件的说明

## 创建课程流程

现在你已经有了一个课程任务大纲了，最后，我们需要完善整个课程学习的学习体验了，包括：

**课程开始之前**：在学员注册学习之后开始学习之前，应该在课程库中做什么？应该启用什么设置？欢迎应该怎么说？学员需要做的第一件事是什么？

**学习步骤**：这是主要的课程内容。一旦学员进入课程，Learning Lab 将等待学员的特定操作。我们在之前的步骤中定义了此步骤，因此步骤1将在从学员的学习仓库中收到事件后开始，并在结束时发布步骤2的说明。

**最后一步**：当学习者到达课程的最后一步时，Learning Lab 应在最后一次评论时给出“祝贺”等表示课程结束的消息和供学员进一步学习的建议。
