Управление целями обучения

Пользователи могут устанавливать учебные цели для курсов и заданий в Google Classroom. Те же учебные цели также доступны в API Classroom. Вы можете устанавливать, получать и изменять наборы учебных стандартов для ресурсов Course , а также учебные цели для ресурсов CourseWork и Rubric . В этом руководстве описано, как получить доступ к учебным целям и наборам стандартов и изменить их с помощью API Classroom.

Как это работает

Источник данных

В Classroom учебные цели основаны на стабильных глобально уникальных идентификаторах (GUID), предоставляемых Satchel Rosetta Exchange (ранее CASE Network). Стандарты в Exchange организованы в виде деревьев узлов, где корнем является полный набор стандартов для конкретного предмета, а дочерние узлы описывают все более конкретные результаты обучения. Идентификатор любого узла со стандартным кодом или листового узла в сети может быть установлен в качестве учебной цели в CourseWork , а любой нелистовой узел может быть установлен в качестве набора стандартов обучения в Course .

  • Наборы учебных стандартов для ресурса Course представляют собой группу стандартов, которые отображаются в пользовательском интерфейсе Classroom, когда преподаватели отмечают учебные цели.
  • Учебные цели, указанные в CourseWork , CourseWorkMaterial или критериях Rubric отражают стандарты или навыки, связанные с данным заданием, вопросом, материалом или конкретным критерием оценки.

Google использует пять элементов информации из базы данных Satchel Rosetta Exchange:

  • Идентификатор документа : GUID корневого узла. Этот идентификатор соответствует контейнеру стандартов верхнего уровня и является общим для всех дочерних узлов.
  • Название документа : Удобочитаемое название всего стандартного документа.
  • Идентификатор элемента : GUID для отдельного стандарта (то есть, для узла, не являющегося корневым).
  • Название стандарта : Удобочитаемый описательный текст отдельного стандарта.
  • Стандартный код : удобочитаемое сокращение для конкретного стандарта.

Определите значения для стандартов и целей.

Чтобы понять, где найти эти значения, рассмотрим пример стандарта по математике из штата Нью-Йорк. Начните с корневого узла :

Отображение корневого узла при его выборе в Satchel Rosetta Exchange Рисунок 1 : Вид корневого узла при его выборе в Satchel Rosetta Exchange. Здесь отображаются заголовок документа и идентификатор документа, общие для всех узлов на этой странице.

Из изображения на рисунке 1 можно извлечь следующие значения:

  • Идентификатор документа: c649d172-d7cb-11e8-824f-0242ac160002
  • Название документа: New York State Next Generation Mathematics Learning Standards

Чтобы получить значения для отдельного стандарта, щелкните по стандарту и разверните его метаданные:

Отображение метаданных некорневого узла при его выборе в Satchel Rosetta Exchange Рисунок 2 : Отображение метаданных некорневого узла при его выборе в Satchel Rosetta Exchange. Здесь показаны идентификатор элемента, код стандарта и название стандарта. Эти значения относятся только к данному стандарту.

На рисунке 2 можно увидеть следующие значения:

  • Идентификатор товара: 70d64c79-d7cc-11e8-824f-0242ac160002
  • Стандартное название: Understand that the digits of a three-digit number represent amounts of hundreds, tens, and ones.
  • Стандартный код: NY-2.NBT.4

Обратите внимание, что идентификаторы документов и элементов также можно извлечь из URL-адреса Satchel Rosetta Exchange каждого узла. Эти URL-адреса имеют следующий формат: https://rosetta.commongoodlt.com/{document_id}/{item_id} .

Максимальное количество связанных элементов

  • Каждый Course может содержать до 5 наборов учебных стандартов.
  • Каждая CourseWork может содержать до 10 учебных целей.
  • Каждый Criterion рубрики может соответствовать одной учебной цели.

Управление наборами стандартов обучения по курсам

Изменить наборы стандартов обучения

Чтобы изменить наборы стандартов обучения Course , заполните поле Course.learningStandardSettings объектами standardSets . Каждый standardSet должен содержать объект caseGuid , который включает caseDocumentId и, при необходимости, caseItemId .

Вы можете добавлять наборы учебных стандартов, используя любой запрос на изменение Course , например, courses.create() или courses.patch() с маской обновления learningStandardSettings .

В следующем примере представлены два стандартных набора параметров для существующего курса.

Python

service = build("classroom", "v1", credentials=creds)
course = {
    "learning_standard_settings": {
        # Each Course can have up to 5 learning standard sets.
        "standard_sets": [
            # Construct a GUID for the NYS Next Gen Math Standards top-level node.
            # This is a top-level non-leaf node, so it only has a Document ID.
            {
                "case_guid": {
                    "case_document_id": "c649d172-d7cb-11e8-824f-0242ac160002"
                }
            },
            # Construct a GUID for the AAS ELA21.AAS.K Standard node.
            # This is a mid-level non-leaf node, so it has both Document and Item IDs.
            {
                "case_guid": {
                    "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
                    "case_item_id": "ada2cc30-7d6d-494e-8c6b-c998bae98f0b",
                }
            },
        ]
    }
}

course = (
    service.courses()
    .patch(
      id=course_id,
      updateMask="learningStandardSettings",
      body=course,
      # Specify the preview version while the feature is in Developer Preview.
      # Learning standards and goals are supported in V1_20260316_PREVIEW and
      # later.
      previewVersion="V1_20260316_PREVIEW")
    .execute()
)
print(f"Course updated: {course.get('name')}")

Получение наборов учебных стандартов

Чтобы просмотреть текущие наборы учебных стандартов для курса, проверьте поле Course.learningStandardSettings . Это поле содержит ряд объектов standardSets и может быть пустым, если для курса отсутствуют наборы учебных стандартов.

Обратите внимание, что каждый standardSet в ответе содержит описание стандарта и заголовок его корневого документа. Эти тексты также отображаются для преподавателей и студентов в пользовательском интерфейсе Classroom. Вы также получаете sourceDataAvailabilityStatus , который указывает, доступен ли стандарт в Satchel Rosetta Exchange.

{
  "id": "123456789",
  "name": "LSS test class",
  "learning_standard_settings": {
    "standard_sets": [{
      "case_guid": {
        "case_document_id": "c649d172-d7cb-11e8-824f-0242ac160002"
      },
      "document_title": "New York State Next Generation Mathematics Learning Standards",
      "source_data_availability_status": "LEARNING_STANDARD_AVAILABLE"
    },
    {
      "case_guid": {
        "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
        "case_item_id": "d52217c0-1c5b-4d92-9664-d0792944f3fe"
      },
      "document_title": "AAS English Language Arts (2021)",
      "standard_title": "With prompting and support, actively listen and speak.",
      "source_data_availability_status": "LEARNING_STANDARD_AVAILABLE"
    }]
  }
}

Управление учебными целями, включая выполнение заданий и оценочные критерии.

Изменить цели обучения

Учебные цели можно прикрепить к ресурсам CourseWork , CourseWorkMaterial и Rubric Criterion в любом запросе на изменение. Задайте идентификаторы документа и элемента в полях CourseWork.learningGoals или Rubric.Criterion.learningGoal . Это те же идентификаторы, что описаны ранее .

Обратите внимание, что учебные цели, указанные в критериях Rubric должны быть уже прикреплены к заданию, к которому привязана эта Rubric .

В приведенном ниже примере создается задание CourseWork с двумя прикрепленными учебными целями.

Python

# Create a CourseWork assignment with two attached learning goals.
service = build("classroom", "v1", credentials=creds)
coursework = {
    "title": "Ant colonies",
    "description": "Read the article about ant colonies and complete the quiz.",
    "materials": [
        {"link": {"url": "http://example.com/ant-colonies"}},
        {"link": {"url": "http://example.com/ant-quiz"}},
    ],
    "workType": "ASSIGNMENT",
    "state": "PUBLISHED",
    # Each CourseWork can have up to 10 learning goals.
    "learning_goals": [
        {
            "learning_standard_info": {
                # Construct a GUID for the ELA21.AAS.11.11c Standard node.
                # This is a non-root node, so it has both Document and Item IDs.
                "case_guid": {
                    "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
                    "case_item_id": "6d922f1f-b580-42a1-b6d2-5ee5b39c561d",
                }
            }
        },
        {
            "learning_standard_info": {
                # Construct a GUID for the ELA21.AAS.11.22a Standard node.
                # This is a non-root node, so it has both Document and Item IDs.
                "case_guid": {
                    "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
                    "case_item_id": "a684609a-c3ec-42da-8b7f-7a325b31ea4a",
                }
            }
        },
    ],
}

coursework = (
    service.courses()
    .courseWork()
    .create(
      courseId=course_id,
      body=coursework,
      # Specify the preview version while the feature is in Developer Preview.
      # Learning standards and goals are supported in V1_20260316_PREVIEW and
      # later.
      previewVersion="V1_20260316_PREVIEW")
    .execute()
)
print(f"Assignment created with ID {coursework.get('id')}")

В приведенном ниже примере создается Rubric , к каждому критерию которой прикреплена учебная цель.

Python

# Create a new Rubric with a learning goal attached to each criterion.
service = build("classroom", "v1", credentials=creds)
body = {
    "criteria": [
        {
            "title": "Argument",
            "description": "How well structured your argument is.",
            "levels": [
                {
                    "title": "Convincing",
                    "description": "A compelling case is made.",
                    "points": 30,
                },
                {
                    "title": "Passable",
                    "description": "Missing some evidence.",
                    "points": 20,
                },
                {
                    "title": "Needs Work",
                    "description": "Not enough strong evidence.",
                    "points": 0,
                },
            ],
            # Each Criterion can have one learning goal.
            "learning_goal": {
                "learning_standard_info": {
                    # Construct a GUID for the ELA21.AAS.11.11c Standard node.
                    # This is a non-root node, so it has both Document and Item IDs.
                    "case_guid": {
                        "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
                        "case_item_id": "6d922f1f-b580-42a1-b6d2-5ee5b39c561d",
                    }
                }
            },
        },
        {
            "title": "Spelling",
            "description": "How well you spelled all the words.",
            "levels": [
                {"title": "Perfect", "description": "No mistakes.", "points": 20},
                {"title": "Great", "description": "A mistake or two.", "points": 15},
                {"title": "Needs Work", "description": "Many mistakes.", "points": 5},
            ],
            # Each Criterion can have one learning goal.
            "learning_goal": {
                "learning_standard_info": {
                    # Construct a GUID for the ELA21.AAS.11.22a Standard node.
                    # This is a non-root node, so it has both Document and Item IDs.
                    "case_guid": {
                        "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
                        "case_item_id": "a684609a-c3ec-42da-8b7f-7a325b31ea4a",
                    }
                }
            },
        },
    ]
}

rubric = (
    service.courses()
    .courseWork()
    .rubrics()
    .create(
      courseId=course_id,
      courseWorkId=coursework_id,
      body=body,
      # Specify the preview version while the feature is in Developer Preview.
      # Learning standards and goals are supported in V1_20260316_PREVIEW and
      # later.
      previewVersion="V1_20260316_PREVIEW")
    .execute()
)
print(f"Rubric created with ID {rubric.get('id')}")

Извлечь цели обучения

Чтобы просмотреть текущие учебные цели для задания, вопроса или материала, проверьте поле CourseWork.learningGoals . Каждый объект учебной цели содержит заголовок документа корневого уровня и код учебного стандарта.

Обратите внимание, что преподаватели также могут добавлять теги навыков к учебным заданиям и материалам в пользовательском интерфейсе Classroom. Теги навыков недоступны в API.

{
  "course_id": "123456789",
  "id": "987654321",
  "title": "Test ELA Assignment",
  "state": "PUBLISHED",
  "learning_goals": [
    {
      "learning_standard_info": {
        "standard_code": "ELA21.AAS.11.11c",
        "document_title": "AAS English Language Arts (2021)",
        "case_guid": {
          "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
          "case_item_id": "6d922f1f-b580-42a1-b6d2-5ee5b39c561d",
        },
        "source_data_availability_status": "LEARNING_STANDARD_AVAILABLE"
      },
      "title": "Compose argumentative texts by stating a topic, providing reasons that support the argument, and providing an appropriate conclusion related to the topic."
    },
    {
      "learning_standard_info": {
        "standard_code": "ELA21.AAS.11.22a",
        "document_title": "AAS English Language Arts (2021)",
        "case_guid": {
          "case_document_id": "bfc264b3-b4d1-4780-84ff-26b12e6945a6",
          "case_item_id": "a684609a-c3ec-42da-8b7f-7a325b31ea4a",
        },
        "source_data_availability_status": "LEARNING_STANDARD_AVAILABLE"
      },
      "title": "Identify a sentence that uses correct capitalization (i.e., beginning of sentence, names, cities, states, countries, towns, titles, days, months)."
    }]
}

Аналогичные данные возвращаются с ответами Rubric , содержащей одну learningGoal для каждого критерия.