Building and Running an Open edX Course

Read Me

The edX Building and Running an edX Course guide is created using RST files and Sphinx. You, the user community, can help update and revise this documentation project on GitHub:

https://github.com/edx/edx-documentation/tree/master/en_us/open_edx_course_authors/source

To suggest a revision, fork the project, make changes in your fork, and submit a pull request back to the original project: this is known as the GitHub Flow.

All pull requests need approval from edX. For more information, contact edX at docs@edx.org.

Preface

Course teams, researchers, developers, students: the edX community includes groups with a range of reasons for using the platform and objectives to accomplish. To help members of each group learn about what edX offers, reach goals, and solve problems, edX provides a variety of information resources.

To help you find what you need, browse the edX offerings in these categories:

All members of the edX community are encouraged to make use of any of the resources described in this preface.

System Status

For system-related notifications from the edX operations team, including outages and the status of error reports. On Twitter, you can follow @edxstatus.

Current system status and the uptime percentages for edX servers, along with the Twitter feed, are published on the edX Status web page.

Resources for Course Teams

Course teams include faculty, instructional designers, course staff, discussion moderators, and others who contribute to the creation and delivery of courses on edx.org or edX Edge.

edX101: Overview of Creating a Course

The edX101 course was built in Studio and is available for enrollment on edx.org. This course takes one to two hours to complete, and is designed to provide a high-level overview of the course creation and delivery process. It also highlights the extensive capabilities of the edX platform.

Documentation

Documentation for course teams is available on the docs.edx.org web page.

  • Building and Running an edX Course is a comprehensive guide with concepts and procedures to help you build a course in edX Studio, and then use the Learning Management System (LMS) to run a course.

    When you are working in edX Studio, you can access relevant sections of this guide by clicking Help on any page.

  • Using edX Insights describes the metrics, visualizations, and downloadable .csv files that course teams can use to gain information about student background and activity.

  • edX Course Staff Release Notes summarize the changes in each new version of the edX Studio and LMS software.

  • Creating a Peer Assessment describes features for students to provide peer- and self- evaluations of responses to a question. Note that this new feature is in limited release.

  • edX Open Learning XML Guide provides guidelines for building edX courses with Open Learning XML (OLX). Note that this guide is currently an alpha version.

These guides open in your web browser. The left side of each page includes a Search docs field and links to that guide’s contents. To open or save a PDF version, click v: latest at the lower left of the page, then click PDF.

Email

To receive and share information by email, course team members can:

  • Sign up to receive monthly newsletters.
  • Sign up to receive release notes for every release.
  • Join the openedx-studio Google group to ask questions and participate in discussions with peers at other edX partner organizations and edX staffers.

Wikis and Web Sites

The edX product team maintains the Open edX Product wiki, which includes the Open edX Public Product Roadmap.

The edX Author Support site hosts discussions that are monitored by edX staffers.

Resources for Researchers

Data for the courses on edx.org and edX Edge is available to the “data czars” at our partner institutions, and then used by database experts, statisticians, educational investigators, and others for educational research.

Documentation

The edX Research Guide is available on the docs.edx.org web page.

This guide opens in your web browser, with a Search docs field and links to that guide’s contents on the left side of each page. To open or save a PDF version, click v: latest at the lower left of the page, and then click PDF.

Email

To receive and share information by email, researchers can join the openedx-analytics Google group to ask questions and participate in discussions with peers at other edX partner organizations and edX staffers.

Wiki

The edX Analytics team maintains the Open edX Analytics wiki, which includes links to periodic release notes, the Open edX Public Product Roadmap, and other resources for researchers.

Resources for Developers

Software engineers, system administrators, and translators work on extending and localizing the code for the edX platform.

Documentation

Documentation for developers is available on the docs.edx.org web page.

  • The edX Platform Developer’s Guide collects information directly from edX platform python docstrings. The topics in this guide include guidelines for contributing to Open edX, options for extending the Open edX platform, using the edX public sandboxes, instrumenting analytics, and testing.
  • Installing, Configuring, and Running the edX Platform provides procedures for getting an edX developer stack (Devstack) and production stack (Fullstack) operational.
  • XBlock: Open edX courseware components provides preliminary documentation on the XBlock component architecture for building courses.
  • edX Open Learning XML Guide provides guidelines for building edX courses with Open Learning XML (OLX). Note that this guide is currently an alpha version.
  • edX Data Analytics API provides tools for building applications to view and analyze student activity in your course.
  • edX Enrollment API provides tools for building applications to view user and course enrollment information, and to enroll users in courses.
  • edX Platform API provides tools for building applications to view course information and videos.

GitHub

These are the main edX repositories on GitHub.

Additional repositories are used for other projects. Our contributor agreement, contributor guidelines and coding conventions, and other resources are available in these repositories.

Email and IRC

To receive and share information by email, developers can join these Google groups to ask questions and participate in discussions with peers and edX staffers.

  • For conversations about the code in Open edX, join edx-code.
  • For conversations about running Open edX, join openedx-ops.
  • For conversations about globalization and translation, join openedx-translation.

Additional Google groups are occasionally formed for individual projects.

Note

Please do not report security issues in public. If you have a concern, please email security@edx.org.

EdX engineers often monitor the Freenode #edx-code IRC channel.

Wikis and Web Sites

The code.edx.org web site is an entry point for new contributors.

The edX Engineering team maintains the Open Source Home wiki, which provides insights into the plans, projects, and questions that the edX Open Source team is working on with the community.

The pull request dashboard is a visualization of the count and age of the pull requests (PRs) assigned to teams at edX. Click the bars in this chart to get more information about the PRs.

Resources for Students

Documentation

The edX Guide for Students is available on the docs.edx.org web page. Because students are not currently guided to this resource through the courseware, we encourage course staff to provide links to students as needed in course updates or discussions.

In a Course

All edX courses have a discussion forum where you can ask questions and interact with other students and with the course team: click Discussion. Many courses also offer a wiki for additional resources and materials: click Wiki.

Other resources might also be available, such as a course-specific Facebook page or Twitter feed, or opportunities for Google Hangouts. Be sure to check the Course Info page for your course as well as the Discussion and Wiki pages.

From time to time, the course team might send email messages to all students. While you can opt out of these messages, doing so means that you can miss important or time-sensitive information. To change your preferences for course email, click edX or edX edge at the top of any page. On your dashboard of current courses, locate the course and then click Email Settings.

From edX

To help you get started with the edX learning experience, edX offers a course (of course!). You can find the edX Demo course on the edX web site. EdX also maintains a list of frequently asked questions and answers.

If you still have questions or suggestions, you can get help from the edX support team: click Contact at the bottom of any edX web page or send an email message to info@edx.org.

For opportunities to meet others who are interested in edX courses, check the edX Global Community meetup group.

Change Log

February 2015

Date Change
24 Feb 2015 Initial release of document for the Open edX Birch release.

Getting Started

edX Browser Support

The edX Platform runs on the following browsers:

The edX Platform is routinely tested and verified on the current and previous version of each of these browsers. We generally encourage the use of and fully support only the latest version.

This information is updated as new major operating system and browser versions are released. All point releases are supported unless noted; occasional exceptions are based on specific bug fixes or feature updates.

edX Learning Management System

The following table shows operating system and browser support for the edX Learning Management System, which students and course staff use to interact with course content.

  Chrome Safari Firefox IE 9 IE 10
Windows 8 Yes N/A Yes Yes Yes
Mac OSX Mavericks or Yosemite Yes Yes Yes N/A N/A

edX Studio

The following table shows operating system and browser support for edX Studio, which staff use to build a course.

  Chrome Safari Firefox IE 9 IE 10
Windows 8 Yes N/A Yes Provisional Provisional
Mac OSX Mavericks or Yosemite Yes Yes Yes N/A N/A

edX Insights

The following table shows operating system and browser support for edX Insights, which staff use to review and download data about their courses and students.

  Chrome Safari Firefox IE 9 IE 10
Windows 8 Yes N/A Yes Provisional Provisional
Mac OSX Mavericks or Yosemite Yes Yes Yes N/A N/A

Getting Started with Studio

Overview

This chapter describes the tools you use to build an edX course, and how to create your first course:

What is Studio?

Studio is the edX tool you use to build your courses.

You use Studio to create course content, problems, videos, and other resources for students.

With Studio, you can also manage your schedule and course team, set grading policies, publish your course, and more.

You use Studio directly through your browser. You do not need any additional software.

Create Your First Course

When you receive notice that you can create courses, log in to Studio.

You see the following page, which is your My Courses dashboard:

Image of the Studio home page where you create your first course
  1. Click Create Your First Course.
  2. Enter course information as needed and click Create.
Image of the Create New Course page

Note

Enter new course information carefully. This information becomes part of the URL for your course. Because this information becomes part of your course URL, the total number of characters in the following three fields must be 65 or fewer.

  • For Course Name, enter the title of your course. For example, the name may be “Sets, Maps and Symmetry Groups”. Use title capitalization for the course title.
  • For Organization, enter the name of your institution. Do not include whitespace or special characters.
  • For Course Number, enter both a subject abbreviation and a number. For example, for public health course number 207, enter PH207. For math course 101x, enter Math101x. Do not include whitespace or special characters in the course number.
  1. Click Save.

Your new course opens to the Course Outline page. Because you haven’t created any content yet, this page is empty.

In your browser’s address bar, notice that the URL of your course includes the course organization, number, and course run.

The rest of this documentation describes how you now build and run your course.

Guidelines for Creating Accessible Content

EdX strives to create an innovative, online-learning platform that promotes accessibility for everyone, including learners with disabilities. We intend for these guidelines to help the course teams understand the importance of considering accessibility when designing courses and provide guidance so that they can serve the widest possible audience. Accessibility in online instruction refers to the degree to which information and activities are available to all students equally, regardless of physical or other disabilities.

Our guidance is based on international standards and principles for web accessibility (W3C WCAG 2.0) and universal design (usable by all, to the greatest extent possible, without the need for adaptation or specialized design). Instructors who build courses based on these principles promote the opportunity to create an inclusive experience that considers the diverse set of learning styles and needs of all learners—including learners with disabilities, learners who speak English as a second language, learners with technical issues such as low bandwidth internet or no access to audio, and learners with age-related capability issues. For purposes of these guidelines, we have assumed that end users will be equipped with the appropriate adaptive technology and compatible software.

Occasionally, unanticipated accessibility barriers will arise. To supplement the accessibility you can achieve within the edX platform, we recommend that you engage the resources available at your institution to support learners with disabilities. Most institutions offer disability support services and information technology resources that provide accessibility advice and support. These professionals are trained in making disability accommodation decisions and can advise you on what accommodations may be appropriate in light of the goals of the course and the inherent instructional methodologies employed.

As technology and accessibility improvements are constantly emerging, we plan to update these guidelines periodically.

See the following sections for more information:

Supporting Learners with Diverse Needs

Almost one-fifth of the world’s population has some kind of disability. Online courses can reduce many barriers to education for these learners by providing access to courses from any location, at any time, and through the use of assistive technologies.

EdX is dedicated to creating a platform that is not only itself accessible, but also enables course creators to create accessible content. If you encounter platform issues that you believe may affect your ability to provide accessible course content, please contact us at accessibility@edx.org. We also welcome your comments and questions.

In the following sections, we outline guidelines for creating and delivering course content that allows students to use built-in accessibility functionality (such as magnification and zoom features), assistive technologies, and alternative formats. These practices consider learners such as the following:

  • Blind learners who use a screen reader, which reads page text aloud, or a Braille display device, which renders page text in Braille.
  • Low-vision learners who use screen magnification software to enlarge text and other onscreen content.
  • Learners with vision impairments, such as difficulty seeing in low-light conditions, who modify their browser or operating system to change background colors and text settings to make text easier to read.
  • Learners with learning disabilities, such as dyslexia, who use text-to-speech technology that reads page content aloud.
  • Physically disabled learners who use switching devices, voice recognition software, or eye-gaze activated technology instead of a standard mouse or keyboard to control their computer.
  • Learners who modify their operating system settings to make the mouse or keyboard easier to use.
  • Learners with hearing impairments who cannot access audio content and need the equivalent information in an alternative format, such as captions or a transcript.

We highly recommend that you implement the best practices shared with you in this document and other widely available resources (some of which are referred to herein). As mentioned above, if you cannot easily address these barriers, we recommend that you consult with any disability-related resources at your institution (Disability Services, Assistive Technology, or Accessibility). While your ability to support students in the MOOC context may be different from supporting on-campus students, we encourage you to develop a plan to respond to students who inform you of accessibility barriers to learning. However, given the large numbers of learners enrolling in many of the courses, you will quickly see how important it is to address accessibility concerns when creating a course.

Accessibility Best Practices

Best Practices for Universal Design for Learning

Universal Design for Learning focuses on delivering courses in a format so that as many of your learners as possible can successfully interact with the learning resources and activities you provide them, without compromising on pedagogic rigor and quality.

The principles of Universal Design for Learning can be summarized as:

  1. Present information and content in different ways.
  2. Differentiate the ways that students can express what they know.
  3. Stimulate interest and motivation for learning.

Instructors can apply these principles in course design by:

  • Designing resources and activities that can be accessed by learners in different ways (for example, providing text that allows a student to enlarge it or change color, a diagram with an equivalent text description, or a video with audio and text captions).
  • Providing multiple ways for learners to engage with information and demonstrate their knowledge. This is particularly important when developing exercises and assessments.
  • Identifying activities that require specific sensory or physical capability, such as activities that require color identification, for which accommodating the specific accessibility needs of students will be difficult or impossible. In these cases, consider whether there is a pedagogical justification for these requirements. If there is a justification, consider communicating these requirements to prospective students in the course description and establish a plan for responding to students who encounter barriers that can be addressed without fundamental alteration. If there is no justification for the requirements, we recommend that you modify the learning activities to be more flexible and broadly accessible.

Resources

Best Practices for Readability

EdX courses have a global and diverse audience. Learners will be better positioned to access the concepts of your content if it is written in clear, straightforward language and the content is well structured. Use appropriate terminology to your subject area, but keep it as clear and unambiguous as possible to help learners who:

  • Are not native English speakers; or
  • Have a disability that affects reading, such as dyslexia or a visual impairment.

To produce content that is more readable by all students:

  • Make the names of elements such as course sections, subsections, units, components, and discussion topics descriptive and easy to skim by putting the important information first in the name. These names are used in navigation menus, page headings, and section headings and are signposts that help learners navigate your course and read course content. “Front-loading” menus and headings particularly helps screen reader users, who can more quickly assess the relevance of a link or heading.
  • When creating written learning resources, break text into sections by using HTML elements, such as headings, paragraphs, and lists. Long blocks of unbroken text are a barrier to most readers. Segmented content is more inviting and is easier to navigate and search. See Best Practices for HTML Markup for guidance on creating accessible HTML.
  • Avoid jargon. If unfamiliar words or phrases are relevant to the subject, explain them when they are first used, and include a glossary with your course materials. When using an abbreviation or acronym, write out the phrase the first time it appears: for example, “National Aeronautics and Space Administration (NASA).”
  • Use link text that clearly explains the link destination (for example, “Review the Course Syllabus”). Avoid using constructs like “You can review the Course Syllabus here.” For links that point to documents rather than web pages, include the document type in the link (e.g., “Course Syllabus (PDF)”).

Resources

Best Practices for Accessible PDFs

PDF is a common format for course materials, including textbooks supplied by publishers. However, converting materials to PDFs can create accessibility barriers, particularly for learners with visual impairments. To improve the accessibility of your PDFs, review the guidance below about preparing documents for conversion, using Adobe Acrobat Professional, and working with third-party suppliers.

Converting Microsoft Office documents to PDF

The teaching materials that you will convert to PDFs may use different formats—for example, your syllabus may be in Word, your presentation slides in PowerPoint, and your textbooks in publisher-supplied PDF. Use the tools available in the applicable software to create well-structured source documents. This early step helps minimize issues that may be difficult or impossible to address later in the conversion process.

Preparing Word documents

  • Keep formatting simple. Use headings, paragraphs, lists, images, and captions, and tables for tabular data. Don’t add unnecessary indents, rules, columns, blank lines, and typographic variation. The simpler the formatting, the easier it will be to make an accessible PDF document.
  • Use styles for formatting your text, such as Normal, Heading 1, and Heading 2, rather than manually formatting text using bold and indents. Add alternative text to images (see Best Practices for Describing Images) using Word’s picture formatting options.

Preparing PowerPoint documents

  • To help make your content accessible and comprehensible to learners who use screen reading software, start in Outline view and include all of your content as text. Add design elements and images after completing the outline, and use PowerPoint’s picture formatting options to include detailed descriptions of images that convey information. Avoid adding animations or transitions, as they will not be saved with the PDF format.
  • Use the Home > Drawing > Arrange > Selection Pane option to view the reading order of objects on each slide. If the reading order is not logical, reorder the objects.
  • Use the Home > Slides > Reset option to give each slide a unique and informative title. The title can be hidden if preferred.
  • Identify column headers for any data table using PowerPoint’s table formatting options (Tables > Table Options > Header Row), and ensure that each header contains informative text describing the data in that column.

Preparing Excel spreadsheets

  • Use a unique and informative title for each worksheet tab.
  • Include text alternatives for images (see Best Practices for Describing Images) using Excel’s picture formatting options.
  • Identify column headers using Excel’s table formatting options (Table > Table Options > Header Row), and include in each header cell informative text describing the data in that column.
  • Do not use blank cells for formatting.
  • Use descriptive link text rather than URLs in data cells.

Converting Word, PowerPoint, and Excel documents to PDF

To generate PDFs from Microsoft Office documents, use the Save as PDF option. Make sure the Document Structure Tags for Accessibility option is selected (consult your software documentation for more details). Note that PDFs generated from Windows versions of Office will be more accessible than those generated from Mac OS.

Working with third-party supplied PDFs

When you control the creation of a PDF, you have greater control over the document’s accessibility. If you use PDFs provided by third parties, including textbooks supplied by publishers, the document’s accessibility may be unknown.

Asking the right questions about accessible PDFs

Where possible, ask the supplier of the PDF if the PDF is accessible. If it isn’t, ask whether the supplier can provide an accessible version. Questions to ask include:

  • Can screen readers read the document text?
  • Do images in the document include text descriptions?
  • Are all tables, charts, and math provided in an accessible format?
  • Does all media include text equivalents?
  • Does the document have navigational aids, such as a table of contents, index, headings, and bookmarks?
Updating PDFs for accessibility

You may need to update your existing teaching materials in PDF format to improve accessibility. This might include PDFs that were:

  • Created by scanning a hard-copy document;
  • Generated from a document that was not created with accessibility in mind; or
  • Generated by a process that does not preserve source accessibility information.

In such cases, you need special software, such as Adobe Acrobat Professional, to enhance the accessibility of the PDF. PDFs that are created from scanned documents require a preliminary Optical Character Recognition (OCR) step to generate a text version of the document. The procedure checks documents for accessibility barriers, adds properties and tags for document structure, sets the document’s language, and adds alternative text for images.

Resources

Best Practices for Custom Content Types

Using different content types can significantly add to the learning experience. We discuss below how to design several custom content types to be accessible to students with disabilities.

Information graphics (charts, diagrams, illustrations)

Although images can be helpful for communicating concepts and information, they present challenges for people with visual impairments. For example, a chart that requires color perception or a diagram with tiny labels and annotations will likely be difficult to comprehend for learners with color blindness or low vision. All images present a barrier to learners who are blind.

The following are best practices for making information graphics accessible to visually impaired students:

  • Avoid using only color to distinguish important features of the image. For example, on a line graph, use a different symbol as well as color to distinguish the data elements.
  • Whenever possible, use an image format, such as SVG, that supports scaling. Consider providing a high-resolution version of complex graphics that have small but essential details.
  • Provide a text alternative that describes the information in the graphic. For charts and graphs, a text alternative could be a table displaying the same data. See Best Practices for Describing Images for details about providing text alternatives for images.
Math content

Math in online courses has been challenging to deliver in a way that is accessible to people with vision impairments. Instructors frequently create images of equations rather than including text equations. Math images cannot be modified by people who need a high-contrast display and cannot be read by screen reader software. EdX uses MathJax to render math content in a format that is clear, readable, and accessible to people who use screen readers. MathJax works together with math notation, like LaTeX and MathML, to render mathematical equations as text instead of images. We recommend that you use MathJax to display your math content. You can learn more about using MathJax in the MathJax documentation on accessibility (see the link in “Resources” below). We will update these guidelines as improvements to MathJax are developed.

Simulations and interactive modules

Simulations, including animated or gamified content, can enhance the learning experience. In particular, they benefit learners who may have difficulty acquiring knowledge from reading and processing textual content alone. However, simulations can also present some groups of learners with difficulties. To minimize barriers, consider the intended learning outcome of the simulation. Is it to reinforce understanding that can also come from textual content or a video lecture, or is it to convey new knowledge that other course resources can’t cover? Providing alternative resources will help mitigate the impact of any barriers.

Although you can design simulations to avoid many accessibility barriers, some barriers, particularly in simulations supplied by third parties, may be difficult or impossible to address for technical or pedagogic reasons. Understanding the nature of these barriers can help you provide workarounds for learners who are affected. Keep in mind that attempted workarounds for simulations supplied by third parties may require the supplier’s consent if copyrighted material is involved.

Consider the following questions when creating simulations, keeping in mind that as the course instructor, you enjoy considerable freedom in selecting course objectives and outcomes. Additionally, if the visual components of a simulation are so central to your course design, providing alternate text description and other accommodations may not be practical or feasible:

  • Does the simulation require vision to understand? If so, provide text describing the concepts that the simulation conveys.
  • Is the mouse necessary to operate the simulation? If so, provide text describing the concepts that the simulation conveys.
  • Does the simulation include flashing or flickering content that could trigger seizures? If so and this content is critical to the nature of the simulation:
    • do not require learners to use the simulation for a required assessment activity; and
    • provide a warning that the simulation contains flickering or flashing content.

As best practices continue to emerge in this area, we will update these guidelines.

Online exercises and assessments

For activities and assessments, consider difficulties students may have in completing an activity and consider using multiple assessment options, keeping in mind that some of the end users have disabilities. Focus on activities that allow students to complete the activity and submit their work without difficulties.

Some students take longer to read information and input responses, such as students with visual or mobility impairments and students who need time to comprehend the information. If an exercise has a time limit, consider whether it’s long enough to allow students to respond. Advanced planning may help cut down on the number of students requesting time extensions.

Some online exercise question types may be difficult for students who have vision or mobility impairments. For example:

  • Exercises requiring fine hand-eye coordination, such as image mapped input or drag and drop exercises, may present difficulties to students who have limited mobility. Consider alternatives that do not require fine motor skills, unless, of course, such skills are necessary for effective participation in the course. For example, for a drag-and-drop exercise mapping atoms to compounds, provide a checkbox or multiple-choice exercise.
  • Highly visual stimuli, such as word clouds, may not be accessible to students who have visual impairments. Provide a text alternative that conveys the same information, such as an ordered list of words in the word cloud.
Third-party content

When including links to third-party content in your course, be mindful as to the accessibility of such third party resources, which may not be readily accessible to learners with disabilities. We recommend that you test any links prior to sharing them with users.

You can use the eReader tool or Adding Files to a Course to incorporate third-party textbooks and other publications in PDF format into your course. You can also incorporate such materials into your course in HTML format. See Best Practices for Accessible PDFs for guidance on working with third- party supplied PDFs, and Best Practices for HTML Markup for guidance on creating accessible HTML.

Resources

Best Practices for Describing Images

Pictures, diagrams, maps, charts, and icons can present information very effectively. However, some visually impaired students, including people who use screen reader software, need text alternatives to understand the information conveyed by these images. The text alternative for an image depends on the image’s context and purpose, and may not be a straight description of the image’s visual characteristics.

Use the following guidelines when you include images in your course:

  • Provide a short text description that conveys the purpose of the image, unless the image conveys a concept or is the only source for the information it presents, in which case a long text description is appropriate. Note that you don’t need to provide a long description if the information appears elsewhere on the page. For example, you don’t need to describe a chart if the same data appears as text in a data table.

    • For a representative image, such as a photograph of Ponte Vecchio, a short description could be “Photo of Ponte Vecchio.” If the photograph’s purpose is to provide detailed information about the location, the long description should be more specific: “Photo of Ponte Vecchio showing its three stone arches and the Arno River.”
    • For a chart, diagram, or illustration, the short description might be “Diagram of Ponte Vecchio.” The long description should include the details conveyed visually, such as dimensions and materials used.
    • For a map, a short description might be “Map showing location of Ponte Vecchio.” If the map is intended to provide directions to the bridge, the long description should provide text directions.
    • For icons, the short description should be the equivalent to the information that the icon provides. For example, for a Course Syllabus link containing a PDF icon, the text equivalent for the icon would be “PDF,” which would be read as “Course Syllabus PDF.”
    • For an image that serves primarily as a link to another web page, the short description should describe the link’s destination, not the image. For example, an image of a question mark that serves as a link to a Help page should be described as “help,” not “question mark.”
    • Images that don’t provide information don’t need text descriptions. For example, a PDF icon that is followed by link text reading “Course Syllabus (PDF)” does not need a description. Another example is a banner graphic whose function is purely aesthetic.
  • Include the short description in the alt attribute of the HTML image element, as follows (see Add an Image to an HTML Component for more information about adding images):

    <img src="image.jpg" alt="Photo of Ponte Vecchio">

  • Include an empty alt attribute for non-informative images. When image elements do not include an alt attribute, screen reader software may skip the image, announce the image filename, or, in the case of a linked image, announce the link URL. An empty alt attribute tells screen reader software to skip the image.

    <img src="image.jpg" alt="">

  • Consider using a caption to display long descriptions so that the information is available to all users. In the following example, the image element includes the short description as the alt attribute and the paragraph element includes the long description.

    <img src="image.jpg" alt="Photo of Ponte Vecchio"><p>Photo of Ponte Vecchio showing its three stone arches and the Arno river</p>

  • Alternatively, provide long descriptions by creating an additional unit or downloadable file that contains the descriptive text and providing a link to the unit or file below the image.

    <img src="image.jpg" alt="Diagram of Ponte Vecchio"> <p><a href="description.html">Description of Ponte Vecchio Diagram</a></p>

Resources

Best Practices for Accessible Media

Media-based course materials help convey concepts and bring course information to life. We require all edX courses to use videos with interactive, screen-reader- accessible transcripts. This built-in universal design mechanism helps enhance your course’s accessibility. When you create your course, you need to factor in time and resources for creating these transcripts.

Audio transcription

Audio transcripts are essential for presenting audible content to students who can’t hear and are helpful to students who are not native English speakers. Synchronized transcripts allow students who can’t hear to follow along with the video and navigate to a specific section of the video by clicking the transcript text. Additionally, all students can use transcripts of media-based learning materials for study and review.

A transcript starts with a text version of the video’s spoken content. If you created your video using a script, you have a great start on creating the transcript. Just review the recorded video and update the script as needed. Otherwise, you’ll need to transcribe the video yourself or engage someone to do it. There are many companies that will create timed video transcripts (i.e., transcripts that synchronize the text with the video using time codes) for a fee.

The edX platform supports the use of transcripts in .srt format. When you integrate a video file into the platform, you should also upload the .srt file of the timed transcript for such video. See Working with Video Components for details on how to add timed transcripts.

Video description

When creating video segments, consider how to convey information to learners who can’t see. For many topics, you can fully cover concepts in the spoken presentation. If practical, you might also describe visual information, for example, by speaking as you are writing on a tablet.

Downloadable transcripts

For both audio and video transcripts, consider including a text file that students can download and review using tools such as word processing, screen reader, or literacy software. The downloadable transcript should be text only, without time codes.

Resources

Best Practices for HTML Markup

HTML is the best format for creating accessible content. It is well supported and adaptable across browsers and devices, the information in the markup helps assistive technologies, such as screen reader software, provide information and functionality to people with vision impairments.

To make it easier for our course teams to create content with good HTML markup, we are working to make all templates in edX Studio conform to the best practices set forth below. In the interim, we recommend that you manually add the appropriate HTML tagging. Depending on the type of component you are adding to your course in edX Studio, the raw HTML data will be available either automatically or by selecting the “Advanced Editor” or “HTML” views.

Keep the following guidelines in mind when you create HTML content:

  • Use HTML to describe your content’s meaning rather than its appearance. A phrase marked as a level 1 heading (<h1>) clearly indicates the topic of the page, while a phrase marked as bold text (<bold> or <strong>) may be a heading or may just be text that the instructor wants to emphasize. A group of items marked up as a list are related in the code, without relying on visual cues such as bullets and indents. Coding meaning into content is particularly useful for students using screen readers, which, for example, can read through headings or announce the number of items in a list.
  • Use HTML heading levels in sequential order to represent the structure of the document. Well-structured headings help students navigate a page and find what they are looking for.
  • Use HTML list elements to group related items and make content easier to skim and read. HTML offers three kinds of lists:
    1. Unordered lists, where each item is marked with a bullet.
    2. Ordered lists, where each item is listed with a number.
    3. Definition lists, where each item is represented using term and description pairs (like a dictionary).
  • Use table elements to mark up data sets—that is, information that works best in a grid format—with descriptive rows and columns. Mark up row and column headers using the <th> element so screen readers can effectively describe the content in the table.

Resources

Conclusion

At edX, the heart of our mission is to provide global access to higher-level learning with only a computer and the Internet. We have designed a platform that enables course creators to reach thousands of learners, some of whom will lack the typical backgrounds and resources of resident students taking traditional courses on college campuses. We hope that these guidelines prove useful to you as you work with your institution’s disability support services and information technology resources to comply with applicable accessibility laws. As we are all on this learning venture together, we encourage you to share your thoughts with us at accessibility@edx.org.

Glossary

A - C - D - E - F - G - H - I - L - M - N - P - R - S - T - V - W - XYZ

A

A/B Test

About Page

The course page that provides potential students with a course summary, prerequisites, a course video and image, and important dates.

See Providing a Course Overview for more information.

Advanced Editor

An XML-only editor in a Problem component that allows you to can create and edit any type of problem. For more information, see The Advanced Editor.

Assignment Type

The category of graded student work, such as homework, exams, and exercises.

For more information, see Establishing a Grading Policy.

C

Certificate

A document issued to an enrolled student who successfully completes a course. Not all edX courses offer certificates, and not all students enroll as certificate candidates.

Checkbox Problem

A problem that prompts the student to select one or more options from a list of possible answers. For more information, see Checkbox Problem.

Chemical Equation Response Problem

A problem that allows the student to enter chemical equations as answers. For more information, see Chemical Equation Problem.

Circuit Schematic Builder Problem

A problem that allows the student to construct a schematic answer (such as an electronics circuit) on an interactive grid.

See Circuit Schematic Builder Problem for more information.

Cohort

A group of students who participate in a class together. Students who are in the same cohort group can communicate and share experiences in private discussions.

Cohorts are an optional feature of courses on the edX platform. For information about how you enable the cohort feature, set up cohort groups, and assign students to them, see Using Cohorts in your Courses.

Component

The part of a unit that contains your actual course content. A unit can contain one or more components. For more information, see Developing Course Components.

Content Experiment

You can define alternative course content to be delivered to different, randomly assigned groups of students. Also known as A/B or split testing, you use content experiments to compare the performance of students who have been exposed to different versions of the content. For more information, see Creating Content Experiments.

Content-Specific Discussion Topic

A category within the course discussion that appears at a defined point in the course to encourage questions and conversations. To add a content-specific discussion topic to your course, you add a discussion component to a unit. Students cannot contribute to a content-specific discussion topic until the release date of the section that contains it.

For more information, see Working with Discussion Components and Creating Discussion Topics for Your Course.

Course Accordion

The left-hand navigation bar in the courseware that shows the sections and subsections for a course. The word “accordion” is intended to evoke the folding and unfolding of an accordion, because when you click a section, the section expands to show subsections.

Course Catalog

The page that lists all courses offered in the edX learning management system.

Course Handouts

Course handouts are files you make available to students in the Course Info page.

See Add Course Handouts for more information.

Course Info Page

The page that opens first every time students access your course. You can post announcements on the Course Info page. The Course Handouts sidebar appears in the right pane of this page.

Course Run

The term in which your course takes place. You set the course run when you create your course. For more information, see Create a New Course.

Courseware

The page where students access the primary instructional materials for your course. Sections, subsections, units, and components are all accessed from the Courseware page.

Course-Wide Discussion Topic

Optional categories that you create to guide how students find and share information in the course discussion. Examples of course-wide discussion topics include Announcements and Frequently Asked Questions. Students can contribute to these topics as soon as your course starts.

For more information, see Creating Discussion Topics for Your Course.

Custom Response Problem

A custom response problem evaluates text responses from students using an embedded Python script. These problems are also called “write-your-own-grader” problems. For more information, see Write-Your-Own-Grader Problem.

D

Data Czar

A data czar is the single representative at a partner institution who is responsible for receiving course data from edX, and transferring it securely to researchers and other interested parties after it is received.

See the edX Research Guide.

Discussion

The set of topics defined to promote course-wide or unit-specific dialog. Students use the discussion topics to communicate with each other and the course staff in threaded excahnges.

See Managing Course Discussions for more information.

Discussion Component

Discussion topics that course staff add directly to units. For example, a Video component can be followed by a Discussion component so that students can discuss the video content without having to leave the page. When you add a dicussion component to a unit, you create a content-specific discussion topic.

See Working with Discussion Components for more information.

A problem that asks students to choose from a collection of answer options, presented as a drop-down list. For more information, see Dropdown Problem.

E

edX101

edX’s online course about how to create online courses. The intended audience is faculty and university administrators. It is also the first course ever to have been developed entirely using edX Studio.

edX Edge

A less restricted site than edX.org. While only consortium members can create and post content on edX.org, any users with course creator permissions can create courses with Studio on studio.edge.edx.org, then view the courses on the learning management system at edge.edx.org.

edX Studio

The edX tool you use to build your courses.

See What is Studio? for more information.

Exercises

Practice or practical problems interspersed in edX course content to keep the learner engaged. Exercises are also an important measure of teaching effectiveness and learner comprehension.

F

Forum

G

Grade Range

Thresholds that specify how numerical scores are associated with grades, and the score required to pass a course.

See Set the Grade Range for more information.

Grading Rubric

List of the items that a student’s response should cover in an open response assessment.

See Rubric for more information.

H

HTML Component

The component where you add and format text for your course. An HTML component can contain text, lists, links and images.

See Working with HTML Components for more information.

I

Image Mapped Input Problem

A problem that presents an image and accepts clicks on the image as an answer.

See Image Mapped Input Problem for more information.

Import

A tool in edX Studio that loads a new course into your existing course. When you use the Import tool, Studio replaces all of your existing course content with the content from the imported course.

See Import a Course for more information.

L

LaTeX

A document markup language and document preparation system for the TeX typesetting program.

In edX Studio, you can Import LaTeX Code into an HTML Component.

You can also create a Problem Written in LaTeX.

Learning Management System (LMS)

The platform that students use to view courses, and that course staff members use to manage enrollment and staff privileges, moderate dicussions, and access data while the course is running.

Live Mode

A view that allows course staff to review all public units as students see them, regardless of the release dates of the section and subsection that contain the units.

See View Your Live Course for more information.

M

Math Expression Input Problem

A problem that requires students to enter a mathematical expression as text, such as e=m*c^2.

See Math Response Formatting for Students for more information.

MathJax

A LaTeX-like language you use to write equations. Studio uses MathJax to render text input such as x^2 and sqrt(x^2-4) as “beautiful math.”

See A Brief Introduction to MathJax in Studio for more information.

Multiple Choice Problem

A problem that asks students to select one answer from a list of options.

See Multiple Choice Problem for more information.

N

Numerical Input Problem

A problem that asks students to enter numbers or specific and relatively simple mathematical expressions.

See Numerical Input for more information.

P

Pages

Pages organize course materials into categories that students select in the learning management system. Pages provide access to the courseware and to tools and uploaded files that supplement the course. Each page appears in your course’s navigation bar.

See Adding Pages to a Course for more information.

Preview Mode

A view that allows you to see all the units of your course as students see them, regardless of the unit status and regardless of whether the release dates have passed.

See Preview Course Content for more information.

Problem Component

A component that allows you to add interactive, automatically graded exercises to your course content. You can create many different types of problems.

See Working with Problem Components for more information.

Progress Page

The page in the learning management system that shows students their scores on graded assignments in the course.

Q

Question

A question is a type of contribution that you can make to a course discussion topic to surface an issue that the course staff or other students can resolve.

See Managing Course Discussions for more information.

R

Rubric

List of the items that a student’s response should cover in an open response assessment.

See Rubric for more information.

S

Section

The topmost category in your course. A section can represent a time period in your course or another organizing principle.

See Developing Course Sections for more information.

Short Course Description

The description of your course that appears on the edX Course List page.

See Describe Your Course for more information.

Simple Editor

The graphical user interface in a Problem component that contains formatting buttons and is available for some problem types. For more information, see The Studio View of a Problem.

Split Test

Subsection

A division that represents a topic in your course, or another organizing principle. Subsections are found inside sections and contain units. Subsections can also be called “lessons.”

See Developing Course Subsections for more information.

T

Text Input Problem

A problem that asks the student to enter a line of text, which is then checked against a specified expected answer.

See Text Input Problem for more information.

Transcript

A printed version of the content of a video. You can make video transcripts available to students.

See Working with Video Components for more information.

V

Video Component

A component that you can use to add recorded videos to your course.

See Working with Video Components for more information.

W

Wiki

The page in each edX course that allows students as well as course staff to add, modify, or delete content.

Students can use the wiki to share links, notes, and other helpful information with each other.

XYZ

XBlock

EdX’s component architecture for writing courseware components.

Third parties can create components as web applications that can run within the edX learning management system.

Setting up Your Course

Use the chapters in this section to create and build your course.

For information on how to develop your course content in the Studio Outline page, see Developing Your Course.

Creating a New Course

Overview

This chapter describes how to create and set up your course:

Another way to create a course is to re-run an existing course. See Re-running a Course.

You can also Export a Course and Import a Course through Studio. You can do this when you need to edit the course in XML.

Create a New Course

  1. Log in to Studio.
  2. Click New Course.
  3. Enter course information as needed and click Create.

Note

Enter new course information carefully. This information becomes part of the URL for your course. To change the URL after the course is created, you must contact edX through the Help site (http://help.edge.edx.org). Additionally, because this information becomes part of your course URL, the total number of characters in the following four fields must be 65 or fewer.

Image of the course creation page
  • For Course Name, enter the title of your course. For example, the name may be “Sets, Maps, and Symmetry Groups”. Use title capitalization for the course title.
  • For Organization, enter the identifier for your university. For example, enter HarvardX or MITx. Do not include spaces or special characters.
  1. Click Save.

The page refreshes to show the empty Outline for your new course. The course identifier appears in the browser address bar as the final part of the URL in the format {key type}:{org}+{course}+{run}. For example, course-v1:edX+DemoX+Demo_2014.

Note

This course ID format applies to all courses created after January 14, 2015. Older courses can have course IDs in the format {org}/{course}/{run}. For example, MITx/6.002x/2012_Fall.

Edit Your Course

After you create a course, the course opens in Studio automatically and you can begin editing.

When you return to Studio later, the Studio My Courses dashboard page lists the courses that you create along with any courses for which you have course staff privileges.

Image of the course on the Studio dashboard

To open a course, click the course name. The Studio Course Outline page appears.

Use the Course Checklist

You can use a Course Checklist within Studio to help you work through the tasks of building a course.

Categories of tasks in the Course Checklist include:

  • Getting Started with Studio
  • Draft a Rough Course Outline
  • Explore edX’s Support Tools
  • Draft Your Course About Page

From the Tools menu, select Checklists.

Image of the course checklist

As shown above for the Add Course Team Members task, if you hover over a task, a button is displayed that takes you to the page to complete that task.

You can expand and collapse sections of this page as needed.

You can check tasks as you complete them. Studio saves your changes automatically. Other course staff can see your changes.

Add Course Team Members

Course team members are users who help you build your course.

Only a team member with Admin access can add or remove course team members, or grant Admin access to other team members.

Other course team members can edit the course and perform all tasks except adding and removing other new team members and granting Admin access.

Note

Any course team member can delete content created by other team members.

All course team members must be registered with Studio and have an active account.

To add a course team member:

  1. Ensure you have Admin access.
  2. Ensure that the new team member has registered with Studio.
  3. From the Settings menu, select Course Team.
  4. Click Add a New Team Member.
  5. Enter the new team member’s email address, then click ADD USER.

You can also assign privileged roles to users when you work in the LMS. Regardless of where the role is assigned, these administrative team members can work on your course in both the LMS and in Studio. For more information on assigning roles while you run your course, see Staffing.

Providing a Course Overview

Overview

Prospective students need to know specific information about your course, including what the course covers, how much time they should plan to spend on the course each week, and whether the course requires any prior skills and knowledge. You specify all of this information in Studio.

For more information, see the following topics:

Most of this information appears on the course About page, sometimes called the course summary page. The following image shows a typical About page.

An image of the course About page showing the course start and end dates, prerequisites, description, and other information

Students see the course About page before they enroll in the course. After a student enrolls in the course, students can see information about your course on the Student Dashboard.

An image of the dashboard showing courses with start and end dates

Note

If your course will be available on edX.org, you must work with your edX program manager to prepare the content for your About page, including the course overview, image, and video. For more information, see the About page lesson in edX101.

Describe Your Course

You describe your course in a course overview. The overview contains important information for students who may be interested in taking your course. It introduces the main idea of the course and describes the topics or concepts that the course covers. The overview can also describe the skills and knowledge your students need to be able to succeed in your course, as well as provide information about course requirements and staff.

The course overview is outlined in the following course About page.

Image of a course About page with the overview circled

You use HTML to enter the course overview in Studio. The Course Overview field in Studio contains a boilerplate that includes placeholders.

To enter the course overview, follow these steps.

  1. From the Settings menu, select Schedule & Details.
  2. Scroll down to the Introducing Your Course section, then locate the Course Overview field.
Image of the HTML course description.
  1. Replace the placeholders in the boilerplate text to create your course overview. Studio automatically saves your changes.

    Note

    Do not edit HTML tags in the boilerplate. These tags align the content on the course About page.

  2. Below the Course Overview field, click your course summary page to see how the description will appear to students. A sample About page opens in a new window.

    When you make changes, note that you may have to wait a moment for the content to auto-save before the changes appear on the page.

Add a Course Image

You provide a course image that identifies your course. The course image that you add in Studio appears on the student dashboard. On Edge, the course image also appears on the course About page.

Image of the course image in the student dashboard

The course image must be a minimum of 660 pixels in width by 240 pixels in height, and in .jpg or .png format.

To add a course image, follow these steps.

  1. From the Settings menu, select Schedule & Details.
  2. Scroll down to the Course Image section.
  3. To select an image from your computer, click Upload Course Image, then follow the prompts to find and upload your image.
  4. View your dashboard to see how the image will appear to students.

Add a Course Introduction Video

To excite and entice potential students to enroll, each course can have a course introduction video. The video should reveal some of the personality the instructors bring to the course.

Image of the course video in the course About page.

The video should answer these key questions.

  • Who is teaching the course?
  • What university or college is the course affiliated with?
  • What topics and concepts does your course cover?
  • Why should a learner enroll in your course?

The video should deliver your message as concisely as possible and have a run time of less than 2 minutes.

Ensure your course introduction video follows the same Compression Specifications and Video Formats guidelines as course content videos.

To add a course introduction video:

  1. Upload the course video to YouTube. Make note of the code that appears between watch?v = and &feature in the URL. This code appears in the box below.
Image of a sample course video
  1. From the Settings menu, select Schedule & Details.
  2. Scroll down to the Course Introduction Video section.
  3. In the field below the video box, enter the YouTube video ID (the code you copied in step 1). When you add the code, the video automatically loads in the video box. Studio automatically saves your changes.

Set Course Time Requirements

To specify the number of hours that you expect students to spend on the course each week, follow these steps.

  1. From the Settings menu, select Schedule & Details.
  2. Scroll down to the Requirements section.
  3. In the Hours of Effort per Week field, enter the number of hours you expect students to work on this course each week.
  4. View your course About page to see how the requirements will appear to students.

Set Course Prerequisites

You might want to make sure that your students have a specific set of skills and knowledge before they take your course. In addition to suggesting general requirements in your course overview, you can require students to complete specific prerequisite courses, or take an entrance exam, or both.

Specify Prerequisite Courses

You can require that your students pass a particular edX course before they enroll in your course. Students see information about course prerequisites on the course About page.

A course About page with prerequisite course information circled

If students have not completed the prerequisite course, they can enroll in your course and then see your course on the Student Dashboard. However, unlike with other courses, the Student Dashboard does not provide a link to the courseware. The Student Dashboard includes a link to the About page for the prerequisite course. Students can enroll in the prerequisite course from the About page.

The Student Dashboard with an available course and a course that is unavailable because it has a prerequisite

To specify a prerequisite course, you must be a course author in both the current course and in the prerequisite course.

  1. In Studio, open your course.
  2. On the Settings menu, select Schedule & Details.
  3. On the Schedule & Details page, scroll to the Requirements section.
  4. Under Prerequisite Course, click the drop-down list to select a course.
  5. At the bottom of the page, select Save Changes.

Note

Currently, you can specify only one prerequisite course.

Require an Entrance Exam

You can require your students to pass an entrance exam before they access your course materials. If you include an entrance exam, students who enroll in your course see only the Course Updates & News page and an Entrance Exam tab until they pass the exam.

The Course Updates & News page with the Entrance Exam tab circled on the left

After students pass the exam, they can access all released materials in your course.

To require an entrance exam, follow these steps.

  1. In Studio, open your course.
  2. On the Settings menu, select Schedule & Details.
  3. On the Schedule & Details page, scroll to the Requirements section.
  4. Select the Require students to pass an exam before accessing course materials check box.
  5. At the bottom of the page, select Save Changes.

After you save your changes, Studio automatically creates an Entrance Exam section in your course outline. To add content to your entrance exam, go to the course outline.

Best Practices for Entrance Exams

We strongly recommend that you follow several guidelines to help you and your students have a positive experience with entrance exams.

  • Make sure that your beta testers include the entrance exam when they test your other course content.

  • Make sure that you mention the entrance exam in the course description on your course About page. Otherwise, students will not know about the entrance exam before they enroll in your course and try to access course content.

  • Add an anouncement at the top of the Course Updates & News page that contains information and instructions for students who need to take the exam. When students first try to access content in a course that has an entrance exam, they see the Course Updates & News page. We suggest that you include the following information.

    • To begin the course entrance exam, students click the Entrance Exam tab on the left side of the screen.

    • After students complete the entrance exam, they have to click the Entrance Exam tab again or refresh the page in their browser. When the page refreshes, students can see all currently available course content.

      The student view after the student has passed the entrance exam, with all available course sections listed in the course accordion
Create an Entrance Exam from the Course Outline

You create your course entrance exam from the course outline in Studio. Creating entrance exam content is just like creating other course content. For more information, see Creating Course Content.

Adjust Scores in the Entrance Exam

If you find an error in the exam after students have taken it, and corrections to the exam are unavoidable, you have several options to rescore the exam for individual students. These options are available on the Instructor Dashboard.

On the Instructor Dashboard, click Student Admin, and then scroll to the Entrance Exam Grade Adjustment section. The following options are available.

Another option on the Instructor Dashboard is Show Background Task History for Student. If you reset student attempts, rescore student submissions, or delete student state, the operation runs in the background. If you want to see a record of all the operations that have run for the entrance exam, select Show Background Task History for Student.

Set Important Dates for Your Course

You must set dates and times for enrollment and for the course.

  1. In Studio, from the Settings menu, select Schedule and Details.

  2. Follow the on-screen text to enter the course and enrollment schedule.

    An image of the course schedule page.

Note

The Time fields on this page, and the times that students see, use Universal Coordinated Time (UTC).

The Course Start Date

Note

The default course start date is set far into the future, to 01/01/2030. This is to ensure that your course does not start before you intend it to. You must change the course start date to the date you want students to begin using the course.

Students see the course start date and time on their Current Courses dashboards and on the course About page. Students can see some parts of the course before the course start date. For example, students can see your Course Info page and course-wide discussion topics as soon as they enroll in your course. For more information about course-wide discussion topics, see Create Course-Wide Discussion Topics.

The following example shows the course start date and time on the course About page:

An image of the course About page, with the start date circled.

In the dashboard, students see the start dates and times for each of their courses, as in the following examples.

An image of two courses in the student dashboard, with the start dates and times circled.

Note

If you do not specify a start time for your course, students see the default start time, 00:00 Coordinated Universal Time (UTC).

Set the Advertised Start Date

You can set an advertised start date for your course that is different than the course start date you set in the Schedule and Details page. You may want to do this if there is uncertainty about the exact start date. For example, you could advertise the start date as Spring, 2014.

To set an advertised start date:

  1. From the Settings menu, select Advanced Settings.
  2. Find the Course Advertised Start Date policy key. The default value is null.
  3. Enter the value you want to display as the advertised start date. You can use any string, enclosed in double quotation marks. If you format the string as a date (for example, as 02/01/2014), the value is parsed and presented to students as a date.
Image of the advertised start date policy key with a value of "anytime, self-paced"
  1. Click Save Changes at the bottom of the page.

The start date shown on the dashboard is now the value of the Course Advertised Start Date policy key:

An image of a course listing in the student dashboard, with the advertised start date circled.

If you do not change the default course start date (01/01/2030), and the Course Advertised Start Date policy value is null, then the student dashboard does not list a start date for the course. Students just see that the course has not yet started.

The Course End Date

The course end date is the date after which students can no longer earn credit toward certificates. Students who have earned certificates can view them after the course end date.

Important

If you do not set a course end date, students will not be able to access earned certificates.

After grades and certificates are finalized, students see the course end date on their personal Current Courses dashboards, as shown in the following examples.

  • If grades and certificates are not yet finalized, students can see the course end date and a message:

    Image of a course on the student dashboard that has ended, but not been graded
  • When grades and certificates are finalized, students who have not earned a certificate see their score and the score required to earn a certificate:

    Image of a course on the student dashboard that has ended, but not been graded
  • Students whose final score is equal to or higher than the required score can click Download Certificate to get their certificates as PDFs:

    Image of a course on the student dashboard that has ended, but not been graded

Adding Files to a Course

To use images in your course content, or to use other documents such as a syllabus, you must upload the files to the Files and Uploads page, then link to the uploaded files from a component in your course.

Overview

You can manage your uploaded course files on the Files and Uploads page under the Content menu in Studio.

Upload a File

You can upload files that you want students to access in the course. After you upload a file, you can link to it from a component, from a course update, or in the course handouts, using the generated URLs on the Files and Uploads page. Students can see a file only if you create a link to it.

Note

When URLs are generated for uploaded files, the file name becomes part of the URL and is visible to students when they access the file. You should avoid using file names that contain information about the file contents that should not be shared, for example, Answerkey.pdf.

Warning

For PDF and image files, edX recommends that you use standard compression tools to reduce the file size before you add them to your course.

If you have files that are larger than 50 MB after compression and need them for your course, contact your edX program manager.

Furthermore, do not add video or audio files, or large data sets that are to be used by students. You should use YouTube or another hosting service to host multimedia files for your course. For information about storing large data sets for student use, contact your edX program manager.

To upload files:

  1. From the Content menu, select Files & Uploads.

  2. Click Upload New File.

  3. In the Upload New File dialog box, click Choose File.

  4. In the Open dialog box, select one or more files to upload, then click Open.

    Note

    If you upload a file that has the same name as an existing course file, the original file is overwritten without warning.

  1. To upload additional files, click Load Another File and repeat the previous step.
  2. To close the dialog box, click the X in the top right corner.

You see the new files on the Files & Uploads page.

Use File URLs to Reference Uploaded Files

After you upload a file, you can link to it from a component, from a course update, or in the course handouts, using the generated URLs on the Files and Uploads page. On the Files & Uploads page, the URL column lists the Studio URL and web URL for each file.

  • To link to the file or image from within a course (that is, from a component, a course update, or a course handout), use the Studio URL. You cannot use the web URL to link to a file or image from within your course.
  • To provide a link to the file or image from outside the course, use the web URL.

Note

If you lock a file, the web URL no longer works for external access to the file, unless the person accessing the URL is enrolled in and logged in to the course.

To copy a URL from the file list, double click the URL in the URL column so that the value is selected, then copy it.

Sort Files

On the Files & Uploads page, by default, files are sorted by the Date Added column, with the most recently added files at the top.

You can sort your files by any column that has a blue column header. For example, to sort the list by name, click the Name column header.

Change the sort order by clicking a sortable column header. The direction of the arrow in the column header indicates whether the order is ascending or descending. Each time you click the column header, the sort order reverses.

The current sort order is shown at the top of the file list, and the active sort column header is underlined.

Filter Files

You can filter the list of files by type so that only a selected type of file is visible. The list remains in the current sort order.

Type File Types Include
Images .gif, .ico, .jpg, .jpeg, .png, .tif, or .tiff
Documents .pdf, .txt, Microsoft Office and Open Office documents, presentations, or spreadsheets
Other Files not included in the other types, such as .html, .js, or .sjson

To filter the list of files by type:

  1. On the Files & Uploads page, click the Type column header.
  2. In the dropdown list, select the type of file that you want to view.

The list refreshes to show only the type of file you selected, and the column header changes to reflect the type of file that you have filtered by.

To reset the list and view files of all types, click Show All in the Type dropdown list.

Find Files

The Files & Uploads page lists up to 50 files. If your course has more than 50 files, additional files are listed on other pages.

The range of the files listed on the page, and the total number of files, are shown at the top of the page.

You can navigate through the pages in these ways:

  • Use the < and > buttons at the top and bottom of the list to navigate to the previous and next pages.

  • At the bottom of the page, you can edit the first number in the page range. Click the number to place your cursor in the field, then enter the page number you want to jump to.

    Image showing the pair of page numbers at the bottom of the Files and Uploads pages with the first number in editable mode and circled

Lock a File

By default, anyone can access a file you upload if they know the URL, even people not enrolled in your class.

To ensure that those not in your class cannot view the file, click the lock icon.

Note

If you lock a file, the web URL no longer works for external access to the file, unless the person accessing the URL is enrolled in and logged in to the course.

Delete a File

To delete a file, click the x icon next to the file. You are prompted to confirm the deletion.

Warning

If you delete a file that has been linked from a course component, those links will be broken. Before deleting files that are used in a course, make sure you update the links to those files in the course.

Adding Course Updates and Handouts

You add course updates and handouts in Studio.

Students see the course updates and handouts in the Course Info tab in your course:

Image of the Course Info page, with a Course Updates & News section on the left side with a dated post and a frame titled "Course Handouts" with links to files on the right side.

Add a Course Update

You add updates to notify students of exams, changes in the course schedule, or anything else of a more urgent nature.

To add a course update:

  1. From the Content menu, select Updates.
  2. Click New Update.
  3. Enter your update in the HTML editor that opens.

Note

You must enter the update in HTML. The visual editor is not supported for course handouts.

  1. Click Save.

Add Course Handouts

You can add course handouts that are visible to students on the Course Info page. To add an uploaded file to the course handouts, you will need its URL.

Note

You must add files to a course before you can add them as course handouts.

  1. From the Content menu, select Updates.
  2. In the Course Handouts panel, click Edit.
  3. Edit the HTML to add links to the files you uploaded. See Add a Link in an HTML Component for more information.
  4. Click Save.

Adding Pages to a Course

Overview

By default, your course has the following pages:

  • Courseware
  • Course Info
  • Discussion
  • Wiki
  • Progress

You cannot rename, reorder, or remove these pages.

You can add pages to your course. Each page appears in your course’s navigation bar.

For example, the following navigation bar includes the default pages as well as the Course Schedule and Supplements & Instructor’s Blog pages.

Image of the page bar in the LMS

You can create other pages for the grading policy, course slides, or any other purpose. More examples of pages you can add are:

See:

Add a Page

  1. In Studio, from the Content menu, select Pages.
Image of the Pages screen
  1. Click Add a New Page. A page with the title Empty is added to the list:
Image of the Pages screen with a new Empty page
  1. Click Edit. The HTML editor opens.
Image of the Page editor
  1. Enter text for your page. See Options for Editing HTML Components for more information about using the editor.
  2. Click Settings to edit the Display Name. The display name is the name of the page visible to students in the course.
  3. Click Save.

The new page is immediately available to students, if the course has started.

Show or Hide the Course Wiki Page

By default, your course includes a Wiki page. Students and course staff can use the Wiki to post content and comment on others’ content.

If you do not want to use the Wiki in your course, you can hide the page.

The eye icon in the Wiki object indicates that the Wiki page is visible in your course:

Image of the Pages page with the Wiki made visible

Click the eye icon to hide the Wiki page. The icon changes:

Image of the Pages page with the Wiki made visible

Click it again to make the Wiki page visible.

Note

Content remains in the Wiki when you hide the page. For example, if a student bookmarks a Wiki topic, then you hide the Wiki page, the student can still use the bookmark to access that Wiki topic. All content that was previously posted in the Wiki remains available after you hide the Wiki page, and any students logged in to edX can access the content if they know the URL.

Reorder Pages

You can reorder pages in your course by dragging and dropping the pages to different locations.

To move a page, hover over the element handle on the right side of the page row until the mouse pointer changes to a four-headed arrow. Then, click and drag the page to the location that you want.

Note

You cannot reorder the Courseware, Course Info, Discussion, Wiki, and Progress pages that your course includes by default

Delete a Page

To delete a page that you previously added, click the trash can icon in the row for the page. You are prompted to confirm the deletion.

Code for Dynamic HTML Schedule

You can use the following code in a page to provide a dynamic HTML schedule in your course.

    <div class= "syllabus">

    <table style="width: 100%">
            <col width="10%">
            <col width="15%">
            <col width="10%">
            <col width="30%">
            <col width="10%">
            <col width="15%">
            <col width="10%">

    <!-- Headings -->
             <thead>
                    <td class="day"> Wk of </td>
                    <td class="topic"> Topic </td>
                    <td class="reading"> Read </td>
                    <td class="video"> Lecture Sequence </td>
                    <td class="slides"> Slides </td>
                    <td class="assignment"> HW/Q </td>
                    <td class="due"> Due </td>
            </thead>

    <!-- Week 1 Row 1 -->
             <tr class="first">
                    <td class="day">10/22</td>
                    <td class="topic">Topic 1</td>
                    <td class="reading">Ch. 1</td>
                    <td class="video"><a href="#">L1: Title</a></td>
                    <td class="slides"><a href="#">L1</a></td>
                    <td class="assignment"><a href="#">HW 1</a></td>
                    <td class="due">11/04</td>
            </tr>

    <!-- Week 1 Row 2 -->
            <tr>
                    <td class="day"> </td>
                    <td class="topic"></td>
                    <td class="reading"></td>
                    <td class="video"><a href="#">L2: Title</a></td>
                    <td class="slides"><a href="#">L2</a></td>
                    <td class="assignment">     </td>
                     <td class="due">      </td>
            </tr>

             <tr> <td class="week_separator" colspan=7> <hr/> </td> </tr>

    <!-- Week 2 Row 1 -->
             <tr>
                    <td class="day">10/29</td>
                    <td class="topic">Topic 2</td>
                    <td class="reading">Ch. 2</td>
                    <td class="video"> <a href="#">L3: Title<a></td>
                     <td class="slides"><a href="#">L3</a></td>
                    <td class="assignment"><a href="#">Quiz 1</a></td>
                    <td class="due">11/11</td>
             </tr>

    <!-- Week 2 Row 2 -->
            <tr>
                    <td class="day"></td>
                    <td class="topic"></td>
                    <td class="reading"></td>
                    <td class="video"><a href="#">L4: Title</a></td>
                    <td class="slides"><a href="#">L4</a> </td>
                    <td class="assignment"></td>
                    <td class="due"></td>
            </tr>
            <tr> <td class="week_separator" colspan=7> <hr/> </td> </tr>

    <!-- Week 3 Row 1 -->
            <tr>
                    <td class="day">11/05</td>
                    <td class="topic">Topic 3</td>
                    <td class="reading">Ch. 3</td>
                    <td class="video"><a href="#">L5: Title</a></td>
                    <td class="slides"><a href="#">L5 </a></td>
                    <td class="assignment"><a href="#">HW 2</a></td>
                    <td class="due">11/18 </td>
            </tr>

    <!-- Week 3 Row 2 -->
            <tr>
                    <td class="day"> </td>
                    <td class="topic"> </td>
                    <td class="reading"></td>
                    <td class="video"><a href="#">L6: Title</a></td>
                    <td class="slides"><a href="#">L6 </a></td>
                    <td class="video"></td>
                    <td class="assignment"></td>
                    <td class="due"></td>
            </tr>
            <tr> <td class="week_separator" colspan=7> <hr/> </td> </tr>

    <!-- Week 4 Row 1 -->
            <tr>
                    <td class="day">11/12</td>
                    <td class="topic">Topic 4</td>
                    <td class="reading">Ch. 4</td>
                    <td class="video"><!--<a href="#">L7: Title</a>--> L7: Title</td>
                    <td class="slides"><!--<a href="#">L7</a>-->L7</td>
                    <td class="assignment"><!--<a href="#">Quiz 2</a>-->Quiz 2</td>
                    <td class="due"> 11/25 </td>
            </tr>

    <!-- Week 4 Row 2 -->
            <tr>
                    <td class="day"></td>
                    <td class="topic"></td>
                    <td class="reading"></td>
                    <td class="video"><!--<a href="#">L8: Title</a>-->L8: Title</td>
                    <td class="slides"><!--<a href="#">L8</a>-->L8</td>
                    <td class="assignment"></td>
                    <td class="due"></td>
            </tr>
            <tr> <td class="week_separator" colspan=7> <hr/> </td> </tr>

    <!-- Week 5 Row 1 -->
            <tr>
                    <td class="day">11/19</td>
                    <td class="topic">Topic 5</td>
                    <td class="reading">Ch. 5</td>
                    <td class="video"><!--<a href="#">L9: Title</a>-->L9: Title</td>
                    <td class="slides"><!--<a href="#">L9</a>-->L9</td>
<                   td class="assignment"><!--<a href="#">HW 3</a>-->HW 3</td>
                    <td class="due"> 12/02 </td>
            </tr>

    <!-- Week 5 Row 2 -->
            <tr>
                    <td class="day"></td>
                    <td class="topic"></td>
                    <td class="reading"></td>
                    <td class="video"><!--<a href="#">L10: Title</a>-->L10: Title</td>
                    <td class="slides"><!--<a href="#">L10</a>-->L10 </td>
                    <td class="assignment"></td>
                    <td class="due"></td>
            </tr>
            <tr> <td class="week_separator" colspan=7> <hr/> </td> </tr>

    <!-- Week 6 Row 1 -->
            <tr>
                    <td class="day">11/26</td>
                    <td class="topic">Topic 6</td>
                    <td class="reading">Ch. 6</td>
                    <td class="video"><!--<a href="#"><L11: Title</a>-->L11: Title </td>
                    <td class="slides"><!--<a href="#">L11</a>-->L11</td>
                    <td class="assignment"><!--<a href="#">HW 4</a>-->HW 4</td>
                    <td class="due">12/09</td>
            </tr>

    <!-- Week 6 Row 2 -->
            <tr>
                    <td class="day"> </td>
                    <td class="topic"> </td>
                    <td class="reading"></td>
                    <td class="video"><!--<a href="#">L12: Title</a>-->L12: Title</td>
                    <td class="slides"><!--<a href="#">L12</a>-->L12</td>
                    <td class="assignment"></td>
                    <td class="due">      </td>
            </tr>

    </table>
    </div>

Adding Textbooks

You can add PDF textbooks for your course.

Note

Do not use image files (for example, .PNG files) as textbooks for your course, as they are not accessible to screen readers. Review the Best Practices for Accessible PDFs for more information.

Each textbook that you add is displayed to students as a tab in the course navigation bar.

It’s recommended that you upload a separate PDF file for each chapter of your textbook.

When students open the textbook tab in the course, they can navigate the textbook by chapter:

Image of a textbook in a course.

To add a textbook:

  1. From the Content menu, select Textbooks.
  2. Click New Textbook. The following screen opens:
Image of the New Textbook page.
  1. Enter the Textbook Name.
  2. Enter the first Chapter Name.
  3. To upload a PDF file from your computer, click Upload PDF. Follow the prompts to upload your file.
  4. To add more chapters, click +Add a Chapter and repeat steps 3 and 4.
  5. Click Save.

Establishing a Grading Policy

Overview

Establishing a grading policy takes several steps. You must:

  1. Set the Grade Range
  2. Set the Grace Period
  3. Configure the Assignment Types
  4. Graded Subsections
  5. The Student View of Grades

Important

Any changes to the course grading policy, to graded subsections, or to graded components after a course begins will affect the student experience in the course and analysis of its data.

Set the Grade Range

You must set the grade range for the course. For example, your course can be pass/fail, or can have letter grades A through F.

To set the grade range, from the Settings menu, select Grading.

The control for the grade range is at the top of the Grading page.

Image of the Grade Range control

The above example shows that you have a pass/fail grade range, with a score of 50 as the cutoff. This is the default setting used when you create a course.

You use the grade range control to change these settings:

  • To add a grade in the range, click the + icon.

    A new grade is added to the range between the existing grades. For example, if you add a grade in the default setting, the grade range changes to F (0 to 50), B (50 to 75), and A (75 to 100):

    Image of an altered Grade Range control
  • To change the score range, move the cursor over the line dividing two grades and then click and drag the line left or right.

    You can see the range numbers of the two grades adjacent to the line change. Release the mouse button when the line is where you want it.

  • To change the name of the grade, double-click the current name of the grade to select it, and then start typing the name of the new grade. For example, if the original name of the grade is “Pass”, you can double-click “Pass” and then type “Excellent” to replace the name.

    You cannot change F or Fail.

  • To remove a grade, move the cursor so that it is over the grade.

    A remove link appears above the grade. Click the link.

    You cannot remove F or A.

After you make any changes to the grade range, you must click Save Changes at the bottom of the page.

Grade Ranges and Certificates

If you plan for your course to offer certificates, note that a student will qualify for a certificate by earning any grade over the F, or Fail, threshold. This is true regardless of how many grade levels you add in the grade range.

Set the Grace Period

You can set a grace period that extends homework due dates for your students.

Note

The grace period applies to the whole course; you cannot set a grace period for individual assignments.

In the Grading page, under Grading Rules & Policies, enter a value in the Grace Period on Deadline field. Enter the value in Hours:Minutes format.

Configure the Assignment Types

You must create assignment types for your course and determine the weight of the student’s total grade for each assignment type.

For example, you may have:

  • 10 homework assignments, worth a total of 50% of the grade;
  • A midterm exam, worth a total of 20% of the grade;
  • A final exam, worth 30% of the grade.

By default, a new course you create has four assignment types:

  • Homework
  • Lab
  • Midterm Exam
  • Final Exam

You can use these assignment types, modify or remove them, and create new assignment types.

To create a new assignment type, in the bottom of the Grading page, click New Assignment Type, then configure the fields described below.

Assignment Type Fields

You configure the following fields for each assignment type:

  • Assignment Type Name:

    The general category of the assignment. This name will be visible to students.

    Note

    All assignments of a particular type count the same toward the weight of that category. As a result, a homework assignment that contains 10 problems is worth the same percentage of a student’s grade as a homework assignment that contains 20 problems.

  • Abbreviation:

    This is the short name that appears next to an assignment on a student’s Progress tab.

  • Weight of Total Grade:

    The assignments of this type together account for the percent value set in Weight of Total Grade.

    The total weight of all assignment types must equal 100.

    Note

    Do not include the percent sign (%) in this field.

  • Total Number:

    The number of assignments of this type that you plan to include in your course.

  • Number of Droppable

    The number of assignments of this type that the grader will drop. The grader will drop the lowest-scored assignments first.

Graded Subsections

After you configure assignment types, as you are organizing your course, you set the assignment type for subsections that contain problems that are to be graded.

Each subsection that contains problems to be graded can include only one assignment type.

Note

You can only set assignment types and due dates at the subsection level. You cannot set assignment types or due dates for entire sections or for individual units within subsections. Additionally, you can designate a subsection as one, and only one, of the assignment types you configured.

See Developing Course Subsections for general instructions on configuring a subsection.

See Set the Assignment Type and Due Date for a Subsection for instructions on designating a subsection as a graded assignment.

Within a graded subsection, you create problems of the type designated for that subsection. You cannot not mix problems of different assignment types in the same subsection.

For example, if you want to create a homework assignment and a lab for a specific topic, create two subsections. Set one subsection as the Homework assignment type and the other as the Lab assignment type. Both subsections can contain other content as well as the actual homework or lab problems.

Note

You can create problems in Studio without specifying that the subsection is an assignment type. However, such problems do not count toward a student’s grade.

See Working with Problem Components for instructions on creating problems.

The Student View of Grades

After a grading policy is in place, students can view both their problem scores and the percent completed and current grade in the Progress tab for the course.

Image of the student Progress tab

Each item in the X axis of the chart is for a graded subsection. Graded problems in units are not broken out in the chart; the score from each problem in the subsection is added to that vertical bar.

Graded subsections are grouped in the chart by assignment type rather than listed in chronological order. For example, all homework exercises are grouped together, followed by labs, then exams.

Note

The x for an assignment in the Progress tab indicates that the grade for that assignment is currently dropped. You configure how many assignments are dropped when you Configure the Assignment Types.

Re-running a Course

Another way to create a course in Studio is to re-run an existing course. When you select the course re-run option, most, but not all, of the original course content is duplicated to the new course. The original course is not changed in any way.

Type of Content Duplicated to New Course?
Course start date No. Set to midnight on January 1, 2030 (UTC).
All other course dates Yes. You will need to update all release dates and due dates.
Course structure (sections, subsections, units) and state (published, hidden) Yes.
Individual problems and other components Yes.
Files uploaded to the course, including videos and textbooks Yes.
Pages added to the course Yes, including all page content and the defined page order.
Course Updates Yes.
Advanced Settings Yes.
Grading policy Yes.
Student enrollment data No.
Course team privileges, including admins, discussion moderators, beta testers No. Only the user who created the new course has access to it.
Manually created cohort groups No.
Student answers, progress, and grading data No.
Certificates No.
Discussion posts, responses, comments, and other data No.
Wiki contributions No.

See Use Re-Run to Create a Course and Update the New Course.

Use Re-Run to Create a Course

Before you re-run a course:

  • For a course that is hosted on the edge.edx.org site, verify that you have permission to create courses in Studio. See Use Studio on Edge.
  • For a course that is hosted on the edx.org site, contact your Program Manager. Your Program Manager will create the new course using the re-run feature, and then work with you to complete the steps to update the new course.

To re-run a course, you must have course creation privileges in Studio and you must be a member of the course team for the course you want to re-run.

To re-run a course:

  1. Log in to Studio. Your dashboard lists the courses that you have access to as a staff member.
  2. Move your cursor over each row in the list of courses. The Re-Run Course and View Live options appear for each course.
A course listed on the dashboard with the Re-run Course and View Live options shown
  1. Locate the course you want to re-run and click Re-Run Course. The Create a re-run of a course page opens with values already supplied in the Course Name, Organization, and Course Number fields.
The course creation page for a rerun, with the course name, organization, and course number supplied
  1. Supply a Course Run to indicate when the new course will be offered.

    Together, the course number, the organization, and the course run are used to create the URL for the new course. The combination of these three values must be unique for the new course. In addition, the total number of characters used for the name, organization, number, and run must be 65 or fewer.

  2. Click Create Re-Run. Your My Courses dashboard opens with a status message about the course creation process.

    Duplication of the course structure and content takes several minutes. You can work in other parts of Studio or in the LMS, or on other web sites, while the process runs. The new course appears on your My Courses dashboard in Studio when configuration is complete.

Update the New Course

When you create a course by re-running another course, you should carefully review the settings and content of the new course. To assure a quality experience for students, be sure to test the course thoroughly before the course start date. See Testing Your Course Content and Beta Testing a Course.

At a minimum, you will need to make these changes to prepare the new course for release:

  • Add course staff members, including discussion admins, moderators, and community TAs. See Add Course Team Members or Staffing.

  • Update course-wide dates, including course and enrollment start and end dates. See Set Important Dates for Your Course.

  • Change the release dates of course sections, subsections, and units. See Release Dates.

  • Change the due dates of subsections that are part of your grading policy. See Set the Assignment Type and Due Date for a Subsection.

  • Delete or edit posts on the Course Updates page in Studio. See Add a Course Update.

  • Review the files on the Files & Uploads page. To update a file that contains references to course-related dates, you will need to:

    1. Locate the source file.
    2. Change course-related dates in the file.
    3. Upload the revised version of the file.

    Note

    If you use the same file name when you upload a revised file, links to that file in course components and course handouts will continue to work correctly. If you rename a file and then upload it, you must also update all links to the original file name. See Add Course Handouts or Add a Link to a File.

  • Review the staff biographies and other information on the course summary page and make needed updates. See Providing a Course Overview.

  • Create initial posts for discussion topics and an “introduce yourself” post. See Managing Course Discussions.

  • Add initial wiki articles.

You can use the course checklists to work through the course and verify that it is ready for release. You can also refer to the Course Launching Activities chapter for tools and ideas that help you prepare the course for launch.

Exporting and Importing a Course

You can Export a Course and Import a Course through Studio.

To duplicate an existing course for a new run, course creators can use the course re-run option. See Re-running a Course.

Export a Course

There are several reasons you may want to export your course:

  • To save your work
  • To edit the XML in your course directly
  • To create a backup copy of your course, which you can import if you want to revert the course back to a previous state
  • To share with another instructor for another class
  • To create a copy of your course that you can later import into another course instance and customize

When you export your course, Studio creates a .tar.gz file that includes the following course data:

  • Course content (all Sections, Subsections, and Units)
  • Course structure
  • Individual problems
  • Pages
  • Course assets
  • Course settings

The following data is not exported with your course:

  • User data
  • Course team data
  • Discussion data
  • Certificates

To export a course:

  1. From the Tools menu, select Export.
  2. Click Export Course Content.

When the export completes you can then access the .tar.gz file on your computer.

Import a Course

Warning

Content of the imported course replaces all the content of this course. You cannot undo a course import. We recommend that you first export the current course, so you have a backup copy of it.

There are several reasons you may want to import a course. For example:

  • To load a course you developed outside of Studio.
  • To run a new version of a course that was not created in Studio.

The course that you import must be in a .tar.gz file (that is, a .tar file compressed with GNU Zip). This .tar.gz file must contain a course.xml file in a course data directory. The tar.gz file must have the same name as the course data directory. It may also contain other files.

If your course uses legacy layout structures, you may not be able to edit the course in Studio, although it will probably appear correctly on Edge. To make sure that your course is completely editable, ensure that all of your material is embedded in a unit.

The import process has five stages. During the first two stages, you must stay on the Course Import page. You can leave this page after the Unpacking stage has completed. We recommend, however, that you don’t make important changes to your course until the import operation has completed.

To import a course:

  1. From the Tools menu, select Import.
  2. Click Choose a File to Import.
  3. Locate the file that you want, and then click Open.
  4. Click Replace my course with the one above.

Developing Your Course

Use the chapters in this section to understand how to develop your course content in the Studio Outline page.

For information on building specific course component types, see Creating Course Content.

For information on creating exercises and tools, see Creating Exercises and Tools.

For information on creating content libraries from which you can randomly draw content for randomized assigments, see Working with Content Libraries.

Getting Started with Course Content Development

When you are done setting up your course, you are ready to build your course content.

This chapter provides an outline of the steps involved in developing your course content, with links to more details. See:

Understanding Course Building Blocks

Before you begin, you should understand the building blocks of an edX course.

  • The course outline is the container for all of your course content. The outline contains one or more sections.
  • Course sections are at the top level of your course and typically represent a time period. A section contains one or more subsections.
  • Course subsections are parts of a section, and usually represent a topic or other organizing principle. A subsection contains one or more units.
  • Course units are lessons in a subsection that students view as single pages. A unit contains one or more components.
  • Course components are objects within units that contain your actual course content.

Creating New Course Content

Once you understand the way edX courses are structured, you can start organizing your content and entering it into Studio.

You create sections, subsections, and units in the course outline.

For graded subsections, you also set the assignment type and due date.

You create components in the unit page.

In addition, you control content visibility by setting release dates on the outline and publishing units.

The following diagram summarizes the content creation workflow:

Diagram of the content creation process

It is recommended that you test course content throughout the creation process.

Making Course Content Visible to Students

When you create your content, you’ll also specify if and when students will be able to see it. Content visibility depends on several factors:

For more information, see Controlling Content Visibility.

Making Course Content Searchable

Learners can search course text in HTML components and video transcripts by using the Search box in the upper-left corner of the Courseware tab.

Before learners can search your course, Studio must index the content. Studio indexes all new course content automatically when you publish the content.

If necessary, you can manually reindex all of the content in your course at any time. Typically, you would only manually reindex your course content if learners see unexpected search results. To reindex your course content, select Reindex Content in the upper-right corner of the Course Outline page. Reindexing usually takes less than 30 seconds.

Revising Content

You can revise your course content at any time.

The following diagram summarizes the content revision workflow and content visibility:

Diagram of the content creation process

It is recommended that you test course content during the revision process.

Developing Your Course Outline

As you develop your course, you work primarily in the edX Studio course outline. This chapter includes the following information about working with the course outline:

See the following chapters for information about working with the course building blocks in the course outline:

Open the Course Outline

To view the course outline:

  1. Log in to edX Studio.

  2. In the My Courses page, select the course you want to develop.

    The course outline opens by default when you open a course.

When working in a course, to open the outline, from the Content menu, select Outline.

The first time you view an outline for a course, it contains no content.

An empty course outline

You must create the first section.

Example of a Developed Course in the Outline

The following example shows a sample course in the outline, with indications for sections, subsections, and units. As you develop your course, it will begin to look like this example:

An outline with callouts for sections, subsections, and units

As this example shows, the course is organized into the following levels:

  1. Sections
  2. Subsections
  3. Units

Components are not shown in the outline. You add or access components by clicking on the units that contain them.

Use the links above for more information and instructions on working with each type of object in the course. The rest of this chapter provides more detail about the course outline.

View the Course Organization as a Student

The content you see in the outline in Studio is displayed to students in the Courseware tab in the LMS. The following image shows how a student sees your course content:

Image of course conent from student's point of view

Add Content in the Course Outline

You add sections, subsections, and units directly in the outline.

To add a section to the end of the outline, click New Section at the top of the outline page or at the bottom of the outline:

The outline with the New Section buttons circled

To add a subsection to the end of the section, expand the section and click New Subsection:

The outline with the New Subsection button circled

To add a unit to the end of a subsection, expand the subsection and click New Unit:

The outline with the New Subsection button circled

The unit page opens.

Note

If you want to require an entrance exam for your course, you also create the exam in the course outline. Before you can create an exam, you must set your course to require an entrance exam in Studio. For more information, see Require an Entrance Exam.

Modify Settings for Objects in the Course Outline

You modify settings for sections, subsections, and units in the course outline. Specifically, you can complete the following tasks:

To modify settings for a section, subsection, or unit, click the settings icon for that object. In the following example, the settings icon is circled for a section, a subsection, and two units:

Settings icons in the course outline

For more information, see the links above.

Publish Content from the Course Outline

You can publish new and changed units for an entire section or subsection. You can also publish individual units.

To publish new and changed units, click the publish icon for a section, subsection, or unit. In the following example, the publish icon is circled for a section, subsection, and unit:

Publishing icons in the course outline

Note

The publish icon only appears when there is new or changed content within the object.

For more information, see:

Reorganize the Course Outline

You can reorganize your course content by dragging and dropping sections, subsections, and units to new locations in the outline.

To move a section, subsection, or unit, hover over the handle on the right of the object’s box until the cursor changes to a four-headed arrow. For example, in the image below, the handle for the subsection Lesson 1 - Getting Started is selected:

A subsection handle selected to drag it

Then, click and drag the object to the location that you want.

If you expanded the section or subsection you are moving the object to, when you move the object, a blue line indicates where the object will land when you release the mouse button. For example, in the image below, the subsection Lesson 1 - Getting Started is being moved to the end of the section Introduction:

A subsection being dragged to a new section

If you did not expand the section or subsection you are moving the object to, the outline of that section or subsection turns blue when you have moved the object to a valid location. You can then release the mouse button. For example, in the image below, the subsection Lesson 1 - Getting Started is being moved to the collapsed section Introduction:

A subsection being dragged to a new section

Delete Content in the Course Outline

You delete sections, subsections, and units from the course outline.

Warning

You cannot restore course content after you delete it. To ensure you do not delete content you may need later, you can move any unused content to a section in your course that you set to never release.

Click the delete icon in the box for the object you want to delete:

The outline with Delete icons circled

You are prompted to confirm the deletion.

Note

When you delete an object, all objects that it contains are deleted. For example, when you delete a subsection, all units in that subsection are deleted.

Developing Course Sections

To develop sections in your course, you must first understand the following:

Section tasks:

What Is a Section?

A section is the topmost category in your course. A section can represent a time period in your course, a chapter, or another organizing principle. A section contains one or more subsections.

Viewing Sections in the Outline

The follow example shows four sections, all collapsed, in the course outline:

Four sections in the outline

The Student View of a Section

Students see sections in the Courseware tab. Students can expand one section at a time to see its contents. In the following example, three sections are circled, and the third one is expanded to show its subsections:

The students view of the course with two sections circled

Sections and Visibility to Students

Students cannot see any content in the section if the section’s release date is unscheduled or has not passed.

If a section’s release date has passed, students can see content in the section if:

  • The release date for the subsection that contains that content has passed.
  • The unit has been published.
  • The unit is not hidden from students.

Release Statuses of Sections

As an course author, you control the release status of sections. For the content of a section to be visible to students, the section must be released. See the following for more information about the possible releases statuses of sections:

Unscheduled

If you do not change the course start date default value, 1/1/2030 00:00:00 UTC, when you create a new section, its release date will appear as Unscheduled. When the section release date is unscheduled, students cannot see any content in that section, regardless of the publishing status of that content.

If you have modified the course start date, when you create a new section, the default release date is the course start date.

The following example shows how an unscheduled section is displayed in the outline, summarized with a gray bar:

An unscheduled section

To make the content available to students, you must schedule the release date.

Scheduled

A section that is scheduled for release on a future date will not be visible to students until after the release date. Regardless of the publishing status of content within the section, the entire section will not visible to students.

The following example shows how a section that is scheduled for release is displayed in the outline, summarized with a green bar:

An section scheduled to release in the future

The scheduled date must pass for the section to be visible to students.

Released

A section that is released is visible to students; however, students see only subsections within the section that are also released, and units that are published.

The following example shows how a released section is displayed in the outline, summarized with a blue bar:

An unscheduled section
Released with Unpublished Changes

If you change a unit in a released section but do not publish the changes, students see the last published version of the modified unit.

The following example shows how a released section with unpublished changes is displayed in the outline, with a yellow bar. The section is expanded to show the unit with unpublished changes:

A section with unpublished changes

You must publish the unit for students to see the updates.

Staff Only Content

A section can contain a unit that is hidden from students and available to staff only. That unit is not visible to students, regardless of the release date of the section or subsection.

The following example shows how a section that contains a unit that is hidden from students is displayed in the outline, summarized with a black bar:

A section with a hidden unit

Create a Section

If you do not change the course start date default value, 1/1/2030, when you create a new section, its release date will be Unscheduled.

If you have modified the course start date, when you create a new section, the default release date is the course start date.

Caution

If the course start date is in the past, newly created sections are immediately visible to students.

To create a new section:

  1. Click New Section at the top or bottom of the outline:

    The outline with the New Section buttons circled

    A new section is added at the end of the course content, with the section name selected.

  2. Enter the name for the new section. Remember that students see the section name in the courseware.

  3. Add subsections to the new section as needed.

It is recommended that you test course content as you create new sections.

Change a Section Name

To edit a section name, hover over the section name to show the Edit icon:

The Edit Section Name icon

Click the Edit icon next to the section name. The name field becomes editable. Enter the new name and tab or click out of the field to save the name.

Set a Section Release Date

To set the section release date:

  1. Click the Settings icon in the section box:

    The section settings icon circled

    The Settings dialog box opens.

  2. Enter the release date and time for the section:

    The section release date settings
  3. Click Save.

For more information, see Release Dates.

Publish all Units in a Section

To publish all new and changed units in a section, click the publish icon in the box for the section:

Publishing icon for a section

Note

The publish icon only appears when there is new or changed content within the section.

See Unit Publishing Status for information about statuses and visibility to students.

Hide a Section from Students

You can hide all content in a section from students, regardless of the status of subsections and units within the section.

To hide a section from students:

  1. Click the Settings icon in the section box:

    The section settings icon circled

    The Settings dialog box opens.

  2. Check Hide from students.

    The section hide from students setting
  3. Click Save.

Now, no content in the section is visible to students.

To make the section visible to students, repeat these steps and clear the Hide from students checkbox.

Warning

When you clear the Hide from students checkbox for a section, not all content in the section is necessarily made visible to students. If you explicitly set a subsection or unit to be hidden from students, it remains hidden from students. Unpublished units remain unpublished, and changes to published units remain unpublished.

Delete a Section

When you delete a section, you delete all subsections and units within the section.

Warning

You cannot restore course content after you delete it. To ensure you do not delete content you may need later, you can move any unused content to a section in your course that you set to never release.

To delete a section:

  1. Click the delete icon in the section that you want to delete:
The section with Delete icon circled
  1. When you receive the confirmation prompt, click Yes, delete this section.

Developing Course Subsections

To develop subsections in your course, you must first understand the following:

Subsection tasks:

What Is a Subsection?

Sections are divided into subsections, which in turn contain one or more units. A subsection may represent a topic in your course, or another organizing principle. Subsections are sometimes called “lessons” or “learning sequences.”

Viewing Subsections in the Outline

The following example shows three subsections in a section, all collapsed, in the course outline:

Three collapsed subsections in the outline

The Student View of a Subsection

Students see subsections in the Courseware tab, listed beneath the expanded section. In the following example, seven subsections are circled, and the first is open.

The student view of the outline

Subsections and Visibility to Students

Students cannot see any content in a subsection if the subsection’s release date is unscheduled or has not passed.

If a subsection’s release date has passed, students can see content in the subsection if the following three conditions are met:

  • The release date of the parent section has passed.
  • The units have been published.
  • The units are not hidden from students.

Release Statuses of Subsections

As a course author, you control the release status of subsections. For the content of a subsection to be visible to students, the subsection must be released. See the following for more information about the possible releases statuses of subsections:

Scheduled with the Section

When you create a subsection, it is set by default to release at the same time as the section it is in. Therefore, published content in the subsection is visible to students at the date and time the section is released.

The following example shows how an subsection in the Scheduled with Section state is displayed in the outline, summarized with a green bar:

A subsection scheduled to release with the section
Unscheduled

If the parent section is unscheduled, when you create a new subsection it will also be unscheduled.

Regardless of the publishing status of units within the subsection, no content in an unscheduled subsection is visible to students.

The following example shows how an unscheduled subsection is displayed in the outline, summarized with a gray bar:

An unscheduled subsection

Content in the subsection is not visible to students until you set a release date and the date passes.

Scheduled Later than the Section

You can set a subsection to release on a date after the section releases.

Content in a subsection that is scheduled for release on a future date is not visible to students, even if some or all of the units in the subsection are published.

The following example shows the way that a subsection that will release after its parent subsection appears in the course outline:

A subsection scheduled to release later than the section

The scheduled date must pass for the subsection to be visible to students.

Scheduled with Unpublished Changes

You can make changes to a published unit before its parent subsection is released.

In this situation, when the release date for the subsection passes, the last published version of units within the subsection are made visible to students. The changes in units are not visible to students until you publish them.

The following example shows how a scheduled subsection with unpublished changes is displayed in the outline, summarized with a yellow bar:

A scheduled subsection with unpublished changes
Released with Unpublished Changes

If you modify a unit within a released subsection, those modifications are not visible to students until you publish them.

The following example shows how a released section that has unpublished changes appears in the outline, summarized with a yellow bar:

A released subsection with unpublished changes
Released

A subsection that is released is visible to students; however, students see only units within the subsection that are published.

The following example shows how a released subsection is displayed in the outline, summarized with a blue bar:

A released subsection
Staff Only Content

A subsection can contain a unit that is hidden from students and available to staff only. That unit is not visible to students, even if the subsection has been released.

The following example shows how an subsection that contains a unit that is hidden from students is displayed in the outline, summarized with a black bar:

A section with a hidden unit

Create a Subsection

To create a new subsection:

  1. In the outline, expand the section in which you want to create a new subsection.
  2. Click New Subsection at the bottom of the expanded section. A new subsection is added at the end of the section, with the subsection name selected.
  3. Enter the name for the new subsection. Remember that students see the subsection name in the courseware.
  4. Add units to the new subsection as needed.

It is recommended that you test course content as you create new subsections.

Change a Subsection Name

To change a subsection name, click the Edit icon next to the subsection name. The name field becomes editable. Enter the new name and tab or click out of the field to save the name.

Set a Subsection Release Date

To set the subsection release date:

  1. Click the Settings icon in the subsection box:

    The subsection settings icon circled

    The Settings dialog box opens.

  2. Enter the release date and time for the section:

    The subsection release date settings
  3. Click Save.

For more information, see Release Dates.

Set the Assignment Type and Due Date for a Subsection

You set the assignment type for problems at the subsection level.

When you set the assignment type for a subsection, all problems within the subsection are graded and weighted as a single type. For example, if you designate the assignment type for a subsection as Homework, then all problem types in that subsection are graded as homework.

To set the assignment type and due date for a subsection:

  1. Click the Settings icon in the subsection box:

    The subsection settings icon circled

    The Settings dialog box opens.

  2. Select the assignment type for this subsection in the Grade as field:

    The subsection settings with the assignment type and due date circled
  3. Enter or select a due date and time for problems in this subsection.

  4. Click Save.

For more information, see Establishing a Grading Policy.

Publish all Units in a Subsection

To publish all new and changed units in a subsection, click the publish icon in the box for the subsection:

Publishing icon for a subsection

Note

The publish icon only appears when there is new or changed content within the subsection.

See Unit Publishing Status for information about statuses and visibility to students.

Hide a Subsection from Students

You can hide all content in a subsection from students, regardless of the status of units within the section.

To hide a subsection from students:

  1. Click the Settings icon in the subsection box:

    The subsection settings icon circled

    The Settings dialog box opens.

  2. Check Hide from students.

    The subsection hide from students setting
  3. Click Save.

Now, no content in the subsection is visible to students.

To make the subection visible to students, repeat these steps and clear the Hide from students checkbox.

Warning

When you clear the Hide from students checkbox for a subsection, not all content in the subsection is necessarily made visible to students. If you explicitly set a unit to be hidden from students, it remains hidden from students. Unpublished units remain unpublished, and changes to published units remain unpublished.

Delete a Subsection

When you delete a subsection, you delete all units within the subsection.

Warning

You cannot restore course content after you delete it. To ensure you do not delete content you may need later, you can move any unused content to a section in your course that you set to never release.

To delete a subsection:

  1. Click the delete icon in the subsection that you want to delete:
The subsection with Delete icon circled
  1. When you receive the confirmation prompt, click Yes, delete this subsection.

Developing Course Units

When working with units in the course outline, ensure you understand the following:

When developing your course, you perform the following tasks with units:

You add content to units with course components.

What is a Unit?

A unit is a part of a subsection that students view as a single page.

A unit contains one or more components, such as HTML content, problems, discussions, and videos.

Viewing Units in the Outline

To view units in the outline, you expand the parent section and subsection:

An outline with callouts for sections, subsections, and units

Viewing the Unit Page

When you click on a unit name in the outline, the Unit page opens.

The following example shows a unit page with two components, with circles and text to show different areas and controls in the page.

The Unit page

Viewing Units as a Student

To a student using the edX Learning Management System, each unit in the subsection appears as a link on the course ribbon at the top of the page. The active unit is open beneath the course ribbon.

The following image shows a subsection that has five units, which are circled in the ribbon above the video, with the first unit open:

Image of units from the student's point of view

The Unit Workflow

When you have set up the section and subsection in the course outline, you then work with units.

The typical workflow is:

  1. Create a new unit.
  2. Add components to the unit.
  3. Publish the unit.

After you publish the unit, you can:

  1. Modify components in the unit.
  2. Publish the changes to the unit.

The following diagram shows the typical unit development workflow:

Diagram of the unit development workflow

As you work through these steps, the publishing status of the unit changes. The publishing status controls the content available to students, along with release dates. See the next section for more information.

Unit Publishing Status and Visibility to Students

The following information summarizes whether or not students can see a unit.

For more information, see Controlling Content Visibility.

Unit Publishing Status

As an course author, you work with units with the following statuses:

Draft (Never published)

When you create a new unit and add components to it, the unit’s publishing status is Draft (Never Published), as shown in the status panel:

Status panel of a unit that has never been published

In Studio, you see the version of the content that you’re working on. Students never see a unit with this status, even if the release date has passed.

Though you do not see the unit in the LMS, you can preview the unit.

You must publish the unit for it to be included in the LMS.

Published and Live

The release date for the section and subsection have passed. You’ve published the unit and haven’t made any changes to it. You and students both see the current version of the unit.

Status panel of a unit that is published
Published (not yet released)

You’ve published the unit, but the release date hasn’t passed. Students cannot see this unit until the release date passes.

Status panel of a unit that is published but not released
Draft (Unpublished changes)

When you edit a published unit, whether or not it is released, the unit’s publishing status changes to Draft (Unpublished Changes), as shown in the status panel:

Status panel of a unit that has pending changes

In Studio, you see the draft of the content that you’re working on. If the release date has passed, students see the last published version of the unit. If the release date hasn’t passed, students can’t see your content.

You must publish the unit for students to see your changes.

You can preview the changes to a unit to test how your changes will appear to students after you publish the unit.

Visible to Staff Only

When you hide a unit from students, the unit’s publishing status changes to Visible to Staff Only.

The publishing status of a unit can be Visible to Staff Only if you hid the parent section or subsection from students.

Students never see a unit with this status, even if it has been published and the release date has passed.

Status panel of a unit that has pending changes

Create a Unit

You can create a unit from the outline or create a unit in the same subsection from the unit page.

To create a unit from the outline:

  1. In the outline, expand the subsection in which you want to create a new unit.
  2. Click New Unit at the bottom of the expanded subsection. A new unit is added at the end of the subsection.
  3. On the unit page, the unit name is selected. Edit the name as needed.
  4. Add components to the new unit as needed.

To create a new unit from a unit page:

  1. In the Unit Location panel, click New Unit.

    The Unit Location panel in the Unit page

    The unit page for the new unit opens automatically.

  2. On the unit page, the unit name is selected. Edit the name as needed.

  3. Add components to the new unit as needed.

You must then publish the unit to make it visible to students.

Edit a Unit

You can edit a unit in the following ways:

When you make any of these changes, if you previously published the unit, the state changes to Draft (Unpublished Changes). You must then publish the unit to make your edits visible to students.

Edit the Unit Name

To edit a unit name, hover over the name to show the Edit icon:

The Edit Unit Name icon

Click the Edit icon next to the unit name. The name field becomes editable. Enter the new name and tab or click out of the field to save the name.

Reorganize Components in Units

You can reorganize components within a unit by dragging and dropping them to new locations.

To move a component, hover over the handle on the right of the component’s box until the cursor changes to a four-headed arrow. For example, in the image below, the handle for the discussion component is selected:

A discussion component selected to drag it

Then, click and drag the component to the location that you want.

A dashed outline indicates where the component will land when you release the mouse button. For example, in the image below, the discussion component is being moved to the top of the unit:

A component being dragged to a new location

Preview a Unit

You preview a unit to review and test the content before it is visible to students.

You can preview a unit before it is published and when there are unpublished changes. When the unit is published and there are no pending changes, you cannot preview the unit; you must view the live version of the unit.

To preview the unit, in the unit page, click Preview Changes.

The Unit page with Preview Changes button circled

The unit opens in preview mode:

The unit in preview mode

When you are revising a previously published unit, it is helpful to preview your changes in one window and view the published unit in a second window.

Publish a Unit

Publishing a unit makes the current version of the unit in Studio available to students, if the release date for the section and subsection have passed.

You publish a unit that has a status of Draft (Never Published) or Draft (Unpublished Changes). When you publish a unit, the status changes to Published and Live or Published Not Yet Released.

You can publish a unit from the unit page or the course outline.

Use the Unit Page to Publish a Unit

To publish the unit, click Publish in the status panel:

Unit status panel with Publish button circled
Use the Outline to Publish a Unit

To publish a unit from the outline, click the publish icon in the box for the unit:

Publishing icon for a unit

Note

The publish icon only appears when there is new or changed content in the unit.

Discard Changes to a Unit

When you modify a published unit, your changes are saved in Studio, though the changes aren’t visible to students until you publish the unit again.

In certain situations, you may decide that you never want to publish your changes. You can discard the changes so that Studio reverts to the last published version of the unit.

To discard changes and revert the Studio version of the unit to the last published version, click Discard Changes in the status panel:

Unit status panel with Discard Changes circled

Caution

When you discard changes to a unit, the changes are permanently deleted. You cannot retrieve discarded changes or undo the action.

View a Published Unit

To view the last published version of a unit in the LMS, click View Published Version.

Unit page with View Published Version button circled

The unit page opens in the LMS in Staff view. You may be prompted to log in to the LMS.

If the unit status is Draft (Unpublished Changes), you do not see your changes in the LMS until you publish the unit again.

If the unit status is Draft (Never Published), the View Published Version button is not enabled.

Hide a Unit from Students

You can prevent students from seeing a unit regardless of the unit status or the release schedules of the section and subsection.

For more information, see Controlling Content Visibility.

You can hide a unit from students using the course outline or the unit page.

Use the Unit Page to Hide a Unit

Select the Hide from students checkbox in the status panel:

Unit status panel with Hide from Students checked

For more information, see Controlling Content Visibility.

Use the Outline to Hide a Unit
  1. Click the Settings icon in the unit box:

    The unit settings icon circled

    The Settings dialog box opens.

  2. Check Hide from students.

    The unit hide from students setting
  3. Click Save.

Make a Hidden Unit Visible to Students

Before you make a hidden unit visible to students, be aware that course content will immediately be visible to students, as follows:

  • For a hidden unit that previously was published, clearing the check box publishes the current content for the unit. If you made changes to the unit while is was hidden, those draft changes are published.
  • When you make a section or subsection that was previously hidden visible to students, draft content in units is not published. Changes you made since last publishing units are not made visible to students.

You can make a hidden unit visible to students from the unit page or the course outline. Follow the instructions above and clear the Hide from students checkbox.

You are prompted to confirm that you want to make the unit visible to students.

Delete a Unit

You delete a unit from the course outline.

When you delete a unit, you delete all components within the unit.

Warning

You cannot restore course content after you delete it. To ensure you do not delete content you may need later, you can move any unused content to a section in you

To delete a unit:

  1. Click the delete icon in the box for the unit you want to delete:
The section with Delete icon circled
  1. When you receive the confirmation prompt, click Yes, delete this unit.

Developing Course Components

This chapter describes how you develop course components. See:

For more information about specific component types, see:

What is a Component?

A component is the part of a unit that contains your actual course content. A unit can contain one or more components.

A student can view the name of all components in a unit by hovering over the unit in the ribbon at the top of the page.

Image of the component list for a unit

By default, Studio includes four types of components.

  • Discussion components provide discussion spaces in the body of your course. Students can explore ideas about a lesson with their peers in a discussion space.
  • HTML components allow you to add text, images, and some types of learning tools to your course. Content in HTML components is formatted as HTML.
  • Problem components enable you to add many different types of exercises and problems to you course, from simple multiple choice problems to complex circuit schematic exercises.
  • Video components contain the videos that you want to include in your course.

Add a Component

To add a component to the unit, click the component type that you want under Add New Component.

Image of adding a new component

For more information, see the documentation for the specific component type that you want:

After you add a component, it is not visible to students until you publish the unit.

Edit a Component

To edit a component, click Edit:

Image of a unit with Edit icon circled

Then follow instructions for the type of component you are editing.

After you edit a component, the changes are not visible to students until you publish the unit.

Set the Display Name for a Component

Each component has a display name that shows in the component header when you can edit the component. The display name also shows to students when they hover the cursor over the unit icon in the course ribbon.

To set the display name for a component:

  1. Edit the component.
  2. Click Settings.
  3. Edit the Display Name field.
Image of the Display Name field for a component.
  1. Click Save.

Different types of components have different fields in the Settings dialog box, but all have the Display Name field.

Duplicate a Component

When you duplicate a component, a new copy of that component is added directly beneath the first component. You can then modify the duplicate. In many cases, duplicating a component and editing a copy is a faster way to create new content.

To duplicate a component, click the Duplicate icon in the component header:

Image of a unit with Duplicate icon circled

Then follow instructions for the type of component you are editing.

After you duplicate a component, the new component is not visible to students until you publish the unit.

Note

You cannot duplicate a content experiment.

Delete a Component

Caution

Be sure you want to delete the component. You can not undo the deletion.

To delete a component:

  1. Click the Delete icon in the component header:
Image of a unit with Delete icon circled
  1. When you receive the confirmation prompt, click Yes, delete this component.

After you delete a component, the component remians visible to students until you publish the unit.

Components that Contain Other Components

For specific use cases, you configure course content so that components contain other components. For example, if you want to include conditional components or content experiments, you have to create components inside components. See Creating Content Experiments for more information.

The component that contains other components is referred to as the parent; the contained components are referred to as children.

In the unit page, a parent component appears with the display name and a View link. For example:

Image of a unit page with a parent component
Edit a Parent Component

A parent component does not directly contain content. Content such as HTML, videos, or problems are in the child components.

A parent component has a display name. When the unit is private or in draft, click Edit in the parent component to change the display name.

Note

Parent components of a specific type, such as content experiments, have additional attributes that you edit.

View Child Components

When you click View in the parent component, the parent component page opens, showing all child components. In this example, Child Component A contains an HTML component and a video:

Image of an expanded child component

Click the arrow next to a child component name to collapse it and hide the component’s contents:

Image of a child component page

Click the arrow again to expand the component.

See:

Add a Child Component

If the containing unit is private or in draft, you can add a child component in its parent component.

To add a child component, open and expand the parent component. Then click the component type that you want under Add New Component within the parent component.

Image of adding a new component

For more information, see the documentation for the specific component type that you want:

XML for Parent and Child Components

You develop parent and child components in XML, then import the XML course into Studio to verify that the structure is as you intended.

For more information about working with your course’s XML files, including information about terminology, see the edX XML Tutorial.

The following examples show the XML used to create the unit and components shown in Studio above.

The XML for the unit is:

<vertical display_name="Unit 1">
    <html url_name="6a5cf0ea41a54b209e0815147896d1b2"/>
    <vertical url_name="131a499ddaa3474194c1aa2eced34455"/>
</vertical>

The <vertical url_name="131a499ddaa3474194c1aa2eced34455"/> element above references the parent component file that contains the child components:

<vertical display_name="Parent Component">
    <vertical url_name="2758bbc495dd40d59050da15b40bd9a5"/>
    <vertical url_name="c5c8b27c2c5546e784432f3b2b6cf2ea"/>
</vertical>

The two verticals referenced by the parent component refer to the child components, which contain the actual content of your course:

<vertical display_name="Child Component A">
    <html url_name="4471618afafb45bfb86cbe511973e225"/>
    <video url_name="fbd800d0bdbd4cb69ac70c47c9f699e1"/>
</vertical>
<vertical display_name="Child Component B">
    <html url_name="dd6ef295fda74a639842e1a49c66b2c7"/>
    <problem url_name="b40ecbe4ed1b4280ae93e2a158edae6f"/>
</vertical>

Theoretically, there is no limit to the levels of component nesting you can use in your course.

The Student View of Nested Components

For students, all parent and child components are displayed on the unit page. The following example shows the student view of the unit described above:

Image of the student's view of nested components

Note

The visibility of nested components depends on the visibility of the parent unit. The parent unit must be public for students to see nested components. For more information, see Unit Publishing Status and Visibility to Students.

Reorganizing Child Components

You can reorganize child components through the same drag and drop process you use for other objects in your course outline. You hover over the element handle on the right side of the screen until the mouse pointer changes to a four- headed arrow. Then, click and drag the element to the location that you want.

Furthermore, when you have multiple levels of nesting, you can drag a child component into a different parent component, if both parents are expanded. For example, you can select the video component that is in Child Component A and drag it into Child Component B. Select the video component, and as you drag it into Child Component B, release the mouse button when a dashed outline of the component you are moving appears in the new location:

Image of dragging a child component to a new location

You can also drag a child component outside of a parent, so that the child moves to the same level as the parent.

Note

For content experiments, you cannot drag a child component outside of a test group.

Controlling Content Visibility

As course staff, you must carefully control which content is visible to students and when.

You control content visibility through these features in Studio:

These features work together to control content visibility for students.

Release Dates

You schedule release dates for sections and subsections. By default, a subsection inherits the release date of the section it is in, though you can change it to another date.

By defining release dates, you can ensure that content is available to students as planned without requiring manual intervention at that future time.

Published units are not visible to students until the scheduled release date. When the section and subsection have different release dates, published units are not visible until both dates have passed.

Prior to the release date, content is visible to course staff previewing the course or viewing the live course as staff.

See:

Unit Publishing Status

You publish units to make them visible to students. Students see the last published version of a unit if the section and subsection it is in are released.

Students do not see units that have never been published, and they do not see unpublished changes to units or components within units. Therefore, you can make changes to units in released subsections without disrupting the student experience.

For more information, see Unit Publishing Status.

You can publish all changes in a section or subsection at once, or publish changes to individual units. See:

Content Hidden from Students

You can hide content from students. Such content is never visible to students, regardless of the release and publishing status.

You might hide a unit from students, for example, when that unit contains an answer to a problem in another unit of that subsection. After the problem’s due date, you could make the unit with the answer visible.

You could also hide a unit from students if you wanted to use that unit to provide instructions or guidance meant only for course staff. Only course staff would see that unit in the course.

You can hide content at different levels:

Warning

When you make a previously hidden section or subsection visible to students, not all content in the section or subsection is necessarily made visible to students. If you also explicitly set a child subsection or unit to be hidden from students, it remains hidden from students. Unpublished units remain unpublished, and changes to published units remain unpublished.

Content Groups

If you have cohorts enabled in your course, you can use content groups to designate particular components in your course as visible only to specific groups of students.

For details, see Content Groups and Creating Cohort-Specific Courseware.

Testing Your Course Content

The way your course looks in Studio is not the way that students will see and experience it when it is live.

It is recommended that you test your content continually as you build your course, so you can interact with your course from a student’s point of view.

To test your content, you can:

Note

If you use content groups in your course to designate content as visible only to particular students, see Preview Cohort-Specific Courseware.

For information about setting up a beta test for your course, see Beta Testing a Course.

Preview Course Content

You preview course content before you publish it to test how it will look to students.

When you preview course content, you see the latest course content as configured in Studio. You see content in units with the publishing status Draft (Never published), Draft (Unpublished changes), or Visible to Staff Only.

If you use content groups and have designated components in a unit as visible only to particular groups, the visibility status indicates that some content in the unit is visible only to particular groups. For information about previewing course content if you use content groups to designate content as visible only to particular groups, see Preview Cohort-Specific Courseware.

For example, you publish a unit with a video and discussion:

A unit in Studio with a video and discussion

Students see the same content in the LMS:

A unit in the LMS with a video and discussion

You later decide to add a multiple choice problem to the unit, before the discussion:

A unit in Studio with a video, problem, and discussion

Before you publish this change, you can see what the question will look to students.

When you click Preview Changes, you see the unit in the LMS with the multiple choice question:

A unit in the LMS with a video, problem, and discussion

This preview shows how students will experience the unit after you publish the change.

In the live course, students continue to see the same content, without the multiple choice question, until you publish the change.

Note

Preview Changes in not available when the unit’s state is Published and Live, because in this case the preview and live version are exactly the same. You can view the live course to see the published content.

View Your Live Course

When you are working in Studio, you can test your course by viewing it in the LMS. In the LMS, you can see your course as a student sees it. You can see your course in Staff View or Student View. If you are using content groups to designate specific content as visible only to particular content groups, you can see your course as a content group would see it.

While you work in Studio, you can switch to your live course to see how your course appears to students in two ways.

  • From the outline page, click View Live.

    View live button on the outline
  • In a unit page, click View Live Version.

    View Live Version button on the unit page
Staff View

You see the course in the Staff View.

Image of the Courseware page in a live course with Staff View indicated at top right and a View Unit in Studio button

In Staff View:

When you view your course in Staff View, you can execute tests to make sure that your course works the way you intend. For example, before the release date of a subsection, members of the course team can work through the problems to verify that the correct answer gets a green check for correct, and that any answer other than the correct one gets a red X for incorrect.

Student View

When viewing your course in the LMS, you can use the Student view to see the course with all course content that is intended for all students.

Note

If you have enabled your course for cohorts and have designated some content as visible only to certain content groups, you can select a content group from the View Course As drop down list to see the content exactly as a student in a cohort associated with that content group will see it. For details, see Preview Cohort-Specific Courseware.

To switch to the Student view, click View this course as and select Student from the drop down list.

Image of the View Course As drop down list with Staff, Student, and named content group options

In Student View:

  • You do not see sections or subsections that have not yet been released.
  • If the section and subsection are released, you see units that are Published and Live. For units that are Draft (Unpublished changes), you see the last published version of the unit.
  • You do not see units that are Draft (Never published) or Visible to Staff Only. To see these units, you must switch back to Instructor view or use Preview mode as described in Preview Course Content.
  • You can access the Instructor Dashboard, which has features and reports that help you run your course.

Open Studio from Your Live Course

When you are viewing your course in the LMS as Staff View, you can open Studio directly.

  • In a unit page, click View Unit in Studio.

    The View Unit in Studio button in an LMS unit

    The unit page opens in Studio.

  • In the Instructor Dashboard, click View Course in Studio to open the course outline.

    Image of the Instructor Dashboard in a live course with a View Course in Studio button

    For information about the tasks you can complete on the Instructor Dashboard, see Running Your Course.

  • In the Course Progress page, click View Grading in Studio to open the Grading page.

    Image of the Course Progress page for a student with a View  Grading in Studio button

    For information about checking a student’s progress, see Review How Grading Is Configured for Your Course.

Creating Course Content

Use the chapters in this section to understand how to create course content of different types.

For information on creating exercises and tools, see Creating Exercises and Tools.

For information on how to develop your course content in the Studio Outline page, see Developing Your Course.

Working with HTML Components

HTML Component Overview

HTML, or HyperText Markup Language, is the standard markup language used to create web pages. Web browsers present HTML code in a more readable format.

When students see text and images in your course, they are seeing HTML code that is formatted and presented by their browsers. For more information about HTML, see Wikipedia.

HTML components are the basic building blocks of your course content. You use HTML components to add and format text, links, images, and more. You can choose to create HTML components directly in HTML code, or using a visual editor that hides the HTML code details, as described below.

For more information, see the following topics:

Note

Review Developing Your Course and Best Practices for HTML Markup before you start working with HTML components.

To add an instant hangout to an HTML component, see Google Instant Hangout Tool.

Options for Editing HTML Components

You can work with HTML in two ways:

  • The Visual Editor

    With the visual editor you can create, edit, and format content in a word processing-like interface, without using HTML code directly. With the visual editor, you can more easily format your content, and add links and images. The visual editor provides access to HTML code so you can make small changes to formatting, if required. However, the HTML view in the visual editor does not provide the detailed control you can get with the raw HTML editor, and does not support custom formatting or scripts.

  • The Raw HTML Editor

    With the raw HTML Editor, you work directly with HTML code. If you need to use custom formatting or scripts in your content, you should use the raw HTML editor.

Set the Editor for an HTML Component

You set the editor for an HTML component in the Settings tab:

The Editor selection drop-down list in the HTML Component Settings tab

Select Visual or Raw. When you change the editor, you must click Save and re-open the component to begin using the new editor.

Warning

If you work with content in the raw HTML editor, then switch to the visual editor, you may lose custom HTML that you created. Therefore, it is recommended that you start by using the visual editor, then switch to the raw HTML editor when you need to create custom HTML.

The Visual Editor

The visual editor provides a “what you see is what you get” (WYSIWYG) interface that allows you to format text by clicking the formatting buttons at the top of the editor.

Image of the HTML component editor

Note

The visual editor is not available for course handouts.

The following image shows call-outs for the editing options and is followed by descriptions.

Image of the HTML editor, with call-outs for formatting buttons
  1. Choose a formatting style for the selected paragraph, such as heading 1, heading 2, or paragraph.
  2. Choose a font family for selected text, such as Arial, Courier New, or Times New Roman.
  3. Format selected text in bold.
  4. Format selected text in italics.
  5. Underline selected text.
  6. Apply a color to the selected text.
  7. Format selected text as code.
  8. Create a bulleted list.
  9. Create a numbered list.
  10. Decrease and increased the indentation of the selected paragraph.
  11. Format the selected paragraph as a blockquote.
  12. Create a link from the selected text. See Add a Link in an HTML Component.
  13. Delete the current link.
  14. Insert an image at the cursor. See Add an Image to an HTML Component.
  15. Work with HTML source code, described below.
Work with HTML code in the Visual editor

To work with HTML source code for the content you create in the visual editor, click HTML in the editor toolbar. The HTML source code editor opens:

Image of the HTML source code editor

Edit the HTML code as needed.

You should not add custom styles or scripts in the HTML code view in the visual editor. Use the raw HTML editor instead.

Click OK to close the source code editor and apply your changes in the visual editor. The visual editor then attempts to ensure the underlying HTML code is valid; for example, if you do not close a paragraph tag, the editor will close it for you.

Warning

Clicking OK in the source code editor does not save your changes to the HTML component. You return to the component editor, where your changes are applied. You must then also click Save to save your changes and close the component. If you click Cancel, the changes you made in the HTML source code are lost.

The Raw HTML Editor

When you select the raw editor for the HTML component, you edit your content in a text editor:

The raw HTML editor

You must enter valid HTML. The raw HTML editor does not validate your HTML code. Therefore you should thoroughly test the HTML content in your course.

HTML Component Templates

When you create a new HTML component, you select from a list of templates:

The list of HTML Component templates

The raw HTML template is set to use the raw HTML editor. All other templates use the visual editor.

For any HTML component, you can change the editor, regardless of the template used to create the component. See Set the Editor for an HTML Component.

Create an HTML Component

To create an HTML component:

  1. Under Add New Component, click HTML.
Image of adding a new HTML component
  1. Select the template.

    The rest of these instructions assume you selected Text, which creates an empty component with the visual editor selected.

    An empty component appears at the bottom of the unit.

Image of an empty HTML component
  1. In the component, click Edit.

    The HTML component opens in the visual editor.

Image of the HTML component editor
  1. Enter and format your content. You can Work with HTML code in the Visual editor if needed.

  2. Enter a display name (the name that you want students to see). To do this, click Settings in the upper-right corner of the component editor, and then enter text in the Display Name field.

    To return to the text editor, click Editor in the upper-right corner.

  3. Click Save to save the HTML component.

When using the visual editor, you can also:

Add an Image to an HTML Component

When using the visual editor, you can add any image that you have uploaded for the course to an HTML component. For more information about uploading images, see Adding Files to a Course.

Note

Review Best Practices for Describing Images before you add images to HTML components.

To add an image, you’ll need the URL of the image that you uploaded to the course. You’ll then create a link to the image in the HTML component.

  1. On the Files & Uploads page, copy the Embed URL of the image that you want.
Image of the Files & Upload page with the Embed URL for the image circled

Note

You must use the Embed URL to add the image, not the External URL.

  1. Click the image icon in the toolbar.

  2. In the Insert image dialog box, enter the following in the Source field.

    /static/FileName.type

    Make sure to include both forward slashes (/).

    Image of the Insert image dialog box with a reference to a file
  1. Enter alternative text in the Image description field. This text becomes the value of the alt attribute in HTML and is required for your course to be fully accessible. See Best Practices for Describing Images for more information.

  2. As needed, customize the image dimensions. Keep Constrain proportions checked to ensure the image keeps the same width and height proportions.

  3. To change the spacing and border of the image, click the Advanced tab.

    Image of the Insert image dialog box Advanced tab
  4. Enter the Vertical space, Horizontal space, and Border as needed. The values you enter are automatically added to the Style field.

  5. Click OK to insert the image in the HTML component.

  6. Save the HTML component and test the image.

Import LaTeX Code into an HTML Component

You can import LaTeX code into an HTML component. You might do this, for example, if you want to create “beautiful math” such as the following.

Image of math formulas created with LaTeX

Warning

The LaTeX processor that Studio uses to convert LaTeX code to XML is a third- party tool. We recommend that you use this feature with caution. If you do use it, make sure to work with your Program Manager.

This feature is not enabled by default. To enable it, you have to change the advanced settings in your course.

To create an HTML component that contains LaTeX code:

  1. Enable the policy key in your course.
    1. In Studio, click Settings, and then click Advanced Settings.
    2. In the field for the Enable LaTeX Compiler policy key, change false to true.
    3. At the bottom of the page, click Save Changes.
  2. In the unit where you want to create the component, click html under Add New Component, and then click E-text Written in LaTeX. The new component is added to the unit.
  3. Click Edit to open the new component. The component editor opens.
Image of the HTML component editor with the LaTeX compiler.
  1. In the component editor, click Launch Latex Source Compiler. The LaTeX editor opens.

    Image of the HTML component editor with the LaTeX compiler
  2. Write LaTeX code as needed. You can also upload a LaTeX file into the editor from your computer by clicking Upload in the bottom right corner.

  3. When you have written or uploaded the LaTeX code you need, click Save & Compile to edX XML in the lower-left corner.

    The component editor closes. You can see the way your LaTeX content looks.

    Image of the LaTeX component
  4. On the unit page, click Preview to verify that your content looks the way you want it to in the LMS.

    If you see errors, go back to the unit page. Click Edit to open the component again, and then click Launch Latex Source Compiler in the lower-left corner of the component editor to edit the LaTeX code.

Working with Video Components

Introduction to Videos

You can create a video of your lecture and add it to your course with other components—such as discussions and problems—to promote active learning. Adding a video to your course has several steps.

  1. Step 1. Create the Video.
  2. Step 2. Create or Obtain a Video Transcript.
  3. Step 3. Post the Video Online.
  4. Step 4. Create a Video Component.

Also see:

Note

Review Best Practices for Accessible Media before adding videos to your course.

To help course teams protect video assets, the edX video player hides video URLs from students by default. This functionality is in effect for all video files, including YouTube videos and videos that you have posted in other locations. Students can still download videos if you select the Video Download Allowed option for your video components. For more information about posting non-YouTube videos online, see Step 3. Post the Video Online. For more information about options that you can set when you create a video component, see Advanced Options under Step 4. Create a Video Component.

Step 1. Create the Video

Your videos can contain whatever content you want to include in the course. The Creating Videos section of edX101 Overview of Creating an edX Course has some helpful pointers for creating good video content.

Compression Specifications

When you create your video, edX recommends the following compression specs. (Note that these are recommended but not required.)

Output Publish to YouTube Publish downloadable file to AWS S3
Codec H.264 .mp4 H.264 .mp4
Resolution & Frame Rate (see note) 1920x1080, progressive, 29.97 fps 1280x720, progressive, 29.97 fps
Aspect 1.0 1.0
Bit Rate VBR, 2 pass VBR, 2 pass
Target VBR 5 mbps 1 mbps
Max VBR 7.5 mbps 1.5 mbps
Audio AAC 44.1 / 192 kbps AAC 44.1 / 192 kbps

Note

Typically you export at the same frame rate that was used when you created the media file. For example, if you create the file in a country that uses the PAL system, you export at 25 fps instead of the NTSC standard of 29.97 fps.

Video Formats

The edX video player supports videos in .mp4, .webm, .mpeg, and .ogg format. However, to help make sure all standard browsers can play your video, we strongly recommend that you use the .mp4 or .webm format.

Step 2. Create or Obtain a Video Transcript

Transcripts are required for your videos. Transcripts are helpful for students who are viewing a video in a language other than their native language, who are unable to watch the video, or who want to review the content of the video. You can allow students to download transcripts so that they can read them offline. You associate a transcript with a video when you create the video component.

Timed transcripts in the SubRip Text (.srt) format are strongly recommended. A transcript in the .srt format appears next to its associated video and automatically scrolls as the video plays. A student can click a word in the transcript to jump to the point in the video where that word is spoken.

To create or obtain a transcript in .srt format, you can work with a company that provides captioning services. EdX works with 3Play Media. YouTube also provides captioning services.

When you upload an .srt file, a .txt file is created automatically. You can allow students to download these transcript files. If you allow your students to download transcripts, a Download transcript button appears under the video. Students can then select either SubRip (.srt) file or Text (.txt) file to download the .srt or .txt transcript.

Video status bar showing srt and txt transcript download options

You can also provide transcripts in different formats, such as .pdf, and you can provide transcripts in different languages. For more information about these options, see Additional Transcripts.

Note

Historically, some courses used .sjson files for video transcripts. Use of .sjson files is no longer recommended; however, if transcripts in your course use this format, see Steps for .sjson Files.

Step 3. Post the Video Online

All course videos should be posted to YouTube. By default, the edX video player accesses your YouTube videos.

Because YouTube is not available in all locations, however, we recommend that you also post copies of your videos on a third-party site such as Amazon S3. When a student views a video in your course, if YouTube is not available in that student’s location or if the YouTube video doesn’t play, the video on the backup site starts playing automatically. You can also allow the student to download the video from the backup site.

After you post your video online, make sure you have the URL for the video. If you host copies of your video in more than one place, make sure you have the URL for each video location.

YouTube

After you create your video, upload the video to YouTube.

Note

YouTube only hosts videos of up to 15 minutes. If you create a 0.75-speed option, you must make sure that your 1.0-speed video segments are only 11.25 minutes long so that YouTube can host all speeds. YouTube offers paid accounts that relax this restriction.

Other Sites

You can use any video backup site that you want. However, keep in mind that the site where you post the videos may have to handle a lot of traffic.

Note

The URL for the video that you post on a third-party site must end in .mp4, .webm, .mpeg, or .ogg. (To help make sure all standard browsers can play your video, we strongly recommend that you use .mp4 or .webm format.) EdX cannot support videos that you post on sites such as Vimeo.

Step 4. Create a Video Component

  1. Under Add New Component, click Video.

  2. When the new video component appears, click Edit. The video editor opens to the Basic tab.

    Image of the video component editor

    You replace the default values with your own.

  1. In the Component Display Name field, enter the name you want students to see when they hover the mouse over the unit in the course ribbon. This text also appears as a header for the video.

  2. In the Default Video URL field, enter the URL of the video. For example, the URL may resemble one of the following.

    http://youtu.be/OEoXaMPEzfM
    http://www.youtube.com/watch?v=OEoXaMPEzfM
    https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-G030300.mp4
    https://s3.amazonaws.com/edx-videos/edx101/video4.webm
    

Note

To be sure all students can access the video, we recommend providing both an .mp4 and a .webm version of your video. To do this, you can post additional versions of your videos on the Internet, then add the URLs for these versions below the default video URL. These URLs cannot be YouTube URLs. To add a URL for another version, click Add URLs for additional versions. The first listed video that is compatible with the student’s computer will play.

  1. Next to Default Timed Transcript, select an option.

    • If edX already has a transcript for your video–for example, if you are using a video from an existing course–Studio automatically finds the transcript and associates the transcript with the video.

      If you want to modify the transcript, click Download Transcript for Editing. You can then make your changes and upload the new file by clicking Upload New Transcript.

    • If edX does not have a transcript for the video, but YouTube has a transcript, Studio automatically finds the YouTube transcript and asks if you want to import it. To use this YouTube transcript, click Import YouTube Transcript. (If you want to modify the YouTube transcript, import the YouTube transcript into Studio, and then click Download Transcript for Editing. You can then make your changes and upload the new file by clicking Upload New Transcript.)

    • If both edX and YouTube have a transcript for your video, but the edX transcript is out of date, you receive a message asking if you want to replace the edX transcript with the YouTube transcript. To use the YouTube transcript, click Yes, replace the edX transcript with the YouTube transcript.

    • If neither edX nor YouTube has a transcript for your video, and your transcript uses the .srt format, click Upload New Transcript to upload the transcript file from your computer.

      Note

      • If your transcript uses the .sjson format, do not use this setting. For more information, see Steps for .sjson Files.
      • If you want to provide a transcript in a format such as .pdf, do not use this setting to upload the transcript. For more information, see Additional Transcripts.
  2. Optionally, click Advanced to set more options for the video. For a description of each option, see Advanced Options.

  3. Click Save.

Advanced Options

The following options appear on the Advanced tab in the video component.

Component Display Name The name that you want your students to see. This is the same as the Display Name field on the Basic tab.
Default Timed Transcript The name of the transcript file that is used in the Default Timed Transcript field on the Basic tab. This field is auto-populated. You do not have to change this setting.
Download Transcript Allowed

Specifies whether you want to allow students to download the timed transcript. If you set this value to True, a link to download the file appears below the video.

By default, Studio creates a .txt transcript when you upload an .srt transcript. Students can download the .srt or .txt versions of the transcript when you set Download Transcript Allowed to True. If you want to provide the transcript for download in a different format as well, such as .pdf, upload a file to Studio by using the Upload Handout field.

Downloadable Transcript URL

The URL for a non-.srt version of the transcript file posted on the Files & Uploads page or on the Internet. Students see a link to download the non-.srt transcript below the video.

When you add a transcript to this field, only the transcript that you add is available for download. The .srt and .txt transcripts become unavailable. If you want to provide a downloadable transcript in a format other than .srt, we recommend that you upload a handout for students by using the Upload Handout field. For more information, see Additional Transcripts.

EdX Video ID An optional field used only by course teams that are working with edX to process and host video files.
Show Transcript Specifies whether the transcript plays along with the video by default.
Transcript Languages The transcript files for any additional languages. For more information, see Transcripts in Additional Languages.
Upload Handout Allows you to upload a handout to accompany this video. Your handout can be in any format. Students can download the handout by clicking Download Handout under the video.
Video Download Allowed Specifies whether students can download versions of this video in different formats if they cannot use the edX video player or do not have access to YouTube. If you set this value to True, you must add at least one non-YouTube URL in the Video File URLs field.
Video File URLs

The URL or URLs where you posted non-YouTube versions of the video. Every URL should end in .mpeg, .webm, .mp4, or .ogg and cannot be a YouTube URL. Each student will be able to view the first listed video that is compatible with the student’s computer. To allow students to download these videos, you must set Video Download Allowed to True.

To help make sure all standard browsers can play your video, we strongly recommend that you use the .mp4 or .webm format.

Video Start Time The time you want the video to start if you do not want the entire video to play. Formatted as HH:MM:SS. The maximum value is 23:59:59.
Video Stop Time The time you want the video to stop if you do not want the entire video to play. Formatted as HH:MM:SS. The maximum value is 23:59:59.
YouTube IDs If you have uploaded separate video files to YouTube for different speeds of your video (YouTube ID for .75x speed, YouTube ID for 1.25x speed, YouTube ID for 1.5x speed), enter the YouTube IDs for these videos in these fields. These settings are optional, to support video play on older browsers.

Video Table of Contents

You can add a table of contents for your video by adding an .srt transcript file that contains clickable links to different parts of the video. When your students view the video, they can click the CC button at the bottom of the video player to switch between the main transcript for the video and the table of contents.

To add a table of contents, you work with a third-party service to create the .srt transcript file. Then, you use the Transcript Languages setting in the video component to associate the .srt file with the video.

Image of a video with a transcript that has links to different parts of the video
  1. After you obtain the .srt transcript file that will function as the table of contents, open the video component for the video.

  2. On the Advanced tab, scroll down to Transcript Languages, and then click Add.

  3. In the drop-down list that appears, select Table of Contents.

    An Upload button appears.

  4. Click Upload, browse to the .srt file for the transcript, and then click Open.

  5. In the Upload translation dialog box, click Upload.

Additional Transcripts

By default, a .txt file is created when you upload an .srt file, and students can download an .srt or .txt transcript when you set Download Transcript Allowed to True. The Download Transcript button appears below the video, and students see the .srt and .txt options when they hover over the button.

Video status bar showing srt and txt transcript download options

If you want to provide a downloadable transcript in a format such as .pdf along with the .srt and .txt transcripts, we recommend that you use the Upload Handout field. When you do this, a Download Handout button appears to the right of the Download Transcript button, and students can download the .srt, .txt, or handout version of the transcript.

Video status bar showing srt, txt, and handout transcript download options

To add a downloadable transcript by using the Upload Handout field:

  1. Create or obtain your transcript as a .pdf or in another format.
  2. In the video component, click the Advanced tab.
  3. Locate Upload Handout, and then click Upload.
  4. In the Upload File dialog box, click Choose File.
  5. In the dialog box, select the file on your computer, and then click Open.
  6. In the Upload File dialog box, click Upload.

Before Studio added the Upload Handout feature, some courses posted transcript files on the Files & Uploads page or on the Internet, and then added a link to those files in the video component. We no longer recommend this method. When you use this method, the Download Transcript button appears, but only the transcript that you add is available for download. The .srt and .txt transcripts become unavailable.

Video status bar showing Download Transcript button without srt and txt options

If you want to use this method, you can post your transcript online, and then add the URL to the transcript in the Downloadable Transcript URL field. However, bear in mind that students will not be able to download .srt or .txt transcripts.

Transcripts in Additional Languages

You can provide transcripts for your video in other languages. To do this, you work with a third-party service to obtain an .srt transcript file for each language, and then associate the .srt file with the video in Studio.

  1. After you obtain the .srt files for additional languages, open the video component for the video.

  2. On the Advanced tab, scroll down to Transcript Languages, and then click Add.

  3. In the drop-down list that appears, select the language for the transcript that you want to add.

    An Upload button appears below the language.

  4. Click Upload, browse to the .srt file for the language that you want, and then click Open.

  5. In the Upload translation dialog box, click Upload.

  6. Repeat steps 2 - 5 for any additional languages.

Note

Make sure that all your transcript file names are unique to each video and language. If you use the same transcript name in more than one video component, the same transcript will play for each video. To avoid this problem, you could name your foreign language transcript files according to the video’s file name and the transcript language.

For example, you have two videos, named video1.mp4 and video2.mp4. Each video has a Russian transcript and a Spanish transcript. You can name the transcripts for the first video video1_RU.srt and video1_ES.srt, and name the transcripts for the second video video2_RU.srt and video2_ES.srt.

When your students view the video, they can click the CC button at the bottom of the video player to select a language.

Video playing with language options visible

Steps for .sjson Files

If your course uses .sjson files, you upload the .sjson file for the video to the Files & Uploads page, and then specify the name of the .sjson file in the video component.

Note

Only older courses that have used .sjson files in the past should use .sjson files. All new courses should use .srt files.

  1. Obtain the .sjson file from a media company such as 3Play.

  2. Change the name of the .sjson file to use the following format:

    subs_{video filename}.srt.sjson

    For example, if the name of your video is Lecture1a, the name of your .sjson file must be subs_Lecture1a.srt.sjson.

  3. Upload the .sjson file for your video to the Files & Uploads page.

  4. Create a new video component.

  5. On the Basic tab, enter the name that you want students to see in the Component Display Name field.

  6. In the Video URL field, enter the URL of the video. For example, the URL may resemble one of the following.

    http://youtu.be/OEoXaMPEzfM
    http://www.youtube.com/watch?v=OEoXaMPEzfM
    https://s3.amazonaws.com/edx-course-videos/edx-edx101/EDXSPCPJSP13-G030300.mp4
    
  7. Click the Advanced tab.

  8. In the Default Timed Transcript field, enter the file name of your video. Do not include subs_ or .sjson. For the example in step 2, you would only enter Lecture1a.

  9. Set the other options that you want.

  10. Click Save.

Working with Discussion Components

Overview

You can add a Discussion component to a unit, to pose a question related to the Unit and give students a chance to respond and interact.

See the following topics:

Before you add a Discussion component, it is generally a good idea to add an HTML component that introduces the topic to be discussed. The Discussion component itself does not contain any text and may be easy for students to overlook.

Also see the following chapters:

Create a Discussion Component

  1. Under Add New Component, click Discussion.

  2. In the Discussion component that appears, click Edit.

    Image of the discussion component with the Edit button circled
  3. When the Discussion component editor opens, follow the guidelines in the editor to fill in the Category, the optional Display Name, and the Subcategory fields.

    Image of the discussion component editor with a category of "Getting Graded" and a subcategory of "Answering More Than Once"

    The value in the Display Name field identifies the discussion in the course content. The values in the Category and Subcategory fields appear in the list of discussion topics on the Discussion page. To uniquely identify the discussion in your course, each Category / Subcategory pair that you supply must be unique.

    The list of discussions with the "Answering More Than Once" topic indented under "Getting Graded"
  4. Click Save.

Warning

You should always use these steps to create a discussion component. If you create a discussion component by using the Duplicate button in Studio, both discussion components will contain the same conversations, even if users post in different discussions.

Discussion categories are immediately visible on the Discussion tab for your course when you create them, even if the unit that contains the Discussion is not published. However, an individual Discussion component is not visible until the unit is published and release dates for the section and subsection have passed. See Controlling Content Visibility for more information.

Additionally, you cannot see posts, responses, or comments in a Discussion component when you are working in Studio. To see the discussion, go to the unit that contains the Discussion component in Studio, and then click Preview or View Live under Unit Settings.

A Student’s View of the Discussion

For students, the display name for the Discussion component appears in the course ribbon at the top of the page:

Image of a unit from a student's point of view with the component list showing a discussion component

The Discussion space appears under other components in the unit. It doesn’t have a label in the body of the unit. Instead, students see “Show discussion” or “Hide discussion” on the left, and a blue New Post button on the right.

In the following example, the Discussion component follows Video and HTML components:

Image of a video component followed by a discussion component

In the Discussion tab at the top of the page, students can find the category and subcategory of the discussion in the left pane.

Image of the Discussion page from a student's point of view

Working with Problem Components

Overview of Problem Components

The problem component allows you to add interactive, automatically graded exercises to your course content. You can create many different types of problems in Studio.

All problems receive a point score, but, by default, problems do not count toward a student’s grade. If you want the problems to count toward the student’s grade, change the assignment type of the subsection that contains the problems.

This section covers the basics of Problem components: what they look like to you and your students, and the options that every problem component has. For more information about individual problem types, see Creating Exercises and Tools.

For more information, see the following topics.

The Student View of a Problem

All problems on the edX platform have several component parts.

Image of a problem from a student's point of view, with callouts for elements of the problem
  1. Problem text. The problem text can contain any standard HTML formatting.

  2. Response field with the student’s answer. Students enter answers in response fields. The appearance of the response field depends on the type of the problem.

  3. Rendered answer. For some problem types, Studio uses MathJax to render plain text as “beautiful math.”

  4. Check button. The student clicks Check to submit a response or find out if his answer is correct. If the answer is correct, a green check mark appears. If it is incorrect, a red X appears. When the student clicks the Check button, Studio saves the grade and current state of the problem.

  5. Save button. The student can click Save to save his current response without submitting it for a grade. This allows the student to stop working on a problem and come back to it later.

  6. Show Answer button. This button is optional. When the student clicks Show Answer, the student sees both the correct answer (see 2 above) and the explanation (see 10 below). The instructor sets whether the Show Answer button is visible.

  7. Attempts. The instructor may set a specific number of attempts or allow unlimited attempts for a problem. By default, the course-wide Maximum Attempts advanced setting is null, meaning that the maximum number of attempts for problems is unlimited. If the course-wide Maximum Attempts setting is changed to a specific number, the Maximum Attempts setting for individual problems defaults to that number, and cannot be set to unlimited.

    Image of a problem from a student's point of view, with callouts for attempts and showing the answer
  8. Feedback. After a student clicks Check, all problems return a green check mark or a red X.

    Image of feedback checkmark and x from a student's point of view
  9. Correct answer. Most problems require that the instructor specify a single correct answer.

  10. Explanation. The instructor may include an explanation that appears when a student clicks Show Answer.

  11. Reset button. Students can click Reset to clear any input that has not yet been submitted, and try again to answer the question. If the student has already submitted an answer, clicking Reset clears the submission and, if the problem contains randomized variables and randomization is set to On Reset, changes the values the student sees in the problem. If the number of Maximum Attempts that was set for this problem has been reached, the Reset button is not visible.

  12. Hide Answer button.

    Image of a problem in the course accordian
  13. Grading. The instructor may specify whether a group of problems is graded. If a group of problems is graded, a clock icon appears for that assignment in the course accordion.

    _images/clock_icon.png
  14. Due date. The date that the problem is due. A problem that is past due does not have a Check button. It also does not accept answers or provide feedback.

Note

Problems can be open or closed. Closed problems do not have a Check button. Students can still see questions, solutions, and revealed explanations, but they cannot check their work, submit responses, or change an earlier score.

There are also some attributes of problems that are not immediately visible. You can set these attributes in Studio.

  • Randomization. For some problems, the instructor can specify whether a problem will use randomly generated numbers that vary from student to student.
  • Weight. Different problems in a particular problem set may be given different weights.
  • Label. To improve accessibility for students who have disabilities, each problem needs a descriptive label. The label typically contains part or all of the text of the question in the problem. Most templates include a space for a label. You can find example labels in the documentation for each problem or tool type.

The Studio View of a Problem

All problems are written in XML. However, Studio offers two interfaces for editing problem components: the Simple Editor and the Advanced Editor.

  • The Simple Editor allows you to edit problems visually, without having to work with XML.
  • The Advanced Editor converts the problem to edX’s XML standard and allows you to edit that XML directly.

You can switch at any time from the Simple Editor to the Advanced Editor by clicking Advanced Editor in the top right corner of the Simple Editor interface. However, it is not possible to switch from the Advanced Editor to the Simple Editor.

The Simple Editor

Several problem templates, including multiple choice and text input problem templates, open in the Simple Editor. The following image shows a multiple choice problem in the Simple Editor.

Image of a problem in the simple editor

The Simple Editor includes a toolbar that helps you format the text of your problem. When you select text and then click the formatting buttons, the Simple Editor formats the text for you automatically. The toolbar buttons are the following:

  1. Create a level 1 heading.
  2. Create multiple choice options.
  3. Create checkbox options.
  4. Create text input options.
  5. Create numerical input options.
  6. Create dropdown options.
  7. Create an explanation that appears when students click Show Answer.
  8. Open the problem in the Advanced Editor.
  9. Open a list of formatting hints.

The following problem templates open in the Simple Editor.

  • Checkbox Problem In checkbox problems, students select one or more options from a list of possible answers.
  • Dropdown Problem In dropdown problems, students select one answer from a dropdown list.
  • Multiple Choice Problem Multiple choice problems require students to select one answer from a list of choices that appear directly below the question.
  • Numerical Input Numerical input problems require answers that include only integers, fractions, and a few common constants and operators.
  • Text Input Problem In text input problems, students enter a short text answer to a question.
The Advanced Editor

The Advanced Editor opens a problem in XML. Templates for problems such as such as drag and drop and math expression input open directly in the Advanced Editor.

The following image shows the multiple choice problem above in the Advanced Editor instead of the Simple Editor.

Image of a problem in the advanced editor

The following problem templates open in the Advanced Editor.

  • Circuit Schematic Builder Problem In circuit schematic problems, students create and modify circuits on an interactive grid and submit computer- generated analyses of the circuits for grading.
  • Custom JavaScript Problem With custom JavaScript display and grading problems, you can incorporate problem types that you’ve created in HTML into Studio via an IFrame.
  • Drag and Drop Problem Drag and drop problems require students to drag text or objects to a specific location on an image.
  • Image Mapped Input Problem Image mapped input problems require students to click a specific location on an image.
  • Math Expression Input Problems Math expression input problems require students to enter a mathematical expression as text, such as e=m*c^2.
  • Problem with Adaptive Hint These problems can give students feedback or hints based on their responses. Problems with adaptive hints can be text input or multiple choice problems.
  • Problem Written in LaTeX This problem type allows you to convert problems that you’ve already written in LaTeX into the edX format. Note that this problem type is still a prototype, however, and may not be supported in the future.
  • Write-Your-Own-Grader Problem Custom Python-evaluated input (also called “write-your-own-grader” problems evaluate students’ responses using an embedded Python script that you create. These problems can be any type.

Problem Settings

In addition to the text of the problem, problems that you create using a Problem component have the following settings. These settings appear on the Settings tab in the component editor.

  • Display Name
  • Maximum Attempts
  • Problem Weight
  • Randomization
  • Show Answer
  • Show Reset Button
Image of the Settings tab in a Problem component
Display Name

This setting indicates the name of your problem. The display name appears as a heading over the problem in the LMS and in the course ribbon at the top of the page.

Image of the problem in a unit page from a student's point of view
Maximum Attempts

This setting specifies the number of times a student is allowed to attempt answering the problem. By default, the course-wide Maximum Attempts advanced setting is null, meaning that the maximum number of attempts for problems is unlimited. If the course-wide Maximum Attempts setting is changed to a specific number, the Maximum Attempts setting for individual problems defaults to that number, and cannot be set to unlimited.

Note

Only questions that have a Maximum Attempts setting of 1 or higher are included on the Student Answer Distribution report that you can download during your course.

Problem Weight

Note

Studio stores scores for all problems, but scores only count toward a student’s final grade if they are in a subsection that is graded.

This setting specifies the maximum number of points possible for the problem. The problem weight appears next to the problem title.

Image of a problem from a student's point of view, with the possible points circled

By default, each response field, or “answer space,” in a Problem component is worth one point. Any Problem component can have multiple response fields. For example, the Problem component above contains one dropdown problem that has three separate questions for students to answer, and thus has three response fields.

The following Problem component contains one text input problem, and has just one response field.

Image of a text input problem from a student's point of view
Computing Scores

The score that a student earns for a problem is the result of the following formula:

Score = Weight × (Correct answers / Response fields)

  • Score is the point score that the student receives.
  • Weight is the problem’s maximum possible point score.
  • Correct answers is the number of response fields that contain correct answers.
  • Response fields is the total number of response fields in the problem.

Examples

The following are some examples of computing scores.

Example 1

A problem’s Weight setting is left blank. The problem has two response fields. Because the problem has two response fields, the maximum score is 2.0 points.

If one response field contains a correct answer and the other response field contains an incorrect answer, the student’s score is 1.0 out of 2 points.

Example 2

A problem’s weight is set to 12. The problem has three response fields.

If a student’s response includes two correct answers and one incorrect answer, the student’s score is 8.0 out of 12 points.

Example 3

A problem’s weight is set to 2. The problem has four response fields.

If a student’s response contains one correct answer and three incorrect answers, the student’s score is 0.5 out of 2 points.

Randomization

This setting specifies whether certain values in your problem change each time a different student accesses the problem, or each time a single student tries to answer the problem. For example, the highlighted values in the problem below change each time a student submits an answer to the problem.

The same problem shown twice, with color highlighting on values that can change

If you want to change, or “randomize,” specific values in your problem, you have to do both the following:

  • Make sure that your problem contains a Python script that randomizes the values that you want.
  • Enable randomization in the Problem component.

Note

Note that specifying this Randomization setting is different from problem randomization. The Randomization setting randomizes variables within a single problem. Problem randomization offers different problems or problem versions to different students. For more information, see Problem Randomization.

To enable randomization, select an option for the Randomization setting. This setting has the following options.

Always Students see a different version of the problem each time they click Check.
On Reset Students see a different version of the problem each time they click Reset.
Never All students see the same version of the problem. This is the default.
Per Student Individual students see the same version of the problem each time they look at it, but that version is different from the version that other students see.

Note

The edX Platform has a 20-seed limit for randomization.

Show Answer

This setting defines when the problem shows the answer to the student. This setting has the following options.

Always Always show the answer when the student clicks the Show Answer button.
Answered

Show the answer after the student tries to answer the problem.

If the question can be, and is, reset, the answer is not shown until the student tries the problem again. (When a student answers a question, the question is considered to be both attempted and answered. When the question is reset, the question is still attempted, but not yet answered.)

Attempted

Show the answer after the student tries to answer the problem.

If the question can be, and is, reset, the answer continues to show. (When a student answers a question, the question is considered to be both attempted and answered. When the question is reset, the question is still attempted, but not yet answered.)

Closed Show the answer after the student has used up all his attempts to answer the problem or the due date has passed.
Finished Show the answer after the student has answered the problem correctly, the student has no attempts left, or the problem due date has passed.
Correct or Past Due Show the answer after the student has answered the problem correctly or the problem due date has passed.
Past Due Show the answer after the due date for the problem has passed.
Never Never show the answer. In this case, the Show Answer button does not appear next to the problem in Studio or in the LMS.
Show Reset Button

This setting defines whether a Reset button is visible on the problem. Students can click Reset to clear any input that has not yet been submitted, and try again to answer the problem. If the student has already submitted an answer, clicking Reset clears the submission and, if the problem contains randomized variables and randomization is set to On Reset, changes the values the student sees in the problem. If the number of Maximum Attempts that was set for this problem has been reached, the Reset button is not visible.

This problem-level settimg overrides the course-level Show Reset Button for Problems setting.

Modifying a Released Problem

Warning

Be careful when you modify problems after they have been released! Changes that you make to published problems can affect the student experience in the course and analysis of course data.

After a student submits a response to a problem, the edX Learning Management System (LMS) stores the student’s response, the score that the student received, and the maximum score for the problem. For problems with a Maximum Attempts setting greater than 1, the LMS updates these values each time the student submits a new response to a problem. However, if an instructor changes a problem or its attributes, existing student information for that problem is not automatically updated.

For example, you may release a problem and specify that its answer is 3. After some students have submitted responses, you notice that the answer should be 2 instead of 3. When you update the problem with the correct answer, the LMS doesn’t update scores for students who answered 2 for the original problem and thus received the wrong score.

For another example, you may change the number of response fields to three. Students who submitted answers before the change have a score of 0, 1, or 2 out of 2.0 for that problem. Students who submitted answers after the change have scores of 0, 1, 2, or 3 out of 3.0 for the same problem.

If you change the weight setting for the problem in Studio, however, existing student scores update when the student’s Progress page is refreshed. In a live section, students will see the effect of these changes.

Workarounds

If you have to modify a released problem in a way that affects grading, you have two options within Studio to assure that every student has the opportunity to submit a new response and be regraded. Note that both options require you to ask your students to go back and resubmit answers to a problem.

  • In the Problem component that you changed, increase the number of attempts for the problem. Then ask all your students to redo the problem.
  • Delete the entire Problem component in Studio and create a new Problem component with the content and settings that you want. (If the revisions you must make are minor, duplicate the Problem component before you delete it and revise the copy.) Then ask all your students to complete the new problem.

For information about how to review and adjust student grades in the LMS, see Student Grades and Grading.

Additional Work with Problems

You have some further options when you work with problems. You can include more than one problem in a single problem component, or you can set up a problem that presents different versions to different students.

Multiple Problems in One Component

You may want to create a problem that has more than one response type. For example, you may want to create a numerical input problem, and then include a multiple choice question about the numerical input problem. Or, you may want a student to be able to check the answers to many problems at one time. To do this, you can include multiple problems inside a single Problem component. The problems can be different types.

Note

You cannot use a Custom JavaScript Problem in a component that contains more than one problem. Each custom JavaScript problem must be in its own component.

To create multiple problems in one component, create a new Blank Advanced Problem component, and then add the XML for each problem in the component editor. You only need to include the XML for the problem and its answers. You don’t have to include the code for other elements, such as the Check button.

Elements such as the Check, Show Answer, and Reset buttons, as well as the settings that you select for the Problem component, apply to all of the problems in that component. Thus, if you set the maximum number of attempts to 3, the student has three attempts to answer the entire set of problems in the component as a whole rather than three attempts to answer each problem individually. If a student clicks Check, the LMS scores all of the problems in the component at once. If a student clicks Show Answer, the answers for all the problems in the component appear.

Problem Randomization

You may want to present different students with different problems, or different versions of the same problem. To do this, you’ll create a Problem component for each problem or version in Studio, and then edit your course outside of Studio to randomize the problem that students see.

Note that problem randomization is different from the Randomization setting in Studio. The Randomization setting randomizes variables within a single problem. Problem randomization offers different problems or problem versions to different students.

Note

Creating problems with versions that can be randomized requires you to export your course, edit some of your course’s XML files in a text editor, and then re-import your course. We recommend that you create a backup copy of your course before you do this. We also recommend that you only edit your course files in the text editor if you’re very familiar with editing XML.

Terminology

Sections, subsections, units, and components have different names in the Course Outline view and in the list of files that you’ll see after you export your course and open the .xml files for editing. The following table lists the names of these elements in the Course Outline view and in a list of files.

Course Outline View File List
Section Chapter
Subsection Sequential
Unit Vertical
Component Discussion, HTML, problem, or video

For example, when you want to find a specific section in your course, you’ll look in the Chapter folder when you open the list of files that your course contains. To find a unit, you’ll look in the Vertical folder.

Create Randomized Problems
  1. In the unit where you want to create a randomized problem, create a separate Problem component for each version or problem that you want to randomize. For example, if you want to offer four versions or problems, you’ll create four separate Problem components. Make a note of the 32-digit unit ID that appears in the Unit Identifier field under Unit Location.

  2. Export your course. For information about how to do this, see Exporting and Importing a Course. Save the .tar.gz file that contains your course in a memorable location so that you can find it easily.

  3. Locate the .tar.gz file that contains your course, and then unpack the .tar.gz file so that you can see its contents in a list of folders and files.

    To do this on a Windows computer, you’ll need to download a third-party program. For more information, see How to Unpack a tar File in Windows, How to Extract a Gz File, The gzip Home Page, or the Windows section of the How to Open .tar.gz Files page.

    For information about how to do this on a Mac, see the Mac OS X section of the How to Open .tar.gz Files page.

  4. In the list of folders and files, open the Vertical folder.

    Note

    If your unit is not published, open the Drafts folder, and then open the Vertical folder in the Drafts folder.

  5. In the Vertical folder, locate the .xml file that has the same name as the unit ID that you noted in step 1, and then open the file in a text editor such as Sublime 2. For example, if the unit ID is e461de7fe2b84ebeabe1a97683360d31, you’ll open the e461de7fe2b84ebeabe1a97683360d31.xml file.

    The file contains a list of all the components in the unit, together with the URL names of the components. For example, the following file contains four Problem components.

    <vertical display_name="Test Unit">
       <problem url_name="d9d0ceb3ffc74eacb29501183e26ad6e"/>
       <problem url_name="ea66d875f4bf4a9898d8e6d2cc9f3d6f"/>
       <problem url_name="2616cd6324704f85bc315ec46521485d"/>
       <problem url_name="88987707294d4ff0ba3b86921438d0c0"/>
    </vertical>
    
  6. Add <randomize> </randomize> tags around the components for the problems that you want to randomize.

    <vertical display_name="Test Unit">
      <randomize>
         <problem url_name="d9d0ceb3ffc74eacb29501183e26ad6e"/>
         <problem url_name="ea66d875f4bf4a9898d8e6d2cc9f3d6f"/>
         <problem url_name="2616cd6324704f85bc315ec46521485d"/>
         <problem url_name="88987707294d4ff0ba3b86921438d0c0"/>
      </randomize>
    </vertical>
    
  7. After you add the <randomize> </randomize> tags, save and close the .xml file.

  8. Re-package your course as a .tar.gz file.

    For information about how to do this on a Mac, see How to Create a Tar GZip File from the Command Line.

    For information about how to do this on a Windows computer, see How to Make a .tar.gz on Windows.

  9. In Studio, re-import your course.

Note

  • Once you’ve implemented randomization, you can only see one of the versions or problems in Studio. You can edit that single problem directly in Studio, but to edit any of the other problems, you’ll have to export your course, edit the problems in a text editor, and then re-import the course. This is true for instructors as well as course teams.
  • A .csv file for student responses contains the responses to each of the problems in the problem bank.

Working with Content Libraries

Content Libraries Overview

In Studio, if you have course creation privileges, you can create a content library to build a pool of components that can be used in randomized assignments in your courses. You can add HTML components, problems, and video components to a library. Peer assessment and discussion components are not supported in content libraries.

Note

Content libraries are available only for courses that have course identifiers in this format: {key type}:{org}+{course}+{run}. For example, course-v1:edX+DemoX+Demo_2015. Your course identifier appears in the browser address bar as the final part of the URL when you open your course in Studio. For more details, see Create a New Course.

After creating a library and adding components to it, if you have enabled content libraries in your course, you can use these library components in randomized assignments in your course. You do this by adding a randomized content block to a course unit and indicating one or more libraries from which the randomized content is to drawn, as well as the number and type of problems that each student is assigned. If you specify more than one library from which to randomly draw components for the randomized assignment, the content from all specified libraries is combined before the random selection is made.

Libraries have separate users and levels of access from courses. Initially, only the person who created the library has access. She can add other users to the library. For details, see Give Other Users Access to Your Library. The libraries that you create or have access to are listed on the Libraries tab on the Studio Home page.

See the following sections for details about creating and managing content libraries.

See the following sections for details about using content library components in a course.

Create a New Library

Use content libraries to build a pool of components that can be used in randomized assignments in your courses. You can create content libraries if you have course creation privileges.

For information about adding other users to a library after you create it, see Give Other Users Access to Your Library.

To create a new content library, follow these steps.

  1. Log in to Studio.

  2. Click New Library.

  3. Enter the required information for your new library, then click Create.

    Note

    Enter new library information carefully. The values in these fields become part of the URL for your library, therefore the total number of characters in the Library Name, Organization, and Library Code fields must be 65 or fewer.

    Image of the library creation page
  • For Library Name, enter the public display name for your library. Choose a meaningful name that will help you and other course team members to identify the contents of the library. For example, “Level 200 Math Problems”.
  • For Organization, enter the identifier for your university. For example, enter HarvardX or MITx. Do not include spaces or special characters.
  • For Library Code, enter an identifier for your library that is unique within your organization. This code becomes part of the URL for your library, so do not include spaces or special characters in the code.
  1. Click Create.

You see the new library, to which you can now add components. For details about adding components to a library, see Add Components to a Library.

The system-generated Library ID for the new library appears in the sidebar.

The Library ID for the new library is shown the sidebar

Note

Copy or make a note of the Library ID for the new library. When you add a randomized content block to a course unit, you use the Library ID to specify this library as a source for the randomized content.

Edit a Library

After you create a library, the only change you can make to the initial library information is to the name. However, at any time, you can make changes to the components in your library, including adding or deleting components or editing the settings of components. For details about editing the contents of a library, see Edit Components in a Library and Add Components to a Library.

To change the name of a library, follow these steps.

  1. Log in to Studio.

  2. Click Libraries, then click the library whose name you want to edit.

  3. Click the Edit icon next to the library name.

    The library name field becomes editable.

The Edit icon to the right of the Library Name
  1. In the library name field, make edits or enter a new library name.
  2. Click anywhere outside the library name field to save your changes.

For details about giving other users access to the library, see Give Other Users Access to Your Library.

Add Components to a Library

To add new components to your library, follow these steps.

  1. Log in to Studio.
  2. Click Libraries, then click the library that you want to add components to.
  3. Click Add Component, then click the component type that you want to add under Add New Component.

For more information about the types of components you can add to a library, see these topics.

After you add a component to a library, you can edit its settings. These settings are retained when the component is selected from the library and used in a course.

When a component from the library is used in a randomized content block, you can further edit the component as it exists in the unit, without affecting the original version in the library. For details, refer to Edit Components in a Library and Getting the Latest Version of Library Content.

View the Contents of a Library

To view the entire contents of a library in Studio, follow these steps.

  1. Log in to Studio.
  2. Click Libraries, then click the library whose components you want to view.

The components in the library display in the order in which they were added, with the most recently added at the bottom. If your library has more than 10 components, additional components are shown on other pages.

The range of the components shown on the current page, and the total number of components, are shown at the top of the page.

You can navigate through the pages in these ways:

  • Use the < and > buttons at the top and bottom of the list to navigate to the previous and next pages.

  • At the bottom of the page, you can edit the first number in the page range. Click the number to place your cursor in the field, then enter the page number you want to jump to.

    Image showing a pair of page numbers with the first number circled

To view the list of matching components in the library, see View the Matching Components in a Randomized Content Block.

To view the randomized content as a student would see it, see View the Randomized Content as a Student.

Edit Components in a Library

After you have added components to a content library, you can edit, duplicate, or delete them.

For step-by-step instructions for editing, duplicating, or deleting components, refer to the following topics:

Note

If you modify components in your library that are in use in a course, these updates in the “source” library are not reflected in the course unless you manually update the randomized content block in the course unit. For details about updating library components used in your course to match the latest version in the content library, see Getting the Latest Version of Library Content.

Delete a Library

You cannot delete a library. Instead, you can discontinue use of an unwanted library. To do so, first make sure that none of its components are in use in any courses, then delete all components in the library. You can also edit the name of the library to make it clear to other course staff that the library should not be used as a source of randomized assignment content in courses.

For details about deleting components in a library, see Edit Components in a Library.

Give Other Users Access to Your Library

When you create a library, you are automatically assigned an Admin role in that library.

You can give other Studio users access to your library. Depending on the level of access that you give them in the library, additional library users can view and use library content in courses, edit library content, or add and manage other library users. All users to whom you give library access must be registered with Studio and have an active account.

These are the levels of access for libraries:

  • User – Users can view library content and can use library components in their courses, but they cannot edit the contents of a library.
  • Staff – Staff can use library components in their courses. In addition, as content co-authors, they have full editing privileges in a library.
  • Admin – Admins have full editing privileges for a library. In addition, they can add and remove other team members from library access. There must be at least one user with Admin privileges in a library.

Note

The levels of access for libraries are hierarchical. You can add new library members only with the User level of access, after which you can give them the Staff level of access. You can give the Admin level of access only to people who already have the Staff level of access.

Add a User to the Library

To grant a user initial User access to a library, follow these steps.

Note

Only library users with the Admin level of access can add users to the library.

  1. Ensure that the new library member has an active Studio account.

  2. On the Studio home page, click the Libraries tab and locate the library to which you are adding this user.

  3. From the Settings menu select User Access.

  4. On the User Access page, click Add a New User.

  5. Enter the new user’s email address, then click ADD USER.

    The new user is added to the list of library members with the User level of access.

Remove a User from the Library

You can remove users from the library at any time, regardless of the level of access that they have.

To remove a user from the library, follow these steps.

  1. In Studio, click the Libraries tab and locate your library.
  2. From the Settings menu select User Access.
  3. On the User Access page, locate the user that you want to remove.
  4. Hover over the user’s box and click the trash can icon.
You are prompted to confirm the deletion.
  1. Click Delete.
The user is removed from the library.
Add Staff or Admin Access

The levels of access for libraries are hierarchical. You can add new library members only with the User level of access, after which you can give them the Staff level of access. You can give the Admin level of access only to people who already have the Staff level of access.

To give a library member a higher level of access to the library, follow these steps.

  1. In Studio, click the Libraries tab and locate your library.
  2. From the Settings menu select User Access.
  3. On the User Access page, locate the user to whom you are giving additional privileges.
  • If he currently has User access, click Add Staff Access.
  • If he currently has Staff access, click Add Admin Access.

The user’s display listing is updated to indicate the new level of access. In addition, their listing now includes a button to remove their current level of access and move them back to their previous level of access. For details about reducing a user’s level of access to a library, see Remove Staff or Admin Access.

Remove Staff or Admin Access

After you have granted users Staff or Admin access, you (or other Admin library users) can reduce their levels of access.

To remove Staff or Admin access from a library user, follow these steps.

  1. In Studio, click the Libraries tab and locate your library.

  2. From the Settings menu select User Access.

  3. On the User Access page, locate the user whose access level you are changing.

    • If she currently has Staff access, click Remove Staff Access.
    • If she currently has Admin access, click Remove Admin Access.

    The user’s display listing is updated to indicate their new role.

Note

There must always be at least one Admin for a library. If there is only one user with the Admin role, you cannot remove him or her from the Admin role unless you first assign another user to the Admin role.

Creating Exercises and Tools

Use the chapters in this section to understand how to create exercises and tools in your course.

For information on how to develop your course content in the Studio Outline page, see Developing Your Course.

For information on building specific course component types, see Creating Course Content.

Creating Exercises and Tools

Introduction to Exercises and Tools

Studio allows you to create a wide variety of exercises and tools for your course. Many of these exercises and tools have templates in Studio so that you can create them easily. In addition, individual course teams frequently create exercises that don’t have templates in Studio. We’re striving to make these tools available to all our course teams as well, and we have instructions for creating some of them in this section.

Depending on the exercise or tool, you’ll use an HTML, Problem, or Advanced component. The page for each individual exercise or tool contains an example of each exercise or tool, together with all the files, code, and step-by-step instructions that you need to create the exercise or tool.

Note

Problems must include labels for accessibility. The label generally includes the text of the main question in your problem. Instructions for adding labels appear in the page for each individual problem.

General Exercises and Tools

Example annotation problem Annotation Problem Annotation problems ask students to respond to questions about a specific block of text. The question appears above the text when the student hovers the mouse over the highlighted text so that students can think about the question as they read.
Example poll Conditional Module You can create a conditional module to control versions of content that groups of students see. For example, students who answer “Yes” to a poll question then see a different block of text from the students who answer “No” to that question.
Example JavaScript problem Custom JavaScript Problem Custom JavaScript display and grading problems (also called custom JavaScript problems or JS Input problems) allow you to create a custom problem or tool that uses JavaScript and then add the problem or tool directly into Studio.
Example external grader External Grader An external grader is a service that receives student responses to a problem, processes those responses, and returns feedback and a problem grade to the edX platform. You build and deploy an external grader separately from the edX platform. An external grader is particularly useful for software programming courses where students are asked to submit complex code.
Google Calendar Google Calendar Tool You can embed a Google calendar in your course so that students see the calendar in the courseware. You can use a Google calendar to share quiz dates, office hours, or other schedules of interest to students.
Google Drive Files Tool Google Drive Files Tool You can embed a Google Drive file, such as a document, spreadsheet, or image, in your course so that students see the file in the courseware.
Google Hangout Google Instant Hangout Tool You can add the ability for students to participate in instant hangouts directly from your course. With instant hangouts, students can interact through live video and voice, share screens and watch videos together, and collaborate on documents.
Example IFrame tool IFrame Tool IFrames allow you to integrate ungraded exercises and tools from any Internet site into an HTML component in your course.
Example LTI component LTI Component LTI components allow you to add an external learning application or non-PDF textbook to Studio.
Example open response assessment Open Response Assessments In open response assessments, students receive feedback on written responses of varying lengths as well as image files that the students upload. Open response assessments include self assessment and peer assessment.
Example poll Poll Tool You can run polls in your course so that your students can share opinions on different questions.
Example problem with adaptive hint Problem with Adaptive Hint A problem with an adaptive hint evaluates a student’s response, then gives the student feedback or a hint based on that response so that the student is more likely to answer correctly on the next attempt. These problems can be text input or multiple choice problems.
Example problem written in LaTeX Problem Written in LaTeX If you have an problem that is already written in LaTeX, you can use this problem type to easily convert your code into XML.
Image of student notes in a course Student Notes Tool With student notes, students can make notes about what they read and highlight passages in the course content.
Example text input problem Text Input Problem In text input problems, students enter text into a response field. The response can include numbers, letters, and special characters such as punctuation marks.
Example word cloud Word Cloud Tool Word clouds arrange text that students enter - for example, in response to a question - into a colorful graphic that students can see.
Example write-your-own-grader problem Write-Your-Own-Grader Problem In custom Python-evaluated input (also called “write-your-own-grader”) problems, the grader uses a Python script that you create and embed in the problem to evaluates a student’s response or provide hints. These problems can be any type.

Image-Based Exercises and Tools

Example drag and drop problem Drag and Drop Problem In drag and drop problems, students respond to a question by dragging text or objects to a specific location on an image.
Example full screen image tool Full Screen Image Tool The Full Screen Image tool allows a student to enlarge an image in the whole browser window. This is useful when the image contains a large amount of detail and text that is easier to view in context when enlarged.
Example image mapped input problem Image Mapped Input Problem In an image mapped input problem, students click inside a defined area in an image. You define this area by including coordinates in the body of the problem.
Example zooming image tool Zooming Image Tool Zooming images allow you to enlarge sections of an image so that students can see the section in detail.

Multiple Choice Exercises and Tools

Example checkbox problem Checkbox Problem In checkbox problems, the student selects one or more options from a list of possible answers. The student must select all the options that apply to answer the problem correctly.
Example dropdown problem Dropdown Problem Dropdown problems allow the student to choose from a collection of answer options, presented as a dropdown list. Unlike multiple choice problems, whose answers are always visible directly below the question, dropdown problems don’t show answer choices until the student clicks the dropdown arrow.
Example multiple choice problem Multiple Choice Problem In multiple choice problems, students select one option from a list of answer options. Unlike with dropdown problems, whose answer choices don’t appear until the student clicks the drop-down arrow, answer choices for multiple choice problems are always visible directly below the question.
Example multiple choice and numerical input problem Multiple Choice and Numerical Input Problem You can create a problem that combines a multiple choice and numerical input problems. Students not only select a response from options that you provide, but also provide more specific information, if necessary.

STEM Exercises and Tools

Example chemical equation problem Chemical Equation Problem Chemical equation problems allow the student to enter text that represents a chemical equation into a text box. The grader evaluates the student’s response by using a Python script that you create and embed in the problem.
Example circuit schematic builder problem Circuit Schematic Builder Problem In circuit schematic builder problems, students can arrange circuit elements such as voltage sources, capacitors, resistors, and MOSFETs on an interactive grid. They then submit a DC, AC, or transient analysis of their circuit to the system for grading.
Example gene explorer problem Gene Explorer Tool The Gene Explorer (GeneX) simulates the transcription, splicing, processing, and translation of a small hypothetical eukaryotic gene. GeneX allows students to make specific mutations in a gene sequence, and it then calculates and displays the effects of the mutations on the mRNA and protein.
Example math expression input problem Math Expression Input Problems The more complex of Studio’s two types of math problems. In math expression input problems, students enter mathematical expressions to answer a question. These problems can include unknown variables and more complex symbolic expressions. You can specify a correct answer either explicitly or by using a Python script.
Example molecule editor problem Molecule Editor Tool The molecule editor allows students to draw molecules that follow the rules for covalent bond formation and formal charge, even if the molecules are chemically impossible, are unstable, or do not exist in living systems.
Example molecule viewer tool Molecule Viewer Tool The molecule viewer allows you to create three-dimensional representations of molecules for students to view.
Example numerical input problem Numerical Input The simpler of Studio’s two types of math problems. In numerical input problems, students enter numbers or specific and relatively simple mathematical expressions to answer a question. These problems only allow integers and a few select constants. You can specify a margin of error, and you can specify a correct answer either explicitly or by using a Python script.
Example periodic table problem Periodic Table Tool An interactive periodic table of the elements shows detailed information about each element as the student moves the mouse over the element.
Example protein builder problem Protex Protein Builder Tool The Protex protein builder asks students to create specified protein shapes by stringing together amino acids.

Annotation Problem

In an annotation problem, the instructor highlights specific text inside a larger text block and then asks questions about that text. The questions appear when students hover the mouse over the highlighted text. The questions also appear in a section below the text block, along with space for students’ responses.

Annotation problems ask students to respond to questions about a specific block of text. The question appears above the text when the student hovers the mouse over the highlighted text so that students can think about the question as they read.

Annotation problem

Create an Annotation Problem

To create an annotation problem, you’ll add the Annotation advanced component to your course, add the Instructions and Guided Discussion segments of the problem, and then the Annotation problem segment of the problem.

  1. Add the Annotation advanced component.

    1. From the Settings menu select Advanced Settings.

    2. In the field for the Advanced Module List policy key, place your cursor between the brackets.

    3. Enter the following value. Make sure to include the quotation marks.

      "annotatable"

    1. At the bottom of the page, click Save Changes.

      The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved.

    2. Return to the unit where you want to add the specialized problem. The list of possible components now contains an Advanced component.

      Image of the Add a New Component panel with the Advanced component option

2. Add the Instructions and Guided Discussion segments of the problem.

  1. In the unit where you want to create the problem, under Add New Component click Advanced.
  2. In the list of problem types, click Annotation.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with your own code.
  5. Click Save.
  1. Add the Annotation problem segment of the problem.

    1. Under the Annotation component, create a new blank Advanced Problem component.

    2. Paste the following code in the Advanced Problem component, replacing placeholders with your own information.

      <problem>
          <annotationresponse>
              <annotationinput>
                <text>PLACEHOLDER: Text of annotation</text>
                  <comment>PLACEHOLDER: Text of question</comment>
                  <comment_prompt>PLACEHOLDER: Type your response below:</comment_prompt>
                  <tag_prompt>PLACEHOLDER: In your response to this question, which tag below
                  do you choose?</tag_prompt>
                <options>
                  <option choice="incorrect">PLACEHOLDER: Incorrect answer (to make this
                  option a correct or partially correct answer, change choice="incorrect"
                  to choice="correct" or choice="partially-correct")</option>
                  <option choice="correct">PLACEHOLDER: Correct answer (to make this option
                  an incorrect or partially correct answer, change choice="correct" to
                  choice="incorrect" or choice="partially-correct")</option>
                  <option choice="partially-correct">PLACEHOLDER: Partially correct answer
                  (to make this option a correct or partially correct answer,
                  change choice="partially-correct" to choice="correct" or choice="incorrect")
                  </option>
                </options>
              </annotationinput>
          </annotationresponse>
          <solution>
            <p>PLACEHOLDER: Detailed explanation of solution</p>
          </solution>
        </problem>
      
  2. Click Save.

Checkbox Problem

In checkbox problems, the student selects one or more options from a list of possible answers. The student must select all the options that apply to answer the problem correctly. Each checkbox problem must have at least one correct answer.

Image of a checkbox problem

Create a Checkbox Problem

You can create checkbox problems in the Simple Editor or in the Advanced Editor.

Note

All problems must include labels for accessibility. The label generally includes the text of the main question in your problem. To add a label for a common problem, surround the text of the label with angle brackets pointed toward the text (>>label text<<).

Simple Editor
  1. Under Add New Component, click Problem.

  2. In the Select Problem Component Type screen, click Checkboxes on the Common Problem Types tab.

  3. In the Problem component that appears, click Edit.

  4. In the component editor, replace the default text with the text of your problem. Enter each answer option on its own line.

  5. Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).

  6. Select all the answer options, and then click the checkbox button.

    Image of the checkbox button

    When you do this, brackets appear next to each answer choice.

  7. Add an x between the brackets for the correct answer or answers.

  8. In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.

    Image of the explanation button
  9. On the Settings tab, specify the settings that you want.

  10. Click Save.

For the example problem above, the text in the Problem component is the following.

Learning about the benefits of preventative healthcare can be particularly
difficult. >>Check all of the reasons below why this may be the case.<<

[x] A large amount of time passes between undertaking a preventative measure and seeing the result.
[ ] Non-immunized people will always fall sick.
[x] If others are immunized, fewer people will fall sick regardless of a particular individual's choice to get immunized or not.
[x] Trust in healthcare professionals and government officials is fragile.

[explanation]
People who are not immunized against a disease may still not fall sick from the disease. If someone is trying to learn whether or not preventative measures against the disease have any impact, he or she may see these people and conclude, since they have remained healthy despite not being immunized, that immunizations have no effect. Consequently, he or she would tend to believe that immunization
(or other preventative measures) have fewer benefits than they actually do.
[explanation]
Advanced Editor

To create this problem in the Advanced Editor, click the Advanced tab in the Problem component editor, and then replace the existing code with the following code.

<problem>
  <p>Learning about the benefits of preventative healthcare can be particularly difficult. Check all of the reasons below why this may be the case.</p>

<choiceresponse>
  <checkboxgroup direction="vertical" label="Check all of the reasons below why this may be the case">
    <choice correct="true"><text>A large amount of time passes between undertaking a preventative measure and seeing the result.</text></choice>
    <choice correct="false"><text>Non-immunized people will always fall sick.</text></choice>
    <choice correct="true"><text>If others are immunized, fewer people will fall sick regardless of a particular individual's choice to get immunized or not.</text></choice>
    <choice correct="true"><text>Trust in healthcare professionals and government officials is fragile.</text></choice>
  </checkboxgroup>
</choiceresponse>

 <solution>
 <div class="detailed-solution">
 <p>Explanation</p>
 <p>People who are not immunized against a disease may still not fall sick from the disease. If someone is trying to learn whether or not preventative measures against the disease have any impact, he or she may see these people and conclude, since they have remained healthy despite not being immunized, that immunizations have no effect. Consequently, he or she would tend to believe that immunization (or other preventative measures) have fewer benefits than they actually do.</p>
 </div>
 </solution>
</problem>

Checkbox Problem XML

Template
<problem>
  <p>Question text</p>

<choiceresponse>

<checkboxgroup direction="vertical" label="label text">
<choice correct="false"><text>Answer option 1 (incorrect)</text></choice>
<choice correct="true"><text>Answer option 2 (correct)</text></choice>
</checkboxgroup>
</choiceresponse>

 <solution>
 <div class="detailed-solution">
 <p>Solution or Explanation Heading</p>
 <p>Solution or explanation text</p>
 </div>
 </solution>

</problem>
Tags
  • <choiceresponse> (required): Specifies that the problem contains options for students to choose from.
  • <checkboxgroup> (required): Specifies that the problem is a checkbox problem.
  • <choice> (required): Designates an answer option.

Tag: <choiceresponse>

Specifies that the problem contains options for students to choose from.

Attributes

(none)

Children

  • <checkboxgroup>

Tag: <checkboxgroup>

Specifies that the problem is a checkbox problem.

Attributes

Attribute Description
direction (optional) Specifies the orientation of the list of answers. The default is vertical.
label (required) Specifies the name of the response field.

Children

  • <choice>

Tag: <choice>

Designates an answer option.

Attributes

Attribute Description
true (at least one required) Indicates a correct answer. For checkbox problems, one or more <choice> tags can contain a correct answer.
false (at least one required) Indicates an incorrect answer.

Children

(none)

Chemical Equation Problem

The chemical equation problem type allows the student to enter text that represents a chemical equation into a text box. The system converts that text into a chemical equation below the text box. The grader evaluates the student’s response by using a Python script that you create and embed in the problem.

Image of a chemical equation response problem

Create the Chemical Equation Problem

Chemical equation problems use MathJax to create formulas. For more information about using MathJax in Studio, see A Brief Introduction to MathJax in Studio.

To create the above chemical equation problem:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Blank Advanced Problem.
  3. In the component that appears, click Edit.
  4. In the component editor, paste the code from below.
  5. Click Save.
Sample Chemical Equation Problem Code
<problem>
  <startouttext/>
  <p>Some problems may ask for a particular chemical equation. Practice by writing out the following reaction in the box below.</p>

\( \text{H}_2\text{SO}_4 \longrightarrow \text { H}^+ + \text{ HSO}_4^-\)

  <customresponse>
    <chemicalequationinput size="50" label="Enter the chemical equation"/>
    <answer type="loncapa/python">

if chemcalc.chemical_equations_equal(submission[0], 'H2SO4 -> H^+ + HSO4^-'):
    correct = ['correct']
else:
    correct = ['incorrect']

    </answer>
  </customresponse>
  <p>Some tips:</p>
  <ul>
  <li>Use real element symbols.</li>
  <li>Create subscripts by using plain text.</li>
  <li>Create superscripts by using a caret (^).</li>
  <li>Create the reaction arrow (\(\longrightarrow\)) by using "->".</li>
  </ul>

  <endouttext/>

 <solution>
 <div class="detailed-solution">
 <p>Solution</p>
 <p>To create this equation, enter the following:</p>
   <p>H2SO4 -> H^+ + HSO4^-</p>
 </div>
 </solution>
</problem>

Chemical Equation Problem XML

Template
<problem>
  <startouttext/>
  <p>Problem text</p>

  <customresponse>
    <chemicalequationinput size="NUMBER" label="LABEL TEXT"/>
    <answer type="loncapa/python">

if chemcalc.chemical_equations_equal(submission[0], 'TEXT REPRESENTING CHEMICAL EQUATION'):
    correct = ['correct']
else:
    correct = ['incorrect']

    </answer>
  </customresponse>

  <endouttext/>

 <solution>
 <div class="detailed-solution">
 <p>Solution or Explanation Header</p>
 <p>Solution or explanation text</p>
 </div>
 </solution>
</problem>
Tags
  • <customresponse>: Indicates that this problem has a custom response.
  • <chemicalequationinput>: Specifies that the answer to this problem is a chemical equation.
  • <answer type=loncapa/python>: Contains the Python script that grades the problem.

Tag: <customresponse>

Indicates that this problem has a custom response. The <customresponse> tags must surround the <chemicalequation> tags.

Attributes

(none)

Children

  • <chemicalequationinput>
  • <answer>

Tag: <chemicalequationinput>

Indicates that the answer to this problem is a chemical equation and creates a response field where the student enters an answer.

Attributes

Attribute Description
size Specifies the size of the response field, in characters.
label (required) Contains the text of the principal question in the problem.

Children

(none)

Tag: <answer>

Contains the Python script that grades the problem.

Attributes

Attribute Description
type (required) Must be “loncapa/python”.

Children

(none)

Circuit Schematic Builder Problem

In circuit schematic builder problems, students can arrange circuit elements such as voltage sources, capacitors, resistors, and MOSFETs on an interactive grid. They then submit a DC, AC, or transient analysis of their circuit to the system for grading.

Image of a circuit schematic builder

Create a Circuit Schematic Builder Problem

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Circuit Schematic Builder.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with your own code.
  5. Click Save.

Problem Code

To create the problem in the image above, paste the following code into the Advanced Editor.

<problem>
   <p>Make a voltage divider that splits the provided voltage evenly.</p>
     <schematicresponse>
     <center>
     <schematic height="500" width="600" parts="g,r" analyses="dc"
     initial_value="[["v",[168,144,0],{"value":"dc(1)","_json_":0},["1","0"]],["r",[296,120,0],{"r":"1","_json_":1},["1","output"]],["L",[296,168,3],{"label":"output","_json_":2},["output"]],["w",[296,216,168,216]],["w",[168,216,168,192]],["w",[168,144,168,120]],["w",[168,120,296,120]],["g",[168,216,0],{"_json_":7},["0"]],["view",-67.49999999999994,-78.49999999999994,1.6000000000000003,"50","10","1G",null,"100","1","1000"]]"
     />
     </center>
       <answer type="loncapa/python">
     dc_value = "dc analysis not found"
     for response in submission[0]:
       if response[0] == 'dc':
           for node in response[1:]:
               dc_value = node['output']
     if dc_value == .5:
       correct = ['correct']
     else:
       correct = ['incorrect']
     </answer>
     </schematicresponse>
   <schematicresponse>
   <p>Make a high pass filter.</p>
   <center>
   <schematic height="500" width="600" parts="g,r,s,c" analyses="ac"
   submit_analyses="{"ac":[["NodeA",1,9]]}"
   initial_value="[["v",[160,152,0],{"name":"v1","value":"sin(0,1,1,0,0)","_json_":0},["1","0"]],["w",[160,200,240,200]],["g",[160,200,0],{"_json_":2},["0"]],["L",[240,152,3],{"label":"NodeA","_json_":3},["NodeA"]],["s",[240,152,0],{"color":"cyan","offset":"0","_json_":4},["NodeA"]],["view",64.55878906250004,54.114697265625054,2.5000000000000004,"50","10","1G",null,"100","1","1000"]]"/>
   </center>
   <answer type="loncapa/python">
   ac_values = None
   for response in submission[0]:
     if response[0] == 'ac':
         for node in response[1:]:
             ac_values = node['NodeA']
   print "the ac analysis value:", ac_values
   if ac_values == None:
     correct = ['incorrect']
   elif ac_values[0][1] < ac_values[1][1]:
     correct = ['correct']
   else:
     correct = ['incorrect']
   </answer>
   </schematicresponse>
       <solution>
           <div class="detailed-solution">
               <p>Explanation</p>
               <p>A voltage divider that evenly divides the input voltage can be formed with two identically valued resistors, with the sampled voltage taken in between the two.</p>
               <p><img src="/c4x/edX/edX101/asset/images_voltage_divider.png"/></p>
               <p>A simple high-pass filter without any further constaints can be formed by simply putting a resister in series with a capacitor. The actual values of the components do not really matter in order to meet the constraints of the problem.</p>
               <p><img src="/c4x/edX/edX101/asset/images_high_pass_filter.png"/></p>
           </div>
       </solution>
</problem>

Conditional Module

Format description

The main tag of conditional module input is:

<conditional> ... </conditional>

conditional can include any number of any xmodule tags (html, video, poll, etc.) or show tags.

conditional tag

The main container for a single instance of a conditional module. The following attributes can be specified for this tag:

sources - location id of required modules, separated by ';'
[message | ""] - message for case, where one or more are not passed. Here you can use variable {link}, which generate link to required module.

[submitted] - map to `is_submitted` module method.
(pressing RESET button makes this function to return False.)

[correct] - map to `is_correct` module method
[attempted] - map to `is_attempted` module method
[poll_answer] - map to `poll_answer` module attribute
[voted] - map to `voted` module attribute
show tag

Symlink to some set of xmodules. The following attributes can be specified for this tag:

sources - location id of modules, separated by ';'

Example

Examples of conditional depends on poll
<conditional sources="i4x://MITx/0.000x/poll_question/first_real_poll_seq_with_reset" poll_answer="man"
message="{link} must be answered for this to become visible.">
    <html>
        <h2>You see this because your vote value for "First question" was "man"</h2>
    </html>
</conditional>
Examples of conditional depends on poll (use <show> tag)
<conditional sources="i4x://MITx/0.000x/poll_question/first_real_poll_seq_with_reset" poll_answer="man"
message="{link} must be answered for this to become visible.">
    <html>
        <show sources="i4x://MITx/0.000x/problem/test_1; i4x://MITx/0.000x/Video/Avi_resources; i4x://MITx/0.000x/problem/test_1"/>
    </html>
</conditional>
Examples of conditional depends on problem
<conditional sources="i4x://MITx/0.000x/problem/Conditional:lec27_Q1" attempted="True">
    <html display_name="HTML for attempted problem">You see this, cause "lec27_Q1" is attempted.</html>
</conditional>
<conditional sources="i4x://MITx/0.000x/problem/Conditional:lec27_Q1" attempted="False">
    <html display_name="HTML for not attempted problem">You see this because "lec27_Q1" is not attempted.</html>
</conditional>

Custom JavaScript Problem

Custom JavaScript display and grading problems (also called custom JavaScript problems or JS Input problems) allow you to create a custom problem or tool that uses JavaScript and then add the problem or tool directly into Studio. When you create a JS Input problem, Studio embeds the problem in an inline frame (IFrame) so that your students can interact with it in the LMS. You can grade your students’ work using JavaScript and some basic Python, and the grading is integrated into the edX grading system.

The JS Input problem that you create must use HTML, JavaScript, and cascading style sheets (CSS). You can use any application creation tool, such as the Google Web Toolkit (GWT), to create your JS Input problem.

Image of a JavaScript Input problem

Caution

You cannot use a custom JavaScript problem in a component that contains more than one problem. Each custom JavaScript problem must be in its own component. See Multiple Problems in One Component for more information.

Create a Custom JavaScript Display and Grading Problem

  1. Create your JavaScript application, and then upload all files associated with that application to the Files & Uploads page.

  2. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.

  3. Click Custom JavaScript Display and Grading.

  4. In the component that appears, click Edit.

  5. In the component editor, modify the example code according to your problem.

    • All problems have more than one element. Most problems conform to the same-origin policy (SOP), meaning that all elements have the same protocol, host, and port. For example, http://store.company.com:81/subdirectory_1/JSInputElement.html and http://store.company.com:81/subdirectory_2/JSInputElement.js have the same protocol (http), host (store.company.com), and port (81).

      If any elements of your problem use a different protocol, host, or port, you need to bypass the SOP. For example, https://info.company.com/JSInputElement2.html uses a different protocol, host, and port. To bypass the SOP, change sop=”false” in line 8 of the example code to sop=”true”. For more information, see the same-origin policy page on the Mozilla Developer Network or on Wikipedia.

  6. If you want your problem to have a Save button, click the Settings tab, and then set Maximum Attempts to a number larger than zero.

  7. Click Save.

Re-create the Example Problem

To re-create the example problem above, you’ll need the following files.

  • webGLDemo.html
  • webGLDemo.js
  • webGLDemo.css
  • three.min.js

To download these files in a .zip archive, go to http://files.edx.org/JSInput.zip.

Note

If you need to bypass the SOP, you’ll also need the jschannel.js file, and your webGLDemo.html file will be slightly different. To download all these files in a .zip archive, go to http://files.edx.org/JSInput_BypassSOP.zip.

  1. Download and unpackage the files in either the JSInput.zip file or the JSInput_BypassSOP.zip file.
  2. On the Files & Uploads page, upload all the files from the .zip file.
  3. Create a new custom JavaScript display and grading problem component.
  4. On the Settings tab, set Maximum Attempts to a number larger than zero.
  5. In the problem component editor, replace the example code with the code below.
  6. Click Save.
JavaScript Input Problem Code
<problem display_name="webGLDemo">
In the image below, click the cone.

<script type="loncapa/python">
import json
def vglcfn(e, ans):
    '''
    par is a dictionary containing two keys, "answer" and "state"
    The value of answer is the JSON string returned by getGrade
    The value of state is the JSON string returned by getState
    '''
    par = json.loads(ans)
    # We can use either the value of the answer key to grade
    answer = json.loads(par["answer"])
    return answer["cylinder"]  and not answer["cube"]
    # Or we can use the value of the state key
    '''
    state = json.loads(par["state"])
    selectedObjects = state["selectedObjects"]
    return selectedObjects["cylinder"] and not selectedObjects["cube"]
    '''
</script>
<customresponse cfn="vglcfn">
    <jsinput
        gradefn="WebGLDemo.getGrade"
        get_statefn="WebGLDemo.getState"
        set_statefn="WebGLDemo.setState"
        width="400"
        height="400"
        html_file="/static/webGLDemo.html"
    />
</customresponse>
</problem>

Note

When you create this problem, keep the following in mind.

  • The webGLDemo.js file defines the three JavaScript functions (WebGLDemo.getGrade, WebGLDemo.getState, and WebGLDemo.setState).
  • The JavaScript input problem code uses WebGLDemo.getGrade, WebGLDemo.getState, and WebGLDemo.setState to grade, save, or restore a problem. These functions must be global in scope.
  • WebGLDemo.getState and WebGLDemo.setState are optional. You only have to define these functions if you want to conserve the state of the problem.
  • Width and height represent the dimensions of the IFrame that holds the application.
  • When the problem opens, the cone and the cube are both blue, or “unselected.” When you click either shape once, the shape becomes yellow, or “selected.” To unselect the shape, click it again. Continue clicking the shape to select and unselect it.
  • The response is graded as correct if the cone is selected (yellow) when the user clicks Check.
  • Clicking Check or Save registers the problem’s current state.

JavaScript Input Problem XML

JSInput allows problem authors to turn stand-alone HTML files into problems that can be integrated into the edX platform. Since its aim is flexibility, it can be seen as the input and client-side equivalent of CustomResponse.

A JSInput exercise creates an IFrame in a static HTML page, and passes the return value of author-specified functions to the enclosing response type (generally CustomResponse). JSInput can also store and retrieve state.

Template

The following is the basic format of a JSInput problem:

<problem>
       <script type="loncapa/python">
def all_true(exp, ans): return ans == "hi"
       </script>
       <customresponse cfn="all_true">
           <jsinput gradefn="gradefn"
               height="500"
               get_statefn="getstate"
               set_statefn="setstate"
               html_file="/static/jsinput.html"/>
       </customresponse>
</problem>

The accepted attributes are:

Attribute Name Value Type Required Default
html_file URL string Yes None
gradefn Function name Yes gradefn
set_statefn Function name No None
get_statefn Function name No None
height Integer No 500
width Integer No 400
Required Attributes
  • html_file

    The html_file attribute specifies the HTML file that the IFrame will point to. The HTML file must be located in the content directory.

    The IFrame is created using the sandbox attribute. Although pop-ups, scripts, and pointer locks are allowed, the IFrame cannot access its parent’s attributes.

    The HTML file must contain a gradefn function that the JSInput file can access. To determine whether the gradefn function is accessible, in the console, make sure that gradefn returns the right thing. When JSInput uses the gradefn function, gradefn is called with gradefn.call(obj), where obj is the object-part of gradefn. For example, if gradefn is myprog.myfn, JSInput calls myprog.myfun.call(myprog). (This is to ensure “this” continues to refer to what gradefn expects.)

    Aside from that, more or less anything goes. Note that currently there is no support for inheriting CSS or JavaScript from the parent (aside from the Chrome-only seamless attribute, which is set to True by default).

  • gradefn

    The gradefn attribute specifies the name of the function that will be called when a user clicks Check, and that returns the student’s answer. Unless both the get_statefn and set_statefn attributes are also used, this answer is passed as a string to the enclosing response type. In the customresponse example above, this means cfn will be passed this answer as ans.

    If the gradefn function throws an exception when a student attempts to submit a problem, the submission is aborted, and the student receives a generic alert. The alert can be customised by making the exception name Waitfor Exception; in that case, the alert message will be the exception message.

    Important

    To make sure the student’s latest answer is passed correctly, make sure that the gradefn function is not asynchronous. Additionally, make sure that the function returns promptly. Currently the student has no indication that her answer is being calculated or produced.

Optional Attributes
  • set_statefn

    Sometimes a problem author will want information about a student’s previous answers (“state”) to be saved and reloaded. If the attribute set_statefn is used, the function given as its value will be passed the state as a string argument whenever there is a state, and the student returns to a problem. The function has the responsibility to then use this state approriately.

    The state that is passed is:

    • The previous output of gradefn (i.e., the previous answer) if get_statefn is not defined.
    • The previous output of get_statefn (see below) otherwise.

    It is the responsibility of the iframe to do proper verification of the argument that it receives via set_statefn.

  • get_statefn

    Sometimes the state and the answer are quite different. For instance, a problem that involves using a javascript program that allows the student to alter a molecule may grade based on the molecule’s hydrophobicity, but from the hydrophobicity it might be incapable of restoring the state. In that case, a separate state may be stored and loaded by set_statefn. Note that if get_statefn is defined, the answer (i.e., what is passed to the enclosing response type) will be a json string with the following format:

    {
        answer: `[answer string]`
        state: `[state string]`
    }
    

    The enclosing response type must then parse this as json.

  • height and width

    The height and width attributes are straightforward: they specify the height and width of the IFrame. Both are limited by the enclosing DOM elements, so for instance there is an implicit max-width of around 900.

    In the future, JSInput may attempt to make these dimensions match the HTML file’s dimensions (up to the aforementioned limits), but currently it defaults to 500 and 400 for height and width, respectively.

Drag and Drop Problem

In drag and drop problems, students respond to a question by dragging text or objects to a specific location on an image.

Image of a drag and drop problem

Create a Drag and Drop Problem

To create a simple drag and drop problem in which students drag labels onto an image, you’ll upload the image that you want students to drag labels onto, and then create a Problem component.

  1. On the Files & Uploads page, upload your image file. For more information about uploading files, see Adding Files to a Course.

  2. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.

  3. Click Drag and Drop.

  4. In the component that appears, click Edit.

  5. In the component editor, replace the example text with the text of your problem.

  6. In the <drag_and_drop_input> tag, replace https://studio.edx.org/c4x/edX/DemoX/asset/L9_buckets.png with the URL of your image file on the Files & Uploads page (for example, /static/Image.png).

  7. For at least one <draggable> tag, replace the text of the label attribute with the text of the label you want students to drag. For example, if you want students to drag the word “Iceland” onto your image, the new tag would resemble the following:

    <draggable id="1" label="Iceland"/>

  1. Repeat the previous step for all the labels that you want to use. Make sure that the id attribute is different for each <draggable> tag.

  2. Determine the coordinates and radius of the correct area on the image.

  3. Under correct_answer = {, add an entry for each label, using the following format. These values are in pixels:

    'id':    [[x coordinate, y coordinate], radius]

    For example, if your image is 600 pixels wide and 400 pixels high, and you want your students to drag the Iceland label to an area in the upper-left part of the image and drag a Sweden label near the lower-right part of your image, the code would resemble the following (where 2 is the ID for the Sweden label):

    correct-answer = {
            '1':    [[50, 50], 75]
            '2':    [[550, 350], 75]}
    

    Note

    Make sure the code contains the closing curly brace (}).

  4. Click Save.

Sample Drag and Drop Problem Code

To create the drag and drop problem that appears in the image above, you’ll download two files from edX, upload these files to to the Files & Uploads page, and then add the code for the problem to a Problem component.

  1. Download the following files from edX:
  • Allopurinol.gif
  • AllopurinolAnswer.gif

To download both these files in a .zip archive, click http://files.edx.org/DragAndDropProblemFiles.zip.

  1. Upload the Allopurinol.gif and AllopurinolAnswer.gif files to the Files & Uploads page.
  2. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  3. Click Drag and Drop.
  4. In the component that appears, click Edit.
  5. In the component editor, replace the example code with the following code.
  6. Click Save.

Problem Code:

<problem>
  <p> Allopurinol is a drug used to treat and prevent gout, a very painful form of arthritis. Once only a “rich man’s disease”, gout has become more and more common in recent decades – affecting about 3 million people in the United States alone. Deposits of needle-like crystals of uric acid in connective tissue or joint spaces cause the symptoms of swelling, stiffness and intense pain. Individuals with gout overproduce uric acid because they cannot eliminate it efficiently. Allopurinol treats and prevents gout by stopping the overproduction of uric acid through inhibition of an enzyme required for the synthesis of uric acid. </p>
  <p> You are shown one of many possible molecules. On the structure of allopurinol below, identify the functional groups that are present by dragging the functional group name listed onto the appropriate target boxes on the structure. If you want to change an answer, you have to drag off the name as well. You may need to scroll through the names of functional groups to see all options. </p>
  <customresponse>
    <drag_and_drop_input no_labels="true" one_per_target="true" target_outline="true" img="/static/Allopurinol.gif">
      <draggable can_reuse="true" label="methyl" id="1"/>
      <draggable can_reuse="true" label="hydroxyl" id="2"/>
      <draggable can_reuse="true" label="amino" id="3"/>
      <draggable can_reuse="true" label="carboxyl" id="4"/>
      <draggable can_reuse="true" label="aldehyde" id="5"/>
      <draggable can_reuse="true" label="phosphate" id="6"/>
      <draggable can_reuse="true" label="sulfhydryl" id="7"/>
      <draggable can_reuse="true" label="phenyl" id="8"/>
      <draggable can_reuse="true" label="none" id="none"/>
      <target id="0" h="53" w="66" y="55.100006103515625" x="131.5"/>
      <target id="1" h="113" w="55" y="140.10000610351562" x="181.5"/>
    </drag_and_drop_input>
    <answer type="loncapa/python">
correct_answer = [ {'draggables': ['2'], 'targets': ['0' ], 'rule':'unordered_equal' },
{'draggables': ['none'], 'targets': ['1' ], 'rule':'unordered_equal' }]
if draganddrop.grade(submission[0], correct_answer):
    correct = ['correct']
else:
    correct = ['incorrect']
    </answer>
  </customresponse>
  <solution>
    <img src="/static/AllopurinolAnswer.gif"/>
  </solution>
</problem>

Drag and Drop Problem XML

<problem>
    Here's an example of a "Drag and Drop" question set. Click and drag each word in the scrollbar below, up to the numbered bucket which matches the number of letters in the word.
    <customresponse>
        <drag_and_drop_input img="https://studio.edx.org/c4x/edX/DemoX/asset/L9_buckets.png">
            <draggable id="1" label="a"/>
            <draggable id="2" label="cat"/>
            <draggable id="3" label="there"/>
            <draggable id="4" label="pear"/>
            <draggable id="5" label="kitty"/>
            <draggable id="6" label="in"/>
            <draggable id="7" label="them"/>
            <draggable id="8" label="za"/>
            <draggable id="9" label="dog"/>
            <draggable id="10" label="slate"/>
            <draggable id="11" label="few"/>
        </drag_and_drop_input>
        <answer type="loncapa/python">
           correct_answer = {
               '1':      [[70, 150], 121],
               '6':      [[190, 150], 121],
               '8':      [[190, 150], 121],
               '2':      [[310, 150], 121],
               '9':      [[310, 150], 121],
               '11':     [[310, 150], 121],
               '4':      [[420, 150], 121],
               '7':      [[420, 150], 121],
               '3':      [[550, 150], 121],
               '5':      [[550, 150], 121],
               '10':     [[550, 150], 121]}
               if draganddrop.grade(submission[0], correct_answer):
                   correct = ['correct']
               else:
                   correct = ['incorrect']
        </answer>
    </customresponse>
    <customresponse>
        <text>
            <h2>Drag and Drop with Outline</h2>
            <p>Please label hydrogen  atoms connected with left carbon atom.</p>
        </text>
        <drag_and_drop_input img="https://studio.edx.org/c4x/edX/DemoX/asset/ethglycol.jpg" target_outline="true" one_per_target="true" no_labels="true" label_bg_color="rgb(222, 139, 238)">
            <draggable id="1" label="Hydrogen" />
            <draggable id="2" label="Hydrogen" />
            <target id="t1_o" x="10" y="67" w="100" h="100"/>
            <target id="t2" x="133" y="3" w="70" h="70"/>
            <target id="t3" x="2" y="384" w="70" h="70"/>
            <target id="t4" x="95" y="386" w="70" h="70"/>
            <target id="t5_c" x="94" y="293" w="91" h="91"/>
            <target id="t6_c" x="328" y="294" w="91" h="91"/>
            <target id="t7" x="393" y="463" w="70" h="70"/>
            <target id="t8" x="344" y="214" w="70" h="70"/>
            <target id="t9_o" x="445" y="162" w="100" h="100"/>
            <target id="t10" x="591" y="132" w="70" h="70"/>
        </drag_and_drop_input>
        <answer type="loncapa/python">
            correct_answer = [{
                'draggables': ['1', '2'],
                'targets': ['t2', 't3', 't4' ],
                'rule':'anyof'
            }]
            if draganddrop.grade(submission[0], correct_answer):
                correct = ['correct']
            else:
                correct = ['incorrect']
        </answer>
    </customresponse>
</problem>
Tags
  • <customresponse>: Indicates that the problem is a custom response problem.
  • <drag_and_drop_input>: Indicates the custom response problem is a drag and drop problem.
  • <draggable>: Specifies a single object that a student will drag onto the base image.
  • <target>: Specifies the location on the base image where a draggable must be dropped.

Tag: <drag_and_drop_input>

Attributes

Attribute Description
img (required) Relative path to an image that will be the base image. All draggables can be dragged onto it.
target_outline Specifies whether an outline (gray dashed line) should be drawn around targets (if they are specified). It can be either ‘true’ or ‘false’. If not specified, the targets do not have outlines.
one_per_target Specify whether to allow more than one draggable to be placed onto a single target. It can be either ‘true’ or ‘false’. If not specified, the default value is ‘true’.
no_labels (required) default is false, in default behaviour if label is not set, label is obtained from id. If no_labels is true, labels are not automatically populated from id, and one can not set labels and obtain only icons.

Children

  • <draggable>
  • <target>

Tag: <draggable>

Specifies a single draggable object in a drag and drop problem.

A draggable is what the user must drag out of the slider and drop onto the base image. After a drag operation, if the center of the draggable is located outside the rectangular dimensions of the image, it will be returned to the slider.

For the grader to work, each draggable must have a unique ID.

Attributes

Attribute Description
id (required) Unique identifier of the draggable object.
label (optional) Text label that the user sees.
icon (optional) For draggables that are images, the relative path to the image file.
can_reuse true or false, default is false. If true, same draggable can be used multiple times.

Children

(none)

Tag: <target>

Specifies the location on the base image where a student must drop a draggable item. By design, if the center of a draggable lies within the target (i.e. in the rectangle defined by [[x, y], [x + w, y + h]], it is within the target. Otherwise, it is outside.

If you specify at least one target, and a student drops a draggable item on a location that is outside a target, the draggable item returns to the slider.

If you don’t specify a target, a student can drop a draggable item anywhere on the base image.

Attributes

Attribute Description
id (required) Unique identifier of the target object.
x X-coordinate on the base image where the top left corner of the target will be positioned.
y Y-coordinate on the base image where the top left corner of the target will be positioned.
w Width of the target, in pixels.
h Height of the target, in pixels.

Children

(none)

Targets on Draggables

Sometimes it is not enough to have targets only on the base image, and all of the draggables on these targets. If a complex problem exists where a draggable must become itself a target (or many targets), then the following extended syntax can be used:

<draggable {attribute list}>
    <target {attribute list} />
    <target {attribute list} />
    <target {attribute list} />
    ...
</draggable>

The attribute list in the tags above (draggable and target) is the same as for normal draggable and target tags. The only difference is when you will be specifying inner target position coordinates. Use the x and y attributes to set the offset of the inner target from the upper-left corner of the parent draggable (that contains the inner target).

Limitations of targets on draggables
  • Currently there is a limitation to the level of nesting of targets.

    Even though you can pile up a large number of draggables on targets that themselves are on draggables, the Drag and Drop problem will be graded only if there is a maximum of two levels of targets. The first level are the base targets. They are attached to the base image. The second level are the targets defined on draggables.

  • Another limitation is that the target bounds are not checked against other targets.

    You must make sure that there is no overlapping of targets. You should also ensure that targets on draggables are smaller than the actual parent draggable. Technically this is not necessary, but from the usability perspective it is desirable.

  • You can have targets on draggables only in the case when there are base targets defined (base targets are attached to the base image).

    If you do not have base targets, then you can only have a single level of nesting (draggables on the base image). In this case the client side will be reporting (x,y) positions of each draggable on the base image.

Correct answer format

For specifying answers for targets on draggables, see Answer format for targets on draggables.

There are two correct answer formats: short and long

In short form, the correct answer is mapping of draggable_id to target_id:

correct_answer = {'grass':     [[300, 200], 200], 'ant': [[500, 0], 200]}
correct_answer = {'name4': 't1', '7': 't2'}

In long form, the correct answer is list of dicts. Every dict has 3 keys: draggables, targets and rule. For example:

correct_answer = [
{
  'draggables':   ['7', '8'],
  'targets':  ['t5_c', 't6_c'],
  'rule': 'anyof'
},
{
  'draggables': ['1', '2'],
  'targets': ['t2_h', 't3_h', 't4_h', 't7_h', 't8_h', 't10_h'],
  'rule': 'anyof'
}]

“Draggables” is the list of draggable IDs. “Target” is the list of target IDs that draggables must be dragged to.

Caution

Draggables in dicts inside correct_answer list must not intersect.

Wrong (for draggable id 7):

correct_answer = [
{
  'draggables':   ['7', '8'],
  'targets':  ['t5_c', 't6_c'],
  'rule': 'anyof'
},
{
  'draggables': ['7', '2'],
  'targets': ['t2_h', 't3_h', 't4_h', 't7_h', 't8_h', 't10_h'],
  'rule': 'anyof'
}]

Rules are:

  • exact: Targets for draggable IDs in user_answer are the same as targets from the correct answer. For example, for draggables 7 and 8, the user must drag 7 to target1 and 8 to target2 if the correct_answer is:

    correct_answer = [
      {
      'draggables':   ['7', '8'],
      'targets':  ['tartget1', 'target2'],
      'rule': 'exact'
    }]
    
  • unordered_equal: Allows draggables be dragged to targets unordered. For students to drag 7 to target1 or target2 and 8 to target2 or target1 and 7 and 8 must be in different targets, then correct answer must be:

    correct_answer = [
    {
      'draggables':   ['7', '8'],
      'targets':  ['tartget1', 'target2'],
      'rule': 'unordered_equal'
    }]
    
  • anyof: Allows draggables to be dragged to any target. For students to drag 7 and 8 to target1 or target2, any of these are correct with the anyof rule:

    correct_answer = [
    {
      'draggables':   ['7', '8'],
      'targets':  ['tartget1', 'target2'],
      'rule': 'anyof'
    }]
    

If can_reuse is true, then you have draggables a,b,c and 10 targets. These will allow you to drag 4 a draggables to [target1, target4, target7, target10]; you do not need to write a four times. Also this will allow you to drag the b draggable to target2 or target5 for target5 and target2.:

correct_answer = [
    {
      'draggables': ['a'],
      'targets': ['target1',  'target4', 'target7', 'target10'],
      'rule': 'unordered_equal'
    },
    {
      'draggables': ['b'],
      'targets': ['target2', 'target5', 'target8'],
      'rule': 'anyof'
    },
    {
      'draggables': ['c'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'unordered_equal'
    }]

Sometimes you want to allow students to drag only two b draggables. In this case you should use the anyof+number or unordered_equal+number rule:

correct_answer = [
    {
      'draggables': ['a', 'a', 'a'],
      'targets': ['target1',  'target4', 'target7'],
      'rule': 'unordered_equal+number'
    },
    {
      'draggables': ['b', 'b'],
      'targets': ['target2', 'target5', 'target8'],
      'rule': 'anyof+number'
    },
    {
      'draggables': ['c'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'unordered_equal'
    }]

When there are no multiple draggables per targets (one_per_target=``true``), for the same number of draggables, anyof is equal to unordered_equal.

If can_reuse=true, then you must use only the long form of the correct answer.

Answer format for targets on draggables

As with the cases described above, an answer must provide precise positioning for each draggable (on which targets it must reside). In the case when a draggable must be placed on a target that itself is on a draggable, then the answer must contain the chain of target-draggable-target.

For example, suppose we have three draggables - up, s, and p. Draggables s and p have targets on themselves. More specifically, p has three targets - 1, 2, and 3. The first requirement is that s and p are positioned on specific targets on the base image. The second requirement is that draggable up is positioned on specific targets of draggable p. Below is an excerpt from a problem:

<draggable id="up" icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" />

<draggable id="s" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s orbital" can_reuse="true" >
    <target id="1" x="0" y="0" w="32" h="32"/>
</draggable>

<draggable id="p" icon="/static/images/images_list/lcao-mo/orbital_triple.png" can_reuse="true" label="p orbital" >
  <target id="1" x="0" y="0" w="32" h="32"/>
  <target id="2" x="34" y="0" w="32" h="32"/>
  <target id="3" x="68" y="0" w="32" h="32"/>
</draggable>

...

correct_answer = [
    {
      'draggables': ['p'],
      'targets': ['p-left-target', 'p-right-target'],
      'rule': 'unordered_equal'
    },
    {
      'draggables': ['s'],
      'targets': ['s-left-target', 's-right-target'],
      'rule': 'unordered_equal'
    },
    {
      'draggables': ['up'],
      'targets': ['p-left-target[p][1]', 'p-left-target[p][2]', 'p-right-
         target[p][2]', 'p-right-target[p][3]',],
      'rule': 'unordered_equal'
    }
]

Note that you must specify rules for all draggables, even if a draggable gets included in more than one chain.

Grading logic

  1. The student’s answer and the correct answer are parsed to the same format:

    group_id: group_draggables, group_targets, group_rule
    

group_id is ordinal number, for every dict in correct answer incremental group_id is assigned: 0, 1, 2, ...

Draggables from the user answer are added to the same group_id where identical draggables from the correct answer are, for example:

If correct_draggables[group_0] = [t1, t2] then
user_draggables[group_0] are all draggables t1 and t2 from the user answer:
[t1] or [t1, t2] or [t1, t2, t2] etc..
  1. For every group from the user answer, for that group’s draggables, if number is in the group rule, set() is applied. If number is not in rule, set is not applied:

    set() : [t1, t2, t3, t3] -> [t1, t2, ,t3]
    
For every group, at this step, draggables lists are equal.
  1. For every group, lists of targets are compared using the rule for that group.
Set and +number cases

set() and +number are needed only for the case of reusable draggables. For other cases there are no equal draggables in list, so set() does nothing.

  • The set() operation allows you to create a rule for the case of “any number of the same draggable can be dragged to targets”:

    {
      'draggables': ['draggable_1'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'anyof'
    }
    
  • The number rule is used for the case of reusable draggables, when you want to fix number of draggable to drag. In this example only two instances of draggables_1 are allowed to be dragged:

    {
      'draggables': ['draggable_1', 'draggable_1'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'anyof+number'
    }
    
  • Note, that in using rule exact, one does not need number, because you cannot recognize from the user interface which reusable draggable is on which target. For example:

    {
      'draggables': ['draggable_1', 'draggable_1', 'draggable_2'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'exact'
    }
    
    
    Correct handling of this example is to create different rules for
    draggable_1 and draggable_2.
    
  • For unordered_equal (or exact) you don’t need number if you have only the same draggable in the group, as the target length will provide the constraint for the number of draggables:

    {
      'draggables': ['draggable_1'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'unordered_equal'
    }
    

    This means that only draggable_1 can be dragged.

  • But if you have more than one different reusable draggable in the list, you may use the number rule:

    {
      'draggables': ['draggable_1', 'draggable_1', 'draggable_2'],
      'targets': ['target3', 'target6', 'target9'],
      'rule': 'unordered_equal+number'
    }
    

If you do not use number, the draggables list will be set to [draggable_1, draggable_2].

External Grader

Overview

An external grader is a service that receives student responses to a problem, processes those responses, and returns feedback and a problem grade to the edX platform. You build and deploy an external grader separately from the edX platform.

See the following sections for more information:

External Grader Example

An external grader is particularly useful for software programming courses where students are asked to submit complex code. The grader can run tests that you define on that code and return results to a student.

For example, you define a problem that requires students to submit Python code, and create a set of tests that an external grader can run to verify the submissions. When a student enters Python code for the problem and clicks Check, the code is sent to the grader for testing. If the code passes all tests, the grader returns the score and a string indicating that the solution is correct.

Image of a students view of a programming problem that uses an external grader, with a correct result

The external grader can return a string with results, which the student can see by clicking See full output. This can be particularly useful when the solution is not correct and you want to return information about the failed tests. For example:

Image of a students view of a programming problem that uses an external grader, with a correct result

External Graders and XQueue

The edX Platform communicates with your external grader through XQueue. XQueue provides students’ input to the grader; it then receives results from the grader and returns them to students.

Student submissions are collected in XQueue, where they remain until the grader actively retrieves, or pulls, the next submission from the queue for grading.

The external grader polls the XQueue through a RESTful interface at a regular interval. When the external grader pulls a submission, it runs the tests on it, then pushes the response back to XQueue through the RESTful interface. XQueue then delivers the response to the edX Learning Management System.

For example code of an external grader that uses Pull mode, see the Stanford-Online repository xqueue_pull_ref.

External Grader Workflow

The following steps show the complete process:

  1. The student either enters code or attaches a file for a problem, then clicks Check.
  2. The external grader pulls the code from XQueue.
  3. The external grader runs the tests that you created on the code.
  4. The external grader returns the grade for the submission, as well as any results in a string, to XQueue.
  5. The XQueue delivers the results to the edX Learning Management System.
  6. The student sees the problem results and the grade.
The XQueue Name

Your course will use a specific XQueue name. You use this name when creating problems in edX Studio. You get this name from your edX Program Manager. As edX hosts many XQueues for different courses, it is critical that you use the exact XQueue name in your problems, as described in the section Create a Code Response Problem.

The XQueue Interface

The student submission sent from XQueue to the grader, and the response sent from the grader to XQueue, are JSON objects, as described below.

Note

XQueue does not send the the student ID to the external grader. Your grader cannot access student IDs or associate student IDs with submissions.

For the code for the XQueue interface, see the file urls.py in the edX XQueue repository.

Inputs to the External Grader

The grader receives student submissions as a JSON object with two keys:

  • student_response: A string containing the student’s code submission. The string comes from either input the student enters in the edX Learning Management System or a file the student attaches.
  • grader_payload: An optional string that you can specify when creating the problem. For more information, see the section Create a Code Response Problem.

For example:

{
  "xqueue_body":
  "{
    "student_response": "def double(x):\n return 2*x\n",
    "grader_payload": "problem_2"
   }"
}
External Grader Responses

After running tests and recording results for a submission, the grader must return information by posting a JSON response. The JSON string contains an indication if the submission was correct, the score, and any message the tests create.

In the following example, the grader returns a JSON string that indicates the submission was correct, the score was 1, and a message:

{
 "correct": true,
 "score": 1,
 "msg": "<p>The code passed all tests.</p>"
}

Building an External Grader

Course staff, not edX, is responsible for building and deploying the external grader.

In addition to creating tests that are specific to the problems you use in your course, there are four areas that you must plan for when building an external grader:

Scale

Your external grader must be able to scale to support the number of students in your course.

Keep in mind that student submissions will likely come in spikes, not in an even flow. For example, you should expect the load to be much greater than average in the hours before an exam is due. Therefore, you should verify that the external grader can process submissions from a majority of students in a short period of time.

Security

Students are submitting code that executes directly on a server that you are responsible for. It is possible that a student will submit malicious code. Your system must protect against this and ensure that the external grader runs only code that is relevant to the course problems. How you implement these protections depends on the programming language you are using and your deployment architecture. You must ensure that malicious code won’t damage your server.

Reliability and Recovery

Once your course starts, many students will submit code at any possible time, and expect to see results quickly. If your external grader is prone to failure or unexpected delays, the student experience will be poor.

Therefore, you must ensure that your grader has high availability and can recover from errors. Prior to your course starting, you must have a plan to immediately notify the team responsible for operating your grader, as well as edX operations, when the grader fails. In collaboration with edX, you should develop a procedure to quickly identify the cause of failure, which can be your grader or edX’s XQueue.

Contact your edX Program Manager for more information.

If you know the grader will be unavailable at a certain time for maintenance, you should Add a Course Update.

Testing

You should test your grader thoroughly before your course starts. Be sure to test incorrect code as well as correct code to ensure that the grader responds with appropriate scores and messages.

Create a Code Response Problem

You create a code response problem in edX Studio by adding a common blank problem, then editing the XML problem definition in the The Advanced Editor.

See Working with Problem Components for more information.

Following is a basic example of the XML definition of a problem that uses an external grader:

<problem display_name="Problem 6">
   <text>
       <p>Write a program that prints "hello world".</p>
   </text>
   <coderesponse queuename="my_course_queue">
       <textbox rows="10" cols="80" mode="python" tabsize="4"/>
       <codeparam>
           <initial_display>
             # students please write your program here
             print ""
           </initial_display>
           <answer_display>
             print "hello world"
           </answer_display>
           <grader_payload>
           {"output": "hello world", "max_length": 2}
           </grader_payload>
       </codeparam>
   </coderesponse>
</problem>

Note the following about the XML definition:

  • queuename: The value of the queuename attribute of the <coderesponse> element maps to an XQueue that edX sets up for the course. You get this name from your edX Program Manager. You must use this exact name in order for the problem to communicate with the correct XQueue.
  • Input Type: In this example, the input type is specificed by the <textbox> element. When you use <textbox>, the student enters code in a browser field when viewing the course unit. The other element you can use to specify the input type is <filesubmission>, which enables the student to attach and submit a code file in the unit.
  • <grader_payload>: You can use the <grader_payload> element to send information to the external grader in the form of a JSON object. For example, you can use <grader_payload> to tell the grader which tests to run for this problem.

Full Screen Image Tool

Some large images are difficult for students to view in the courseware. The full screen image tool allows students to enlarge the image, so they can see all the detail in context.

The Student View of a Full Screen Image

The student sees the full screen image in a unit page. When the student hovers the mouse pointer over the image, the Fullscreen button appears:

Image of the full screen image tool with the Full Screen button.

When the student clicks Fullscreen, the image opens and expands in the full browser window. The buttons Close, Zoom In, and Zoom Out appear:

Image of the Image Modal tool with the Full Screen button.

The student can then zoom in on the image, and drag the image to view the desired part of it:

Image of the Image Modal tool with the Full Screen button.

Create a Full Screen Image

  1. Upload your image file to the Files & Uploads page. For more information about how to do this, see Adding Files to a Course.

  2. Under Add New Component, click html, and then click Full Screen Image.

  3. In the new component that appears, click Edit.

  4. In the component editor, replace the default title, remove the instructional paragraph, and add text as needed.

  5. Switch to the HTML tab.

  6. Replace the following placeholders with your own content.

    • Replace the value of the <a> element’s href attribute with the path to your image. Do not change the value of the class attribute. For example:

      <a href=”/static/Image1.jpg” class=”modal-content”>

    • Replace the value of the <img> element’s src attribute with the path to your image. For example:

      <img alt=”Full screen image” src=”/static/Image1.jpg”/>

    • Ensure that the value of the href and src attributes are the same, and that you do not change the class attribute. Your sample code should look like the following:

    <h2>Sample Image Modal</h2>
    <a href="/static/Image1.jpg" class="modal-content">
    <img alt="Full screen image" src="/static/Image1.jpg"/>
    </a>
    

    Note

    You can use this same HTML code in any HTML component, not just those components you created as full screen images.

  7. Click Save to save the HTML component.

Gene Explorer Tool

The Gene Explorer (GeneX), from the biology department at UMB, simulates the transcription, splicing, processing, and translation of a small hypothetical eukaryotic gene. GeneX allows students to make specific mutations in a gene sequence, and it then calculates and displays the effects of the mutations on the mRNA and protein.

Specifically, the Gene Explorer does the following:

  1. Finds the promoter and terminator
  2. Reads the DNA sequence to produce the pre-mRNA
  3. Finds the splice sites
  4. Splices and tails the mRNA
  5. Finds the start codon
  6. Translates the mRNA
Image of the Gene Explorer

For more information about the Gene Explorer, see The Gene Explorer.

Gene Explorer Code

<problem>
<p>Make a single base pair substitution mutation in the gene below that results in a protein that is longer than the protein produced by the original gene. When you are satisfied with your change and its effect, click the <b>SUBMIT</b> button.</p>
<p>Note that a "single base pair substitution mutation" is when a single base is changed to another base; for example, changing the A at position 80 to a T. Deletions and insertions are not allowed.</p>
<script type="loncapa/python">
def genex_grader(expect,ans):
    if ans=="CORRECT": return True
    import json
    ans=json.loads(ans)
    return ans["genex_answer"]=="CORRECT"
</script>
<customresponse cfn="genex_grader">
<editageneinput width="818" height="1000" dna_sequence="TAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT" genex_dna_sequence="TAAGGCTATAACCGAGATTGATGCCTTGTGCGATAAGGTGTGTCCCCCCCCAAAGTGTCGGATGTCGAGTGCGCGTGCAAAAAAAAACAAAGGCGAGGACCTTAAGAAGGTGTGAGGGGGCGCTCGAT" genex_problem_number="2"/>
</customresponse>
</problem>

In this code:

  • width and height specify the dimensions of the application, in pixels.
  • genex_dna_sequence is the default DNA sequence that appears when the problem opens.
  • dna_sequence contains the application’s state and the student’s answer. This value must be the same as genex_dna_sequence.
  • genex_problem_number specifies the number of the problem. This number is based on the five gene editor problems in the MITx 7.00x course–for example, if you want this problem to look like the second gene editor problem in the 7.00x course, you would set the genex_problem_number value to 2. The number must be 1, 2, 3, 4, or 5.

Google Calendar Tool

This chapter describes how to embed Google calendars in your course. For more information, see any of the following topics.

You can also use Google Drive files, such as documents, spreadsheets, and images, in your course. For more information, see Google Drive Files Tool.

Overview

You can embed a Google calendar in your course so that students see the calendar in the courseware. You can use a Google calendar to share quiz dates, office hours, or other schedules of interest to students. For example:

A Google calendar in courseware

Embedding a Google Calendar in Your Course

Embedding a Google calendar in your course has three steps.

  1. Enable Google calendars in your course by using Studio or OLX.
  2. Make the Google calendar public and obtain its ID.
  3. Add the Google calendar to your course by using Studio or OLX.
Enable Google Calendars in the Course

You can enable Google Calendars in the course by using either Studio or OLX.

Enable Google Calendars in edX Studio

To enable Google Calendars in your course:

  1. From the Settings menu, select Advanced Settings.

  2. In the Advanced Module List field, place your cursor between the braces, and then type "google-calendar". If you see other values in this field, add a comma after the closing quotation mark for the last value, and then type "google-calendar". For example:

    Advanced modules setting for Google Calendars
  3. At the bottom of the page, select Save Changes.

Enable Google Calendars in OLX

To enable Google Calendars in your course, you edit the XML file that defines the course structure. You locate the course element’s advanced-modules attribute, and add the string google-calendar to it.

For example, the following XML code enables Google Calendars in a course. It also enables Google Drive files.

<course advanced_modules="[&quot;google-document&quot;,
    &quot;google-calendar&quot;]" display_name="Sample Course"
    start="2014-01-01T00:00:00Z">
    ...
</course>

For more information, see The Courseware Structure.

Make the Google Calendar Public and Obtain Its ID

Before you can add a Google calendar to your course, you must make the calendar public and obtain its ID.

Important

The tasks described in this section rely on the use of third-party software. Because the software is subject to change by its owner, the steps provided here are intended as guidelines and not as an exact procedure.

Make the Google Calendar Public
  1. Open the Google calendar.

  2. From the Settings menu, select Settings.

  3. Select the Calendars tab.

    You might have multiple calendars on the Calendars tab. Find the calendar that you want to share in your courseware.

  4. In the row for the calendar to share, in the Sharing column, select Edit Settings.

  5. Click the Share this Calendar tab, and then select Make this calendar public.

Google calendar settings
  1. Select Save.

    The Calendar Settings page closes, and you return to the Calendars tab. You continue by obtaining the Google calendar’s ID.

Obtain the Google Calendar ID
  1. On the Calendars tab, click the name of the calendar.

  2. Select the Calendar Details tab.

  3. Next to the Calendar Address label, look to the right of the three colored XML, ICAL, and HTML buttons. In parentheses, you can see the calendar ID.

    Image of Calendar Address label with the calendar ID to the right

    The calendar ID resembles the following text.

    abcdefghijklmnop1234567890@group.calendar.google.com

    Select and copy the calendar ID. You use this value to configure the Google calendar component in your course.

Add a Google Calendar in the Courseware

To add a Google calendar in the courseware, you create aan advanced component in Studio or create a Google calendar XBlock in OLX.

Add a Google Calendar Component in edX Studio

Make sure that you enable Google Calendars in your course before you add the Google Calendar component.

To add a Google calendar component:

  1. On the Course Outline page, open the unit where you want to add the Google calendar component.

  2. Under Add New Component click Advanced, and then select Google Calendar.

    The new component is added to the unit, with the default edX Google calendar embedded.

    The Google calendar component in a unit page
  3. In the new component, select Edit.

    The Google calendar editor
  4. In the Display Name field, type the name for the component.

  5. In the Public Calendar ID field, paste the calendar ID you copied in the Obtain the Google Calendar ID task.

  6. For the Default View field, select Month, Week, or Agenda.

    This is the initial view that your students have of the calendar. Each student can change his or her view.

  7. Select Save.

You can then Preview Course Content to see how the unit with the Google calendar will appear to students.

Add a Google Calendar XBlock in OLX

To add a Google calendar XBlock in OLX, create the google-calendar element. You can embed this element in the vertical element, or you can embed this element in its own file that is referenced within the vertical. For more information, see The Courseware Structure.

For example:

<google-calendar url_name="4115e717366045eaae7764b2e1f25e4c"
  calendar_id="abcdefghijklmnop1234567890@group.calendar.google.com"
  default_view="1" display_name="Class Schedule"/>

The value of the calendar_id attribute is the calendar ID that you copied in the Obtain the Google Calendar ID task.

Note

The edX Learning Management System sets the height and width values for Google Calendars. If you add these attributes, the LMS overrides your changes.

Editing Google Calendars

When you make changes to a Google calendar that is embedded in your course, students see the updates immediately. You make changes to calendars with the Google user interface. You do not need to edit the Google Calendar component.

Google Drive Files Tool

This chapter describes how to embed Google Drive files, such as documents, spreadsheets, and images, in your course. For more information, see any of the following topics.

You can also use Google calendars in courseware. For more information, see Google Calendar Tool.

Overview

You can embed a Google Drive file in your course so that students see the file in the courseware. For example, you can share a Google spreadsheet with students.

A Google spreadsheet in courseware

You can embed the following types of Google Drive files.

  • Google Docs (text documents)
  • Google Drawings (images)
  • Google Forms (forms or surveys)
  • Google Slides (presentations)
  • Google Sheets (spreadsheets)

Embedding a Google Drive File in Your Course

Embedding a Google Drive file in your course has three steps:

  1. Enable Google Drive files in your course by using Studio or OLX.
  2. Obtain the Google Drive File Embed Code.
  3. Add the Google Drive file to your course by using Studio or OLX.
Enable Google Drive Files in Your Course

You can enable Google Drive files in the course by using either Studio or OLX.

Enable Google Drive Files in edX Studio

To enable Google Drive files in your course:

  1. From the Settings menu, select Advanced Settings.

  2. In the Advanced Module List field, place your cursor between the braces, and then type "google-document". If you see other values in this field, add a comma after the closing quotation mark for the last value, and then type "google-document". For example:

    Advanced modules setting for Google documents
  3. At the bottom of the page, select Save Changes.

Enable Google Drive Files in OLX

To enable Google Drive files in your course, you edit the XML file that defines the course structure. You locate the course element’s advanced-modules attribute, and add the string google-document to it.

For example, the following XML code enables Google Drive files in a course. It also enables Google calendars.

<course advanced_modules="[&quot;google-document&quot;,
    &quot;google-calendar&quot;]" display_name="Sample Course"
    start="2014-01-01T00:00:00Z">
    ...
</course>

For more information, see The Courseware Structure.

Publish the Google Drive File and Obtain the Embed Code

Before you can add a Google Drive file to your course, you must publish the file to the web and obain the embed code for the file.

Important

The task described in this section relies on the use of third-party software. Because the software is subject to change by its owner, the steps provided here are intended as guidelines and not as an exact procedure.

  1. Open the Google Drive file.

  2. From the File menu, select Publish to the web.

    The Google Drive file Publish to the web dialog box
  3. Click Publish, then select OK to confirm the action.

  4. Click the Embed tab.

    The Google Drive file Publish to web Embed tab
  5. Copy the complete string in the Embed field, including the <iframe> tags.

    Note

    Google images do not have an <iframe> tag. To embed an image, you copy the complete img tag.

    You use that string to configure the Google Drive file component.

Add a Google Drive File to Your Course

To add a Google Drive file in the courseware, you create an advanced component in Studio or create a Google Document Xblock in OLX.

Add a Google Drive File Component in edX Studio

Ensure you enable Google Drive files before you add the component.

To add a Google Drive file component:

  1. On the Course Outline page, open the unit where you want to add the Google Drive component.

  2. Under Add New Component click Advanced, and then select Google Document.

    The new component is added to the unit, with the default Google presentation embedded.

    The Google Drive file component in a unit page
  3. In the new component, select Edit.

    The Google Drive file editor
  4. In the Display Name field, type the name for the component.

  5. In the Embed Code field, paste the embed code you copied in the Obtain the Google Drive File Embed Code task.

  6. Click Save.

You can then Preview Course Content to see how the unit with the Google drive file will appear to students.

Add a Google Drive File XBlock in OLX

To add a Google Drive file XBlock in OLX, you create the google-document element. You can embed the google-document element in the vertical element, or you can create the google-document element as a stand-alone file that you reference in the vertical.

For more information, see The Courseware Structure.

For example:

<google-document url_name="c5804436419148f68e2ee44abd396b12"
  embed_code="&lt;iframe
  frameborder=&quot;0&quot; src=&quot;https://docs.google.com/spreadsheet/pub
  ?key=0AuZ_5O2JZpH5dGVUVDNGUE05aTFNcEl2Z0ZuTUNmWUE&amp;output=html&amp;widge
  t=true&quot;&gt;&lt;/iframe&gt;" display_name="Google Document"/>

The value of the embed_code attribute is the embed code you copied in the Obtain the Google Drive File Embed Code task.

Note

The edX Learning Management System sets the height and width values for Google Drive files. If you add these attributes, the LMS overrides your changes.

Editing Google Drive Files

When you edit and save a Google Drive file that is embedded in your course, students see the updates immediately. You make changes to files with the Google user interface. You do not need to edit the Google Document component.

Google Instant Hangout Tool

This chapter describes how you can use instant hangouts in your course. See:

Overview

You can add the ability for students to participate in instant hangouts directly from your course.

With instant hangouts, students can:

  • Interact through live video and voice.
  • Share screens and watch videos together.
  • Collaborate on documents.

For a full list of instant hangout features, see the Google Hangouts page.

Note

Students who want to participate in instant hangouts must have a Google account. You should note this in your course materials.

Instant Hangouts in Your Course

You can add one or more instant hangouts in your course. For example, you can add an instant hangout:

  • In a page, to provide students with a hangout for the entire course. See Adding Pages to a Course for more information.
  • In an HTML component, to provide a hangout for students working on that specific course unit. See Working with HTML Components for more information about creating HTML components.

An instant hangout is specific to the page it is opened from. For example, students who join a hangout from one course unit interact among themselves, while students who join a hangout from another unit interact in a different hangout.

The Student Experience

When you add the instant hangout to your course, a control for the hangout appears on that page. The following example shows the control in a course unit. The control shows that the student can start the hangout and be the first participant.

Image of the instant hangout control on a unit

To start the hangout, the student clicks Start the Hangout. (After the first student clicks Start the Hangout, other students see a Join the Hangout button.)

The following example shows the control in a page when a hangout has already started. The control has a Join the Hangout button, and shows that one other student is already in the hangout.

Image of the instant hangout control on a page

To join the hangout, the student clicks Join the Hangout.

If not already logged in, the student is prompted to log in to Google:

Image of the Google login page

Students who do not have a Google account can create one from the login page.

After the student has logged in to Google, the hangout opens in a separate browser window:

Image of the instant hangout

Limitations

Currently, only ten students can join a single instant hangout. You should note this in your course materials.

Students in hangouts that are started from different pages in your course are counted separately. So you can have ten students participating in a hangout started from one unit, and ten other students in a hangout started from a different unit.

Create the Instant Hangout

To create an instant hangout in your course:

  1. Get the instant hangout JavaScript file from GitHub.

  2. Copy the text of this file into a text editor on your computer, and save the file as a JavaScript file (that is, when you save the file, change the extension from .txt to .js).

    Note

    Make sure that you copy the raw GitHub file, which does not contain formatting. Do not copy the formatted file. Any formatting will cause the JavaScript to not work correctly.

  3. Upload the JavaScript file to the Files & Uploads page in your course. See Adding Files to a Course for more information.

  4. In either a page or an HTML component, open the HTML editor.

  5. On the first line, add the JavaScript file you uploaded in a <script> tag, making sure you use full opening and closing tags.

    For example, if your JavaScript file is named instanthangouts-0.1.0.js, you would enter the following:

    <script src='/static/instanthangouts-0.1.0.js'></script>
    
  6. After the <script> tag, add:

    <div class='instanthangouts'/>
    
  7. Add any additional text and tags that you want.

    For example, the complete HTML could be:

    <p>Join an instant hangout by clicking the button below.
    You can use the hangout to have live video discussions with other students.</p>
    <script src='/static/instanthangouts-0.1.0.js'></script>
    <div class='instanthangouts'/>
    
  8. Test the instant hangout in your course.

Updating the JavaScript File

Google will periodically update the instant hangouts JavaScript file. To receive update notifications, go to the instant hangouts repository page, and then click Watch in the upper-right area of the page.

To use an updated JavaScript file in your course, we recommend that you copy the JavaScript from the repository into a file that has the same name as the file that you uploaded to your course. When you upload the new file, the new file replaces the previous file.

Warning

If you include version numbers in the file names of uploaded files, you will have to edit any HTML components or pages that include an instant hangout control every time that you update the JavaScript file.

IFrame Tool

An IFrame allows you to integrate ungraded exercises and tools from any Internet site into the body of your course. The IFrame appears inside an HTML component, and the exercise or tool appears inside the IFrame. IFrames can include your own tools or third-party tools.

IFrame tool showing a Euler line exercise

IFrames are well-suited for tools that demonstrate a concept but that won’t be graded or store student data. If you want to add a graded tool or exercise, add the tool as a custom JavaScript problem or an LTI component.

For more information about IFrames, see the IFrame specification.

Create an IFrame Tool

To add an exercise or tool in an IFrame, you’ll create an IFrame HTML component and add the URL of the page that contains the exercise or tool to the component. You can also add text and images both before and after the IFrame.

Note

The URL of the page that contains the exercise or tool must start with https instead of http. If the URL starts with http, you have to work with the owner of that page to find out if an https version is available. Some websites do not allow their content to be embedded in IFrames.

  1. Under Add New Component, click html, and then click IFrame.

  2. In the new component that appears, click Edit.

  3. In the toolbar in the component editor, click HTML.

  4. In the HTML source code editor, locate the following HTML (line 7). This HTML includes the <iframe> element:

    <p><iframe src="https://studio.edx.org/c4x/edX/DemoX/asset/eulerLineDemo.html" width="402" height="402" marginwidth="0" marginheight="0" frameborder="0" scrolling="no">You need an iFrame capable browser to view this.</iframe></p>
    
  1. Replace the default URL in the src attribute (https://studio.edx.org/c4x/edX/DemoX/asset/eulerLineDemo.html) with the URL of the page that contains the exercise or tool. This URL must start with https. Make sure you don’t delete the quotation marks that surround the URL.
  2. Change the attributes in the IFrame element to specify any other settings that you want. For more information about these settings, see IFrame Settings. You can also change the text between the opening and closing <iframe> tags. A student only sees this text if the student uses a browser that does not support IFrames.
  1. Click OK to close the HTML source code editor and return to the Visual editor.
  2. In the Visual editor, replace the default text with your own text.
  3. Click Save.
IFrame Settings

To specify settings for your IFrame, you’ll add, remove, or change the attributes inside the opening <iframe> tag. The <iframe> tag must contain a src attribute that specifies the URL of the web page you want. Other attributes are optional.

You can add these attributes in any order you want.

Attribute Description
src (required) Specifies the URL of the page that contains the exercise or tool.
width and height (optional)

Specify the width and height of the IFrame, in pixels or as a percentage. To specify the value in pixels, enter numerals. To specify a percentage, enter numerals followed by a percent sign.

If you don’t specify the width and height, the IFrame uses the dimensions that the linked page has set. These dimensions vary by website. If you change the width and height of the IFrame, the content from the linked page may be resized, or only part of the content may appear.

marginwidth and marginheight (optional) Specify the size of the space between the edges of the IFrame and your exercise or tool, in pixels.
frameborder (optional) Specifies whether a border appears around your IFrame. If the value is 0, no border appears. If the value is any positive number, a border appears.
scrolling (optional) Specifies whether a scrollbar appears to help users see all of the IFrame’s content if your IFrame is smaller than the exercise or tool it contains. For example, if the content in your IFrame is very tall, you can set the IFrame’s height to a smaller number and add a vertical scroll bar for users, as in the first image below.

For example, compare how the different settings in each of the <iframe> elements below affect the IFrame.

<p><iframe src="https://studio.edx.org/c4x/edX/DemoX/asset/eulerLineDemo.html" width="442" height="200" marginwidth="20" marginheight="20" frameborder="1" scrolling="yes">You need an iFrame capable browser to view this.</iframe></p>
IFrame with only top half showing and vertical scroll bar on the side
<p><iframe src="https://studio.edx.org/c4x/edX/DemoX/asset/eulerLineDemo.html" width="550" height="250" marginwidth="30" marginheight="60" frameborder="1" scrolling="no">You need an iFrame capable browser to view this.</iframe></p>

For more information about IFrame attributes, see the IFrame specification.

Image Mapped Input Problem

In an image mapped input problem, students click inside a defined area in an image. You define this area by including coordinates in the body of the problem.

Image of an image mapped input problem

Create an Image Mapped Input Problem

To create a image mapped input problem:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Image Mapped Input.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with your own code.
  5. Click Save.

Problem Code:

<problem>
  <p><b>Example Problem</b></p>
   <startouttext/>
    <p>In the image below, click the triangle.</p>
    <endouttext/>
    <imageresponse>
    <imageinput src="/static/threeshapes.png" width="220" height="150" rectangle="(80,40)-(130,90)" />
    </imageresponse>
</problem>

Image Mapped Input Problem XML

Template
<problem>
  <startouttext/>
    <p>In the image below, click the triangle.</p>
  <endouttext/>
      <imageresponse>
       <imageinput src="IMAGE FILE PATH" width="NUMBER" height="NUMBER" rectangle="(X-AXIS,Y-AXIS)-(X-AXIS,Y-AXIS)" />
      </imageresponse>
</problem>
Tags
  • <imageresponse>: Indicates that the problem is an image mapped input problem.
  • <imageinput>: Specifies the image file and the region in the file that the student must click.

Tag: <imageresponse>

Indicates that the problem is an image mapped input problem.

Attributes

(none)

Children

  • <imageinput>

Tag: <imageinput>

Specifies the image file and the region in the file that the student must click.

Attributes

Attribute Description
src (required) The URL of the image
height (required) The height of the image, in pixels
width (required) The width of the image, in pixels
rectangle (required) An attribute with four embedded values in the format (<start_width>,<start_height>)-(<end_width>,<end-height>). All coordinates start with (0,0) in the top left corner and increase in value toward the bottom right corner, very similar to the progression of reading English. The two coordinates defined form the two opposite corners of a box which a student can click inside of.

Children

(none)

LTI Component

You might have discovered or developed an external learning application that you want to add to your online course. Or you might have a digital copy of your textbook that uses a format other than PDF. You can add external learning applications or textbooks to Studio by using a Learning Tools Interoperability (LTI) component. The LTI component is based on the IMS Global Learning Tools Interoperability version 1.1.1 specifications.

You can use an LTI component in several ways.

  • You can add external LTI content that is only displayed and does not require a student response, such as textbook content.
  • You can add external LTI content that requires a student response. An external provider will grade student responses.
  • You can use the component as a placeholder for syncing with an external grading system.

For example, the following LTI component incorporates a Cerego tool that students interact with.

Cerego LTI component example

Obtain LTI Information

Before you create an LTI component from an external LTI provider in a unit, you need the following information.

  • The launch URL (if the LTI component requires a student response that will be graded). You obtain the launch URL from the LTI provider. The launch URL is the URL that Studio sends to the external LTI provider so that the provider can send back students’ grades.

  • The LTI Passports policy key. This policy key has three parts: an LTI ID, a client key, and a client secret.

    • The LTI ID. This is a value that you create to refer to the external LTI provider. You should create an LTI ID that you can remember easily.

      The LTI ID can contain uppercase and lowercase alphanumeric characters, as well as underscore characters (_). It can be any length. For example, you may create an LTI ID that is as simple as test_lti_id, or your LTI ID may be a string of numbers and letters such as id_21441 or book_lti_provider_from_new_york.

    • The client key. This value is a sequence of characters that you obtain from the LTI provider. The client key is used for authentication and can contain any number of characters. For example, your client key may be b289378-f88d-2929-ctools.school.edu.

    • The client secret. This value is a sequence of characters that you obtain from the LTI provider. The client secret is used for authentication and can contain any number of characters. For example, your client secret can be something as simple as secret, or it may be a string of numbers and letters such as 23746387264 or yt4984yr8.

    To create the LTI Passports policy key, combine the LTI ID, client key, and client secret in the following format (make sure to include the colons):

    lti_id:client_key:client_secret

    For example, an LTI Passports policy key may resemble any of the following:

    test_lti_id:b289378-f88d-2929-ctools.school.edu:secret

    id_21441:b289378-f88d-2929-ctools.school.edu:23746387264

    book_lti_provider_from_new_york:b289378-f88d-2929-ctools.company.com:yt4984yr8

Create an LTI Component

Creating an LTI component in your course has three steps.

  1. Add LTI to the Advanced Module List policy key.
  2. Register the LTI provider.
  3. Create the LTI component in an individual unit.
Step 1. Add LTI to the Advanced Module List Policy Key
  1. On the Settings menu, click Advanced Settings.

  2. In the field for the Advanced Module List policy key, place your cursor between the brackets.

  3. Enter "lti". Make sure to include the quotation marks, but not the period.

    Image of the advanced_modules key in the Advanced Settings page, with the LTI value added

Note

If the Advanced Module List field already contains text, place your cursor directly after the closing quotation mark for the final item, and then enter a comma followed by "lti" (make sure that you include the quotation marks).

  1. At the bottom of the page, click Save Changes.

The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved.

Step 2. Register the External LTI Provider

To register the external LTI provider, you’ll add the LTI Passports policy key to the course’s advanced settings.

  1. On the Advanced Settings page, locate the LTI Passports policy key.

  2. Place your cursor between the brackets.

  3. Enter the LTI Passports policy key surrounded by quotation marks.

    For example, the text in the LTI Passports field may resemble the following.

    "test_lti_id:b289378-f88d-2929-ctools.umich.edu:secret"

    If you have multiple LTI providers, separate the values for each LTI Passports policy key with a comma. Make sure to surround each entry with quotation marks.

    "test_lti_id:b289378-f88d-2929-ctools.umich.edu:secret",
    "id_21441:b289378-f88d-2929-ctools.school.edu:23746387264",
    "book_lti_provider_from_new_york:b289378-f88d-2929-ctools.company.com:yt4984yr8"
    
  1. At the bottom of the page, click Save Changes.

The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved, and you can see your entries for the LTI Passports policy key.

Step 3. Add the LTI Component to a Unit
  1. In the unit where you want to create the problem, click Advanced under Add New Component, and then click LTI.
  2. In the component that appears, click Edit.
  3. In the component editor, specify the settings that you want. See LTI Component Settings for a description of each setting.
  4. Click Save.

LTI Component Settings

Setting Description
Accept grades past deadline Specifies whether third party systems are allowed to post grades past the deadline. By default, this value is set to True.
Button Text Enter a custom label for the button that launches the third-party LTI application.
Custom Parameters

Enables you to add one or more custom parameters. For example, if you added an e-book, you can set a custom parameter that opens the e-book to a specific page. You could also use a custom parameter to set the background color of the LTI component.

Every custom parameter has a key and a value. You must add the key and value in the following format.

key=value

For example, a custom parameter may resemble the following.

bgcolor=red

page=144

To add a custom parameter, click Add.

Display Name Specifies the name of the component. This name appears above the component and in the course ribbon at the top of the page in the courseware. Unique, descriptive display names help you identify problems quickly and accurately for analysis.
Hide External Tool Indicates whether you want to launch an external tool or to use this component as a placeholder for syncing with an external grading system. If you set the value to True, Studio hides the Launch button and any IFrames for this component. By default, this value is set to False.
LTI ID Specifies the LTI ID for the external LTI provider. This value must be the same LTI ID that you entered on the Advanced Settings page.
LTI URL Specifies the URL of the external tool that this component launches.This setting is applicable when Hide External Tool is set to False.
Open in New Page Specify whether the problem opens in a new page. If you set this value to True, the student clicks a link that opens the LTI content in a new window. If you set this value to False, the LTI content opens in an IFrame in the current page. This setting is applicable when Hide External Tool is set to False.
Request user’s email If Open in New Page is set to True, you can also request user information. Set this value to True to request the user’s email address.
Request user’s username If Open in New Page is set to True, you can also request user information. Set this value to True to request the user’s username.
Scored Indicates whether the LTI component receives a numerical score from the external LTI system. By default, this value is set to False.
Weight

Specifies the number of points possible for the problem. By default, if an external LTI provider grades the problem, the problem is worth 1 point, and a student’s score can be any value between 0 and 1. This setting is applicable when Scored is set to True.

For more information about problem weights and computing point scores, see Problem Weight.

Math Expression Input Problems

In math expression input problems, students enter text that represents a mathematical expression into a field, and text is converted to a symbolic expression that appears below that field. Unlike numerical input problems, which only allow integers and a few select constants, math expression problems can include unknown variables and more complicated symbolic expressions.

Image of math expression input problem

For more information about characters that students can enter, see Math Response Formatting for Students.

The grader uses a numerical sampling to determine whether the student’s response matches the instructor-provided math expression, to a specified numerical tolerance. The instructor must specify the allowed variables in the expression as well as the range of values for each variable.

Warning

Math expression input problems cannot currently include negative numbers raised to fractional powers, such as (-1)^(1/2). Math expression input problems can include complex numbers raised to fractional powers, or positive non-complex numbers raised to fractional powers.

When you create a math expression input problem in Studio, you’ll use MathJax to change your plain text into “beautiful math.” For more information about how to use MathJax in Studio, see A Brief Introduction to MathJax in Studio.

Create a Math Expression Input Problem

To create a math expression input problem:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Math Expression Input.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with your own code. To practice, you may want to use the sample problem code below.
  5. Click Save.

Sample Problem Code

<problem>
  <p>Some problems may ask for a mathematical expression. Practice creating mathematical expressions by answering the questions below.</p>

  <p>Write an expression for the product of R_1, R_2, and the inverse of R_3.</p>
  <formularesponse type="ci" samples="R_1,R_2,R_3@1,2,3:3,4,5#10" answer="$VoVi">
    <responseparam type="tolerance" default="0.00001"/>
    <formulaequationinput size="40" label="Enter the equation"/>
  </formularesponse>

<script type="loncapa/python">
VoVi = "(R_1*R_2)/R_3"
</script>

  <p>Let <i>x</i> be a variable, and let <i>n</i> be an arbitrary constant. What is the derivative of <i>x<sup>n</sup></i>?</p>
<script type="loncapa/python">
derivative = "n*x^(n-1)"
</script>
  <formularesponse type="ci" samples="x,n@1,2:3,4#10" answer="$derivative">
    <responseparam type="tolerance" default="0.00001"/>
    <formulaequationinput size="40"  label="Enter the equation"/>
  </formularesponse>

  <solution>
    <div class="detailed-solution">
      <p>Explanation or Solution Header</p>
      <p>Explanation or solution text</p>
    </div>
  </solution>
</problem>

Math Expression Input Problem XML

Templates
<problem>
  <p>Write an expression for the product of R_1, R_2, and the inverse of R_3.</p>
  <formularesponse type="ci" samples="R_1,R_2,R_3@1,2,3:3,4,5#10" answer="R_1*R_2/R_3">
    <responseparam type="tolerance" default="0.00001"/>
    <formulaequationinput size="40"  label="Enter the equation" />
  </formularesponse>
</problem>
<problem>
  <p>Problem text</p>
  <formularesponse type="ci" samples="VARIABLES@LOWER_BOUNDS:UPPER_BOUNDS#NUMBER_OF_SAMPLES" answer="$VoVi">
    <responseparam type="tolerance" default="0.00001"/>
    <formulaequationinput size="20"  label="Enter the equation" />
  </formularesponse>

<script type="loncapa/python">
PYTHON SCRIPT
</script>

  <solution>
    <div class="detailed-solution">
      <p>Explanation or Solution Header</p>
      <p>Explanation or solution text</p>
    </div>
  </solution>
</problem>
Tags
  • <formularesponse>
  • <formulaequationinput />
  • <responseparam>
  • <script>

Tag: <formularesponse>

Specifies that the problem is a math expression input problem. The <formularesponse> tag is similar to <numericalresponse>, but <formularesponse> allows unknown variables.

Attributes

type: Can be “cs” (case sensitive, the default) or “ci” (case insensitive, so that capitalization doesn’t matter in variable names).

answer: The correct answer to the problem, given as a mathematical expression. If you precede a variable name in the problem with a dollar sign ($), you can include a script in the problem that computes the expression in terms of that variable.

samples: Specifies important information about the problem in four lists:

  • variables: A set of variables that students can enter.
  • lower_bounds: For every defined variable, a lower bound on the numerical tests to use for that variable.
  • upper_bounds: For every defined variable, an upper bound on the numerical tests to use for that variable.
  • num_samples: The number of times to test the expression.

Commas separate items inside each of the four individual lists, and the at sign (@), colon (:), and pound sign (#) characters separate the four lists. The format is the following:

"variables@lower_bounds:upper_bounds#num_samples

For example, a <formularesponse> tag that includes the samples attribute may look like either of the following.

<formularesponse samples="x,n@1,2:3,4#10">

<formularesponse samples="R_1,R_2,R_3@1,2,3:3,4,5#10">

Children

  • <formulaequationinput />

Tag: <formulaequationinput />

Creates a response field where a student types an answer to the problem in plain text, as well as a second field below the response field where the student sees a typeset version of the plain text. The parser that renders the student’s plain text into typeset math is the same parser that evaluates the student’s response for grading.

Attributes

Attribute Description
label (required) Specifies the name of the response field.
size (optional) Specifies the width, in characters, of the response field where students enter answers.

Children

(none)

Tag: <responseparam>

Used to define an upper bound on the variance of the numerical methods used to approximate a test for equality.

Attributes

Attribute Description
default (required) A number or a percentage specifying how close the student and grader expressions must be. Failure to include a tolerance leaves expressions vulnerable to unavoidable rounding errors during sapling, causing some student input to be graded as incorrect, even if it is algebraically equivalent to the grader’s expression.
type “tolerance”–defines a tolerance for a number

Children

(none)

Molecule Editor Tool

Students can use the molecule editor to learn how to create molecules. The molecule editor allows students to draw molecules that follow the rules for covalent bond formation and formal charge, even if the molecules are chemically impossible, are unstable, or do not exist in living systems. The molecule editor warns students if they try to submit a structure that is chemically impossible.

The molecule editor incorporates two tools: the JSME molecule editor created by Peter Erl and Bruno Bienfait, and JSmol, a JavaScript-based molecular viewer from Jmol. (You don’t need to download either of these tools–Studio uses them automatically.) For more information about the JSME molecule editor, see JSME Molecule Editor. For more information about JSmol, see JSmol.

Image of the molecule editor

Create the Molecule Editor

To create a molecule editor, you need the following files:

  • MoleculeAnswer.png
  • MoleculeEditor_HTML.png
  • dopamine.mol

To download all of these files in a .zip archive, go to http://files.edx.org/MoleculeEditorFiles.zip.

Note

The molecule that appears when the tool starts is a dopamine molecule. To use a different molecule, download the .mol file for that molecule from the list of molecules on the BioTopics website. Then, upload the .mol file to the Files & Uploads page for your course in Studio, and change “dopamine.mol” in the example code to the name of your .mol file.

To create the molecule editor that appears in the image above, you need an HTML component followed by a Problem component.

  1. Upload all of the files listed above to the Files & Uploads page in your course.
  2. Create the HTML component.
  1. In the unit where you want to create the problem, click HTML under Add New Component, and then click HTML.
  2. In the component that appears, click Edit.
  3. In the component editor, paste the HTML component code from below.
  4. Make any changes that you want, and then click Save.
  1. Create the Problem component.
  1. Under the HTML component, click Problem under Add New Component, and then click Blank Advanced Problem.
  2. In the component that appears, click Edit.
  3. In the component editor, paste the Problem component code from below.
  4. Click Save.
Molecule Editor Code

To create the molecule editor, you need an HTML component and a Problem component.

HTML Component Code
<h2>Molecule Editor</h2>
<p>The molecule editor makes creating and visualizing molecules easy. A chemistry professor may have you build and submit a molecule as part of an exercise.</p>
<div>
<script type="text/javascript">// <![CDATA[
function toggle2(showHideDiv, switchTextDiv) {
            var ele = document.getElementById(showHideDiv);
            var text = document.getElementById(switchTextDiv);
            if(ele.style.display == "block") {
                ele.style.display = "none";
                text.innerHTML = "+ open";
                }
            else {
                ele.style.display = "block";
                text.innerHTML = "- close";
            }
        }
// ]]></script>
</div>
<div>
<style type="text/css"></style>
</div>
<div id="headerDiv">
<div id="titleText">Using the Molecule Editor<a id="myHeader" href="javascript:toggle2('myContent','myHeader');">+ open </a></div>
</div>
<div id="contentDiv">
<div id="myContent" style="display: none;">
<p>In this problem you will edit a molecule using the molecular drawing program shown below:</p>
<img alt="" src="/static/MoleculeEditor_HTML.png" /></div>
</div>
<p>&nbsp;</p>
<div id="headerDiv">
<div id="titleText">Are the molecules I've drawn chemically possible?<a id="IntroductionHeader" href="javascript:toggle2('IntroductionContent','IntroductionHeader');">+ open </a></div>
</div>
<div id="contentDiv">
<div id="IntroductionContent" style="display: none;">
<p>The chemical editor you are using ensures that the structures you draw are correct in one very narrow sense, that they follow the rules for covalent bond formation and formal charge. However, there are many structures that follow these rules that are chemically impossible, unstable, do not exist in living systems, or are beyond the scope of this course. The editor will let you draw them because, in contrast to the rules of formal charge, these properties cannot be easily and reliably predicted from structures.</p>
<p>If you submit a structure that includes atoms that are not possible or are beyond the scope of this course, the software will warn you specifically about these parts of your structure and you will be allowed to edit your structure and re-submit. Submitting an improper structure will not count as one of your tries. In general, you should try to use only the atoms most commonly cited in this course: C, H, N, O, P, and S. If you want to learn about formal charge, you can play around with other atoms and unusual configurations and look at the structures that result.</p>
</div>
</div>
<div id="ap_listener_added">&nbsp;</div>
Problem Component Code
<problem>
<p>The dopamine molecule, as shown, cannot make ionic bonds. Edit the dopamine molecule so it can make ionic bonds.</p>
<p>When you are ready, click Check. If you need to start over, click Reset.</p>
  <script type="loncapa/python">
def check1(expect, ans):
    import json
    mol_info = json.loads(ans)["info"]
    return any(res == "Can Make Ionic Bonds" for res in mol_info)
    </script>
  <customresponse cfn="check1">
    <editamoleculeinput file="/static/dopamine.mol">
        </editamoleculeinput>
  </customresponse>
  <solution>
    <img src="/static/MoleculeAnswer.png"/>
  </solution>
</problem>

Problem 2

<problem>
<p>The dopamine molecule, as shown, cannot make strong hydrogen bonds. Edit the dopamine molecule so that it can make strong hydrogen bonds.</p>
<script type="loncapa/python">
def grader_1(expect, ans):
    import json
    mol_info = json.loads(ans)["info"]
    return any(res == "Cannot Make Strong Hydrogen Bonds" for res in mol_info)
</script>
  <customresponse cfn="grader_1">
    <editamoleculeinput file="/static/dopamine.mol">
    </editamoleculeinput>
  </customresponse>
</problem>

Problem 3

<problem>
<p>The dopamine molecule has an intermediate hydrophobicity. Edit the dopamine molecule so that it is more hydrophobic.</p>
<script type="loncapa/python">
def grader_2(expect, ans):
    import json
    mol_info = json.loads(ans)["info"]

    hydrophobicity_index_str=mol_info[0]
    hydrophobicity_index=float(hydrophobicity_index_str[23:])
    return hydrophobicity_index &gt; .490
</script>
  <customresponse cfn="grader_2">
    <editamoleculeinput file="/static/dopamine.mol">
    </editamoleculeinput>
</customresponse>
</problem>

Molecule Viewer Tool

Studio offers two tools that you can use in discussions of molecules:

  • With the molecule viewer tool, you can create three-dimensional representations of molecules for students to view.
  • With the molecule editor problem type, you can allow students to draw their own molecules. For more information about this tool, see Molecule Editor Tool.

Both tools use JSmol, a JavaScript-based molecular viewer from Jmol. (You don’t need to download this tool; Studio uses it automatically.) For more information about JSmol, see JSmol.

The following image shows the molecule viewer tool in a course:

Image of molecule viewer showing a molecule of Ciprofloxacin

Note

To create a molecule viewer tool, you must have permission to upload files to a third-party file hosting site such as Amazon Web Services Simple Storage Service (AWS S3). When you create the molecule viewer, you’ll upload a folder that contains a large number of files to the file hosting site.

Create the Molecule Viewer Tool

Creating a molecule viewer tool has several steps:

  1. Download files from the BioTopics website and from edX.
  2. Move or edit some of the files that you downloaded.
  3. Upload a folder that contains all of the files that you downloaded and edited to your own file hosting site.
  4. Create an HTML component that contains an IFrame in Studio. The IFrame references the files that you upload to the file hosting site.
Download Files from BioTopics and edX
  1. Create or download a .mol file for the molecule that you want to show. You can download a variety of .mol files from the BioTopics website. Save the file in a place where you can easily find it.

  2. Download the MoleculeViewerFiles.zip file from edX.

  3. Unzip the MoleculeViewerFiles.zip file that you’ve downloaded.

    When you unzip the file, you’ll see a MoleculeViewerFiles folder that contains the following folders and files:

    • data (folder)
    • j2s (folder)
    • js (folder)
    • MoleculeViewer.html (file)
Move the .mol File and Edit the MoleculeViewer.html File
  1. Move the .mol file that you downloaded from BioTopics into the data folder that you downloaded from edX.

  2. Edit the MoleculeViewer.html file:

    1. In a text editor, open the MoleculeViewer.html file.

    2. In line 19 of the MoleculeViewer.html file, change Example.mol to the name of your .mol file. For example, if you downloaded the Glucose.mol file, line 19 in your file will look like the following:

      script: "set antialiasDisplay; background black; load data/Glucose.mol;"

  1. Save the MoleculeViewer.html file.
Upload Files to a Hosting Site
  1. Make sure that your MoleculeViewerFiles folder contains the following folders and files:
    • data (folder): Earlier, you added a .mol file to this folder.
    • j2s (folder)
    • js (folder)
    • MoleculeViewer.html (file): Earlier, you changed line 19 in this file.
  1. Upload the entire MoleculeViewerFiles folder to your file hosting site.

    Note

    Because this folder contains many files, uploading the folder may take several minutes, even over a fast connection.

Create a Component in Studio
  1. In Studio, open the unit where you want to add the molecule viewer.

  2. Under Add New Component, click HTML, and then click IFrame.

  3. In the component editor that opens, replace the existing content with your own text.

  4. In the toolbar, click HTML.

  5. In the HTML Source Code box, enter the following line in the place where you want the molecule viewer to appear:

    <p><iframe name="moleculeiframe" src="https://path_to_folder/MoleculeViewerFiles/MoleculeViewer.html" width="500" height="500"></iframe></p>

  1. Replace path_to_file with the URL of your file hosting site. For example, the line may look like the following:

    <p><iframe name="moleculeiframe" src="https://myfiles.example.com/MoleculeViewerFiles/MoleculeViewer.html" width="500" height="500"></iframe></p>

  2. Click OK to close the HTML Source Code box, and then click Save to save the component.

  3. Click Preview to see your component as a student would see it.

Multiple Choice Problem

In multiple choice problems, students select one option from a list of answer options. Unlike with dropdown problems, whose answer choices don’t appear until the student clicks the drop-down arrow, answer choices for multiple choice problems are always visible directly below the question.

Image of a multiple choice problem

Multiple choice problems also have several advanced options, such as presenting a random set of choices to each student. For more information about these options, see Advanced Options for Multiple Choice Problems.

Create a Multiple Choice Problem

You can create multiple choice problems in the Simple Editor or in the Advanced Editor.

Note

All problems must include labels for accessibility. The label generally includes the text of the main question in your problem. To add a label for a common problem, surround the text of the label with angle brackets pointed toward the text (>>label text<<).

Simple Editor
  1. Under Add New Component, click Problem.

  2. In the Select Problem Component Type screen, click Multiple Choice on the Common Problem Types tab.

  3. When the new Problem component appears, click Edit.

  4. In the component editor, replace the sample problem text with the text of your problem. Enter each answer option on its own line.

  5. Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).

  6. Select all the answer options, and then click the multiple choice button.

    Image of the multiple choice button

    When you do this, the component editor adds a pair of parentheses next to each possible answer.

  7. Add an “x” between the parentheses next to the correct answer.

  8. In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.

    Image of the explanation button
  9. On the Settings tab, specify the settings that you want.

  10. Click Save.

For the example problem above, the text in the Problem component is the following.

>>Lateral inhibition, as was first discovered in the horsehoe crab:<<

( ) is a property of touch sensation, referring to the ability of crabs to
detect nearby predators.
( ) is a property of hearing, referring to the ability of crabs to detect
low frequency noises.
(x) is a property of vision, referring to the ability of crabs eyes to
enhance contrasts.
( ) has to do with the ability of crabs to use sonar to detect fellow horseshoe
crabs nearby.
( ) has to do with a weighting system in the crabs skeleton that allows it to
balance in turbulent water.

[Explanation]
Horseshoe crabs were essential to the discovery of lateral inhibition, a property of
vision present in horseshoe crabs as well as humans, that enables enhancement of
contrast at edges of objects as was demonstrated in class. In 1967, Haldan Hartline
received the Nobel prize for his research on vision and in particular his research
investigating lateral inhibition using horseshoe crabs.
[Explanation]
Advanced Editor

To create this problem in the Advanced Editor, click the Advanced tab in the Problem component editor, and then replace the existing code with the following code.

<problem>
<p>Lateral inhibition, as was first discovered in the horsehoe crab...</p>
<multiplechoiceresponse>
  <choicegroup type="MultipleChoice" label="Lateral inhibition, as was first discovered in the horsehoe crab">
    <choice correct="false">is a property of touch sensation, referring to the ability of crabs to detect nearby predators.</choice>
    <choice correct="false">is a property of hearing, referring to the ability of crabs to detect low frequency noises.</choice>
    <choice correct="false">is a property of vision, referring to the ability of crabs eyes to enhance contrasts.</choice>
    <choice correct="true">has to do with the ability of crabs to use sonar to detect fellow horseshoe crabs nearby.</choice>
    <choice correct="false">has to do with a weighting system in the crabs skeleton that allows it to balance in turbulent water.</choice>
  </choicegroup>
</multiplechoiceresponse>
<solution>
  <div class="detailed-solution">
    <p>Explanation</p>
    <p>Horseshoe crabs were essential to the discovery of lateral inhibition, a property of vision present in horseshoe crabs as well as humans, that enables enhancement of contrast at edges of objects as was demonstrated in class. In 1967, Haldan Hartline received the Nobel prize for his research on vision and in particular his research investigating lateral inhibition using horseshoe crabs.</p>
  </div>
</solution>
</problem>

Advanced Options for Multiple Choice Problems

Multiple choice problems have several advanced options. You can change the order of answers in the problem, include explanations that appear when a student selects a specific incorrect answer, or present a random set of choices to each student. For more information, see the following:

Shuffle Answers in a Multiple Choice Problem

Optionally, you can configure a multiple choice problem so that it shuffles the order of possible answers.

For example, one view of the problem could be:

Image of a multiple choice problem

And another view of the same problem, for another student or for the same student of a subsequent view of the unit, could be:

Image of a multiple choice problem with shuffled answers

You can also have some answers shuffled, but not others. For example, you may want to have the answer “All of the Above” fixed at the end of the list, but shuffle other answers.

You can configure the problem to shuffle answers through The Simple Editor or The Advanced Editor.

Use the Simple Editor to Shuffle Answers

You can configure the problem to shuffle answers in The Simple Editor.

For example, the following text defines a multiple choice problem, before shuffling is enabled. The (x) indicates the correct answer:

>>What Apple device competed with the portable CD player?<<
    ( ) The iPad
    ( ) Napster
    (x) The iPod
    ( ) The vegetable peeler

To add shuffling to this problem, add ! in the parenthesis of the first answer:

>>What Apple device competed with the portable CD player?<<
    (!) The iPad
    ( ) Napster
    (x) The iPod
    ( ) The vegetable peeler

To fix an answer’s location in the list, add @ in the parenthesis of that answer:

>>What Apple device competed with the portable CD player?<<
    (!) The iPad
    ( ) Napster
    (x) The iPod
    ( ) The vegetable peeler
    (@) All of the above

You can combine symbols within parenthesis as necessary. For example, to show the correct answer in a fixed location, you could use:

(x@) The iPod
Use the Advanced Editor to Shuffle Answers

You can configure the problem to shuffle answers through XML in The Advanced Editor.

For example, the following XML defines a multiple choice problem, before shuffling is enabled:

<p>What Apple device competed with the portable CD player?</p>
<multiplechoiceresponse>
 <choicegroup type="MultipleChoice">
   <choice correct="false">The iPad</choice>
   <choice correct="false">Napster</choice>
   <choice correct="true">The iPod</choice>
   <choice correct="false">The vegetable peeler</choice>
 </choicegroup>
</multiplechoiceresponse>

To add shuffling to this problem, add shuffle="true" to the <choicegroup> element:

<p>What Apple device competed with the portable CD player?</p>
<multiplechoiceresponse>
 <choicegroup type="MultipleChoice" shuffle="true">
   <choice correct="false">The iPad</choice>
   <choice correct="false">Napster</choice>
   <choice correct="true">The iPod</choice>
   <choice correct="false">The vegetable peeler</choice>
 </choicegroup>
</multiplechoiceresponse>

To fix an answer’s location in the list, add fixed="true" to the choice element for the answer:

<p>What Apple device competed with the portable CD player?</p>
<multiplechoiceresponse>
 <choicegroup type="MultipleChoice" shuffle="true">
   <choice correct="false">The iPad</choice>
   <choice correct="false">Napster</choice>
   <choice correct="true">The iPod</choice>
   <choice correct="false">The vegetable peeler</choice>
   <choice correct="false" fixed="true">All of the above</choice>
 </choicegroup>
</multiplechoiceresponse>
Targeted Feedback in a Multiple Choice Problem

You can configure a multiple choice problem so that explanations for incorrect answers are automatically shown to students. You can use these explanations to guide students towards the right answer. Therefore, targeted feedback is most useful for multiple choice problems for which students are allowed multiple attempts.

Use the Advanced Editor to Configure Targeted Feedback

You configure the problem to provide targeted feedback through XML in The Advanced Editor.

Follow these XML guidelines:

  • Add a targeted-feedback attribute to the <multiplechoiceresponse> element, with no value: <multiplechoiceresponse targeted-feedback="">
  • Add a <targetedfeedbackset> element before the <solution> element.
  • Within <targetedfeedbackset>, add one or more <targetedfeedback> elements.
  • Within each <targetedfeedback> element, enter your explanation for the incorrect answer in HTML as markup described below.
  • Connect the <targetedfeedback> element with a specific incorrect answer by using the same explanation-id attribute value for each.
  • Use the <solution> element for the correct answer, with the same explanation-id attribute value as the correct <choice> element.

For example, the XML for the multiple choice problem is:

<p>What Apple device competed with the portable CD player?</p>
<multiplechoiceresponse targeted-feedback="">
 <choicegroup type="MultipleChoice">
   <choice correct="false" explanation-id="feedback1">The iPad</choice>
   <choice correct="false" explanation-id="feedback2">Napster</choice>
   <choice correct="true" explanation-id="correct">The iPod</choice>
   <choice correct="false" explanation-id="feedback3">The vegetable peeler</choice>
 </choicegroup>
</multiplechoiceresponse>

This is followed by XML that defines the targeted feedback:

<targetedfeedbackset>
  <targetedfeedback explanation-id="feedback1">
    <div class="detailed-targeted-feedback">
      <p>Targeted Feedback</p>
      <p>The iPad came out later and did not directly compete with portable CD players.</p>
    </div>
  </targetedfeedback>
  <targetedfeedback explanation-id="feedback2">
    <div class="detailed-targeted-feedback">
      <p>Targeted Feedback</p>
      <p>Napster was not an Apple product.</p>
    </div>
  </targetedfeedback>
  <targetedfeedback explanation-id="feedback3">
    <div class="detailed-targeted-feedback">
      <p>Targeted Feedback</p>
      <p>Vegetable peelers don't play music.</p>
    </div>
  </targetedfeedback>
 </targetedfeedbackset>

 <solution explanation-id="correct">
  <div class="detailed-solution">
   <p>The iPod directly competed with portable CD players.</p>
  </div>
 </solution>
Answer Pools in a Multiple Choice Problem

You can configure a multiple choice problem so that a random subset of choices are shown to each student. For example, you can add 10 possible choices to the problem, and each student views a set of five choices.

The answer pool must have at least one correct answer, and can have more than one. In each set of choices shown to a student, one correct answer is included. For example, you may configure two correct answers in the set of 10. One of the two correct answers is included in each set a student views.

Use the Advanced Editor to Configure Answer Pools

You configure the problem to provide answer pools through XML in The Advanced Editor.

Follow these XML guidelines:

  • In the <choicegroup> element, add the answer-pool attribute, with the numerical value indicating the number of possible answers in the set. For example, <choicegroup answer-pool="4">.
  • For each correct answer, to the <choice> element, add an explanation-id attribute and value that maps to a solution. For example, <choice correct="true" explanation-id="iPod">The iPod</choice>.
  • For each <solution> element, add an explanation-id attribute and value that maps back to a correct answer. For example, <solution explanation-id="iPod">.

Note

If the choices include only one correct answer, you do not have to use the explanation-id in either the choice or <solution> element. You do still use the <solutionset> element to wrap the <solution> element.

For example, for the following multiple choice problem, a student will see four choices, and in each set one of the choices will be one of the two correct ones. The explanation shown for the correct answer is the one with the same explanation ID.

<problem>
  <p>What Apple devices let you carry your digital music library in your pocket?</p>
  <multiplechoiceresponse>
   <choicegroup type="MultipleChoice" answer-pool="4">
     <choice correct="false">The iPad</choice>
     <choice correct="false">Napster</choice>
     <choice correct="true" explanation-id="iPod">The iPod</choice>
     <choice correct="false">The vegetable peeler</choice>
     <choice correct="false">The iMac</choice>
     <choice correct="true" explanation-id="iPhone">The iPhone</choice>
   </choicegroup>
  </multiplechoiceresponse>

   <solutionset>
       <solution explanation-id="iPod">
       <div class="detailed-solution">
           <p>Explanation</p>
           <p>Yes, the iPod is Apple's portable digital music player.</p>
       </div>
       </solution>
       <solution explanation-id="iPhone">
       <div class="detailed-solution">
           <p>Explanation</p>
           <p>In addition to being a cell phone, the iPhone can store and play your digital music.</p>
       </div>
       </solution>
   </solutionset>
</problem>

Multiple Choice Problem XML

Template
<problem>
<p>Question text</p>
<multiplechoiceresponse>
  <choicegroup type="MultipleChoice" label="label text">
    <choice correct="false" name="a">Incorrect choice</choice>
    <choice correct="true" name="b">Correct choice</choice>
  </choicegroup>
</multiplechoiceresponse>

<solution>
  <div class="detailed-solution">
  <p>Explanation or solution header</p>
  <p>Explanation or solution text</p>
  </div>
</solution>
</problem>
Tags
  • <multiplechoiceresponse> (required): Indicates that the problem is a multiple choice problem.
  • <choicegroup> (required): Indicates the beginning of the list of options.
  • <choice> (required): Lists an answer option.

Tag: <multiplechoiceresponse>

Indicates that the problem is a multiple choice problem.

Attributes

(none)

Children

  • <choicegroup>
  • All standard HTML tags (can be used to format text)

Tag: <choicegroup>

Indicates the beginning of the list of options.

Attributes

Attribute Description
label (required) Specifies the name of the response field.
type (required) Must be set to “MultipleChoice”.

Children

  • <choice>

Tag: <choice>

Lists an answer option.

Attributes

Attribute Description
correct (at least one required) Indicates a correct or incorrect answer. When the attribute is set to “true”, the choice is a correct answer. When the attribute is set to “false”, the choice is an incorrect answer. Only one choice can be a correct answer.
name A unique name that the back end uses to refer to the choice.

Children

(none)

Multiple Choice and Numerical Input Problem

You can create a problem that combines a multiple choice and numerical input problems. Students not only select a response from options that you provide, but also provide more specific information, if necessary.

Image of a multiple choice and numerical input problem

Note

Currently, students can only enter numerals in the text field. Students cannot enter words or mathematical expressions.

Create a Multiple Choice and Numerical Input Problem

To create a multiple choice and numerical input problem:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Blank Advanced Problem.
  3. In the component that appears, click Edit.
  4. In the component editor, paste the code from below.
  5. Replace the example problem and response options with your own text.
  6. Click Save.

Multiple Choice and Numerical Input Problem Code

<problem>
The numerical value of pi, rounded to two decimal points, is 3.24.
<choicetextresponse>
<radiotextgroup>
<choice correct="false">True.</choice>
<choice correct="true">False. The correct value is <numtolerance_input answer="3.14"/>.</choice>
</radiotextgroup>
</choicetextresponse>
</problem>

Numerical Input

Numerical input problems are the simpler of the two mathematics tools that Studio offers. In these problems, students enter numbers or specific and relatively simple mathematical expressions to answer a question. The text that the students enter is converted to a symbolic expression that appears below the response field.

Image of a numerical input problem

Note that students’ responses don’t have to be exact for these problems. You can specify a margin of error, or tolerance. You can also specify a correct answer explicitly, or use a Python script. For more information, see the instructions below.

Responses for numerical input problems can include integers, fractions, and constants such as pi and g. Responses can also include text representing common functions, such as square root (sqrt) and log base 2 (log2), as well as trigonometric functions and their inverses, such as sine (sin) and arcsine (arcsin). For these functions, the text that the student enters is converted into mathematical symbols. The following example shows the way the system renders students’ text responses in numerical input problems.

Image of a numerical input probem rendered by Studio

For more information about characters that students can enter, see Math Response Formatting for Students.

Create a Numerical Input Problem

You can create numerical problems in the Simple Editor or in the Advanced Editor regardless of the answer to the problem. If the text of your problem doesn’t include any italics, bold formatting, or special characters, you can create the problem in the Simple Editor. If the text of your problem contains special formatting or characters, or if your problem contains a Python script, you’ll use the Advanced Editor.

For example, the following example problems require the Advanced Editor.

Image of a more complex numerical input problem

For more information about including a Python script in your problem, see Write-Your-Own-Grader Problem.

Simple Editor
  1. Under Add New Component, click Problem.
  2. In the Select Problem Component Type screen, click Numerical Input on the Common Problem Types tab.
  1. When the new Problem component appears, click Edit.
  2. In the component editor, replace the sample problem text with your own text.
  3. Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).
  4. Select the text of the answer, and then click the numerical input button.
Image of the numerical input button

When you do this, an equal sign appears next to the answer.

  1. (Optional) Specify a margin of error, or tolerance. You can specify a percentage, number, or range.

    • To specify a percentage on either side of the correct answer, add +-NUMBER% after the answer. For example, if you want to include a 2% tolerance, add +-2%.
    • To specify a number on either side of the correct answer, add +-NUMBER after the answer. For example, if you want to include a tolerance of 5, add +-5.
    • To specify a range, use brackets [] or parentheses (). A bracket indicates that range includes the number next to it. A parenthesis indicates that the range does not include the number next to it. For example, if you specify [5, 8), correct answers can be 5, 6, and 7, but not 8. Likewise, if you specify (5, 8], correct answers can be 6, 7, and 8, but not 5.
  2. In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.

    Image of the explanation button
  3. On the Settings tab, specify the settings that you want.

  4. Click Save.

For the first example problem above, the text in the Problem component is the following.

>>What base is the decimal numeral system in?<<

= 10

[explanation]
The decimal numerial system is base ten.
[explanation]
Advanced Editor

To create this problem in the Advanced Editor, click the Advanced tab in the Problem component editor, and then replace the existing code with the following code.

Problem Code:

<problem>
  <p><b>Example Problem</b></p>

<p>What base is the decimal numeral system in?
    <numericalresponse answer="10">
        <formulaequationinput label="What base is the decimal numeral system in?"/>
    </numericalresponse>
</p>

  <p>What is the value of the standard gravity constant <i>g</i>, measured in m/s<sup>2</sup>? Give your answer to at least two decimal places.
  <numericalresponse answer="9.80665">
    <responseparam type="tolerance" default="0.01" />
    <formulaequationinput label="Give your answer to at least two decimal places"/>
  </numericalresponse>
</p>

<!-- The following uses Python script spacing. Make sure it isn't indented when you add it to the Problem component. -->
<script type="loncapa/python">
computed_response = math.sqrt(math.fsum([math.pow(math.pi,2), math.pow(math.e,2)]))
</script>

<p>What is the distance in the plane between the points (pi, 0) and (0, e)? You can type math.
    <numericalresponse answer="$computed_response">
        <responseparam type="tolerance" default="0.0001" />
        <formulaequationinput label="What is the distance in the plane between the points (pi, 0) and (0, e)?"/>
    </numericalresponse>
</p>
<solution>
  <div class="detailed-solution">
    <p>Explanation</p>
    <p>The decimal numerical system is base ten.</p>
    <p>The standard gravity constant is defined to be precisely 9.80665 m/s<sup>2</sup>.
    This is 9.80 to two decimal places. Entering 9.8 also works.</p>
    <p>By the distance formula, the distance between two points in the plane is
       the square root of the sum of the squares of the differences of each coordinate.
      Even though an exact numerical value is checked in this case, the
      easiest way to enter this answer is to type
      <code>sqrt(pi^2+e^2)</code> into the editor.
      Other answers like <code>sqrt((pi-0)^2+(0-e)^2)</code> also work.
    </p>
  </div>
</solution>
</problem>

Numerical Input Problem XML

Templates

The following templates represent problems with and without a decimal or percentage tolerance.

Problem with no tolerance
<p>TEXT OF PROBLEM
    <numericalresponse answer="ANSWER (NUMBER)">
        <formulaequationinput label="TEXT OF PROBLEM"/>
    </numericalresponse>
</p>

  <solution>
  <div class="detailed-solution">
  <p>TEXT OF SOLUTION</p>
  </div>
</solution>
</problem>
Problem with a decimal tolerance
<problem>

  <p>TEXT OF PROBLEM
  <numericalresponse answer="ANSWER (NUMBER)">
    <responseparam type="tolerance" default="NUMBER (DECIMAL, e.g., .02)" />
    <formulaequationinput label="TEXT OF PROBLEM"/>
  </numericalresponse>
</p>

  <solution>
  <div class="detailed-solution">
  <p>TEXT OF SOLUTION</p>
  </div>
</solution>
</problem>
Problem with a percentage tolerance
<problem>

 <p>TEXT OF PROBLEM
  <numericalresponse answer="ANSWER (NUMBER)">
    <responseparam type="tolerance" default="NUMBER (PERCENTAGE, e.g., 3%)" />
    <formulaequationinput label="TEXT OF PROBLEM"/>
  </numericalresponse>
 </p>

  <solution>
  <div class="detailed-solution">
  <p>TEXT OF SOLUTION</p>
  </div>
</solution>
</problem>
Answer created with a script
<problem>

<!-- The following uses Python script spacing. Make sure it isn't indented when you add it to the Problem component. -->
<script type="loncapa/python">
computed_response = math.sqrt(math.fsum([math.pow(math.pi,2), math.pow(math.e,2)]))
</script>

<p>TEXT OF PROBLEM
    <numericalresponse answer="$computed_response">
        <responseparam type="tolerance" default="0.0001" />
        <formulaequationinput label="TEXT OF PROBLEM"/>
    </numericalresponse>
</p>

  <solution>
  <div class="detailed-solution">
   <p>TEXT OF SOLUTION</p>
  </div>
</solution>
</problem>
Tags
  • <numericalresponse> (required): Specifies that the problem is a numerical input problem.
  • <formulaequationinput /> (required): Provides a response field where the student enters a response.
  • <responseparam> (optional): Specifies a tolerance, or margin of error, for an answer.
  • <script> (optional):

Note

Some older problems use the <textline math="1" /> tag instead of the <formulaequationinput /> tag. However, the <textline math="1" /> tag has been deprecated. All new problems should use the <formulaequationinput /> tag.

Tag: <numericalresponse>

Specifies that the problem is a numerical input problem. The <numericalresponse> tag is similar to the <formularesponse> tag, but the <numericalresponse> tag does not allow unspecified variables.

Attributes

Attribute Description
answer (required) The correct answer to the problem, given as a mathematical expression.

Note

If you include a variable name preceded with a dollar sign ($) in the problem, you can include a script in the problem that computes the expression in terms of that variable.

The grader evaluates the answer that you provide and the student’s response in the same way. The grader also automatically simplifies any numeric expressions that you or a student provides. Answers can include simple expressions such as “0.3” and “42”, or more complex expressions such as “1/3” and “sin(pi/5)”.

Children

  • <responseparam>
  • <formulaequationinput>

Tag: * <formulaequationinput>

Creates a response field in the LMS where students enter a response.

Attributes

Attribute Description
label (required) Specifies the name of the response field.
size (optional) Defines the width, in characters, of the response field in the LMS.

Children

(none)

Tag: <responseparam>

Specifies a tolerance, or margin of error, for an answer.

Attributes

Attribute Description
type (optional) “tolerance”: Defines a tolerance for a number
default (optional) A number or a percentage specifying a numerical or percent tolerance.

Children

(none)

Tag: <script>

Specifies a script that the grader uses to evaluate a student’s response. A problem behaves as if all of the code in all of the script tags were in a single script tag. Specifically, any variables that are used in multiple <script> tags share a namespace and can be overriden.

As with all Python, indentation matters, even though the code is embedded in XML.

Attributes

Attribute Description
type (required) Must be set to “loncapa/python”.

Children

(none)

Open Response Assessments

Open Response Assessments

Introduction to Open Response Assessments

Open response assessments allow instructors to assign questions that may not have definite answers. Students submit a response to the question, and then that student and the student’s peers compare the response to a rubric that you create. Usually students will submit text responses. You can also allow your students to upload an image to accompany the text.

Open response assessments include peer assessments and self assessments. In peer assessments, students compare their peers’ responses to a rubric that you create. In self assessments, students compare their own responses to the rubric.

In open response assessments, students usually only see their own responses and any peer responses they assess. You can also allow students to see the top-scoring responses that their peers have submitted. For more information, see Top Responses.

For more information about creating open response assessments, including step-by-step instructions, see the following sections:

For information about the student experience with open response assessments, see Open Response Assessments in the edX Guide for Students.

Elements of an Open Response Assessment

When you create an open response assessment assignment, you include several elements:

  • The prompt, or question.
  • The rubric.
  • One or more assessment steps. Assignments can include a student training step, a peer assessment step, and a self assessment step.

Note

If you include a student training step, you must also add a peer assessment step. The student training step must be the first step.

For step-by-step instructions for creating an open response assessment, see Create an Open Response Assessment Assignment.

Prompt

The prompt, or question that you want your students to answer, appears near the top of the page, followed by a field where the student enters a response. You can require your students to enter text as a response, or you can allow your students to both enter text and upload an image.

ORA question and blank response field

Note

If students upload an image, the image file must be a .jpg or .png file, and it must be smaller than 5 MB in size.

When you write your question, you can include helpful information for your students, such as what students can expect after they submit responses and the approximate number of words or sentences that a student’s response should have. (A response cannot have more than 10,000 words.)

For more information, see Step 2. Add the Prompt.

Asking Students to Upload Images

You can ask your students to upload an image as part of their response. If you do this, however, keep the following in mind:

  • Currently, you cannot require your students to upload an image. You can only allow it.
  • All responses must include some text. Students cannot submit a response that only contains an image.
  • Students can only submit one image with their response.

Note

Currently, course teams cannot see any of the images that students submit. Images are not visible in the body of the assignment in the courseware, and they are not included in the course data package.

Rubric

Your assignment must include a rubric that you design. The same rubric is used for peer and self assessments, and the rubric appears when students begin grading. Students compare their peers’ responses to the rubric.

Rubrics are made of criteria and options.

  • Each criterion has a name, a prompt, and one or more options.

    • The name is a very short summary of the criterion, such as “Ideas” or “Content”. Criterion names generally have just one word. Because the system uses criterion names for identification, the name for each criterion must be unique. Criterion names do not appear in the rubric that students see when they are completing peer assessments, but they do appear on the page that shows the student’s final grade.

      A final score page with call-outs for the criterion names
    • The prompt is a description of the criterion.

    • Options describe how well the response satisfies the criterion.

  • Each option has a name, an explanation, and a point value.

    Image of a rubric in the LMS with call-outs for the criterion prompt and option names, explanations, and points

Different criteria in the same assignment can have different numbers of options. For example, in the image above, the first criterion has three options and the second criterion has four options.

Note

You can also include criteria that do not have options, but that do include a field where students can enter feedback. For more information, see Provide Only Comment Fields for Individual Criteria.

You can see both criterion and option names when you access assignment information for an individual student. For more information, see Accessing Assignment and Student Metrics.

Student-specific assignment information with call-outs for criterion and option names

When you create your rubric, decide how many points each option will receive, and make sure that the explanation for each option is as specific as possible. For example, one criterion and set of options may resemble the following.

Criterion

Name: Origins

Prompt: Does this response explain the origins of the Hundred Years’ War? (5 points possible)

Options

Points Name Explanation
0 Not at all This response does not address the origins of the Hundred Years’ War.
1 Dynastic disagreement This response alludes to a dynastic disagreement between England and France, but doesn’t reference Edward III of England and Philip VI of France.
3 Edward and Philip This response mentions the dynastic disagreement between Edward III and Philip VI, but doesn’t address the role of Salic law.
5 Salic law This response explains the way that Salic law contributed to the dynastic disagreement between Edward III and Philip VI, leading to the Hundred Years’ War.

For more information about writing effective rubrics, see Heidi Goodrich Andrade’s Understanding Rubrics.

For more information, see Step 3. Add the Rubric.

Assessment Steps

In your assignment, you’ll also specify the assessment steps. You can set the assignment to include a student training step, a peer assessment step, and a self assessment step.

You can see the type and order of the assessments when you look at the assignment. In the following example, after students submit a response, they complete a student training step (“Learn to Assess Responses”), complete peer assessments on other students’ responses (“Assess Peers”), and then complete self assessments (“Assess Your Response”).

Image of peer assessment with assessment steps and status labeled

Note

If you include a student training step, you must also include a peer assessment step. The student training step must come before peer and self assessment steps.

Student Training Step

When you create a peer assessment assignment, you can include one or more student training assessments to help students learn to perform their own assessments. A student training assessment contains one or more sample responses that you write, together with the scores that you would give the sample responses. Students review these responses and try to score them the way that you scored them.

Note

If you include a student training step, you must also include a peer assessment step. The student training step must come before peer and self assessment steps.

In a student training assessment, the Learn to Assess Responses step opens immediately after a student submits a response. The student sees one of the sample responses that you created, along with the rubric. The scores that you gave the response do not appear. The student also sees the number of sample responses that he or she will assess.

Sample training response, unscored

The student selects an option for each of the assignment’s criteria, and then clicks Compare your selections with the instructor’s selections. If all of the student’s selections match the instructor’s selections, the next sample response opens automatically.

If any of the student’s selections differs from the instructor’s selections, the student sees the response again, and the following message appears above the response:

Learning to Assess Responses
Your assessment differs from the instructor's assessment of this response. Review the
response and consider why the instructor may have assessed it differently. Then, try
the assessment again.

For each of the criteria, the student sees one of the following two messages, depending on whether the student’s selections matched those of the instructor:

Selected Options Differ
The option you selected is not the option that the instructor selected.
Selected Options Agree
The option you selected is the option that the instructor selected.

For example, the following student chose one correct option and one incorrect option.

Sample training response, scored

The student continues to try scoring the sample response until the student’s scoring for all criteria matches the instructor’s scoring.

For more information, see Student Training.

Peer Assessment Step

In the peer assessment step, students review other students’ responses and select an option for each criterion in your rubric based on the response. Students can also provide text feedback, or comments, on the response.

Number of Responses and Assessments

When you specify a peer assessment step, you’ll specify the number of responses each student has to assess and the number of peer assessments each response has to receive.

Note

Because some students may submit a response but not complete peer assessments, some responses may not receive the required number of assessments. To increase the chance that all responses will receive enough assessments, you must set the number of responses that students have to assess to be higher than the number of assessments that each response must undergo. For example, if you require each response to receive three assessments, you could require each student to assess five responses.

If all responses have received assessments, but some students haven’t completed the required number of peer assessments, those students can assess responses that other students have already assessed. The student who submitted the response sees the additional peer assessments when he sees his score. However, the additional peer assessments do not count toward the score that the response receives.

Feedback Options

By default, students see a single comment field below the entire rubric. You can also add a comment field to an individual criterion or to several individual criteria. This comment field can contain up to 300 characters.

The comment field appears below the options for the criterion. In the following image, both criteria have a comment field. There is also a field for overall comments on the response.

Rubric with comment fields under each criterion and under overall response

For more information, see Step 3. Add the Rubric and Provide Only Comment Fields for Individual Criteria.

Peer Assessment Scoring

Peer assessments are scored by criteria. An individual criterion’s score is the median of the scores that each peer assessor gave that criterion. For example, if the Ideas criterion in a peer assessment receives a 10 from one student, a 7 from a second student, and an 8 from a third student, the Ideas criterion’s score is 8.

A student’s final score for a peer assessment is the sum of the median scores for each individual criterion.

For example, a response may receive the following scores from peer assessors:

Criterion Name Peer 1 Peer 2 Peer 3 Median
Ideas (out of 10) 10 7 8 8
Content (out of 10) 7 9 8 8
Grammar (out of 5) 4 4 5 4

To calculate the final score, add the median scores for each criterion:

Ideas median (8/10) + Content median (8/10) + Grammar median (4/5) = final score (20/25)

Note, again, that final scores are calculated by criteria, not by individual assessor. Thus the response’s score is not the median of the scores that each individual peer assessor gave the response.

Assessing Additional Responses

Students can assess more than the required number of responses. After a student completes the peer assessment step, the step “collapses” so that just the Assess Peers heading is visible.

The peer assessment step with just the heading visible

If the student clicks the Assess Peers heading, the step expands. The student can then click Continue Assessing Peers.

The peer assessment step expanded so that "Continue Assessing Peers" is visible
Self Assessment Step

In self assessments, the student sees his response followed by your rubric. As with peer assessments, the student compares the rubric to his response and selects an option for each of the criteria.

If you include both peer and self assessments, we recommend that you include the peer assessment before the self assessment.

Top Responses

You can include a Top Responses section that shows the top-scoring responses that students have submitted for the assignment, along with the scores for those responses. The Top Responses section appears below the student’s score information after the student finishes every step in the assignment.

Section that shows the text and scores of the top three responses for the assignment

You can allow the Top Responses section to show between 1 and 100 responses. Keep in mind, however, that each response may be up to 300 pixels in height in the list. (For longer responses, students can scroll to see the entire response.) We recommend that you specify 20 or fewer responses to prevent the page from becoming too long.

Note

It may take up to an hour for a high-scoring response to appear in the Top Responses list.

For more information, see Step 7. Show Top Responses.

Create an Open Response Assessment Assignment

Creating an open response assessment is a multi-step process:

Each of these steps is covered in detail below.

For more information about the components of an open response assessment, see Open Response Assessments.

Step 1. Create the Component

To create the component for your open response assessment:

  1. In Studio, open the unit where you want to create the open response assessment.
  2. Under Add New Component, click Problem, click the Advanced tab, and then click Peer Assessment.
  3. In the Problem component that appears, click Edit.
Step 2. Add the Prompt

To add the prompt, or question:

  1. In the open response assessment component editor, click the Prompt tab.
  2. Add the text of your question in the text field. Replace any default text, if necessary.
Add Formatting or Images to the Prompt

Currently, you cannot add text formatting or images inside the Peer Assessment component. If you want to include formatting or images in the text of your prompt, you can add an HTML component that contains your text above the Peer Assessment component and leave the text field in the Prompt tab blank. The instructions for the peer assessment still appear above the Your Response field.

A peer assessment that has an image in an HTML component
Allow Students to Submit Images (optional)

To allow students to submit an image with a response:

  1. In the component editor, click the Settings tab.
  2. Next to Allow Image Responses, select True.

Note

  • The image file must be a .jpg or .png file, and it must be smaller than 5 MB in size.
  • Currently, course teams cannot see any of the images that students submit. Images are not visible in the body of the assignment in the courseware, and they are not included in the course data package.
  • You can allow students to upload an image, but you cannot require it.
  • Students can only submit one image with a response.
  • All responses must contain text. Students cannot submit a response that contains only an image.
Step 3. Add the Rubric

In this step, you’ll add your rubric and provide your students with feedback options.

For each step below, replace any default text with your own text.

Note

All open response assessments include a feedback field below the rubric so that students can provide written feedback on a peer’s overall response. You can also allow or require students to provide feedback for individual criteria. See step 2.4 below for instructions. For more information, see Feedback Options.

To add the rubric:

  1. In the open response assessment component editor, click the Rubric tab.

  2. In the first Criterion section, enter the name and prompt text of your first criterion.

  3. In the first Option section, enter the name, explanation, and point value for the first option.

  4. In the next Option section, enter the name, explanation, and point value for the next option.

  5. Repeat step 4 for each option. If you need to add more options, click Add Option.

  6. Next to Feedback for This Criterion, select a value in the drop-down list.

    • If you don’t want students to provide feedback for this individual criterion, select None.
    • If you want to require students to provide feedback, select Required.
    • If you want to allow students to provide feedback, but not require it, select Optional.
  1. Follow the instructions in steps 2-6 to add your remaining criteria. If you need to add more criteria, click Add Criterion at the end of the list of criteria.
  2. Include instructions for students to provide overall written feedback on their peers’ responses. You can leave the default text in the Feedback Instructions field or replace it with your own text.
Provide Only Comment Fields for Individual Criteria

When you add a comment field to a criterion, the comment field appears below the options for the criterion. You can also provide a comment field, but no options.

In the following image, the first criterion has a comment field but no options. The second includes options, but does not have a comment field.

_images/PA_0_Option_Criteria.png

To provide a comment field without options:

  1. In the criterion, click Remove to remove, or delete, all the options.
  2. Next to Feedback for This Criterion, select Required in the drop-down list.
Step 4. Specify the Assignment Name and Response Dates

To specify a name for the assignment as well as start and due dates for all student responses:

  1. In the component editor, click the Settings tab.
  2. Next to Display Name, type the name you want to give the assignment.
  3. Next to Response Start Date and Response Start Time, enter the date and time when you want students to be able to begin submitting responses. Note that all times are in Universal Coordinated Time (UTC).
  4. Next to Response Due Date and Response Due Time, enter the date and time by which all student responses must be submitted. Note that all times are in Universal Coordinated Time (UTC).

Note

We recommend that you set the response due date and time at least two days before the peer assessment due date and time. If the response due time and peer assessment due time are close together, and a student submits a response just before responses are due, other students may not have time to perform peer assessments before peer assessments are due.

Step 5. Select Assignment Steps

Open response assessment assignments can include student training, peer assessment, and self assessment steps. You can include a peer assessment step before a self assessment step and vice versa.

If you include a student training step, you must include a peer assessment step. You can also include a self assessment step. The student training step must come before both the peer assessment and the self assessment step.

To add steps to the assignment:

  1. In the component editor, click the Settings tab.

  2. Scroll down past the Allow Image Responses field.

  3. Locate the following headings:

    • Step: Student Training
    • Step: Peer Assessment
    • Step: Self Assessment

    Select the check boxes for the steps that you want the assignment to include.

  4. (optional) If you want to change the order of the steps, drag the steps into the order that you want. If you include a student training step, make sure it is the first step in the assignment.

Step 6. Specify Step Settings

After you select the steps that you want, you’ll specify settings for those steps.

Note

If you make changes to a step, but then you clear the check box for that step, the step will no longer be part of the assignment and your changes will not be saved.

Student Training

For the student training step, you’ll enter one or more responses that you have created, then select an option for each criterion in your rubric.

Note

You must enter your complete rubric on the Rubric tab before you can select options for the student training responses. If you later change one of your criteria or any of its options, you’ll also have to update the student training step.

To add and score student training responses:

  1. Under Step: Student Training, locate the first Scored Response section.
  2. In the Response field, enter the text of your example response.
  3. Under Response Score, select the option that you want for each criterion.

For more information, see Student Training Step.

Peer Assessment

For the peer assessment step, you’ll specify the number of responses that each student must grade, the number of students that must grade each response, and start and due dates. All fields are required.

To specify peer assessment settings:

  1. Locate the Step: Peer Assessment heading.
  2. Next to Must Grade, enter the number of responses that each student must grade.
  3. Next to Graded By, enter the number of students that must grade each response.
  4. Next to Start Date and Start Time, enter the date and time when students can begin assessing their peers’ responses. All times are in Universal Coordinated Time (UTC).
  5. Next to Due Date and Due Time, enter the date and time by which all peer assessments must be complete. All times are in UTC.
Self Assessment

For the self assessment step, you’ll specify when the step starts and ends.

  1. Locate the Step: Self Assessment heading.
  2. Next to Start Date and Start Time, enter the date and time when students can begin assessing their peers’ responses. All times are in Universal Coordinated Time (UTC).
  3. Next to Due Date and Due Time, enter the date and time by which all peer assessments must be complete. All times are in UTC.
Step 7. Show Top Responses

To allow students to see the top-scoring responses for the assignment, you’ll specify a number on the Settings tab.

  1. In the component editor, click the Settings tab.
  2. In the Top Responses field, specify the number of responses that you want to appear in the Top Responses section below the student’s final score. If you don’t want this section to appear, set the number to 0. The maximum number is 100.

Note

Because each response can be up to 300 pixels in height, we recommend that you set this number to 20 or lower to prevent the page from becoming too long.

For more information, see Top Responses.

Step 8. Test the Assignment

To test your assignment, set up the assignment in your course, set the section or subsection date in the future, and ask a group of beta users to submit responses and grade each other. The beta testers can then let you know if they found the question and the rubric easy to understand or if they had any problems with the assignment.

For more information about beta testing, see Beta Testing a Course.

Accessing Assignment and Student Metrics

After your open response assessment assignment has been released, you can access information about the number of students in each step of the assignment or the performance of individual students. This information is available in the Course Staff Information section at the end of each assignment. To access it, open the assignment in the courseware, scroll to the bottom of the assignment, and then click the black Course Staff Information banner.

The Course Staff Information banner at the bottom of the peer assessment
View Metrics for Individual Steps

You can check the number of students who have completed, or are currently working through, the following steps:

  • Submitted responses.
  • Completed peer assessments.
  • Waiting to assess responses or receive grades.
  • Completed self assessments.
  • Completed the entire assignment.

To find this information, open the assignment in the courseware, scroll to the bottom of the assignment, and then click Course Staff Information.

The Course Staff Information section expands, and you can see the number of students who are currently working through (but have not completed) each step of the problem.

The Course Staff Information box expanded, showing problem status
Access Information for a Specific Student

You can access information about an individual student’s performance on a peer assessment assignment, including:

  • The student’s response.
  • The peer assessments that other students performed on the student’s response, including feedback on individual criteria and on the overall response.
  • The peer assessments that the student performed on other students’ responses, including feedback on individual criteria and on the overall responses.
  • The student’s self assessment.

In the following example, you can see the student’s response. The response received one peer assessment, and the student completed a peer assessment on one other student’s response. The student also completed a self assessment.

Report showing information about a student's response

For an example that shows a student’s response with more assessments, see Access the Student’s Information.

Accessing information about a specific student has two steps:

  1. Determine the student’s course-specific anonymized ID.
  2. Access information for that student.
Determine the Student’s Course-Specific Anonymized ID

To determine a student’s course-specific anonymized ID, you’ll need two .csv spreadsheets from the Instructor Dashboard: the grade report (<course name>_grade_report_<datetime>.csv) and the list of course-specific anonymized student IDs (<course name>-anon-ids.csv).

  1. In the LMS, click the Instructor tab.

  2. On the Instructor Dashboard, click Data Download.

  3. On the Data Download page, locate the Data Download section, and then click Get Student Anonymized IDs CSV. A spreadsheet named <course name>-anon-ids.csv automatically downloads. Click to open the spreadsheet.

  4. Scroll down to the Reports section, and then click Generate Grade Report.

    The system automatically begins to generate the grade report. When it’s finished, a link to the grade report appears in the list below Reports Available for Download.

    Note

    Generating a grade report for a large class may take several hours.

  1. When the link to the grade report appears in the Reports Available for Download list, click the link to open the spreadsheet.

  2. When you have both spreadsheets open, view the <course name>_grade_report_<datetime>.csv spreadsheet. Locate the student that you want by username or e-mail address. Make a note of the number in the ID column (column A) for that student. In the following example, the student ID for e-mail address amydorrit@example.com (username lildorrit) is 18557.

    Spreadsheet listing enrolled students and grades
  1. Go to the <course name>-anon-ids.csv spreadsheet, locate the user ID that you noted in step 6, and then copy the value in the “Course Specific Anonymized user ID” column (column C) for the user. The value in column C is the student’s anonymized user ID for the course. In the following example, the anonymized user ID for student ID 18557 is ofouw6265242gedud8w82g16qshsid87.

    Spreadsheet listing students' anonymous user IDs

    Note

    Make sure that you don’t copy the value in column B. You need the course-specific anonymized user ID from column C.

Access the Student’s Information
  1. In the LMS, go to the peer assessment assignment that you want to see.
  2. Scroll to the bottom of the problem, and then click the black Course Staff Information banner.
  3. Scroll down to the Get Student Info box, paste the student’s course-specific anonymized user ID in the box, and then click Submit.

The student’s information appears below the Get Student Info box.

The following example shows:

  • The student’s response.
  • The two peer assessments for the response.
  • The two peer assessments the student completed.
  • The student’s self assessment.

For a larger view, click the image so that it opens by itself in the browser window, and then click anywhere on the image that opens.

Report showing information about a student's response

Periodic Table Tool

You can create an interactive periodic table of the elements to help your students learn about various elements’ properties. In the table below, detailed information about each element appears as the student moves the mouse over the element.

Image of the interactive periodic table

Create the Periodic Table Tool

To create a periodic table, you need the following files:

  • Periodic-Table.js
  • Periodic-Table.css
  • Periodic-Table-Colors.css
  • PeriodicTableHTML.txt

To download all of these files in a .zip archive, click http://files.edx.org/PeriodicTableFiles.zip.

To create the periodic table, you need an HTML component.

  1. Upload all of the files listed above except PeriodicTable.txt to the Files & Uploads page in your course.
  2. In the unit where you want to create the problem, click HTML under Add New Component, and then click HTML.
  3. In the component that appears, click Edit.
  4. In the component editor, switch to the HTML tab.
  5. Open the PeriodicTable.txt file in any text editor.
  6. Copy all of the text in the PeriodicTable.txt file, and paste it into the HTML component editor. (Note that the PeriodicTableHTML.txt file contains over 6000 lines of code. Paste all of this code into the component editor.)
  7. Click Save.

Poll Tool

You can run polls in your course so that your students can share opinions on different questions.

_images/PollExample.png

Note

Creating a poll requires you to export your course, edit some of your course’s XML files in a text editor, and then re-import your course. We recommend that you create a backup copy of your course before you create the poll. We also recommend that you only edit the files that will contain polls in the text editor if you’re very familiar with editing XML.

Terminology

Sections, subsections, units, and components have different names in the Course Outline view and in the list of files that you’ll see after you export your course and open the .xml files for editing. The following table lists the names of these elements in the Course Outline view and in a list of files.

Course Outline View File List
Section Chapter
Subsection Sequential
Unit Vertical
Component Discussion, HTML, problem, or video

For example, when you want to find a specific section in your course, you’ll look in the Chapter folder when you open the list of files that your course contains. To find a unit, you’ll look in the Vertical folder.

Create a Poll

  1. In the unit where you want to create the poll, create components that contain all the content that you want except for the poll. Make a note of the 32-digit unit ID that appears in the Unit Identifier field under Unit Location.

  2. Export your course. For information about how to do this, see Exporting and Importing a Course. Save the .tar.gz file that contains your course in a memorable location so that you can find it easily.

  3. Locate the .tar.gz file that contains your course, and then unpack the .tar.gz file so that you can see its contents in a list of folders and files.

  4. In the list of folders and files, open the Vertical folder.

    Note

    If your unit is not published, open the Drafts folder, and then open the Vertical folder in the Drafts folder.

  5. In the Vertical folder, locate the .xml file that has the same name as the unit ID that you noted in step 1, and then open the file in a text editor such as Sublime 2. For example, if the unit ID is e461de7fe2b84ebeabe1a97683360d31, you’ll open the e461de7fe2b84ebeabe1a97683360d31.xml file.

    The file contains a list of all the components in the unit, together with the URL names of the components. For example, the following file contains an HTML component followed by a Discussion component.

    <vertical display_name="Test Unit">
     <html url_name="b59c54e2f6fc4cf69ba3a43c49097d0b"/>
     <discussion url_name="8320c3d511484f3b96bdedfd4a44ac8b"/>
    </vertical>
    
  6. Add the following poll code in the location where you want the poll. Change the text of the prompt to the text that you want.

    <poll_question display_name="Poll Question">
      <p>Text of the prompt</p>
      <answer id="yes">Yes</answer>
      <answer id="no">No</answer>
    </poll_question>
    

    In the example above, if you wanted your poll to appear between the HTML component and the Discussion component in the unit, your code would resemble the following.

    <vertical display_name="Test Unit">
     <html url_name="b59c54e2f6fc4cf69ba3a43c49097d0b"/>
     <poll_question display_name="Poll Question">
       <p>Text of the prompt</p>
       <answer id="yes">Yes</answer>
       <answer id="no">No</answer>
     </poll_question>
     <discussion url_name="8320c3d511484f3b96bdedfd4a44ac8b"/>
    </vertical>
    
  7. After you add the poll code, save and close the .xml file.

  8. Re-package your course as a .tar.gz file.

  9. In Studio, re-import your course. You can now review the poll question and answers that you added in Studio.

Note

  • Although polls render correctly in Studio, you cannot edit them in Studio. You will need to follow the export/import process outlined above to make any edits to your polls.
  • A .csv file that contains student responses to the problem is not currently available for polls. However, you can obtain the aggregate data directly in the problem.

Format description

The main tag of Poll module input is:

<poll_question> ... </poll_question>

poll_question can include any number of the following tags: any xml and answer tag. All inner xml, except for answer tags, we call “question”.

poll_question tag

Xmodule for creating poll functionality - voting system. The following attributes can be specified for this tag:

name - Name of xmodule.
[display_name| AUTOGENERATE] - Display name of xmodule. When this attribute is not defined - display name autogenerate with some hash.
[reset | False] - Can reset/revote many time (value = True/False)
answer tag

Define one of the possible answer for poll module. The following attributes can be specified for this tag:

id - unique identifier (using to identify the different answers)

Inner text - Display text for answer choice.

Example

Example of poll
<poll_question name="second_question" display_name="Second question">
    <h3>Age</h3>
    <p>How old are you?</p>
    <answer id="less18">&lt; 18</answer>
    <answer id="10_25">from 10 to 25</answer>
    <answer id="more25">&gt; 25</answer>
</poll_question>
Example of poll with unable reset functionality
<poll_question name="first_question_with_reset" display_name="First question with reset"
    reset="True">
    <h3>Your gender</h3>
    <p>You are man or woman?</p>
    <answer id="man">Man</answer>
    <answer id="woman">Woman</answer>
</poll_question>

Problem with Adaptive Hint

A problem with an adaptive hint evaluates a student’s response, then gives the student feedback or a hint based on that response so that the student is more likely to answer correctly on the next attempt. These problems can be text input problems.

Image of a problem with an adaptive hint

Create a Problem with an Adaptive Hint

To create the above problem:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Problem with Adaptive Hint.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with the code below.
  5. Click Save.
<problem>
        <text>
            <script type="text/python" system_path="python_lib">
    def test_str(expect, ans):
      print expect, ans
      ans = ans.strip("'")
      ans = ans.strip('"')
      return expect == ans.lower()

    def hint_fn(answer_ids, student_answers, new_cmap, old_cmap):
      aid = answer_ids[0]
      ans = str(student_answers[aid]).lower()
      print 'hint_fn called, ans=', ans
      hint = ''
      if '10' in ans:
         hint = 'If the ball costs 10 cents, and the bat costs one dollar more than the ball, how much does the bat cost? If that is the cost of the bat, how much do the ball and bat cost together?'
      elif '.05' in ans:
         hint = 'Make sure to enter the number of cents as a whole number.'

      if hint:
        hint = "&lt;font color='blue'&gt;Hint: {0}&lt;/font&gt;".format(hint)
        new_cmap.set_hint_and_mode(aid,hint,'always')
            </script>
            <p>If a bat and a ball cost $1.10 together, and the bat costs $1.00 more than the ball, how much does the ball cost? Enter your answer in cents, and include only the number (that is, do not include a $ or a ¢ sign).</p>
            <p>
                <customresponse cfn="test_str" expect="5">
                    <textline correct_answer="5" label="How much does the ball cost?"/>
                    <hintgroup hintfn="hint_fn"/>
                </customresponse>
            </p>
        </text>
</problem>

Problem with Adaptive Hint XML

Template
<problem>
  <text>
    <script type="text/python" system_path="python_lib">
def test_str(expect, ans):
  print expect, ans
  ans = ans.strip("'")
  ans = ans.strip('"')
  return expect == ans.lower()

def hint_fn(answer_ids, student_answers, new_cmap, old_cmap):
  aid = answer_ids[0]
  ans = str(student_answers[aid]).lower()
  print 'hint_fn called, ans=', ans
  hint = ''
  if 'incorrect answer 1' in ans:
     hint = 'hint for incorrect answer 1'
  elif 'incorrect answer 2' in ans:
     hint = 'hint for incorrect answer 2'

  if hint:
    hint = "&lt;font color='blue'&gt;Hint: {0}&lt;/font&gt;".format(hint)
    new_cmap.set_hint_and_mode(aid,hint,'always')
</script>
    <p>TEXT OF PROBLEM</p>
    <p>
      <customresponse cfn="test_str" expect="ANSWER">
        <textline correct_answer="answer" label="LABEL TEXT"/>
        <hintgroup hintfn="hint_fn"/>
      </customresponse>
    </p>
  </text>
</problem>

Note

If the hints that you supply include characters, the letters must be lowercase.

Tags
  • <text>: Surrounds the script and text in the problem.
  • <customresponse>: Indicates that this problem has a custom response.
  • <textline>: Creates a response field in the LMS where the student enters a response.
  • <hintgroup>: Specifies that the problem contains at least one hint.

Tag: <customresponse>

Attributes

(none)

Children

  • <textline>
  • <hintgroup>

Tag: <textline>

Attributes

Attribute Description
label (required) Contains the text of the problem.
size (optional) Specifies the size, in characters, of the response field in the LMS.
hidden (optional) If set to “true”, students cannot see the response field.
correct_answer (optional) The answer to the problem. To supply a correct_answer value that includes letters, all letters must be lowercase. (Students’ responses to the problem are not case sensitive. They can contain both uppercase and lowercase letters.)

Children

(none)

Tag: <hintgroup>

Attributes

Attribute Description
hintfn Must be set to hint_fn (that is, the tag must appear as <hintgroup hintfn="hint_fn"/>).

Problem Written in LaTeX

Warning

This problem type is still a prototype and may not be supported in the future. By default, the ability to create these problems is not enabled in Studio. You must change the advanced settings in your course before you can create problems with LaTeX. Use this problem type with caution.

If you have an problem that is already written in LaTeX, you can use this problem type to easily convert your code into XML. After you paste your code into the LaTeX editor, you’ll only need to make a few minor adjustments.

Note

If you want to use LaTeX to typeset mathematical expressions in problems that you haven’t yet written, use any of the other problem templates together with MathJax. For more information about how to create mathematical expressions in Studio using MathJax, see A Brief Introduction to MathJax in Studio.

Image of a problem written in LaTeX

Create a Problem Written in LaTeX

To create a problem written in LaTeX:

  1. Enable the policy key in your course.
    1. In Studio, click Settings, and then click Advanced Settings.
    2. In the field for the Enable LaTeX Compiler policy key, change false to true.
    3. At the bottom of the page, click Save Changes.
  2. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  3. Click Problem Written in LaTeX.
  4. In the component editor that appears, click Edit.
  5. In the lower left corner of the component editor, click Launch LaTeX Source Compiler.
  6. Replace the example code with your own code. You can also upload a Latex file into the editor from your computer by clicking Upload in the bottom right corner.
  7. In the lower left corner of the LaTeX source compiler, click Save & Compile to edX XML.

Protex Protein Builder Tool

The Protex protein builder asks students to create specified protein shapes by stringing together amino acids. In the example below, the goal protein shape is a simple line.

Image of the protein builder

Create the Protein Builder Tool

To create the protein builder:

  1. Under Add New Component, click Problem, and then click Blank Advanced Problem.
  2. In the component that appears, click Edit.
  3. In the component editor, paste the Problem component code from below.
  4. Make any changes that you want, and then click Save.

Protein Builder Tool Code

<problem>
    <p>The protein builder allows you string together the building blocks of proteins, amino acids, and see how that string will form into a structure. You are presented with a goal protein shape, and your task is to try to re-create it. In the example below, the shape that you are asked to form is a simple line.</p>
   <p>Be sure to click "Fold" to fold your protein before you click "Check".</p>

<script type="loncapa/python">

def protex_grader(expect,ans):
  import json
  ans=json.loads(ans)
  if "ERROR" in ans["protex_answer"]:
    raise ValueError("Protex did not understand your answer. Try folding the protein.")
  return ans["protex_answer"]=="CORRECT"

</script>

  <text>
    <customresponse cfn="protex_grader">
      <designprotein2dinput width="855" height="500" target_shape="W;W;W;W;W;W;W"/>
    </customresponse>
  </text>
  <solution>
    <p>
      Many protein sequences, such as the following example, fold to a straight line.You can play around with the protein builder if you're curious.
    </p>
    <ul>
      <li>
          Stick: RRRRRRR
      </li>
    </ul>
  </solution>
</problem>

In this code:

  • width and height specify the dimensions of the application, in pixels.

  • target_shape lists the amino acids that, combined in the order specified, create the shape you’ve asked students to create. The list can only include the following letters, which correspond to the one-letter code for each amino acid. (This list appears in the upper-left corner of the protein builder.)

    A R N D
    C Q E G
    H I L K
    M F P S
    T W Y V

Randomized Content Blocks

If your course has content libraries enabled and you have access to a library whose content you want to use, you can reference that library to create randomized assignments for students.

To create a randomized assignment, you add one or more randomized content blocks to a course unit. For each randomized content block, specify one or more libraries from which to draw the content, and indicate the number and optionally the type of problem to randomly give each student. If you specify more than one library from which to randomly draw components for the randomized assignment, the content from all specified libraries is combined before the random selection is made.

The libraries that you create or have access to are listed on the Libraries tab on the Studio Home page. For details about content libraries, see Working with Content Libraries.

For details about using content library components in a course, see these topics:

Use Components from Libraries in a Course

To create randomized assignments that make use of components from content libraries, you must have at least User level access to the libraries that you want to use. If you do not have access to a library, members of your course team who have Admin access to that library can grant you access.

The libraries that you create or have access to are listed on the Libraries tab on the Studio Home page. For details about content libraries, see Working with Content Libraries.

Using components from content libraries in your course involves two steps.

  1. Enable Content Libraries
  2. Add a Randomized Content Block to Your Course

Note

After adding a randomized content block to your course, be aware that if components in the source library or libraries change, you must manually update the components in the course outline if you want to keep the components synchronized with the version in the library.

For details about working with randomized content blocks in your course, see these topics.

Enable Content Libraries

You must enable content libraries before you can use randomized components from content libraries in your courses.

  1. In Studio, open the course in which you want to provide library content.

  2. Select Settings, then Advanced Settings.

  3. In the Advanced Module List field, place your cursor between the supplied pair of square brackets.

  4. Type "library_content".

  5. Click Save Changes.

    Studio reformats the policy key you just entered to indent it on a new line.

Advanced Module policy key "library_content"
Add a Randomized Content Block to Your Course

After you enable content libraries you can add library content to your courses using the Randomized Content Block advanced component.

Note

Before starting these steps, obtain the Library ID for each library that you intend to reference in the randomized content block. The Library ID is found in the sidebar of each library’s page. For details, see Create a New Library.

  1. In Studio, open the course in which you want to add randomized problems from one or more content libraries.
  2. Click Content then click Outline.
  3. In the unit where you want to add a set of randomized problems, click Add New Component
  4. Click Advanced, then click Randomized Content Block. The randomized content block is added to your unit.
  5. Click the Edit icon.
  6. In the randomized content block settings, specify the details of the content you want to add in this block.
  • For Count, enter the number of problems to display to each student.

  • For Display Name, enter the name that you want students to see for this block.

  • For Libraries, enter the unique Library ID found in the sidebar of the Library page in Studio. To select problems from more than one content library, click Add to enter each additional Library ID.

  • For Problem Type, from the drop down list select a specific type of problem to be drawn from the library or libraries. Select Any Type if you do not want to select a particular type of problem.

    The Edit icon to the right of the Library Name
  • For Scored, from the drop down list select True or False to indicate whether the assignment should be graded.

Note

Grading is subject to the setting of this unit’s subsection or section. If the subsection or section is not graded, selecting True here has no impact. Selecting False means that this assignment is not graded even if the subsection or section is graded.

  1. Click Save when you have finished specifying the details of your randomized content block.

To view the list of components in the source library that match your filter settings, see View the Matching Components in a Randomized Content Block.

To view the entire contents of the library in Studio, see View the Contents of a Library.

View the Matching Components in a Randomized Content Block

In a unit that uses a randomized content block, you can view the list of all components that match the filters specified in that block.

For example, if you have specified in the randomized content block that you want to provide each student with 3 multiple choice problems, you see all the multiple choice problems that exist in the referenced library or libraries. In other words, you see every problem in the library that could potentially be provided to a student.

  1. In Studio, navigate to the unit containing the randomized content block that references your library.

  2. In the randomized content block, click the View icon.

    The View button for a randomized content block

    You see all components that match the specifications in the randomized content block. The text at the top of the list of components indicates how many of these components are randomly selected and provided to each student.

To view the contents of a library in Studio, see View the Contents of a Library.

To view the randomized content as a student would see it, see View the Randomized Content as a Student.

View the Randomized Content as a Student

To view the number and type of components from a randomized content block as a student would see them, follow the steps described in the Preview a Unit topic.

To view the list of matching components in the library, see View the Matching Components in a Randomized Content Block.

To view the entire contents of the library in Studio, see View the Contents of a Library.

Editing Components in Randomized Content Blocks

In Studio, in the course unit that uses a randomized content block, you can edit each component within the randomized content block in the same way as you do for any other component in your course.

Note

Be aware that if you make changes on a component’s Editor tab, if you update the randomized content block with the latest version of components from a library, these changes are overwritten. Only changes to a component’s Settings tab are retained when you update the component. For details about getting the latest versions of library content in a randomized content block, see Getting the Latest Version of Library Content.

The settings of a component that is supplied in a randomized content block are initially inherited from the component in the content library that it is drawn from. In the randomized content block, you can modify component settings so that they are different from the “source” component in the library.

You can also reset a component’s settings to the library default. If a component’s settings have been changed from the default settings in the library, a Clear icon is shown next to the setting field.

Clear button in the course component field reverts value to library value.

Click the Clear icon to restore the library default setting for that field.

Getting the Latest Version of Library Content

If you modify the contents of a library that is referenced by randomized content blocks in one or more courses, those courses do not automatically use the updated content. You can bring the randomized content blocks up to date with the version in the library.

Warning

Be careful when you modify problems after they have been released! Changes that you make to published problems can affect the student experience in the course, as well as analysis of course data.

Note

Be aware that although you can retain changes to the settings of components in a randomized content block, changes to the Editor tab in components are overwritten if you update the component to the latest library version. If you do not want to bring components in the randomized content block up to date with the latest version in the library, you do not need to take any action.

  • If the components in the randomized content block have not been edited in the course outline, when you next open the randomized content block in the course outline, you see a message indicating that the component is out of date in comparison with the library.

    Error message shown when the source library has changed, with the Update Now link circled.

    To update your randomized content block components to the latest versions in the content library, click Update now.

    The randomized content block is brought up to date with the latest contents of the library or libraries that it references.

  • If you edited only the settings of components in the randomized content block in your course so that they are different from the original version in the library, you do not lose your changes if you click Update now. In this case, the changes that were made in the randomized content block in the course outline are kept, but a Clear button becomes available next to the changed field in the component. However, any changes you made to the Editor tab of components in a randomized content block will be lost if you click Update now to get the latest library version.

    Clear icon in the course component field reverts value to library value.

    To clear any edits made in the course outline and bring your edited components up to date with the version in the library, click Clear.

    The value in that component field is reset to the current value in the library.

Student Notes Tool

The Student Notes tool allows students to highlight and make notes about what they read in the body of the course.

Image of a course page that includes highlighted text and a student note

Note

The Student Notes tool is available for text, including text in HTML components. However, the tool is currently not available for discussions, exercises, video transcripts, or PDF documents.

Students can access their notes either in the body of the course or on a Notes tab. On the Notes tab, a student can see all the notes that the student has made during the course. It also contains links to the location of the notes in the course content.

The Student Notes page listing all the notes a student has made in the course

For detailed information about the ways students can use student notes, see SFD Student Notes.

Enable the Student Notes Tool

The Student Notes tool is disabled by default. You enable or disable student notes on the Advanced Settings page in Studio.

Note

If you disable student notes after students have made notes in your course, students cannot access the notes that they have made.

To enable or disable the Student Notes tool, follow these steps.

  1. On the Settings menu, click Advanced Settings.
  2. In the Enable Student Notes field, enter true to enable notes, or enter false to disable notes.
  3. At the bottom of the page, click Save Changes.

The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved.

Text Input Problem

In text input problems, students enter text into a response field. The response can include numbers, letters, and special characters such as punctuation marks. Because the text that the student enters must match the instructor’s specified answer exactly, including spelling and punctuation, we recommend that you specify more than one attempt for text input problems to allow for typographical errors.

Image of a text input probem

Create a Text Input Problem

You can create text input problems in the Simple Editor or in the Advanced Editor.

Note

All problems must include labels for accessibility. The label generally includes the text of the main question in your problem. To add a label for a common problem, surround the text of the label with angle brackets pointed toward the text (>>label text<<).

Simple Editor

To create a text input problem in the Simple Editor, follow these steps.

  1. Under Add New Component, click Problem.

  2. In the Select Problem Component Type screen, click Text Input on the Common Problem Types tab.

  3. In the new Problem component that appears, click Edit.

  4. Replace the default text with the text for your problem.

  5. Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).

  6. Select the text of the answer, and then click the text input button.

    Image of the text input button

    When you do this, an equal sign appears next to the answer.

  7. In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.

    Image of the explanation button
  8. On the Settings tab, specify the settings that you want.

  9. Click Save.

For the example problem above, the text in the Problem component is the following.

>>What is the technical term that refers to the fact that, when enough people
sleep under a bednet, the disease may altogether disappear?<<
= herd immunity

[explanation]
The correct answer is herd immunity. As more and more people use bednets,
the risk of malaria begins to fall for everyone – users and non-users alike.
This can fall to such a low probability that malaria is effectively eradicated
from the group (even when the group does not have 100% bednet coverage).
[explanation]
Advanced Editor

To create this problem in the Advanced Editor, click the Advanced tab in the Problem component editor, and then replace the existing code with the following code.

<problem>
<p>
  <em>This problem is adapted from an exercise that first appeared in MITx's 14.73x The Challenges of Global Poverty course, spring 2013.</em>
</p>
<p>What is the technical term that refers to the fact that, when enough people sleep under a bednet, the disease may altogether disappear?</p>
<stringresponse answer="herd immunity" type="ci regexp">
       <additional_answer>community immunity</additional_answer>
        <additional_answer>population immunity</additional_answer>
        <textline size="20" label="What is the technical term that refers to the fact that, when enough people sleep under a bednet, the disease may altogether disappear?"/>
        <hintgroup>
            <stringhint answer="contact immunity" type="ci" name="contact_immunity_hint" />
            <hintpart on="contact_immunity_hint">
                <startouttext />
                In contact immunity, a vaccinated individual passes along his immunity to another person through contact with feces or bodily fluids. The answer to the question above refers to the form of immunity that occurs when so many members of a population are protected, an infectious disease is unlikely to spread to the unprotected population.
                <endouttext />
            </hintpart >
            <stringhint answer="firewall immunity" type="ci" name="firewall_immunity_hint" />
            <hintpart on="firewall_immunity_hint">
                <startouttext />
                Although a firewall provides protection for a population, the term "firewall" is used more in computing and technology than in epidemiology.
                <endouttext />
            </hintpart >
        </hintgroup>
</stringresponse>
<solution>
  <div class="detailed-solution">
    <p>Explanation</p>
    <p>The correct answer is <b>herd immunity</b>. As more and more people use bednets, the risk of malaria begins to fall for everyone – users and non-users alike. This can fall to such a low probability that malaria is effectively eradicated from the group (even when the group does not have 100% bednet coverage).</p>
  </div>
</solution>
</problem>

Multiple Responses in Text Input Problems

You can specify more than one correct response for text input problems. For example, instead of requiring students to enter exactly “Dr. Martin Luther King, Junior,” you can allow answers of “Martin Luther King,” “Doctor Martin Luther King,” and other variations. To do this, you can use the Simple Editor or the Advanced Editor.

Simple Editor

To specify additional correct responses in the Simple Editor, include “or=” (without the quotation marks) before each additional correct response.

>>What African-American led the United States civil rights movement during the 1960s?<<
= Dr. Martin Luther King, Jr.
or= Dr. Martin Luther King, Junior
or= Martin Luther King, Jr.
or= Martin Luther King
Advanced Editor

To specify additional correct responses in the Advanced Editor, add an <additional_answer> for each correct response inside the opening and closing <stringresponse> tags.

<problem>

<p>What African-American led the United States civil rights movement during the 1960s?</p>

<stringresponse answer="Dr. Martin Luther King, Jr." type="ci" >
  <additional_answer>Dr. Martin Luther King, Junior</additional_answer>
  <additional_answer>Martin Luther King, Jr.</additional_answer>
  <additional_answer>Martin Luther King</additional_answer>
  <textline label="What African-American led the United States civil rights movement during the 1960s?" size="20"/>
</stringresponse>

</problem>

Case Sensitivity and Text Input Problems

By default, text input problems do not require a case sensitive response. You can change this and require a case sensitive answer.

To make a text input response case sensitive, you must use The Advanced Editor.

In the Advanced Editor, you see that the type attribute of the stringresponse element equals ci, for case insensitive. For example:

<stringresponse answer="Michigan" type="ci">
  <textline size="20"/>
</stringresponse>

To make the response case sensitive, change the value of the type attribute to cs.

<stringresponse answer="Michigan" type="cs">
  <textline size="20"/>
</stringresponse>

Response Field Length of Text Input Problems

By default, the response field for text input problems is 20 characters long.

You should preview the unit to ensure that the length of the response input field accommodates the correct answer, and provides extra space for possible incorrect answers.

If the default response field length is not sufficient, you can change it using The Advanced Editor.

In the advanced editor, in the XML block for the answer, you see that the size attribute of the textline element equals 20:

<stringresponse answer="Democratic Republic of the Congo" type="ci">
  <textline size="20"/>
</stringresponse>

To change the response field length, change the value of the size attribute:

<stringresponse answer="Democratic Republic of the Congo" type="ci">
  <textline size="40"/>
</stringresponse>

Hints and Regular Expressions in Text Input Problems

You can provide hints that appear when students enter common incorrect answers in text input problems. You can also set a text input problem to allow a regular expression as an answer. To do this, you’ll have to modify the problem’s XML in the Advanced Editor.

The regular expression that the student enters must contain the part of the answer that the instructor specifies. For example, if an instructor has specified <answer="example answer" type="regexp">, correct answers include example answered, two example answers, or even ==example answer==, but not examples or example anser.

You can add regexp to the value of the type attribute, for example: type="ci regexp" or type="regexp" or type="regexp cs". In this case, any answer or hint are treated as regular expressions.

Text Input Problem XML

Template
<problem>
    <p>Problem text</p>
    <stringresponse answer="Correct answer 1" type="ci regexp">
        <additional_answer>Correct answer 2</additional_answer>
        <additional_answer>Correct answer 3</additional_answer>
        <textline size="20" label="label text"/>
        <hintgroup>
            <stringhint answer="Incorrect answer A" type="ci" name="hintA" />
              <hintpart on="hintA">
                  <startouttext />Text of hint for incorrect answer A<endouttext />
              </hintpart >
            <stringhint answer="Incorrect answer B" type="ci" name="hintB" />
              <hintpart on="hintB">
                  <startouttext />Text of hint for incorrect answer B<endouttext />
              </hintpart >
            <stringhint answer="Incorrect answer C" type="ci" name="hintC" />
              <hintpart on="hintC">
                  <startouttext />Text of hint for incorrect answer C<endouttext />
              </hintpart >
        </hintgroup>
    </stringresponse>
    <solution>
    <div class="detailed-solution">
    <p>Explanation or Solution Header</p>
    <p>Explanation or solution text</p>
    </div>
  </solution>
</problem>
Tags
  • <stringresponse>: Indicates that the problem is a text input problem.
  • <textline>: Child of <stringresponse>. Creates a response field in the LMS where the student enters a response.
  • <additional_answer> (optional): Specifies an additional correct answer for the problem. A problem can contain an unlimited number of additional answers.
  • <hintgroup> (optional): Indicates that the instructor has provided hints for certain common incorrect answers.
  • <stringhint /> (optional): Child of <hintgroup>. Specifies the text of the incorrect answer to provide the hint for. Contains answer, type, name.
  • <hintpart>: Contains the name from <stringhint>. Associates the incorrect answer with the hint text for that incorrect answer.
  • <startouttext />: Indicates the beginning of the text of the hint.
  • <endouttext />: Indicates the end of the text of the hint.

Tag: <stringresponse>

Indicates that the problem is a text input problem.

Attributes

Attribute Description
answer (required) Specifies the correct answer. To designate the answer as a regular expression, add “regexp” to the type attribute. If you do not add “regexp” to the type attribute, the student’s answer must match the value in this attribute exactly.
type (optional) Can specify whether the problem is case sensitive and allows regular expressions. If the <stringresponse> tag includes type="ci", the problem is not case sensitive. If the tag includes type="cs", the problem is case sensitive. If the tag includes type="regexp", the problem allows regular expressions. A type attribute in a <stringresponse> tag can also combine these values. For example, <stringresponse type="regexp cs"> specifies that the prolem allows regular expressions and is case sensitive.

Children

  • <textline /> (required)
  • <additional_answer> (optional)
  • <hintgroup> (optional)

Tag: <textline />

Creates a response field in the LMS where the student enters a response.

Attributes

Attribute Description
label (required) Contains the text of the problem.
size (optional) Specifies the size, in characters, of the response field in the LMS.
hidden (optional) If set to “true”, students cannot see the response field.
correct_answer (optional) Lists the correct answer to the problem.

Children

(none)

Tag: <additional_answer>

Specifies an additional correct answer for the problem. A problem can contain an unlimited number of additional answers.

Attributes

(none)

Children

(none)

Tag: <hintgroup>

Indicates that the instructor has provided hints for certain common incorrect answers.

Attributes

(none)

Children

  • <stringhint> (required)

Tag: <stringhint>

Specifies a common incorrect answer to the problem.

Attributes

Attribute Description
answer (required) The text of the incorrect answer.
name (required) The name of the hint that you want to provide.
type Specifies whether the text of the specified incorrect answer is case sensitive. Can be set to “cs” (case sensitive) or “ci” (case insensitive).

Children

  • <hintpart> (required)

Tag: <hintpart>

Associates a common incorrect answer with the hint for that incorrect answer.

Attributes

Attribute Description
on The name of the hint. This must be the same as the name attribute of the <stringhint> tag. (The <stringhint> tag provides the name of the hint and the incorrect answer to associate with the hint. The <hintpart> tag contains the name of the hint and the text of the hint.)

Children

  • <startouttext /> (required)
  • <endouttext /> (required)

Tags: <startouttext /> and <endouttext>

Surround the text of the hint.

Attributes

(none)

Children

(none)

Word Cloud Tool

In a word cloud tool, students enter words into a field in response to a question or prompt. The words all the students have entered then appear instantly as a colorful graphic, with the most popular responses appearing largest. The graphic becomes larger as more students answer. Students can both see the way their peers have answered and contribute their thoughts to the group.

For example, the following word cloud was created from students’ responses to a question in a HarvardX course.

Image of a word cloud problem

Create a Word Cloud Tool

To create a word cloud tool:

  1. Add the Word Cloud advanced component.

    1. On the Settings menu, click Advanced Settings.

    2. In the field for the Advanced Module List policy key, place your cursor between the brackets.

    3. Enter the following value. Make sure to include the quotation marks.

      "word_cloud"

    1. At the bottom of the page, click Save Changes.

      The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved.

    2. Return to the unit where you want to add the specialized problem. The list of possible components now contains an Advanced component.

  2. In the unit where you want to create the problem, click Advanced under Add New Component.

  3. In the list of problem types, click Word Cloud.

  4. In the component that appears, click Edit.

  5. In the component editor, specify the settings that you want. You can leave the default value for everything except Display Name.

    • Display Name: The name that appears in the course ribbon and as a heading above the problem.
    • Inputs: The number of text boxes into which students can enter words, phrases, or sentences.
    • Maximum Words: The maximum number of words that the word cloud displays. If students enter 300 different words but the maximum is set to 250, only the 250 most commonly entered words appear in the word cloud.
    • Show Percents: The number of times that students have entered a given word as a percentage of all words entered appears near that word.
  6. Click Save.

Write-Your-Own-Grader Problem

In custom Python-evaluated input (also called “write-your-own-grader” problems), the grader uses a Python script that you create and embed in the problem to evaluates a student’s response or provide hints. These problems can be any type. Numerical input and text input problems are the most popular write-your-own-grader problems.

Image of a write your own grader problem

Custom Python-evaluated input problems can include the following:

<script type="loncapa/python"> Indicates that the problem contains a Python script.
<customresponse cfn="test_add_to_ten">  
<customresponse cfn="test_add" expect="20">  
<textline size=”10” correct_answer=”3”/> This tag includes the size, correct_answer, and label attributes. The correct_answer attribute is optional.

You can create one of these problems in Answer Tag Format or Script Tag Format.

Answer Tag Format

The answer tag format encloses the Python script in an <answer> tag:

<answer>
if answers[0] == expect:
    correct[0] = 'correct'
    overall_message = 'Good job!'
else:
    correct[0] = 'incorrect'
    messages[0] = 'This answer is incorrect'
    overall_message = 'Please try again'
</answer>

Important

Python honors indentation. Within the <answer> tag, you must begin your script with no indentation.

The Python script interacts with these variables in the global context:

  • answers: An ordered list of answers the student provided. For example, if the student answered 6, answers[0] would equal 6.
  • expect: The value of the expect attribute of <customresponse> (if provided).
  • correct: An ordered list of strings indicating whether the student answered the question correctly. Valid values are "correct", "incorrect", and "unknown". You can set these values in the script.
  • messages: An ordered list of messages that appear under each response field in the problem. You can use this to provide hints to users. For example, if you include messages[0] = "The capital of California is Sacramento", that message appears under the first response field in the problem.
  • overall_message: A message that appears beneath the entire problem. You can use this to provide a hint that applies to the entire problem rather than a particular response field.
Create a Custom Python-Evaluated Input Problem in Answer Tag Format

To create a custom Python-evaluated input problem using an <answer> tag:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Custom Python-Evaluated Input.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with the following code.
  5. Click Save.
<problem>
    <p>What is the sum of 2 and 3?</p>

    <customresponse expect="5">
    <textline math="1" />
    </customresponse>

    <answer>
if answers[0] == expect:
    correct[0] = 'correct'
    overall_message = 'Good job!'
else:
    correct[0] = 'incorrect'
    messages[0] = 'This answer is incorrect'
    overall_message = 'Please try again'
    </answer>
</problem>

Important

Python honors indentation. Within the <answer> tag, you must begin your script with no indentation.

Script Tag Format

The script tag format encloses a Python script that contains a “check function” in a <script> tag, and adds the cfn attribute of the <customresponse> tag to reference that function:

<problem>

<script type="loncapa/python">

def test_add(expect, ans):
    try:
        a1=int(ans[0])
        a2=int(ans[1])
        return (a1+a2) == int(expect)
    except ValueError:
        return False

def test_add_to_ten(expect, ans):
    return test_add(10, ans)

</script>

<p>Enter two integers that sum to 10. </p>
<customresponse cfn="test_add_to_ten">
        <textline size="10"/><br/>
        <textline size="10"/>
</customresponse>

</problem>

Important: Python honors indentation. Within the <script> tag, the def check_func(expect, ans): line must have no indentation.

The check function accepts two arguments:

  • expect is the value of the expect attribute of <customresponse> (if provided)

  • answer is either:

    • The value of the answer the student provided, if the problem only has one response field.
    • An ordered list of answers the student provided, if the problem has multiple response fields.

The check function can return any of the following to indicate whether the student’s answer is correct:

  • True: Indicates that the student answered correctly for all response fields.
  • False: Indicates that the student answered incorrectly. All response fields are marked as incorrect.
  • A dictionary of the form: { 'ok': True, 'msg': 'Message' } If the dictionary’s value for ok is set to True, all response fields are marked correct; if it is set to False, all response fields are marked incorrect. The msg is displayed beneath all response fields, and it may contain XHTML markup.
  • A dictionary of the form
{ 'overall_message': 'Overall message',
    'input_list': [
        { 'ok': True, 'msg': 'Feedback for input 1'},
        { 'ok': False, 'msg': 'Feedback for input 2'},
        ... ] }

The last form is useful for responses that contain multiple response fields. It allows you to provide feedback for each response field individually, as well as a message that applies to the entire response.

Example of a checking function:

def check_func(expect, answer_given):
    check1 = (int(answer_given[0]) == 1)
    check2 = (int(answer_given[1]) == 2)
    check3 = (int(answer_given[2]) == 3)
    return {'overall_message': 'Overall message',
                'input_list': [
                    { 'ok': check1, 'msg': 'Feedback 1'},
                    { 'ok': check2, 'msg': 'Feedback 2'},
                    { 'ok': check3, 'msg': 'Feedback 3'} ] }

The function checks that the user entered 1 for the first input, 2 for the second input, and 3 for the third input. It provides feedback messages for each individual input, as well as a message displayed beneath the entire problem.

Create a Custom Python-Evaluated Input Problem in Script Tag Format

To create a custom Python-evaluated input problem using a <script> tag:

  1. In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
  2. Click Custom Python-Evaluated Input.
  3. In the component that appears, click Edit.
  4. In the component editor, replace the example code with the following code.
  5. Click Save.

Problem Code:

<problem>
<p>This question has two parts.</p>

<script type="loncapa/python">

def test_add(expect, ans):
    try:
        a1=int(ans[0])
        a2=int(ans[1])
        return (a1+a2) == int(expect)
    except ValueError:
        return False

def test_add_to_ten(expect, ans):
    return test_add(10, ans)

</script>

<p>Part 1: Enter two integers that sum to 10. </p>
<customresponse cfn="test_add_to_ten">
        <textline size="10" correct_answer="3" label="Integer #1"/><br/>
        <textline size="10" correct_answer="7" label="Integer #2"/>
</customresponse>

<p>Part 2: Enter two integers that sum to 20. </p>
<customresponse cfn="test_add" expect="20">
        <textline size="10" label="Integer #1"/><br/>
        <textline size="10" label="Integer #2"/>
</customresponse>

<solution>
    <div class="detailed-solution">
        <p>Explanation</p>
        <p>For part 1, any two numbers of the form <i>n</i> and <i>10-n</i>, where <i>n</i> is any integer, will work. One possible answer would be the pair 0 and 10.</p>
        <p>For part 2, any pair <i>x</i> and <i>20-x</i> will work, where <i>x</i> is any real number with a finite decimal representation. Both inputs have to be entered either in standard decimal notation or in scientific exponential notation. One possible answer would be the pair 0.5 and 19.5. Another way to write this would be 5e-1 and 1.95e1.</p>
    </div>
</solution>
</problem>

Templates

The following template includes answers that appear when the student clicks Show Answer.

<problem>

<script type="loncapa/python">
def test_add(expect,ans):
  a1=float(ans[0])
  a2=float(ans[1])
  return (a1+a2)== float(expect)
</script>

<p>Problem text</p>
<customresponse cfn="test_add" expect="20">
        <textline size="10" correct_answer="11" label="Integer #1"/><br/>
        <textline size="10" correct_answer="9" label="Integer #2"/>
</customresponse>

    <solution>
        <div class="detailed-solution">
          <p>Solution or Explanation Heading</p>
          <p>Solution or explanation text</p>
        </div>
    </solution>
</problem>

The following template does not return answers when the student clicks Show Answer. If your problem doesn’t include answers for the student to see, make sure to set Show Answer to Never in the problem component.

<problem>

<script type="loncapa/python">
def test_add(expect,ans):
  a1=float(ans[0])
  a2=float(ans[1])
  return (a1+a2)== float(expect)
</script>

<p>Enter two real numbers that sum to 20: </p>
<customresponse cfn="test_add" expect="20">
        <textline size="10"  label="Integer #1"/><br/>
        <textline size="10"  label="Integer #2"/>
</customresponse>

    <solution>
        <div class="detailed-solution">
          <p>Solution or Explanation Heading</p>
          <p>Solution or explanation text</p>
        </div>
    </solution>
</problem>

Create a Randomized Custom Python-Evaluated Input Problem

You can create a custom Python-evaluated input problem that randomizes variables in the Python code.

Note

In the problem settings, you must set the Randomization value to something other than Never to have Python variables randomized. See Randomization for more information.

The following example demonstrates using randomization with a Python-evaluated input problem.

Note

This example uses the method random.randint to generate random numbers. You can use any standard Python library for this purpose.

<problem>
  <p>Some problems in the course will utilize randomized parameters.
     For such problems, after you check your answer you will have the option
     of resetting the question, which reconstructs the problem with a new
     set of parameters.</p>
<script type="loncapa/python">
x1 = random.randint(0, 100)
x2 = random.randint(0, 100)
y = x1+x2
</script>
<p>Let (x_1 = $x1) and (x_2 = $x2). What is the value of (x_1+x_2)?</p>
<numericalresponse answer="$y">
  <responseparam type="tolerance" default="0.01%" name="tol"
    description="Numerical Tolerance"/>
  <textline size="10"/>
</numericalresponse>
<solution>
  <p><b>Explanation:</b></p>
</solution>
</problem>

Zooming Image Tool

You may want to present information to your students as an image. If your image is very large or very detailed, students may not be able to see all the information in the image. You can use the zooming image tool to enlarge areas of your image as the student moves the mouse over the image, as in the example below.

Example zooming image tool showing a chemistry exercise

Components of a Zooming Image Tool

To create a zooming image tool, you need the following files.

  • The image that you want students to see when they access the unit.
  • The image that appears in the magnified area when a student clicks the regular image. This image may be larger than the regular image.
  • The jquery.loupeAndLightbox.js JavaScript file. Every zooming image tool uses this JavaScript file, and you won’t make any changes to it. To download this file, right-click here, and then click Save Link As to save the file on your computer.

Create a Zooming Image Tool

  1. Upload your regular-sized image file, your small image file, and the jquery.loupeAndLightbox.js file to the Files & Uploads page. For more information about how to do this, see Adding Files to a Course.

  2. Under Add New Component, click html, and then click Zooming Image.

  3. In the new component that appears, click Edit.

  4. In the component editor, replace the default problem text with your own text.

  5. Switch to the HTML tab.

  6. Replace the following placeholders with your own content.

    • Replace the following file name and path with the name and path of the image that you want to appear magnified when the user hovers over the regular image.

      https://studio.edx.org/c4x/edX/DemoX/asset/pathways_detail_01.png

      For example, your file name and path may be /static/Image1.jpg.

    • Replace the following file name and path with the name and path of the image that you want to appear when the page opens.

      https://studio.edx.org/c4x/edX/DemoX/asset/pathways_overview_01.png

      For example, your file name and path may be /static/Image2.jpg.

    • Replace the following name and file path with the name and path of the JavaScript file for your course.

      https://studio.edx.org/c4x/edX/DemoX/asset/jquery.loupeAndLightbox.js

      Because you uploaded the jquery.loupeAndLightbox.js file to the Files & Uploads page, your file name and path is /static/jquery.loupeAndLightbox.js.

    • (Optional) If you want the magnified area to be larger or smaller, change the width and height values from 350 to larger or smaller numbers. For example, you can change both numbers to 450. Or, if you want a horizontal oval instead of a circle, you can change the width value to a number such as 500 and the height value to a number such as 150.

    The HTML in your zooming image tool may resemble the following.

    Example HTML for a zooming image tool
  7. Click Save to save the HTML component.

A Brief Introduction to MathJax in Studio

To write clear and professional-looking symbols and equations, we use a LaTeX-like language called MathJax. Your MathJax equations can appear with other text in the paragraph (inline equations) or on their own lines (display equations).

  • For inline equations, you can do either of the following.

    • Surround your Mathjax expression with backslashes and parentheses.

      \( equation \)

    • Surround your Mathjax expression with [mathjaxinline] tags. Note that these tags use square brackets ([]).

      [mathjaxinline] equation [/mathjaxinline]

  • For display equations, you can do either of the following.

    • Surround your Mathjax expression with backslashes and brackets.

      \[ equation \]

    • Surround your Mathjax expression with [mathjax] tags. Note that these tags use square brackets ([]).

      [mathjax] equation [/mathjax]

You can use MathJax in HTML (text) components and in Problem components.

Note

Complete MathJax documentation (together with a testing tool) can be found at http://www.onemathematicalcat.org/MathJaxDocumentation/TeXSyntax.htm.

HTML (Text) Components

In the HTML component editor, you can use MathJax both in Visual view and in HTML view.

Image of an HTML component with MathJax in both the Visual and HTML views

Problem Components

In the Problem component editor, you can use MathJax both in the Simple Editor and in the Advanced Editor.

In the example problem below, note that the Einstein equation in the explanation is enclosed in backslashes and parentheses, so it appears inline with the text. The Navier-Stokes equation is enclosed in backslashes and brackets, so it appears on its own line.

Image of a problem component with MathJax in both the Visual and HTML views

Creating Content Experiments

Overview of Content Experiments

You use content experiments to show different course content to different groups of students. Also known as “A/B tests” or “split tests”, content experiments enable you to research and compare the performance of students in different groups to gain insight into the relative effectiveness of your course content.

Information on analyzing events from content experiments is included in the edX Researcher Guide.

For more information, see:

Courses with Multiple Content Experiments

You can run multiple content experiments in your course. You can set up each experiment to use the same groups of students, or you can set up each experiment to be independent and use a different grouping.

Important

If your course has multiple experiments, it is critical that you decide in advance if the experiments share the same groups of students or if each experiment has its own unique grouping. If two experiments share the same grouping, then any student that is in Group A for the first experiment will also be in Group A for the second one. If you want the experiments to be independent, then the experiments must use different groupings so that students are randomly assigned for each experiment.

To determine the available groupings of students, you set up group configurations using Studio or using XML.

You then select which group configuration to use when you add a content experiment using Studio or using XML.

Configure Your Course for Content Experiments

This chapter describes how to configure your course so that you can use content experiments. See:

Enable Content Experiments

To enable content experiments in your course, you add split_test to the Advanced Modules List in Advanced Settings.

Note

split_test is the internal edX Platform name for a content experiment.

  1. From the Settings menu, select Advanced Settings.

  2. On the Advanced Settings page, locate Advanced Modules List.

  3. In the Advanced Modules List field, add "split_test". Be sure that you include the double quotation marks.

    If you have multiple values, ensure that they are separated by commas (,).

    For example, the text in the Advanced Modules List field may resemble the following:

    [
      "lti",
      "word_cloud",
      "split_test"
    ]
    
  4. At the bottom of the page, click Save Changes.

Overview of Group Configurations

Before you can create content experiments, you must specify at least one group configuration for your course.

A group configuration defines how many groups of students are in an experiment. You can have any number of group configurations in your course. When you create a content experiment, you select the group configuration to use.

For example, you may want to do two different experiments at different times during your course. In one content experiment, students either see a video or complete a reading assignment. You can then include problems so that you can see which group learned the material more completely. For this content experiment, you need a group configuration that assigns your students to two experiment groups.

In the other content experiment, you can present the same question using four different types of problems. For this content experiment, you need a group configuration that assigns your students to four experiment groups.

Assigning Students to Experiment Groups

The edX Platform assigns students to each experiment group in a group configuration.

Experiment group assignments are:

  • Dynamic

    The edX Platform assigns a student to an experiment group the first time he or she views a content experiment that uses the group configuration.

  • Random

    You cannot control which students are assigned to which experiment group.

  • Evenly distributed

    The edX Platform keeps track of the size of experiment groups, and assigns new students to groups evenly. For example, if you have two experiment groups in a configuration, each group includes 50% of the students in the course; if you have four experiment groups, each group includes 25% of the students.

  • Permanent

    Students remain in their assigned experiment groups regardless of how many content experiments you set up that use the same group configuration.

Set up Group Configurations in edX Studio

Note

You must enable content experiments before you can set up group configurations.

To set up group configurations, on the Settings menu, select Group Configurations. The Group Configurations page opens.

From this page you can create, edit, and delete group configurations. You can also view experiments that use a group configuration.

Create a Group Configuration

You can create a group configuration at any time.

  1. On the Group Configurations page, under Experiment Groups, click New Experiment Group. The following page opens:
Create a New Group Configuration page

2. Enter a name in the Group Configuration Name field. Use a meaningful name, because you will select from group configuration names when you create content experiments. Students do not see the group configuration name.

  1. Optionally, enter a description for the new group configuration.
  2. By default, a new configuration already contains two groups. Modify the groups or add and delete groups as needed. A group configuration must have at least one group.
  • Modify group names as needed. You see group names in the unit page in Studio, but group names are not visible to students.
  • Click Add another group to include another group as part of the configuration.
  • Click the X to the right of an existing group to remove it from the configuration. A group configuration must have at least one group.
  1. Click Create to save the new group configuration.

The group configuration is then listed in the page. You can see the number of groups that the configuration contains, as well as whether the configuration is in use in the course:

The Group Configurations page with one group configuration
Edit a Group Configuration

Important

You can change the name of a group configuration at any time. However, before you modify any other characteristics of a group configuration that is currently used in a running course, review Guidelines for Modifying Group Configurations.

  1. On the Group Configurations page, hover over the group configuration and click Edit.

    The Group Configurations page with Edit button

    The following page opens:

    Edit a Group Configuration page
  2. Modify the name and description as needed.

  3. Modify groups in the configuration as needed. See Create a Group Configuration for details.

  4. Click Save to save your changes.

Delete a Group Configuration

Note

You can only delete a group configuration that is not currently used in a content experiment. You cannot delete a group configuration that is used in a content experiment.

  1. On the Group Configurations page, hover over the group configuration and click the Delete icon.
Edit a Group Configuration page
  1. When prompted to confirm the deletion, click Delete.
View Experiments that Use a Group Configuration

You can view the experiments that use each of your group configurations.

On the Group Configurations page, click the name of a group to see its details. You see links to experiments that use the group configuration:

A group configuration with the experiments using it circled

Click a link to go to the unit page that contains the experiment.

View a Group Configuration from an Experiment

When working with a content experiment, you can view details about the group configuration used by that experiment in two ways:

  • In a unit that contains a content experiment, in the content experiment block, click the name of the group configuration.
Content experiment in the unit page with the group configuration link circled
  • At the top of the content experiment page, click the name of the group configuration.
Content experiment page with the group configuration link circled

In both cases, the group configuration opens:

A Group Configuration with the experiments using it circled

You can use the link in the group configuration to return to the unit that contains the content experiment.

Guidelines for Modifying Group Configurations

Review these guidelines if you must modify a group configuration after a course starts. These guidelines apply for courses built in Studio or OLX.

Modifying a Group Configuration

After the course starts, do not:

  • Delete group configurations.
  • Change the id value of a group configuration.
Modifying Experiment Groups

After the course starts, do not change the id value of an experiment group.

You can change experiment group names at any time.

Removing Experiment Groups from Group Configurations

After a course in which you are running a content experiment has started, students in a specific experiment group might have difficulties with the content or with the course experience. In this situation, you can remove the experiment group from the group configuration. Content that was specified for that experiment group is then no longer visible to students.

Students in the removed experiment group are reassigned evenly to one of the other experiment groups in the group configuration. Any problems that these students completed in the removed experiment group content do not count toward their grades. The students must begin the problem set again and complete all the problems in the experiment group content to which they are reassigned.

Removing an experiment group affects event data for the course. Ensure that researchers who are evaluating your course results are aware of the experiment group that you removed and the date on which you removed it.

Set Up Group Configuration for OLX Courses

You define group configurations in the policy.json file in the policies directory of an OLX course.

To specify group configurations, you modify the value for the user_partitions policy key.

Note

user_partitions is the internal edX Platform name for group configurations.

The value for user_partitions is a JSON collection of group configurations, each of which defines the experiment groups of students.

Note

Use names for group configurations that are meaningful. You select from the list of group configuration names when you add a content experiment.

See the following examples for more information.

Example: One Group Configuration

The following code shows an example JSON object that defines a group configuration with two student segments.

"user_partitions": [{"id": 0,
                   "name": "Name of the group configuration",
                   "description": "Description of the group configuration.",
                   "version": 1,
                   "groups": [{"id": 0,
                               "name": "Group 1",
                               "version": 1},
                              {"id": 1,
                               "name": "Group 2",
                               "version": 1}]
                            }
                   ]

In this example:

  • The "id": 0 identifies the group configuration. For XML courses, the value is referenced in the user_partition attribute of the <split_test> element in the content experiment file.
  • The groups array identifies the experiment groups to which students are randomly assigned. For XML courses, each group id value is referenced in the group_id_to_child attribute of the <split_test> element.
Example: Multiple Group Configurations

The following code shows an example JSON object that defines two group configurations. The first group configuration divides students into two experiment groups, and the second divides students into three experiment groups.

"user_partitions": [{"id": 0,
                     "name": "Name of Group Configuration 1",
                     "description": "Description of Group Configuration 1.",
                     "version": 1,
                     "groups": [{"id": 0,
                                 "name": "Group 1",
                                 "version": 1},
                                {"id": 1,
                                 "name": "Group 2",
                                 "version": 1}]}
                    {"id": 1,
                     "name": "Name of Group Configuration 2",
                     "description": "Description of Group Configuration 2.",
                     "version": 1,
                     "groups": [{"id": 0,
                                 "name": "Group 1",
                                 "version": 1},
                                {"id": 1,
                                 "name": "Group 2",
                                 "version": 1}
                                 {"id": 2,
                                 "name": "Group 3",
                                 "version": 1}
                                 ]}
                   ]

Note

As this example shows, each group configuration is independent. Group IDs and names must be unique within a group configuration, but not across all group configurations in your course.

Add Content Experiments to Your Course

After you enable content experiments and set up group configurations in Studio, you can add content experiments to your course. See:

Add a Content Experiment in Studio

You can add a content experiment in a unit or container page. In Studio, you create and view content for all groups in the content experiment in a container page for the experiment, as shown in Create Content for Groups in the Content Experiment.

When a student views the unit with the content experiment, she has no indication there is a content experiment in the unit, and the content experiment display name is not shown. She sees only the content that you configure for the group she is assigned to. To the student, the unit with the content experiment is no different than any other unit.

To configure a content experiment in Studio, you:

  1. Create the content experiment.
  2. Create content for groups in the content experiment.

After you configure a content experiment, you can change its group configuration. See Change the Group Configuration for a Content Experiment.

Create the Content Experiment
  1. In the unit page, under Add New Component, click Advanced.

  2. Select Content Experiment.

    A new content experiment is added to the unit:

    The content experiment component in a unit page

    You can work with the content experiment as you can any other component. See Developing Course Components for more information.

  3. Click either Select a Group Configuration or Edit to open the content experiment component.

    The content experiment editor
  4. Next to Group Configuration, select a group configuration.

  5. In the Display Name field, enter the name that the component will use in Studio. The display name is only used in Studio; students do not see this value.

  6. Click Save.

The content experiment is displayed as a component that contains other components. See Components that Contain Other Components for more information.

Note

You cannot duplicate a content experiment.

You can now create content for the groups in the experiment.

Create Content for Groups in the Content Experiment

After you select a group configuration, in the content experiment component, click View.

The content experiment page that opens automatically includes a container for each group that is defined in the group configuration you selected. For example, if you select a group configuration that defines Group A and Group B, you see the following page:

The content experiment page with two groups

You add content for both groups as needed, just as you would add content to any container page. See Components that Contain Other Components for more information.

For example, you can add an HTML component and a video to Group A:

Image of an expanded A/B test component

Note

It is valid, and can be useful, to have no content for a group in the experiment. For example, if one group has a video and another group has no content, you can analyze the effect of the video on student performance.

Change the Group Configuration for a Content Experiment

You can change the group configuration for a content experiment. When you change the group configuration, you must add components to any new groups that you create. You can use the components from the previous groups, as well as create new components.

Warning

Changing the group configuration of a student-visible experiment will affect the experiment data.

To change the group configuration:

  1. Open the unit page of the unit that contains the content experiment.

  2. In the content experiment component, click Edit.

    The content experiment editor with a group configuration selected
  3. Select a different group configuration.

  4. Click Save.

  5. You must now add components to the new groups in the experiment. Click View to open the content experiment.

    You see that groups for the new configuration are empty, and any components that you had added to groups in the previous configuration are now moved to a section called Inactive Groups.

    Components in inactive groups
  6. Drag and drop components from the Inactive Groups section into the new groups. You can also create new components in the new groups.

Add a Content Experiment in OLX

You work with multiple XML files to configure a content experiment. This section steps through the files involved in a content experiment that shows different content to two different groups of students.

Define the Content Experiment in the Sequential File

You reference a content experiment in the file for the subsection, or sequential, in the sequential directory. For example:

...
<vertical url_name="name for the unit that contains the A/B test" display_name="A/B Test Unit">
    <split_test url_name="name of A/B test file in the split_test folder"/>
</vertical>
.....

The <split_test> element’s url_name value references the name of the content experiment file in the split_test directory.

Caution

You can only define a content experiment in a unit, or vertical, in which different collections of components are associated with different experiment groups. You cannot define a content experiment at a subsection (sequential) or section (chapter) level and have different units or subsections associated with different groups.

Define the Experiment Content in the Split Test File

After you define the content experiment in the sequential file, you define the course content you want to test in the file in the split_test directory. This is the file referenced in the <split_test> element in the sequential file, as shown above.

In the content experiment file, you add elements for the experiment content. For this example, you add two <vertical> elements to compare the two different sets of content.

<split_test url_name="AB_Test.xml" display_name="A/B Test" user_partition_id="0"
            group_id_to_child='{"0": "i4x://path-to-course/vertical/group_a",
                                "1": "i4x://path-to-course/vertical/group_b"}'>
    <vertical url_name="group_a" display_name="Group A">
       <html>Welcome to group A.</html>
       <video url_name="group_a_video"/>
    </vertical>
    <vertical url_name="group_b" display_name="Group B">
        <html>Welcome to group B.</html>
        <problem display_name="Checkboxes">
            <p>A checkboxes problem presents checkbox buttons for student input.
               Students can select more than one option presented.</p>
            <choiceresponse>
                <checkboxgroup direction="vertical" label="Select the answer that matches">
                    <choice correct="true">correct</choice>
                    <choice correct="false">incorrect</choice>
                    <choice correct="true">correct</choice>
                </checkboxgroup>
            </choiceresponse>
        </problem>
    </vertical>
</split_test>

In this example:

  • The user_partition_id value references the ID of the experiment defined in the policy.json file.

  • The group_id_to_child value references the IDs of the groups defined in the policy.json file and maps the group IDs to specific content.

    For example, the value for group 0, i4x://path-to- course/vertical/group_a, maps to the <vertical> element with the url_name equal to group_a. Therefore, students in group 0 see the content in that vertical.

For information about the policy.json file, see Set Up Group Configuration for OLX Courses.

Test Content Experiments

You should test content experiments in your course before the course starts, to ensure that content is delivered to experiment groups as you intended.

When you view a unit that contains a content experiment in the LMS Staff view, you can select one of the experiment groups from a drop-down list. The unit page then shows the content as the selected group of students sees it.

For example, in the following page, Group 0 is selected, and the HTML component and video that is part of Group 0 is displayed.

Image of a unit page with Group 0 selected

You can change the experiment group selection to view the content that a different experiment group of students sees.

Image of a unit page with Group 1 selected

Note

The example course content in this chapter uses content experiment terminology to make the functionality clear. Typically, you would not use terminology in course content that would make students aware of the experiment.

Including Student Cohorts

Using Cohorts in your Courses

By setting up cohorts in a course, you create smaller communities of students. You can design different course experiences for students in different cohorts. In discussion topics that are divided by cohort, students can also communicate and share experiences privately within the cohort that they are assigned to. Cohort-only discussion opportunities can help students develop a sense of community, provide specialized experiences, and encourage deeper, more meaningful course involvement.

If you use cohorts in your course, you define a set of cohorts to reflect communities of students, then select a strategy for assigning students to cohorts.

Note

  • Every student must be assigned to a cohort. This ensures that every student has the ability to read and contribute to course discussion topics.
  • Each student can be in one and only one cohort.

To provide students with a consistent experience throughout the course run, do not change a student’s cohort assignment after the course begins.

For more information about using cohorts in courses, see:

For information about discussions in general, see Managing Course Discussions.

Options for Assigning Students to Cohorts

You can configure the cohort feature so that students are assigned to cohorts automatically or manually. You can also use a combination of both assignment methods. Typically, your purpose in including the cohort feature in your course determines which assignment option you will use for your course.

Automated Assignment: Making MOOC Discussions Manageable

In very large courses, the number of posts made to course discussion topics can make for a daunting amount of daily reading. In such courses, dividing the enrollees into separate cohorts makes the volume of posts, responses, and comments by the members of each one more manageable, and is more likely to foster community feeling.

To implement this assignment strategy, you enable the cohort feature and create a set of “auto” (automated) cohorts. The first time a student views the course Discussion page or any of the content-specific discussion topics, he or she is randomly assigned to one of the auto cohorts. Together, all of the students who are assigned to the same group form a cohort.

These guidelines, which are based on the experiences of MOOC teams that have used the cohort feature in this way, are suggested to help you determine how many automated cohorts to define for your course.

  • Each cohort should be large enough to inspire lively participation and diverse points of view, but small enough to allow a sense of community to develop. Cohorts formed by random assignment tend to be successful if they include between 200 and 500 members.
  • For every 10,000 students who enroll, approximately 200 to 400 students remain active in the discussions throughout the course run.
  • Divide the estimated total enrollment of the course run by 10,000.
  • Use the result as the number of automated cohorts to create.

For example, two days before it starts, a course has an enrollment of 80,000 students. To create small communities within the discussions, the course team enables the cohort feature and creates eight automated cohorts. As they visit the Discussion page and view the discussion components in the course content, students are assigned to one of the cohorts. In divided discussion topics, students read and respond to contributions made by other members of the same cohort only.

For more information, see Implementing the Automated Assignment Strategy.

Manual Assignment: Grouping by Common Characteristics

In SPOCs and other courses with small- to medium-sized enrollments, known existing commonalities can be used to identify cohorts. An example is a course that enrolls students from different companies or with different educational backgrounds, or members of alumni or parent groups. When students are assigned to cohorts on the basis of a characteristic that they share, they can privately discuss applications for what they are learning and explore resources and ideas that are of particular interest.

To implement this assignment strategy, you identify the “real-world” cohorts that your students belong to already. You enable the cohort feature and create a “manual” cohort to represent each of those cohorts. You then assign each student to one of the manual cohorts. Every student who enrolls, including those who enroll after the course starts, must be assigned to a cohort.

Note

To ensure that every student is assigned to a cohort, you can set up a single automated cohort, as described for the hybrid assignment strategy. If you do not create an automated cohort, the system automatically creates a default cohort and assigns students to it if necessary.

For more information, see Implementing the Manual Assignment Strategy.

Hybrid Assignment: Accommodating Small Groups Within a Course

For some courses, the manual assignment strategy isn’t feasible to execute, and the automated assignment strategy doesn’t accommodate the existing cohorts that exist in the student body. The enrollment may be too large to complete manual assignments effectively, or only some of the students may have strong defining characteristics among an otherwise diverse student body. For these courses, you can use a hybrid of the two strategies to implement the cohort feature.

An example is a course that enrolls members of an alumni association. The alumni want an opportunity for private interactions, so manual assignment of those students to a cohort makes sense. For other students in the class, manual assignment isn’t needed: you create one or more automated cohorts for those students.

Before you implement the hybrid strategy, you identify the characteristics that define existing cohorts in the student body. You also decide whether you want the rest of the students in the course to be divided into their own, similarly- sized cohorts, or if you want them all to be in just one other cohort.

After you enable the cohort feature, you create a manual cohort for each cohort that you identified. You manually assign students who belong to those cohorts to the corresponding cohorts. You also set up automated cohorts for the other students in the course, or rely on the default cohort. The students who are not assigned to a manual cohort are automatically assigned to one of the automated cohorts, or to the default cohort if you choose to use it, when they view the Discussion page or a discussion topic in the course content. (For best results when you use this strategy, you complete all manual assignments before the course starts and students begin viewing discussion topics.)

For more information, see Implementing the Automated Assignment Strategy and Implementing the Manual Assignment Strategy.

Ensuring That All Students Are Assigned: The Default Cohort

In a course that has the cohort feature enabled, all students must be assigned to a cohort. To assure that all students are assigned, the system automatically creates a default cohort and assigns students to it if necessary. Creation of the default cohort only occurs if you do not define any automated cohorts for your course. Any student who is not assigned to a manual cohort is assigned to the default cohort automatically when they visit the Discussion page or a discussion topic in the course content.

Students who are assigned to the default cohort see a cohort name of “Default Group” in discussion posts.

A discussion topic post with "This post is visible to Default Group" above the title

If you want students to see a different cohort name when your course starts, you can add an automated cohort with the name that you prefer. See Define Auto Cohorts. (Adding an automated cohort to your course for this purpose is not recommended after your course starts.)

You can check the student profile information report for your course to see if any students are assigned to the default cohort in your course, and change their cohort assignments. Note, however, that in divided discussion topics students can only see posts by members of their currently assigned cohort: when a student is reassigned, posts “disappear”. As a result, any cohort assignment changes should be done as early in the course run as possible so that students see discussion posts and contributions that remain consistent over time.

Enabling and Configuring the Cohorts Feature

To support cohorts in your course, you select a strategy for assigning your students to cohorts: automated assignment, manual assignment, or a hybrid approach. See Options for Assigning Students to Cohorts. You also decide whether course-wide and content-specific discussion topics should be divided by cohort or unified for all students.

After you select a strategy, you complete these configuration steps (as applicable):

  1. Enable cohorts.
  2. Determine the method you want to use to assign students to cohorts:
  1. Optionally, identify the discussion topics that you want to be divided by cohort.

You complete these procedures in Studio and on the Instructor Dashboard. For an optimal student experience, you should make sure that configuration of the cohort feature is as complete as possible prior to the start date of your course.

If you need to make changes to the way you have configured the cohort feature while your course is running, please see Altering Cohort Configuration in a Running Course.

Enabling the Cohort Feature

  1. Open the course in Studio.
  2. Select Settings, then Advanced Settings.
  3. In the Cohort Configuration field, place your cursor between the supplied pair of braces.
  4. Type "cohorted": true.
  5. Click Save Changes. Studio reformats the name:value pair you just entered to indent it on a new line.
Cohort Configuration dictionary field with the cohorted key defined as true

You can then implement the automated assignment strategy, implement the manual assignment strategy, or both.

For a report that includes the cohort assignment for every enrolled student, review the student profile information for your course. See Download or View Student Data.

Implementing the Automated Assignment Strategy

To implement automated assignment of students to cohorts, you define auto cohorts in the Cohort Configuration advanced setting field.

You complete this procedure if you are using either the automated or hybrid assignment strategy for your course. For more information, see Automated Assignment: Making MOOC Discussions Manageable or Hybrid Assignment: Accommodating Small Groups Within a Course.

Define Auto Cohorts

Before you define your auto cohorts, note that students can see the name of the cohort that they are assigned to. The message “This post is visible only to {cohort name}” appears with each post in discussion topics that are divided by cohort. See Read the Cohort Indicator in Posts.

Note

You cannot delete cohorts or change their names. If you need to make changes to the way you have configured cohorts feature while your course is running, please see Altering Cohort Configuration in a Running Course.

  1. Open the course in Studio.

  2. Select Settings, then Advanced Settings.

  3. In the Cohort Configuration field, place your cursor after the opening brace character ({) and press Enter.

  4. On the new line, you define the "auto_cohort_groups": policy key, followed by one or more cohort names enclosed by square brackets ([ ]). You can define a set of auto cohorts or just one.

    To define a set of cohorts, you type each cohort name on a new line, enclose it within quotation marks (" "), and separate the quoted name values with commas. For example:

    "auto_cohort_groups": [
        "Example Cohort Name A",
        "Example Cohort Name B",
        "Example Cohort Name C"
    ]
    
  1. Type a comma after the closing square bracket character (],). You must include a comma to separate each of the policy keys that you define.
  2. Click Save Changes. Studio resequences and reformats your entry. Scroll back to the Cohort Configuration field to verify that your entry was saved as you expect. Entries that do not contain all of the required punctuation characters revert to the previous value when you save, and no warning is presented.
Cohort Configuration dictionary field with the auto_cohort_groups key with three values

Any student who is not already assigned to a cohort will be randomly assigned to one of the auto cohorts when she visits any of the course discussion topics.

Implementing the Manual Assignment Strategy

To implement manual assignment of students to cohorts, you define manual cohorts and then assign students to them.

You complete these procedures if you are using either the manual or hybrid assignment strategy for your course. For more information, see Manual Assignment: Grouping by Common Characteristics or Hybrid Assignment: Accommodating Small Groups Within a Course.

You must enable the cohort feature for your course before you can complete these procedures.

Define Manual Cohorts

Before you define your manual cohorts, note that students can see the name of the cohort they are assigned to. The message “This post is visible only to {cohort name}” appears with each post in discussion topics that are divided by cohort. See Read the Cohort Indicator in Posts.

Note

You cannot delete cohorts or change their names. If you need to make changes to the way you have configured the cohort feature while your course is running, please see Altering Cohort Configuration in a Running Course.

  1. View the live version of your course. For example, in Studio click View Live.
  2. Click Instructor, then click Membership.
  3. Scroll to the Cohort Management section at the bottom.
  4. Click Add Cohort.
  5. Supply a name for the cohort, and then click Save below the New Cohort Name field.
Assign Students to Cohorts Manually

Note

Manual assignments should be as complete as possible before your course starts. If student enrollment continues after your course starts, you should continue to assign new students to cohorts.

  1. View the live version of your course. For example, in Studio click View Live.
  2. Click Instructor, then click Membership.
  3. Scroll to the Cohort Management section at the bottom.
  4. Select a cohort from the drop down list.
  5. In the Add students field, enter the username or email address of a single student, or enter multiple names or addresses separated by commas or new lines. You can copy data from a CSV file of email addresses and paste it into this field.
  6. Click Add Students. The students are assigned to the selected manual cohort. A message appears to indicate the number of students who were added to the cohort. Because students can belong to only one cohort, the message also indicates the number of students whose assignment to another cohort was changed by this procedure.

For a report that includes the cohort assignment for every enrolled student, review the student profile information for your course. See Download or View Student Data.

Assign Students to Cohorts by Uploading a CSV File

In addition to assigning students to cohorts by entering usernames or email addresses directly on the Membership page in the Instructor Dashboard, you can also upload a .csv file containing a list of students and the cohorts that you want to assign them to.

Any assignments to cohorts that you specify in the .csv files you upload will overwrite or change existing cohort assignments. The configuration of your cohorts should be complete and stable before your course begins. You should also complete manual cohort assignments as soon as possible after any student enrolls, including any enrollments that occur while your course is running. To understand the effects of changing cohort assignments after your course has started, see Altering Cohort Configuration in a Running Course.

Note

Be aware that the contents of the .csv file are processed row by row, from top to bottom, and each row is treated independently.

For example, if your .csv file contains conflicting information such as Student A being first assigned to Cohort 1, then later in the spreadsheet being assigned to Cohort 2, the end result of your .csv upload is that Student A is assigned to Cohort 2. However, the upload results file will count Student A twice in the “Students Added” count: once when they are added to Cohort 1, and again when they are added to Cohort 2. Before submitting a file for upload, check it carefully for errors.

The requirements for the .csv file are summarized in this table.

Requirement Notes
Valid .csv file

The file must be a properly formatted comma-separated values file:

  • The file extension is .csv.
  • Every row must have the same number of commas, whether or not there are values in each cell.
File size The file size of .csv files for upload is limited to a maximum of 2MB.
UTF-8 encoded

You must save the file with UTF-8 encoding so that Unicode characters display correctly.

See Creating a Unicode-encoded CSV File.

Header row You must include a header row, with column names that exactly match those specified in “Columns” below.
One or two columns identifying students

You must include at least one column identifying students: either “email” or “username”, or both.

If both the username and an email address are provided for a student, the email address has precedence.

In other words, if an email address is present, an incorrect or non- matching username is ignored.

One column identifying the cohort

You must include one column named “cohort” to identify the cohort to which you are assigning each student.

The specified cohorts must already exist in Studio.

  Columns with headings other than “email”, “username” and “cohort” are ignored.

Follow these steps to assign students to cohorts by uploading a .csv file.

  1. View the live version of your course. For example, in Studio, click View Live.

  2. Click Instructor, then click Membership.

  3. Scroll to the Cohort Management section at the bottom.

  4. Under Assign students to cohorts by uploading a CSV file, click Browse to navigate to the .csv file you want to upload.

  5. Click Upload File and Assign Students. A status message displays above the Browse button.

  6. Verify your upload results on the Data Download page.

    Under Reports Available for Download, locate the link to a .csv file with “cohort_results” and the date and time of your upload in the filename. The list of available reports is sorted chronologically, with the most recently generated files at the top.

The results file provides the following information:

Column Description
Cohort The name of the cohort to which you are assigning students.
Exists

Whether the cohort was found in the system. TRUE/FALSE.

If the cohort was not found (value is FALSE), no action is taken for students you assigned to that cohort in the .csv file.

Students Added The number of students added to the cohort during the row by row processing of the .csv file.
Students Not Found A list of email addresses or usernames (if email addresses were not supplied) of students who could not be matched by either email address or username and who were therefore not added to the cohort.

For a report that includes the cohort assignment for every enrolled student, review the student profile information for your course. See Download or View Student Data.

Creating a Unicode-encoded CSV File

Make sure the .csv files that you upload are encoded as UTF-8, so that any Unicode characters are correctly saved and displayed.

Note

Some spreadsheet applications (for example, MS Excel) do not allow you to specify encoding when you save a spreadsheet as a .csv file. To ensure that you are able to create a .csv file that is UTF-8 encoded, use a spreadsheet application such as Google Sheets, LibreOffice, or Apache OpenOffice.

Altering Cohort Configuration in a Running Course

The configuration of the cohort feature should be complete and stable before your course begins. Manual cohort assignments should be completed as soon as possible after any student enrolls, including any enrollments that occur while your course is running.

If you decide that you must alter cohort configuration after your course starts and activity in the course discussion begins, be sure that you understand the consequences of these actions:

Change Student Cohort Assignments

After your course starts and students begin to contribute to the course discussion, each post that they add is visible either to everyone or to the members of a single cohort. When you change the cohort that a student is assigned to, there are three results:

  • The student continues to see the posts that are visible to everyone.
  • The student sees the posts that are visible to his new cohort.
  • The student no longer sees the posts that are visible only to his original cohort.

The visibility of a post and its responses and comments does not change, even if the cohort assignment of its author changes. To a student, it can seem that posts have “disappeared”.

To verify the cohort assignments for your students, download the student profile report for your course. If changes are needed, you can assign students to different cohorts manually on the Membership page of the Instructor Dashboard.

Rename a Cohort

Name changes for cohorts are not supported. The Membership page of the Instructor Dashboard does not offer an option to rename your manual cohorts.

It is possible to change the value for the auto_cohort_groups policy key on the Advanced Settings page in Studio. However, changing the names in the listed name:value pairs does not result in any renamed auto cohorts. Instead, changing the value for the auto_cohort_groups policy key has these results.

  • The system uses the new value that you saved for the auto_cohort_groups policy key to create one or more additional auto cohorts.

  • The system begins to assign students who do not have a cohort assignment to the newly defined cohort or cohorts. Students also continue to be assigned to any auto cohorts that were not affected by your changes.

    The system uniformly distributes students among all of the auto cohorts that exist when an assignment is needed. The size of each cohort is not considered.

  • The original cohort or cohorts remain in the system. Any students who were assigned to the original cohorts remain assigned to them.

    For the results of assigning any students who remain in the original cohorts to other cohorts, see Change Student Cohort Assignments.

  • The system converts the original auto cohorts, which are no longer listed as values for auto_cohort_groups, into manual cohorts. The system no longer assigns students to those cohorts automatically. These cohorts are listed as manual cohorts on the Membership page of the Instructor Dashboard.

Delete a Cohort

Deletion of cohorts is not supported. The Membership page of the Instructor Dashboard does not offer an option to delete your manual cohorts.

It is possible to change the value for the auto_cohort_groups policy key on the Advanced Settings page in Studio. However, removing any of the listed name:value pairs does not result in the deletion of any cohorts. Instead, changing the value for the auto_cohort_groups policy key has these results.

  • The cohorts that you removed from the policy key remain in the system.

  • Any students who were assigned to those cohorts remain assigned to them.

    For the results of assigning any students to other cohorts, see Change Student Cohort Assignments.

  • The system no longer assigns students to the cohorts automatically.

  • The cohorts are listed as manual cohorts on the Membership page of the Instructor Dashboard, and you can continue to assign students to them manually.

Disable the Cohort Feature

You can disable the cohort feature for your course. Follow the instructions for enabling the cohort feature, but set "cohorted": false. All discussion posts immediately become visible to all students.

If you do re-enable the cohort feature by setting "cohorted": true, all previous student cohort assignments are reenabled, and all visibility settings for posts are reapplied. However, any posts created while the cohort feature was disabled will remain visible to all users.

Creating Cohort-Specific Courseware

If you have cohorts enabled in your course, you can create different course experiences for students in different cohorts.

You can design your course so that some students are given different content than others. You do this by creating content groups in Studio, and designating specific components in your course as visible only to one or more content groups. Then, if you associate one or more cohorts with a content group, only the students in cohorts associated with that content group can see course content that you have designated for it.

For more details about content groups, see Content Groups. For an example of cohort-specific course content, see Example: Cohort-Specific Courseware.

Complete these steps to create cohort-specific content in your course.

In Studio:

  1. Enable cohorts in your course.
  2. Create content groups.
  3. Specify components in courseware as visible only to particular content groups.

In the LMS:

  1. Assign students to cohorts.
  2. Associate one or more cohorts with a content group.
  3. Preview cohort-specific courseware.

Example: Cohort-Specific Courseware

Suppose that you create two cohorts in your course: University Alumni and Current University Students. Students who are not in either of these cohorts are automatically placed into a third cohort, the default cohort, when they access the courseware or discussion tabs in the course. For more information about enabling cohorts in your course and assigning students to cohorts, see Enabling and Configuring the Cohorts Feature.

You intend all students to have substantially the same course experience, with the exception that only students in the two university-related cohorts will receive content that is specific to your university and therefore only of interest to them.

At the end of every section, you intend to include a video message from various university officials, including the university president and the dean of your college. These videos will be shown only to students in the university and alumni cohorts. Also at the end of each section, you intend to include a quiz to test knowledge of the concepts taught in that section. The quiz will be shown to all students enrolled in the course.

To achieve this, on the Group Configurations page in Studio you create one content group called “University-Specific Content”. In the Instructor Dashboard, on the Membership tab, you associate both the “University Alumni” and the “Current University Students” cohorts with the “University-Specific Content” content group.

Then, in your course outline, you change the visibility settings for the video component at the end of each section so that it is visible only to the “University-Specific Content” content group. You do not need to edit the visibility settings of the quiz component, because if no content group is specified in a component’s visibility settings, it is visible to all students.

As a final step, you preview the course in the LMS to ensure that students see the content that is intended for them. You confirm that when you view the course in the role of Student (in other words, any student not in a content group), you see a quiz at the end of each section, but do not see the university-related videos. When you view the course as a student in the “University-Specific Content” group, you see a university-related video as well as the quiz at the end of each section.

Content Groups

Content groups are virtual groupings of students who will see a particular set of course content. You can use content groups to designate specific course content as visible to particular cohorts of students.

You create content groups in Studio, and in your course outline you use the Visibility Settings to designate whether a component is selectively visible only to one or more content groups. Any course components that do not have an explicitly restricted visibility setting remain visible to all students, regardless of their cohort.

Content groups do not have an actual impact on the visibility of a course component until you associate them with one or more cohorts. If you have designated certain course content as visible to a content group, and in addition have associated that content group with one or more cohorts, then those cohorts will see the designated content.

For an example of using content groups to create cohort-specific courseware, see Example: Cohort-Specific Courseware.

Create Content Groups

  1. In Studio, select Settings, then select Group Configurations.
  2. On the Group Configurations page, click New content group.
Button on Group Configurations page for adding first content group
  1. Enter a meaningful name for the content group, then click Create. The page refreshes to show the name of your new content group.
  2. Repeat this step to create as many content groups as you want.

After you create a content group, you can work with your course outline to specify which components are visible to specific content groups. For details, see Specify Components in Courseware as Visible Only to Particular Content Groups.

On the Instructor Dashboard, you associate each content group with one or more cohorts. For details, see Associate Cohorts with Content Groups.

Note

Once a content group is created, you cannot delete it. You can remove the association between a content group and its cohorts by changing the association to Not Selected.

Specify Components in Courseware as Visible Only to Particular Content Groups

After you create at least one content group, you can edit your course in Studio and modify the visibility settings of components that you want to make visible only to particular content groups.

Note

You do not need to edit the visibility settings of components that are intended for all students. Components that you do not explicitly indicate as visible to a group are visible to all students enrolled in your course, regardless of the cohort that they belong to.

You can specify content as visible to content groups only at the component level in a unit. You cannot specify entire units, subsections, or sections for visibility to content groups.

In a separate task, you create cohorts and associate content groups with cohorts. Then, only the cohorts associated with content groups which you selected in a component’s visibility settings can view the component. See Associate Cohorts with Content Groups for details about associating cohorts with content groups.

To specify components as visible only to particular content groups, follow these steps.

  1. In Studio, select Content, then select Outline.
  2. For each component that you want to make visible only to a particular content group or groups, click the unit name, then click the Visibility Settings icon.
Screen capture of unit in course outline with visibility setting icon highlighted
  1. In the Editing visibility dialog, select Specific Content Groups, then select the checkbox for each content group for which you want the current component to be visible.
Screen capture of unit in course outline with visibility setting icon highlighted
  1. Click Save.

The Visibility Settings icon for the component is now black, and the publishing details for the course section in the sidebar refresh to indicate that some content is visible only to particular groups.

Visibility icon is black when visibility for a component is restricted Course outline sidebar shows visibility icon and note indicating that some content in the unit is visible only to particular group.

For details about previewing your course to ensure that students in a cohort correctly see the content intended for them, see Preview Cohort-Specific Courseware.

Note

In addition to visibility settings for content groups, a student’s ability to see a course component also depends on whether it is hidden from students, whether the unit is published, and the course’s release date. For details about previewing courseware in general, see Preview Course Content.

Associate Cohorts with Content Groups

After you create a content group, you can associate it with one or more cohorts with which you want to share the same special content in your course.

Note

A content group can be associated with more than one cohort; a cohort cannot be associated with more than one content group.

To associate a cohort with a content group, follow these steps:

  1. In the LMS, select Instructor, then select Membership.
  2. Scroll to the Cohort Management section at the bottom.
  3. From the drop down list, select the cohort to which you want to associate your content group.
  4. Click the Settings tab for the selected cohort.
  5. Under Associated Content Group, choose the Select a Content Group option.
  6. From the drop down list, select the content group that you want your cohort to be associated with.
Visibility icon is black when visibility for a component is restricted
  1. Click Save.

    You have now associated your content group with a cohort. Any course content that you designate as visible to that content group is visible to students in the associated cohort or cohorts.

You can associate additional cohorts with the same or a different content group by repeating steps 3 to 7.

For an example of using content groups to create cohort-specific courseware, see Example: Cohort-Specific Courseware.

Preview Cohort-Specific Courseware

After you designate components in your course as being visible only to certain content groups, you can preview your courseware to ensure that each group correctly sees the content intended for them.

Note

In addition to visibility settings for content groups, a student’s ability to see a course component also depends on whether it is hidden from students, whether the unit is published, and the course’s release date. For details about previewing courseware in general, see Preview Course Content.

You can view the course as a member of these groups:

Role When You “View As” This Role
Staff You see all content in the course, including content that is hidden from students.
Student You see any content that is intended for all students.
Student in <Content Group Name> You see content that is intended for all students, as well as any content specifically set to be visible to this content group.
  1. In Studio, in the course outline, click Preview Changes. You see your course section in the Courseware section of the LMS.
  2. In the navigation bar at the top of the page, select one of the options in the View this course as drop down list, as described in the table above.
Visibility icon is black when visibility for a component is restricted

The course view refreshes and the content is presented as a member of the selected content group would see it.

After your course is live, you can also see the live version as a student would see it, by clicking View Live from Studio. For more information, see View Your Live Course.

Setting up Discussions in Courses with Cohorts

In courses that have cohorts enabled, you can set up discussion topics to be either divided by cohort, or unified and accessible to all students.

When you first enable cohorts in your course, the initial behavior for course- wide discussion topics is different from the behavior of content-specific (inline) discussion topics.

By default, course-wide discussion topics are unified, but content-specific discussion topics are divided by cohort. You can configure either type of discussion to be divided or unified.

For overview information about discussions in a course, see Managing Course Discussions. For information about using cohorts in a course, see Using Cohorts in your Courses and Enabling and Configuring the Cohorts Feature.

Course-Wide Discussion Topics and Cohorts

When you first create a course-wide discussion topic, it is unified, and all students in the course can post, read, respond, and comment in the topic without regard to their cohort assignments. After you add a course-wide topic, you can configure it so that it is divided by cohort instead.

Example: Configuring Course-Wide Discussion Topics As Divided

This example assumes that you previously added three course-wide discussion topics called Course Q&A, Announcements, and Brainstorming to your course, so that in addition to the system-supplied General topic, you have four course-wide discussion topics.

Discussion Topic Mapping field with four course-wide discussion topics defined

You have enabled cohorts for your course to take advantage of that feature as it applies to discussion topics.

The posts that you intend to make to the Course Q&A and General topics, and the subjects you expect students to explore there, are appropriate for a unified student audience. However, you also want to give students some course-wide topics that are divided by cohort. You decide that the Announcements and Brainstorming course-wide topics should be divided by cohort.

You also decide to apply a naming convention so that students will know the audience for the discussion topics before they add any posts. For information on how to achieve this, see Apply Naming Conventions to Discussion Topics.

Configure Course-Wide Discussion Topics as Divided

This procedure describes how you configure the Brainstorming and Announcements course-wide discussion topics (from the example in Example: Configuring Course-Wide Discussion Topics As Divided) so that they are divided by cohort.

On the Studio Advanced Settings page, details of the two topics appear as follows in the Discussion Topic Mapping field.

"Brainstorming (private)": {
    "id": "i4x-edX-Open-edx_demo_course_brainstorming"
},
"Announcements (private)": {
    "id": "i4x-edX-Open-edx_demo_course_announcements"
}

You use the ID for each discussion topic to identify it in the steps that follow.

  1. Open the course in Studio.

  2. Select Settings, then Advanced Settings.

  3. In the Cohort Configuration field, place your cursor after the opening brace character ({) and press Enter.

  4. On the new line, you define the "cohorted_discussions": policy key, followed by one or more course-wide discussion topic IDs enclosed by square brackets ([ ]). You can define just one discussion topic or a set of discussion topics.

    For example, to define a single discussion topic, type "cohorted_discussions": ["discussion-topic-ID"], putting your discussion topic’s ID inside the double quotations marks in place of the example ID. Press Enter.

    To define a set of topics, type the ID for each discussion topic on a new line, enclose it within quotation marks (" "), and separate the quoted ID values with commas. For example:

"cohorted_discussions": [
    "i4x-edX-Open-edx_demo_course_announcements",
    "i4x-edX-Open-edx_demo_course_brainstorming"
]
  1. If "cohorted_discussions" is followed by other policy keys within the Cohort Configuration field, make sure there is a comma after the closing square bracket character (],). You must include a comma to separate each of the policy keys that you define.
  1. Click Save Changes. Studio resequences and reformats your entry.
Cohort Configuration dictionary field with the cohorted_discussions key defined
  1. Scroll back to the Cohort Configuration field to verify that your entry was saved as you expect. Entries that do not contain all of the required punctuation characters revert to the previous value when you save, and no warning is presented.

Content-Specific Discussion Topics and Cohort Groups

When you enable the cohort feature for a course, and create content- specific discussion topics by adding discussion components to units in Studio, these content-specific discussion topics are divided by cohort by default. A student who is assigned to one cohort cannot read or add to the posts, responses, or comments contributed by the members of another cohort.

If you want all content-specific discussion topics in your course to remain divided by cohort, you do not need to take any further action. However, if you want one or more content-specific discussion topics to be unified (accessible to all students regardless of cohort), you must complete some configuration tasks.

Example: Configuring Content-Specific Discussion Topics as Unified

In this example, you decide that you want all content-specific discussion topics you add to your course to be unified rather than divided by cohort. To achieve this, you follow the steps to Make All Content-Specific Discussion Topics Unified by Default.

Later, while designing one of the final sections in the course, you add a content-specific discussion topic that you decide should be divided by cohort, rather than unified like all other discussion components. To achieve this, you follow the steps to Specify Exceptions to Unified Discussion Topics.

Make All Content-Specific Discussion Topics Unified by Default

Note

If you want all content-specific discussion topics in your course to be divided by cohort, you do not need to perform any configuration.

This procedure shows how to make all content-specific discussion topics in a course unified by default. When you complete these steps, any content-specific discussion topics that you add to your course are accessible to all students regardless of their cohort.

  1. Open your course in Studio.

  2. Select Settings, then Advanced Settings.

  3. In the Cohort Configuration field, place your cursor after the opening brace character ({) and after any existing policy key definitions, then press Enter.

  4. Press Enter to create a new line. On the new line, type

    "always_cohort_inline_discussions": false

  1. Click Save Changes. Studio resequences and reformats your entry.
Cohort Configuration dictionary field with the cohort key set as true and the always cohort inline discussions key set as false
  1. Scroll back to the Cohort Configuration field to verify that your entry was saved as you expect. Entries that do not contain all of the required punctuation characters revert to the previous value when you save, and no warning is presented.
Specify Exceptions to Unified Discussion Topics

If you have made all content-specific discussion topics in your course unified by default, this procedure describes how you can specify exceptions and configure particular content-specific discussion topics in your course as divided by cohort.

  1. Open your course in Studio.
  2. For each content-specific discussion topic that you want to make divided by cohort, locate the discussion component in Studio, then copy or make a note of its Discussion ID.
_images/DiscussionID.png
  1. Select Settings, then Advanced Settings.

  2. In the Cohort Configuration field, if the cohorted_discussions policy key does not already exist, type "cohorted_discussions":, followed by a pair of square brackets ([ ]).

  3. Between these opening and closing square brackets ([ ]) add one or more IDs for the discussion topics that you want to specify as being unified.

    If you are specifying only one discussion topic as divided by cohort, your entry looks like this example.

    "cohorted_discussions": [c2293fa2538a41eca7224b8a07c3d09d]
    

    If you are specifying multiple discussion topics as divided by cohort, use a new line for each discussion topic ID that you add, and enclose each ID within double quotation marks ("), followed by a comma if there are additional IDs following.

"cohorted_discussions": [

   "c2293fa2538a41eca7224b8a07c3d09d",
   "a9823gt3187i38itp2893a8d27f8f20c"
]
  1. If "cohorted_discussions" is followed by other policy keys within the Cohort Configuration field, make sure there is a comma after the closing square bracket character (],). You must include a comma to separate each policy key that you define.
Cohort Configuration dictionary field with the cohort key set as true, the always cohort inline discussions key set as false, and two discussion topics IDs entered under the cohorted discussions policy key
  1. Click Save Changes. Studio resequences and reformats your entry.
  1. Scroll back to the Cohort Configuration field to verify that your entry was saved as you expect. Entries that do not contain all of the required punctuation characters revert to the previous value when you save, and no warning is presented.

Managing Discussions in Courses with Student Cohorts

In courses that have the cohort feature enabled, every post has an indicator of who can read it: either everyone, or only the members of a single cohort. For students, this is the only noticeable difference between discussions in courses that include cohorts when compared to courses that do not. You can share the examples in the Read the Cohort Indicator in Posts section with your students, along with the Participating in Course Discussions section of this guide.

Staff members who have the discussion admin, discussion moderator, or community TA role see the same indicator of who can read each post. Unlike the students, however, the discussion staff members can read and contribute to every post, regardless of the cohort assignment of the student who posted it.

Note

Students who have the Community TA role can read and contribute to all posts.

In courses with the cohort feature enabled, members of the discussion staff can also:

All of the other options and features described in the Managing Course Discussions section continue to be available to the discussion staff.

Identifying Who Can Read a Post

In a course that includes cohorts, all posts include a cohort indicator above the title. This indicator appears after any student or staff member adds a post. Other than naming the cohorts carefully when you add them, no configuration is necessary to include this identifier.

Optionally, you can name your discussion topics to show students who will be able to view their posts. See Apply Naming Conventions to Discussion Topics.

Read the Cohort Indicator in Posts

Every post includes a sentence that identifies whether everyone can see and contribute to it, or only the members of a cohort in the course. Examples follow.

A discussion topic post with "This post is visible to everyone" above the title A discussion topic post with "This post is visible to" and a cohort name above the title

You see this identifier after you add your post. All of the responses and comments that other contributors add to a post are visible to the same group of people as the post itself.

Apply Naming Conventions to Discussion Topics

Optionally, course team members can give students the audience context of their posts before they add them. Indicating who will be able to read posts in the names of the topics themselves can be useful when a cohort is particularly sensitive about the privacy of their conversations.

For example, you add “(everyone)” to the names of the unified course-wide discussion topics in your course.

The names you supply for course-wide topics in Studio appear on the dropdown list of discussion topics in the live course

When students visit the Discussion page and use dropdown lists to select a course-wide topic, the topic names indicate who can see the posts, responses, and comments.

(In the illustration above, every topic name includes either “(everyone)” or “(private)”. You may only find it necessary to explicitly identify topics that have a unified audience for all posts.)

For more information about adding and configuring course-wide discussion topics, see Creating Discussion Topics for Your Course or Example: Configuring Course-Wide Discussion Topics As Divided.

If desired, you could also apply a naming convention to the content-specific discussion topics that you add as Discussion components in Studio. For example, you could include an identifier like “(private)” or “(small group)” in the Subcategory name of every Discussion component that you add.

The Subcategory name that you supply for a Discussion component in Studio appears on the dropdown lists of discussion topics in the live course

Choosing the Visibility of a Post

If you have the discussion admin, discussion moderator, or community TA role, you can make posts to divided discussion topics visible to everyone who is enrolled in the course or to the members of a selected cohort only. When you add a post, the Visible to dropdown list appears above the Title field.

This example shows a new post being added to a content-specific discussion topic.

The fields and controls that appear when a staff member clicks New Post for a content-specific topic

As a discussion staff member, you can choose the visibility of your posts in topics that are divided by cohort. This means that you can add a single post with information that you want everyone to see, rather than having to write a separate post for each cohort. It also means that it is possible for you to unintentionally share information with a different audience than you intended.

Note

Students do not choose the visibility of their posts. The visibility of student posts is determined by the configuration of the topic they post in. See Identifying Who Can Read a Post.

Posts that discussion staff members add to unified discussion topics are always visible to all students, regardless of cohort assignment.

Considerations When Editing Posts

It may be helpful to keep these additional considerations in mind when you edit posts in a course that includes cohorts.

  • You cannot change the visibility of a post after it has been added. If you notice that a post contains information that is not appropriate for the cohort who can read it, edit the content of the post or delete the post.
  • If you change the topic that a post appears in, the visibility of the post and its responses and comments does not change. This ensures that students who are following the post, or who have contributed responses or comments to it, will still be able to read it.
  • All of the responses and comments that are contributed to a post will be visible to the same group of people as the post itself. You cannot change the visibility of individual responses or comments.

Viewing the Posts of a Cohort

When a course includes student cohorts, you can view posts and monitor discussion activity for one cohort at a time. You can also view all posts.

Above the list of posts on the Discussion page, the in all cohorts filter is selected by default. You see every post when you make this selection, as shown in the illustration on the left. To limit the list so that you can view the same set of posts as the members of a cohort, select the name of that cohort as shown on the right.

The list of posts on the Discussion page, first showing all posts then showing only posts that members of the University Alumni cohort can see

Note that both of these lists include posts that are visible to everyone. When you filter the list by cohort, you see the same, complete set of posts that the members of the cohort see.

For other options that you can use to view posts, see Find Posts.

Releasing Your Course

Beta Testing a Course

When a course is being designed in Studio, the course team can choose View Live to assess their progress in designing the course, test their work, find gaps and errors, and mimic the student experience. To gather information about the overall experience of taking a course, you can also conduct a beta test of the course.

The Beta Testing Process

During a beta test, you gather information about the experience of taking your course in an effort to improve its quality. The phases of the beta testing process, and some questions that you may find useful to consider as you prepare for each phase, follow.

  1. Planning: What are your objectives for the test? What is the schedule for testing?
  2. Recruitment: How many testers do you need? How much time do you expect testers to spend? When do you need them to complete their feedback?
  3. Provide access to your course: Can testers access your entire course immediately, or are its sections and subsections available at different times? How will that affect the schedule?
  4. Collect feedback: How do you want testers to provide feedback? Who checks for feedback, and how often?
  5. Evaluate feedback: How is feedback evaluated? Who decides what changes to make as a result, and on what schedule?
  6. Conclusion: How do you acknowledge the efforts of your testers? What do you share with them about the results of their efforts?

There is no one answer to any of these questions. They are included here as background on the role that beta testing can play in the preparation of your course.

The Beta Testing Role

Beta testers have early access to the course. Beta testers are not members of the course team or staff: they don’t have information about “how it’s supposed to work”. They use their own computers and Internet connections to view videos, follow links, and complete problems. They interact with the course as students will to find, and make, mistakes.

However, beta testers are not the same as other students in the course, either. They have privileged access to the course and have more time to review and complete the course materials than the enrolled students do. Course discussions are not open before the course start date, so beta testers cannot participate in community conversations. As a result of these differences, beta testers do not receive certificates when they complete a course.

Note

If one of your beta testers wishes to earn a certificate for the course, she must create a separate user account with a different username and email address. She can then use that separate, non-privileged user account to enroll in the course and repeat the work, completing assignments and exams when they are available to all students.

Qualities of Good Beta Testers

A beta test is valuable in part because it is unscripted. Your beta testers are not following a predetermined series of steps, or using a particular computer environment, when they access your course. When you recruit beta testers, however, you may find these skills and characteristics to be helpful.

  • Curiosity.
  • Attention to detail for identifying problems and inconsistencies.
  • Solid communication skills for reporting problems to course staff.

Your beta testers should also have varying levels of knowledge about the course content:

  • To recognize when material is wrong or missing, at least one tester should know the content well.
  • To identify material that is unclear, at least one tester should be less familiar with the content.

Depending on the objectives you set for your beta test, you may want to consider recruiting testers who use assistive technologies, who have different native languages, or who have varying levels of familiarity with computer software.

Using Course Staff as Beta Testers

Course staff can provide valuable feedback about your course. However, they are typically stakeholders in the success of your course and have a significant amount of knowledge about it. As a result, they can be too close to the course to interact with it in the same way as students will. They can also be either reluctant to provide feedback, or overly zealous.

If you do want a staff member to be a beta tester, a different, second email address must be used for this additional role. The privileges of the course staff role override those of a beta tester, so a second registration on the site, activation, and enrollment in the course are necessary using this second email address. The staff member must log in using the second email address (with the beta tester role) in order to experience the course as a student.

What to Test

Beta testers should interact with everything in the course.

  • Click all links.
  • Watch all videos.
  • Download video transcripts and other files.
  • Complete all problems.

As they work, beta testers log issues and questions for the course team.

Note

Beta testers cannot read or make discussion posts or contribute to the course wiki.

How Beta Testers See Course Content

To beta test a course, you:

  • Define a number of days before section and subsection release days for testing to begin.
  • Identify beta testers.

Designated beta testers see course content before students can. The matrix that follows shows the course content that beta testers can access earlier than other students.

  Yes No
Before the Course Enrollment Date X  
Before the Course Start Date X  
Before the section Release Day X  
Before the subsection Release Day X  
Before the unit is Public   X
Before a draft replaces a live unit   X

The course team can continue to add content in Studio after the beta test begins. When new content is ready for testing, be sure to publish the unit.

Define When the Beta Test Starts

To define the start of the beta test, you use Studio to specify a number of days before the release day that is defined for each section and subsection in your course.

  1. In Studio, from the Settings menu select Advanced Settings.
  2. In the field for the Days Early for Beta Users policy key, enter the number of days before each section and subsection release day for beta testers to have access.
  3. Click Save Changes.
Example

Beta tester access to courseware for a course with Days Early for Beta Users = 20 and 2 sections:

Course Enrollment Date = 31 August 31 August; earlier if enrolled by course staff
Course Start Date = 15 September 26 August
section 1 Release Day = 15 September 26 August
section 2 Release Day = 22 September 2 September
subsection 1 Release Day = 22 September 2 September
subsection 2 Release Day = 24 September 4 September
subsection 2, unit 1 Visibility = Public 4 September
subsection 2, unit 2 Visibility = Public; draft in progress 4 September for Public version; No access to draft
subsection 2, unit 3 Visibility = Private No access

In this example, the beta testers cannot access all of the courseware when the beta test starts on 26 August: they can access section 1 but not section 2. You may want to provide a schedule of section availability to your testers so that they can plan their time appropriately. Future release dates do not display to the beta testers in the courseware.

Adding Beta Testers

Before you can add beta testers:

  • You need the email address or username of each beta tester.
  • Each beta tester must register and activate a user account for that email address/username.

When you add beta testers, note the following.

  • If the beta test starts before the course Enrollment Start Date, testers cannot enroll themselves in your course. However, you can enroll the beta testers prior to the Enrollment Start Date.
  • If you add the beta testers after the defined start of the beta test, and they are enrolled in the course, they see your course on their Current Courses dashboards when they log in.
  • If you add beta testers before the test starts, or if they are not enrolled, they do not see your course on their dashboards. You can enroll the beta testers in the course yourself, and you may want to send an email message to remind them when the test begins.
Add Multiple Beta Testers

If you have a number of beta testers that you want to add, you can use the “batch add” option to add them all at once, rather than individually. With this feature, you have options to enroll the beta testers in the course (before or after the Enrollment Start Date) and send an email message to notify the beta testers that they have been added.

To add multiple beta testers:

  1. View the live version of your course.
  2. Click Instructor, and then click Membership.
  3. In the Batch Beta Tester Addition section of the page, enter one or more addresses or usernames separated by commas or line feeds (the Enter key). You can also copy data from a CSV file of email addresses and paste it here.
  4. To enroll the beta testers in your course, leave Auto Enroll selected. If the beta test starts before the course Enrollment Start Date, testers cannot enroll themselves in your course.
  5. To send an email message to the beta testers, leave Notify users by email selected. An example of the message that is sent to a beta tester who is not enrolled (or auto enrolled) in the course follows.
"You have been invited to be a beta tester for {course name} at {URL}. Visit {link} to join the course and begin the beta test."
  1. Click Add beta testers.

To remove the Beta Tester role from one or more users, enter their email addresses in the Batch Add Beta Testers field and then click Remove beta testers.

Note

The Auto Enroll option has no effect when you click Remove beta testers. The user’s role as a beta tester is removed; course enrollment is not affected.

Add Beta Testers Individually

To add a single beta tester:

  1. View the live version of your course.

  2. Click Instructor then Membership.

  3. In the Administration List Management section, use the drop-down list to select Beta Testers.

  4. Under the list of users who currently have that role, enter an email address or username and click Add Beta Tester.

    If the beta test starts before the Enrollment Start Date of your course, you can also enroll the beta tester. See Enrollment.

To remove the Beta Tester role from users individually, find the user in the list of beta testers, and then click Revoke access to the right of that user’s email address.

Reporting Issues During a Course

Despite the efforts of the course team and the beta testers, additional problems, questions, and issues can occur while a course is running.

  • Often, students report issues by asking questions in a discussion. Your discussion administration team can watch for posts that indicate problems.
  • To let students know the best way to report problems, you can post information on the Course Info page or post it in a discussion.

Course Launching Activities

To launch a course, you prepare the course itself, the staff, and the students. This chapter includes a Course Launch Checklist to use as a model for your schedule of activities.

To help you communicate to the course staff or to all course participants before the course launches and while it is running, you can send email messages from the Instructor Dashboard. See Bulk Email. The chapter on bulk email also includes a set of example messages to students that you can use as guidelines when you write your own email messages.

Course Launch Checklist

As the start date for your course approaches, a checklist or timeline of activities can help you make sure that your course, and your students, are ready to begin. Suggestions for activities to complete before your course starts follow.

Verify Course Settings

Review First Week Content

  • Verify that all units are present and published. See Developing Course Units.
  • Check all assignments for completeness and verify their due dates. See Working with Problem Components.
  • Verify that videos, transcripts, and download links are in place and working.
  • Review feedback from the course team and beta testers to be sure that the content has been thoroughly reviewed and tested.

Welcome Students

  • Two months before the course start date, prepare and send a welcome email message to currently enrolled students. See Pre-launch Reminder and Send Email Messages to Course Participants.
  • Compose a welcome message and add it to the Course Info page. See Add a Course Update.
  • Verify that a syllabus and other references are available on the Course Handouts page. See Add Course Handouts.
  • One month before the course start date, prepare and send a welcome email message to currently enrolled students.
  • One week before the course start date, prepare and send a welcome email message to currently enrolled students.
  • Add an “Introduce Yourself” post to a discussion topic. For a MOOC, you may want to manage the size of the thread by distributing student responses across multiple threads. For example, you can start different threads for introductions based on geographical location, such as “Introduce Yourself: Europe”, “Introduce Yourself: North America”, etc. See Run a Discussion.
  • On the course start date, prepare and send a launch email message to currently enrolled students. See Launch Day Welcome.

Prepare Staff

  • Define communication methods for all course contributors, including staff, instructors, and the discussion team. For example, set up a course-specific email address.
  • Verify that all course contributors know how to record their work, report issues, and collaborate on tasks.
  • Verify that the instructors and course staff selected for your course have the correct role assignments in the LMS. See Staffing.
  • Verify that discussion admins, discussion moderators, and community TAs have registered and activated their user accounts, enrolled in the course, and been assigned their roles on the Instructor Dashboard. See Assign Discussion Administration Roles.
  • Define methods for managing discussions and guidance for discussion moderators, and distribute to the discussion team. See Moderate Discussions and Guidance for Discussion Moderators.

Staff Debug Info

The edX system keeps track of students’ progress through a course – recording when the student watches videos, responds to problems, and so on. If you are a staff member on a course, some of that data is visible to you for debugging purposes. Under every problem is a Staff Debug Info button: clicking this button opens a popup with metadata about the problem.

None of this information should be necessary for day-to-day usage of edX, but for the sake of clarity, some of these fields are documented here:

is_released
Indicates whether the problem is visible to students.
location
An internal unique identifier that corresponds to this problem. If you are having trouble with a problem, and need assistance from the edX support team, including this value will make it easier for them to track down the issue you’re having with the problem.
markdown
The text of the problem, in Markdown format. This is often written using Studio.
display_name
The name of the problem, as shown to the student.
max_attempts
The maximum number of times that a student can attempt to answer the problem correctly.
attempts
The number of times that the currently logged in student has attempted to answer the problem correctly, so far. Every time this student attempts to answer this question, this number will go up, until it reaches max_attempts.

Running Your Course

Staffing

You can designate a team of people to help you run your course. Two roles are available to give your administrative team members access to different options for working with students, grades, and other members of the staff.

  • Course Staff
  • Instructors

You can assign these privileged roles when you work in either the LMS or in Studio, and the users who have these roles can work on your course in both the LMS and Studio. For more information on setting up a team in Studio, see Add Course Team Members.

Note

The LMS “Course Staff” role is the same as the Studio “Staff” role, and the LMS “Instructors” role is the same as the Studio “Admin” role.

You can also designate teams of people to beta test your course and to moderate and manage its discussions by assigning other LMS roles. The beta testers and discussion administrators must be enrolled in your course, but they do not need to have the Course Staff or Instructors role or a Studio role. For more information, see Beta Testing a Course and Assign Discussion Administration Roles.

Administrative Team Roles

To provide access to features on the LMS Instructor Dashboard you assign the Course Staff role or the Instructors role.

Course Staff can:

  • View the course before the Course Start Date.
  • Enroll and unenroll students.
  • Access student grades.
  • Reset student attempts to answer a question correctly.
  • See course HTML errors.
  • Send email messages to course participants.

Instructors have access to all of the same options for running the course as the course staff. They can also:

  • Add and remove Course Staff.
  • Add and remove other Instructors.
  • Add and remove Beta Testers.
  • Add and remove Discussion Admins, Discussion Moderators, and Discussion Community TAs.

Assign Staff Roles

Before you can assign the Course Staff or Instructors role to a team member:

  • You need the email address or username of each team member.
  • Each team member must register a user account for that email address/username, activate the account, and enroll in your course.

To assign a staff role:

  1. View the live version of your course.
  2. Click Instructor, then click Membership.
  3. In the Administration List Management section, use the drop-down list to select Course Staff or Instructors.
  4. Under the list of users who currently have that role, enter an email address or username and click Add for the role type.

To remove an assigned role, view the list of users and then click Revoke access.

Enrollment

Course authors and instructors can enroll students in a course, see how many people are enrolled, and, when necessary, unenroll students on the Instructor Dashboard.

Students can enroll themselves in a course during its defined enrollment period. For a www.edx.org course, enrollment is publicly available to anyone who registers an edX account. For other courses, such as those on edge.edx.org, enrollment is limited to students who know the course URL and students you explicitly enroll.

Data about course enrollment is also available from edX Insights. You access Insights from the Instructor Dashboard for your live course: after you click Instructor, click the link in the banner at the top of each page. For more information, see Using edX Insights.

Registration and Enrollment

Before a student can enroll in a course, he or she must:

  1. Register a user account, which includes supplying a valid email address, on www.edx.org, edge.edx.org, or your implementation of the edX platform. Each platform requires a separate user account.
  2. Activate the registered account by following the emailed instructions.

As long as the course Enrollment End Date has not passed, students who have registered and activated user accounts can enroll themselves in www.edx.org courses, or can enroll in other courses if they know the URL. For a more detailed description of this process from a student’s point of view, see Sample Student Login Guide.

Course authors and instructors, however, can enroll students in a course either before or after the students register their user accounts.

To work on a course, all course staff members must also have registered and activated user accounts and be enrolled in the course.

Enroll Students in a Course

You enroll students, and other course staff members, in your course by supplying their email addresses. After the Enrollment End Date for a course students can no longer enroll themselves; however, you can still explicitly enroll students.

When you enroll people in a course you have these options:

  • Auto Enroll. When you choose this option, the people who you enroll do not need to complete an explicit course enrollment step. Of the list of email addresses that you supply, those that correspond to a registered user account are immediately enrolled in the course, and your course displays on the Current Courses dashboard for those users on log in. Email addresses on the list that do not match a registered user account are enrolled as soon as that account is registered and activated.

    If you do not select Auto Enroll, the people who you enroll must also actively locate your course and enroll themselves in it. These students see the course on their dashboards after they have done so.

  • Notify students by email. When you choose this option, an email message is automatically sent to each of the email addresses that you supply. The message includes the name of the course and, for students who are not already enrolled, a reminder to use that same email address to enroll.

    An example of the email message that a student received when this option was selected during enrollment follows. In this example, the student already had a registered and activated edx.org account, and both Auto Enroll and Notify students by email were selected.

    Email message inviting a student to enroll in an edx.org course

To enroll students or staff members:

  1. View the live version of your course.
  2. Click Instructor, then click Membership.
  3. In the Batch Enrollment section of the page, enter the username or email address of the student, or enter multiple names or addresses separated by commas or new lines.
You can copy and paste data from a CSV file of email addresses. However, note that this feature is better suited to courses with smaller enrollments, rather than courses with massive enrollments.
  1. To streamline the course enrollment process, leave Auto Enroll selected.
  2. To send students an email message, leave Notify students by email selected.
  3. Click Enroll.

View an Enrollment Count

After you create a course, you can access the total number of people who are enrolled in it. When you view an enrollment count, note that:

  • In addition to students, the enrollment count includes the course author, course team members, instructors, and course staff. (To work with a course in Studio or the LMS, you must be enrolled in that course.)

  • Students can unenroll from courses, and course authors and instructors can unenroll students when necessary.

    Note: The enrollment count displays the number of currently enrolled students and course team staff. It is not a historical count of everyone who has ever enrolled in the course.

The total number of current enrollees is shown as the sum of the number of people who selected each of the certification tracks (verified, audit, or honor) that are available for your course.

To view the enrollment count for a course:

  1. View the live version of your course.
  2. Click Instructor, then click Course Info if necessary.
The Enrollment Information section of the page that opens shows the number of people who are currently enrolled in your course and in each of the certification tracks.

You can also view or download a list of the people who are enrolled in the course. See Student Data.

Unenroll Students from a Course

You can remove students from a course by unenrolling them. To prevent students from re-enrolling, course enrollment must also be closed. You use Studio to set the Enrollment End Date for the course to a date in the past. See Set Important Dates for Your Course.

Note: Unenrollment does not delete data for a student. An unenrolled student’s state remains in the database and is reinstated if the student does re-enroll.

To unenroll students, you supply the email addresses of enrolled students.

  1. View the live version of your course.
  2. Click Membership.
  3. In the Batch Enrollment section of the page, enter a username or an email address, or multiple names or addresses separated by commas or new lines.
  4. To send students an email message, leave Notify students by email selected.

Note

The Auto Enroll option has no effect when you click Unenroll.

  1. Click Unenroll. The course is no longer listed on the students’ Current Courses dashboards, and the students can no longer contribute to discussions or the wiki or access the courseware.

Managing Course Discussions

Discussions, or discussion forums, foster interaction among your students and between students and course staff. You can set up different topics to guide these interactions when you create your course, and then run and moderate discussions throughout the course to encourage participation and develop course community.

Discussions are also excellent sources of feedback and ideas for the future.

For options you can use to run and moderate discussions, see the following sections:

For information about how enabling the cohort feature for a course affects options for moderating course discussions, see Managing Discussions in Courses with Student Cohorts.

Overview

Students and staff use course discussions to share ideas, exchange views, consider different viewpoints, and ask questions. In a discussion, there are three hierarchical levels of interaction.

  • A post is the first level of interaction. A post opens a new subject. Posts are often posed as questions, either to start a conversation or to surface an issue that requires some action. When you add a post, you categorize it as a Question or as a Discussion.
  • A response is the second level of interaction. A response is a reply made directly to a post to provide a solution or continue the conversation.
  • A comment is the third level of interaction. A comment is often a clarification or side note made to a specific response, rather than to the post as a whole.

The dialogue created by a post, its responses, and the comments on those responses is sometimes called a thread.

All course staff members and enrolled students can add posts, responses, and comments, and view all of the posts, responses, and comments made by other course participants. Members of the course community, both staff and students, can be given permission to moderate or administer course discussions through a set of discussion administration roles. Discussion threads are saved as part of the course history.

Note

The Participating in Course Discussions chapter describes features that are available to all discussion participants, and may be useful to students who are new to online discussion forums. You can share the chapter with your students by, for example, adding a “Never Used a Discussion Forum Before?” post that includes the information you think will be most useful to them.

Creating Discussion Topics for Your Course

Discussions in an edX course include both broad topics on course-wide areas of interest such as “Feedback”, “Troubleshooting”, or “Technical Help”, and the content-specific topics that you add to course units as discussion components. You create both types of discussion topics in Studio.

For details about creating discussion topics, see Create Course-Wide Discussion Topics and Create Content-Specific Discussion Topics. For details about configuring discussion topics in courses with cohorts enabled, see Setting up Discussions in Courses with Cohorts.

Create Course-Wide Discussion Topics

All courses include a page named Discussion. When you create a course, a discussion topic named “General” is available for you to include by default. You can add more course-wide discussion topics to guide how students share and find information during your course. Such course-wide topics might include Feedback, Troubleshooting, or Technical Help. Discussions in these topics can begin as soon as your course is available.

To create a course-wide discussion topic:

  1. Open your course in Studio.
  2. Select Settings, then Advanced Settings.
  3. Scroll down to the Discussion Topic Mapping policy key. By default, its value is:
Policy value of {"General": {"id": "i4x-edX-Open-edx_demo_course"}}
  1. Copy the three lines provided for the General topic and paste them above the closing brace character (}):
Policy value of {"General": {"id": "i4x-edX-Open-edx_demo_course"} "General": {"id": "i4x-edX-Open-edx_demo_course"}}
  1. Replace the second “General” with the quoted name of your new topic.
  2. Change the value for the second “id” to a unique identifier. For example, append a reference to the name of the topic.
  3. Add a comma after the first closing brace (},).
Policy value of {"General": {"id": "i4x-edX-Open-edx_demo_course"}, "Course Q&A": {"id": "i4x-edX-Open-edx_demo_course_faq"}}
  1. Click Save Changes. Studio resequences and reformats your entry. Scroll back to the Discussion Topic Mapping field to verify that your entry was saved as you expect. Entries that do not contain all of the required punctuation characters revert to the previous value when you save, and no warning is presented.

When students click the Discussion page for your course, the drop-down Discussion list now includes the topic you added.

Image of a new topic named Course Q&A in the list of discussions

Note

In courses with cohorts enabled, the course-wide discussion topics that you add are unified. All of the posts can be read and responded to by every student, regardless of their assignement to a cohort. You have the option to configure these topics to be divided by cohort. See Example: Configuring Course-Wide Discussion Topics As Divided.

Create Content-Specific Discussion Topics

To create a content-specific discussion topic, you add a discussion component to a unit. Typically, you do this while you are designing and creating your course in Studio. Follow the instructions in Working with Discussion Components. The result is a discussion topic associated with a unit and its content.

A content-specific discussion topic is subject to the release date of the section that contains it. Students cannot contribute to a content-specific discussion topic until the containing section has been released.

Note

In courses with cohorts enabled, all content-specific discussion topics are divided by cohort when you first add them. Student posts to divided discussion topics can only be read and responded to by members of the same cohort. You can change the configuration of content-specific discussion topics to make them unified and available to all students in the course. See Make All Content-Specific Discussion Topics Unified by Default.

Assign Discussion Administration Roles

You can designate a team of people to help you run course discussions.

Note

The course team that you set up in Studio (or the course staff and instructors you add on the Instructor Dashboard) are not automatically granted discussion administration roles. Discussion administration roles must be explicitly granted to members of the course team for them to moderate or administer course discussions. The course author, team members with Admin access (Studio), and Instructors (Instructor Dashboard) can grant discussion administration roles.

Different options for working with discussions are available through these roles:

  • Discussion moderators can edit and delete messages at any level, review messages flagged for misuse, close and reopen posts, pin posts, and endorse responses. Posts made by moderators are marked as “By: Staff” in the list of posts. Responses and comments made by moderators have a colored “Staff” identifier. This role is often given to course team members who already have the Course Staff role.
  • Discussion community TAs have the same options for working with discussions as moderators. Posts made by community TAs are marked as “By: Community TA” in the list of posts on the Discussion page. Responses and comments made by community TAs have a colored “Community TA” identifier. This role is often given to students.
  • Discussion admins have the same options for working with discussions as moderators, and their posts, responses, and comments have the same “Staff” identifiers. This role can be reserved for assignment to course team members who have the Instructor role only: the discussion admins can then both moderate discussions and give other users these discussion management roles whenever necessary.

Before you can assign roles to your discussion team, you need their email addresses or usernames.

  • To get this information for a course team member, on the Instructor Dashboard click Membership and then select Course Staff or Instructor from the drop-down list.
  • To get this information for an enrolled student, on the Instructor Dashboard click Data Download, then Download profile information as a CSV.
Assign Roles

To assign a discussion administration role, you must be the course author or an Instructor (that is, you are identified in Studio as a team member with Admin access).

  1. View the live version of the course.
  2. Click Instructor, then click Membership.
  3. In the Administration List Management section, use the drop-down list to select Discussion Admins, Discussion Moderators, or Discussion Community TAs.
  4. Under the list of users who currently have that role, enter an email address or username and click Add for the role type.
  5. To remove an assigned role, view the list of users and then click Revoke access.

Run a Discussion

On an ongoing basis, the members of your discussion team run the course discussion by making contributions, endorsing responses, marking answers as correct, and guiding student messages into pertinent threads. Techniques that you can use throughout your course to make discussions successful follow.

Use Conventions in Discussion Subjects

To identify certain types of messages and make them easier to find, you can define a set of standard tags to include in the subject of a post or in the body of a response or comment. Examples follow.

  • Use “[OFFICIAL]” at the start of announcements about changes to the course.
  • Provide information about corrected errors with a subject that begins “[CORRECTIONS]” or “[ERRORS]”.
  • Ask students to use “[STAFF]” in the subject of each post that needs the attention of a course staff member.

Both your discussion team and your students can use tags like these to search the discussions more effectively.

When a post is created its type must be selected: either “question” or “discussion”. Members of the discussion team should be thoughtful when selecting the type for their posts, and encourage students to do the same. See Find Questions and Discussions.

Seed Discussion Topics

To help students learn how to get the most out of course discussions, and find the best discussion topic to use for their questions and conversations, you can seed discussion topics by adding posts before your course starts. Some examples follow.

  • In the General topic (which is included in every course by default), add an [INTRO] post to initiate a thread for student and staff introductions.
  • For each topic that you create, add the first post to it to describe the way you intend it to be used. In addition to providing guidance, these initial messages can also act as models for students to follow when they create their own posts.
  • If you include discussion components along with problem components in a unit, you can add a post that encourages students to use the topic to ask for help with the problems, but reminds them not to post the answers.
Minimize Thread Proliferation

To encourage longer, threaded discussions rather than many similar, separate posts, the discussion team can use these techniques. However, be aware that long threads (with more than 200 responses and comments) can be difficult to read, and can therefore result in an unsatisfactory experience in the discussion.

  • Pin a post. Pinning a post makes it appear at the top of the list of posts on the Discussion page. As a result, it is more likely that students will see and respond to pinned posts. You can write your own post and then pin it, or pin a post by any author. Select the “More” icon and then Pin.

    Image of the pin icon for discussion posts
  • Endorse a response. Endorsing a response indicates that it provides value to the discussion. Click the “check mark” (or tick mark) icon for the response.

    Image of the Endorse button for discussion posts
  • Mark a question as answered. You use the same procedure to mark a response as the correct answer to a question as you do to endorse contributions to a discussion: click the “check mark” (or tick mark) icon for correct answers.

  • Close a post. You can respond to a redundant post by (optionally) pasting in a link to the post that you prefer students to contribute to, and prevent further interaction by closing the post. Select the “More” icon and then Close to close it.

  • Provide post/response/comment guidelines. You can post information from the overview in this chapter, or the anatomy of edX discussions in the next chapter, in a course-wide discussion topic (such as General) to provide guidance about when to start a new thread by adding a post, responding to an existing post, or commenting on a response.

Moderate Discussions

The members of a course discussion team monitor discussions and keep them productive. They can also collect information, such as areas of particular confusion or interest, and relay it to the course staff.

Developing and sustaining a positive discussion culture requires that sufficient moderator time is dedicated to reviewing and responding to discussions. Keeping up-to-date with a large MOOC forum requires a commitment of 5 or more hours per week, and involves reading threads, replying to and editing posts, and communicating with the rest of the discussion team and course staff.

For information on setting up moderators for your course, see Assign Discussion Administration Roles.

Provide Guidelines for Students

You can develop a set of best practices for discussion participation and make them available to students as a course handout file or on a defined page in your course. These guidelines can define your expectations and optionally introduce features of edX discussions.

You can also share the Participating in Course Discussions chapter with your students. It describes features that are available to all discussion participants, and may be useful to students who are new to online discussion forums.

Develop a Positive Discussion Culture

Discussion monitors can cultivate qualities in their own discussion interactions to make their influence positive and their time productive.

  • Encourage quality contributions: thank students whose posts have a positive impact and who answer questions.
  • Check links, images, and videos in addition to the text of each message. Edit offensive or inappropriate posts quickly, and explain why.
  • Review posts with a large number of votes and recognize “star posters” publicly and regularly.
  • Stay on topic yourself: before responding to a post, be sure to read it completely.
  • Maintain a positive attitude. Acknowledge problems and errors without assigning blame.
  • Provide timely responses. More time needs to be scheduled for answering discussion questions when deadlines for homework, quizzes, and other milestones approach.
  • Discourage redundancy: before responding to a post, search for similar posts. Make your response to the most pertinent or active post and then copy its URL and use it to respond to the redundant threads.
  • Publicize issues raised in the discussions: add questions and their answers to an FAQ topic, or announce them on the Course Info page.

For a template that you can use to develop guidelines for your course moderators, see Guidance for Discussion Moderators.

Find Questions and Discussions

When students create posts, they specify the type of post to indicate whether they are asking for concrete information (a question) or starting an open-ended conversation (a discussion).

On the Discussion page, a question mark image identifies posts that ask questions, and a conversation bubble image identifies posts that start discussions. When an answer is provided and marked as correct for a question, a check or tick mark image replaces the question mark image. See Answer Questions and Mark Questions as Answered.

In addition to these visual cues, filters can help you find questions and discussions that need review. Above the list of posts on the Discussion page, the Show all filter is selected by default. You can also select:

  • Unread, to list only the discussions and questions that you have not yet viewed.
  • Unanswered, to list only questions that do not yet have any responses marked as answers.
Edit Messages

Discussion moderators, community TAs, and admins can edit the content of posts, responses, and comments. Messages that include spoilers or solutions, or that contain inappropriate or off-topic material, should be edited quickly to remove text, images, or links.

  1. Log in to the site and then select the course on your Current Courses dashboard.
  2. Open the Discussion page and then open the post with the content that requires editing. You can select a single topic from the drop-down list of discussion topics, apply a filter, or search to locate the post.
  3. For the post or for the response or comment that you want to edit, click the “More” icon and then Edit.
  4. Remove the problematic portion of the message, or replace it with standard text such as “[REMOVED BY MODERATOR]”.
  5. Communicate the reason for your change. For example, “Posting a solution violates the honor code.”
Delete Messages

Discussion moderators, community TAs, and discussion admins can delete the content of posts, responses, and comments. Posts that include spam or abusive language may need to be deleted, rather than edited.

  1. Log in to the site and then select the course on your Current Courses dashboard.
  2. Open the Discussion page and then open the post with the content that requires deletion. You can select a single topic from the drop-down list of discussion topics, apply a filter, or search to locate the post.
  3. For the post or for the response or comment that you want to delete, click the “More” icon and then Delete.
  4. Click OK to confirm the deletion.

Important

If a message is threatening or indicates serious harmful intent, contact campus security at your institution. Report the incident before taking any other action.

Respond to Reports of Misuse

Students have the option to report contributions that they find inappropriate. Moderators, community TAs, and admins can check for messages that have been flagged in this way and edit or delete them as needed.

  1. View the live version of your course and click Discussion at the top of the page.
  2. In the list of posts on the left side of the page, use the filter drop-down list (set to Show all by default) to select Flagged.
  3. Review listed posts. A post is listed if it or any of its responses or comments has been reported. The reported contribution includes a Reported identifier.
  4. Edit or delete the post, response, or comment. Alternatively, remove the flag: click the “More” icon and then Unreport.
Block Users

For a student who continues to misuse the course discussions, you can unenroll the student from the course. See Unenroll Students from a Course. If the enrollment period for the course is over, the student cannot re-enroll.

Close Discussions

You can close the discussions for your course so that students cannot add messages. Course discussions can be closed temporarily, such as during an exam period, or permanently, such as when a course ends.

When you close the discussions for a course, all of the discussion topics in course units and all of the course-wide topics are affected.

  • Existing discussion contributions remain available for review.
  • Students cannot add posts, respond to posts, or comment on responses. However, students can continue to vote on existing threads, follow threads, or report messages for misuse.
  • Course Staff, Instructors, Discussion Admins, Discussion Moderators, and Discussion Community TAs are not affected when you close the discussions for a course. Users with these roles can continue to add to discussions.

Note

To make sure your students understand why they cannot add to discussions, you can add the dates that discussions are closed to the Course Info page and post them to a General discussion.

Start-End Date Format Specification

To close course discussions, you supply a start date and time and an end date and time in Studio. You enter the values in this format:

["YYYY-MM-DDTHH:MM", "YYYY-MM-DDTHH:MM"]

where:

  • The dates and times that you enter are in the Universal Coordinated (UTC) time zone, not in your local time zone.
  • You enter an actual letter T between the numeric date and time values.
  • The first date and time indicate when you want course discussions to close.
  • The second date and time indicate when you want course discussions to reopen.
  • If you do not want the discussions to reopen, enter a date that is far in the future.
  • Quotation marks enclose each date-time value.
  • A comma and a space separate the start date-time from the end date-time.
  • Square brackets enclose the start-end value pair.
  • You can supply more than one complete start and end value pair. A comma and a space separate each pair.

For example, to close course discussions temporarily for a final exam period in July, and then permanently on 9 August 2014, you enter:

["2014-07-22T08:00", "2014-07-25T18:00"], ["2014-08-09T00:00", "2099-08-09T00:00"]

You enter these values between an additional pair of square brackets which are supplied for you in Studio.

Define When Discussions Are Closed

To define when discussions are closed to new contributions and when they reopen:

  1. Open your course in Studio.

  2. Select Settings, then Advanced Settings.

  3. Scroll down to the Discussion Blackout Dates policy key.

  4. In the field for the value, place your cursor between the supplied square brackets. Use the required date format specification to enter the start and end dates for each time period during which you want discussions to be closed.

    When you enter the dates and times from the example above, the value field looks like this:

    Policy value of [["2014-07-22T08:00", "2014-07-25T18:00"], ["2014-08-09T00:00", "2099-08-09T00:00"]]
  1. Click Save Changes.

    Studio reformats your entry to add line feeds and indentation, like this:

    Same policy value but with a line feed after each bracket and comma, and an indent before each date

For examples of email messages that you can send to let students know when the course discussions are closed (or open), see Example Messages to Students.

Participating in Course Discussions

Course discussions give you the opportunity to start conversations with other students, ask questions of the course team, and participate in the course community. If you have not previously participated in an online discussion forum, see the introductory “anatomy” section.

This chapter also describes features of edX discussions that can make your participation more effective. These include ways to:

Anatomy of edX Course Discussions

Posts, Responses, and Comments
Post: "Please introduce yourself."
  - Reponse: "My name is Lee and I teach secondary school maths in Canberra,
    Australia."
  - Reponse: "Hello everyone, I am Sumei from Hong Kong, China."
    - Comment: "Hi Sumei, I am taking this course in Hong Kong too. Maybe we
      should make a study group!"
    - Comment: "I'd like to join the Hong Kong study group too, I think it
      will help me keep up with the homework."
  - Response: "Hi from Johannesburg! I am taking the course to prepare for my
    matric exams."

This example shows the different ways that you can contribute to a discussion. The post initiates the conversation, responses are replies to the post, and comments expand on specific responses. Before you add a post, response, or comment, take a moment to consider which of these options best suits the contribution that you want to make. This helps keep course discussions organized and easy to follow.

Discussion Topics

Most edX courses include opportunities to discuss specific video lectures, reading assignments, homework problems, or other course content. Each of these content-specific discussion opportunities is called a topic. When these discussion topics are included in a course, they typically appear below the content they apply to.

A discussion topic that appears below a video in the course, identified by a "Show Discussion" link

Most courses also include one or more topics for course-wide discussions, such as “Frequently Asked Questions” and “Troubleshooting”. You access these topics on the Discussion page of the course: click the All Discussions drop-down.

Discussion topics are listed on the Discussion page when you click the drop-down list at the left side of the page

When you visit the Discussion page, you can read and add to any of the discussion topics.

  • Course-wide topics do not have other topics indented below them.
  • Content-specific topics are indented under an identifying category name.

Notice that you can access content-specific topics both on the Discussion page and also while you are navigating through course content on the Courseware page. However, you can only access the course-wide topics on the Discussion page.

Before you add a post, look through the topics. When you add your post to the most appropriate topic, others with the same interest can find, read, and respond to it more easily.

Types of Discussion Posts

When you make a contribution to a course discussion topic, it can typically be categorized as either a question or a discussion.

  • A question post raises an issue so that the course staff and community can provide answers.
  • A discussion post starts a conversation by sharing thoughts and reflections, and inviting community participation.

When you add a post to a discussion topic, you specify whether it is a question or a discussion. When you visit the Discussion page for your course, a question mark image identifies posts that ask questions and a conversation bubble image identifies posts that start discussions.

The list of posts with images identifying questions and discussions

If you have any difficulty deciding which type of post you want to add, think about whether you want to get concrete information (a question) or start an open-ended conversation (a discussion).

Find Posts

Finding out whether someone else has already asked the same question or initiated a conversation about the same subject that interests you, and then reading and contributing to that exchange instead of starting a new one, helps make the time that everyone spends with the course discussion more productive. You can search for something specific, or you can browse through the posts in a single discussion topic.

Search the Discussions

To search for text, click Discussion and enter a phrase, a word, or part of a word in the Search all posts field above the list of posts. When you press Enter, the search tries to find:

  • A match or close match to your text in any post, response, or comment. The display updates to show a list of the posts that have a match at any level of interaction.
  • A similar value in any post, response, or comment (if no exact matches are found). A “No results found for {text}. Showing results for {similar}” message displays above the posts that have similar text at any interaction level.
  • Any usernames that are an exact match to your text. A “Show posts by {username}” option displays above any posts that have an exact text match at any interaction level. Click the username in the message to read that user’s posts, responses, and comments.
Review Posts About a Single Topic

To review posts about a particular part of the course or type of issue, click Discussion at the top of the page and then select a topic from the drop- down list. (All Discussions is selected by default.) Only posts about the topic you select appear in the list of posts.

The list of posts with callouts to identify the top filter to select one topic and the filter below it to select by state
Review Only Unread or Unanswered Posts

To limit the posts shown on the Discussion page, you can select one of the filter options. Above the list of posts, the Show all filter is selected by default.

  • To list only the discussions and questions that you have not yet viewed, select Unread.
  • To list only question posts that do not yet have any responses marked as answers, select Unanswered.

Add a Post, Response, or Comment

Add a Post

To make sure that other students and the course team can find and respond to your post, try to select the correct type for your post: either question or discussion.

Add a Post to a Content-Specific Discussion Topic
  1. Click Courseware.

  2. Open the part of the course that includes the discussion topic that you want to add to.

  3. To read what others have already contributed to the conversation, click Show Discussion.

    You can scroll through the posts that have already been added: the title and the first sentence or two of each post appear. To read an entire post, view the responses to it, and see any comments, click Expand discussion.

  1. To add a post, click New Post.
Adding a post about specific course content
  1. Select the type of post: click Question or Discussion.
  2. Enter a short, descriptive identifier for your post in the Title field. The title is the part of your post that others see when they are browsing on the Discussion page or scrolling through one of the content-specific topics.
  3. Enter the complete text. Options for formatting the text and for adding links or images are available: click the buttons above the text field.
Add a Post to a Course-Wide Discussion Topic

You can also use this procedure to add a post to any of the content-specific discussion topics.

  1. Click the Discussion page.
  2. Click New Post.
  3. Select the type of post: click Question or Discussion.
  4. Select the most appropriate discussion topic for your post.
Selecting the topic for a new post on the Discussion page
  1. Supply a short, descriptive Title. The title is the part of your post that others see when they are browsing on the Discussion page or scrolling through one of the content-specific topics.
  2. Enter the complete text. Options for formatting the text and for adding links or images are available: click the buttons above the text field.
Add a Response or Comment

To participate in an ongoing discussion, you reply to the initial post by adding a response, or expand on a particular response by adding a comment.

The same options for formatting the text and for adding links or images are available for responses and comments as for posts.

Add a Response or Comment to a Content-Specific Discussion Topic
  1. Click Courseware.
  2. Open the part of the course with the discussion topic where you want to make your contribution.
  3. Click Show Discussion.
  4. Scroll to the post where you want to add your thoughts.
  5. Click Expand discussion.
The **Expand discussion** link under a post
  1. Add a response or comment.
  • To add a response to the post, click Add A Response. When your response is complete, click Submit.
  • To add a comment to a response, click in the Add a comment field below the response. When your comment is complete, click Submit.
Add a Response or Comment to a Course-Wide Discussion Topic

You can also use this procedure to add a response or comment to any of the content-specific discussion topics.

  1. Click the Discussion page.
  2. Find the post that you want to contribute to. To help you decide where to add your thoughts, review the current responses and their comments.
  3. Add a response or comment.
  • To add a response to the post, click Add A Response. When your response is complete, click Submit.
The **Add A Response** button located between a post and its responses
  • To add a comment to a response, click in the Add a comment field below the response. When your comment is complete, click Submit.

Keep Up with New Activity

Read New or Updated Posts

The list of posts on the Discussion page provides visual cues to help you identify posts that are new, or that have responses or comments that you have not read yet, and to distinguish them from exchanges that you have already read completely.

  • Posts that you have not read yet have a blue callout image.
  • Posts that you have read, but with responses or comments that you have not read yet, have a white callout image.
  • Exchanges that you have read completely have a gray callout image and background.
The list of posts with posts showing differently colored backgrounds and callout images

The total number of contributions in the exchange (the post and its responses and comments) appears in each callout image. To see the number of contributions that you haven’t read yet, move your cursor over the callout image.

A post with 4 contributions total and a popup that shows only two are unread

The color-coded callout images appear when you sort the list of posts by recent activity or by most activity. If you sort the list of posts by most votes instead, the number of votes that the post has received appears in place of the callouts. See Vote for Posts or Responses.

Receive Daily Digests

You have the option to receive an email message each day that summarizes discussion activity for the posts you are following. To receive this daily digest, click Discussion and then select the Receive updates checkbox.

Provide Feedback on Contributions

As you read the contributions that other students and staff make to discussion topics, you can provide feedback without writing a complete response or comment. You can:

To select a feedback option, you use the icons at the top right of each post, response, or comment. When you move your cursor over these icons a label appears.

The icons at top right of a post, shown before the cursor is placed over each one and with the Vote, Follow, and More labels

When you click the “More” icon, a menu of the options that currently apply appears.

The More icon expanded to show a menu with one option and a menu with three options
Vote for Posts or Responses

If you like a post or one of its responses, you can vote for it: view the post or response and click the “Vote” icon at top right.

A post with the Vote icon circled

You can sort the list of posts so that the posts with the most votes appear at the top: click the drop-down list of sorting options and select by most votes.

The list of posts with the "by most votes" sorting option and the number of votes for the post circled

The number of votes that each post has received displays in the list of posts. (Votes for responses are not included in the number.)

Follow Posts

If you find a post particularly interesting and want to return to it in the future, you can follow it: view that post and click the “Follow” icon.

A post with the Follow icon circled

Each post that you follow appears with a “Following” indicator in the list of posts.

To list only the posts that you are following, regardless of the discussion topic they apply to, click the drop-down Discussion list and select Posts I’m Following.

The list of posts with the "Posts I'm Following" filter selected. Every post in the list shows the following indicator.
Answer Questions and Mark Questions as Answered

Anyone in a course can answer questions. Just add a response to the question post with your answer.

The person who posted the question (and staff members) can mark responses as correct: click the “Mark as Answer” icon that appears at upper right of the response.

A question and a response, with the Mark as Answer icon circled

After at least one response is marked as the answer, a check or tick mark image replaces the question mark image for the post in the list on the Discussion page.

The list of posts with images identifying unanswered and answered questions and discussions
Report Discussion Misuse

You can flag any post, response, or comment for a discussion moderator to review: view the contribution, click the “More” icon, and then click Report.

A post and a response with the "Report" link circled

Guidance for Discussion Moderators

Discussion forums are hugely important tools in running a successful MOOC; they allow for substantive community development, in addition to being excellent sources of feedback and ideas for future iterations of the course.

Moderators are the key to effectively managing these online communities. Moderators keep the discussions productive and relay important information (errors, student confusion with or interest in particular topics, and so on) to the rest of the course staff. Discussions can be moderated by any of a number of members of the course team, but dedicating enough time to moderation is the best way to cultivate a successful discussion culture.

Please feel free to use some or all of the information in this chapter to guide the contributions of your discussion moderators.

Responsibilities

  • Answer basic questions posed by students, and direct students with questions to the right resources: syllabi, course documents, course updates, useful lecture segments, example problems, etc.
  • Relay reports of errata, common misconceptions and questions, highly disruptive participants, bugs, and amusing or interesting posts to the most appropriate course staff.
  • Enforce the Honor Code by editing or deleting problem answers, or requests for answers, promptly.
  • Edit out offensive content from the discussion, and remind the originators of discussion etiquette and expectations.
  • Communicate problems and successes to your fellow moderators.
  • Identify students whose presence in the discussions has a strongly positive impact. These students can be promoted to community TA role and publicly acknowledged.
  • Add helpful items to the FAQ or Course Info page.

Qualities of good discussion moderators

  • Good or great content knowledge: stellar students from previous years often make good moderators.
  • Solid communication skills: the ability to organize positive, consistent, and effective communication with students, other moderators, and course staff.
  • Time: keeping up-to-date with the discussions for a large MOOC requires at least 5 hours per week for reading posts, replying to or editing posts, and communicating with the other moderators and course staff.
  • Enthusiasm: this is the best predictor of moderator excellence!

Best practices for discussion moderation

  • Always maintain a positive attitude. Keeping a positive attitude is crucial to encouraging participation in the discussion community.
  • Encourage discussion between students. Actively thank students who answer the questions of others.
  • Use the course’s FAQ and Course Info pages as resources. Provide links to these pages in your responses when appropriate. Suggest that information be added to these resources when necessary to respond to a common question or fix confusion.
  • Always make it obvious that you have read the student’s question. When posting a response, make sure that you are on topic. Respond in the context of the thread.
  • Develop a discussion persona. Try to answer your questions in your own slightly unique way.

Guidelines for specific types of posts

Certain types of posts require more attention from the moderators than others, or may need to be handled in a particular way.

Time sensitive problems
  • Try to be present on discussion threads when assignment due dates are approaching or new content is being released. The discussions tend to be extra busy at these times.
  • Please alert the course staff about problems that need to be dealt with quickly, such as problems with a graded assignment. Setting up a course email address that is checked frequently is a good way to manage these alerts.
Content Questions
  • Assist with content questions sensitively, but be careful not to post spoilers. Do not ask students to post their solutions!
  • A good guiding question can be better than an answer.
Redundant posts
  • When possible, help discourage redundancy by responding to such posts with links to an earlier or higher quality thread that asks the same question.
  • When responding to a post, search for similar posts and respond to the most pertinent thread. Redirect the other posts to the thread with your response and then close the redundant threads.
Off topic, inappropriate, or offensive posts
  • Don’t simply delete them; instead, edit and explain why they were edited. Inappropriate posts include spoilers, solutions, and information on how to pirate educational materials.
  • Check links that students post. If offensive sites and materials are found, they need to be edited quickly.
Bugs or errors
  • Check if there is in fact an error.
  • If not, suggest to the students that they check their work.
  • If so, contact course staff, and notify the thread that the error has been reported.
  • Use language that does not assign blame or discourage users from the platform.
You might say: “Thanks for letting us know about that issue. We are working with edX to get it fixed as quickly as possible.”
Feature requests
  • Keep an organized collection of feature requests cultivated by the course team. That list can subsequently be shared with an edX product manager, who will log those requests internally.
  • Reply to the post to let the person know that their request was heard, without promising that the feature will be implemented.
You might say: “Thanks for your suggestion. I’ve logged it for review by edX staff, who will prioritize feature requests on the development roadmap.”
  • Search the discussions for other similar requests, and respond to and close those as well.

Bulk Email

For courses on edx.org, you can send bulk email messages to course participants directly from the Instructor Dashboard. Messages can use HTML styling, and can include links to videos, social media pages for the course, and other material. All course contributors who are assigned the course staff or instructor role can use bulk emails to communicate with course participants before, during, and after the course run.

For templates that you can use when preparing your own messages, see Example Messages to Students.

Message Addressing

When you send an email message from the Instructor Dashboard, you choose its recipients by selecting one of these predefined groups:

  • Myself, to test out a message before sending it to a larger group.

  • Staff and Instructors, to contact other members of the administrative team.

  • All (students, staff and instructors), to communicate with currently enrolled students and the administrative team.

    Email messages are sent to all enrolled students with these exceptions:

    • Students who have not replied to the account activation email message that is sent when they registered on edx.org.
    • Students who have opted out of receiving email messages through the Email Settings link, which is present for each course on the Current Courses dashboard.

Before you use the bulk email feature, consider that messages cannot be cancelled after they are sent. If you plan to send a message to all course participants, be sure to review each draft carefully, and send the message to yourself first for thorough testing.

Send Email Messages to Course Participants

To send an email message to course participants:

  1. View the live version of your course.
  2. Click Instructor then click Email.
  3. Select who you want to send the message to from the Send to dropdown list. You can select:
  • Myself
  • Staff and Instructors
  • All (students, staff and instructors)
  1. Enter a Subject for the message. A subject is required.

  2. Enter the text for the message. Message text is required.

    Messages can use HTML styling, including text formatting and links. The email message editor offers the same formatting options as the HTML component editor in Studio. See Working with HTML Components.

  3. Click Send Email. You can perform other tasks on the Instructor Dashboard or navigate to other pages while you wait for your message to be sent.

After you send a message, a bulk email task is queued for processing. Multiple courses use the same queue to complete these tasks, so it can take some time for your message to be sent to all of its recipients. If your course is a MOOC, consider limiting the number of messages that you send to all course participants to no more than one per week.

Message Workflow States

When you click Send Email for a message, the server begins to process a bulk email task. The server assigns a series of different workflow states to the task.

Flowchart of the possible states of a bulk email task

The workflow states for a bulk email task are:

  • Queuing: The bulk email task is created and being queued for background processing.
  • Pending: The task is queued and is waiting to run.
  • Started: Background processing is in progress to create emailing subtasks.
  • Progress: The emailing subtasks are in progress.
  • Success: All emailing subtasks are complete. Note that the bulk email task can be in this state even if some or all of its emailing subtasks failed.
  • Failure: An error occurred and task processing did not complete successfully.

While the bulk email task is in progress, you can find out how far it has gotten in the workflow by checking the Pending Instructor Tasks section on the Email page.

Information about an email message, including who submitted it and when, in tabular format

When the bulk email task is complete, you can find its final state by checking the Email Task History report. See Email Task History Report.

Review Sent Messages

You can review a list of all of the messages that have been sent for the course. For any listed message, you can review the subject, the username of the person who sent it, the date and time sent, its selected recipients, and the message text.

  1. View the live version of your course.

  2. Click Instructor then click Email.

  3. In the Email Task History section of the page, click Sent Email History. The list of sent messages displays.

    A tabular list of sent messages, with columns for subject, sent by, time sent, and number sent
  1. To review additional information for a message, click its subject. The message opens in a dialog box.

    A dialog box with the subject, sent by, date and time sent, sent to, and message for an email message, and an option to Copy Email to Editor
  2. Optionally, use the message as the basis for a new message: click Copy Email to Editor. The dialog box closes and you can edit the text, links, and formatting that were duplicated into the Subject and Message fields.

    When you create a message by copying a previously-sent message, be sure to review and test it thoroughly before you send it to all course participants.

Email Task History Report

The Email Task History report can help you keep track of who sent messages, when, and to how many people. For each message sent, the report includes the username of the requester, the date and time it was submitted, the duration and state of the entire task, the task status, and the task progress.

You can use this history to investigate questions relating to bulk email messages that have been sent, such as:

  • How frequently students are sent course-related email messages.
  • Whether a message was sent successfully.
  • The change in the number of people who were sent course-related messages over time.

To produce the Email Task History report:

  1. View the live version of your course.
  2. Click Instructor then click Email.
  3. In the Email Task History section of the page, click Show Email Task History. A report like the following example displays on the Instructor Dashboard.
A tabular report with a row for each message sent and columns for requester, date and time submitted, duration, state, task status, and task progress.

Review Email Task History

For tasks with a State of Success, the Task Progress column shows an informational message. These messages can have a format such as “Message successfully emailed for 13457 recipients (skipping 29) (out of 13486)”. To interpret this message, note that:

  • The first number (“recipients”) indicates the number of messages sent to the selected recipients.

  • The second number (“skipping”) indicates the number of enrolled and activated users who were not sent the message. This count is of students who have opted not to receive course email messages.

  • The final number (“out of”) indicates the number of users in the set of recipients you selected who were enrolled in the course (and had activated their user accounts) when you sent the email message.

    Note that the Total number of enrollees shown on the Course Info page includes all currently enrolled students, regardless of account activation status, and as a result can be different than this number.

If the “recipients” and “out of” numbers are the same, the message reads “Message successfully emailed for 13457 recipients” instead.

Other Task Progress messages for tasks with a State of Success indicate that some or all of the emailing subtasks did not successfully send email:

  • “Message emailed for {number succeeded} of {number attempted} recipients”
  • “Message failed to be emailed for any of {number attempted} recipients”
  • “Unable to find any recipients to be emailed”

No Task Progress messages display for tasks that have a State of Failure.

Example Messages to Students

You can use these example messages, prepared for delivery before typical course milestones, as models for your own course communications.

These messages are styled as email messages, but you could also post this information in a course discussion topic or on the Course Info page.

Important

Revise these message templates carefully to include facts for your own course, meet the needs of your students, and reflect your own objectives and personality. Search for the “{” and “}” characters to locate prompts and replace them with course-specific values.

Pre-launch Reminder

Pre-launch reminders raise awareness of the course start date, publicize the course, and generate excitement. In addition to the course start date and time, the example that follows also lets students know that:

  • UTC is used in edX courses. Alternatively, you could include information about your course or the edX platform that will contribute to your students’ success.
  • The course has a companion social media site. Alternatively, you might include information about planned meetups or other community-building opportunities.

You may want to send out more than one message before the course launches: use this template as a starting point for crafting the different messages you want to deliver. Replace values enclosed by {braces} with information that applies to your course.

Subject: {course number} Starts Soon!

Hello {course name} student,

We are excited that you are joining us for {course number} {course name},
offered by {organization name} through edX. Class begins on {day}, {date} at
{time} UTC (which is {time} {local time zone}). Note that edX courses use
Coordinated Universal Time (UTC) for due dates and release times.

In case you haven't already found it, {course number} has its own official
Facebook page {add link}. You can find videos and photos posted there before
the course even begins.

If this is your first edX course, consider enrolling in edx101 {add link},
the edX Demo course. This course gives you an opportunity to explore the edX
platform and learn how to answer problems and track your progress, before
{course number} begins.

Your {course number} course staff

Launch Day Welcome

On your course start date, you can send an email message that both welcomes students and gives them specific actions to accomplish. This example directs students to two of the course pages to encourage exploration and discovery, and personally introduces the course team leader. Search for the values enclosed by {braces} in this template and replace them with information for your course.

Subject: {course number} Starts Today!

Hello everyone!

At this time, edX course {course number} is available from your Dashboard
{add link}, and the staff would like to officially welcome you to the course!
You'll find materials for the first week on the Courseware page,
including both video lectures and problem sets.

Please take some time to go to the Course Info page to read the handouts
and get familiar with course policies and philosophy.

I will be your course lead and I hope you will all have a great time learning
{subject}! It may be challenging, it may be frustrating, but it will be
rewarding and you will learn a ton.

On behalf of the staff, welcome, good luck, and have fun!

{name} and the {course number} staff

Reminder to Register for Verified Certificate

After your course has launched, you can send an email to remind students that the last day to register for a verified certificate is approaching. You can use this template as a starting point for your own message; search for the values enclosed by {braces} and replace them with information for your course.

Subject: Earn an edX verified certificate for {course name}!

Dear students,

Interested in using an edX certificate to bolster a college application or to
advance your career? With an edX verified certificate, you can demonstrate to
colleges, employers, and colleagues that you successfully completed a
challenging edX course, while helping to support the edX mission.

We would like to remind you that {date} is the last day to register for a
verified certificate in {course name}. Registering for a certificate is easy!
Just go to this course on your edX dashboard and click "Challenge Yourself".

Good luck!

{name} and the {course number} staff

Weekly Highlights

Sending a weekly email to students can be a great way to keep them engaged and provide encouragement. At the end of each week you might send students an email that summarizes the content covered, and reminds students about upcoming assessments or milestones in the course. Optionally, to encourage participation in the discussion forums, you might also highlight particularly interesting or important discussions, and provide links to the discussion topics.

You can use this template as a starting point for designing your own message, omitting the discussion highlights if they are not appropriate for your course (the example discussion highlights are from a course about urban solutions to the global water crisis). Search for the values enclosed by {braces} and replace them with information for your course.

Subject: {Course Name} Week 1 Highlights

We hope you all had a great week! Below, we have provided links to some
exciting discussions that have been going on, and a Q&A video with {Professor}
that recaps some of the questions that have come up this week.

We'd also like to remind you to take this week's quiz by {date} at {time} UTC.
The next module will be available on {Time and Date}.

{Link to Video}

Here are a few highlights from the discussion forum this week. Please join us
online and keep the conversation going!

* There has been quite a debate over whether urban stream restoration is
  possible and what types of restoration are desirable. How can we improve
  restoration practice and its outcomes? {Link to the Discussion}

* Please continue to share your stories of urban stream restoration - there
  are many great examples here of what is possible! {Link to the Discussion}

See you next week,
{name} and the {course number} staff

Mid-Course Encouragement

While your course is running, you can send messages to promote community, remind students of upcoming due dates, and address any recurring issues.

This example gives students guidance on how to keep up with the course schedule and encourages contributions to the discussions. You may want to send out more than one message while the course is running. You can use this template as a starting point for your own messages; search for the values enclosed by {braces} and replace them with information for your course.

Subject: {course name} Announcements

Dear students,

We hope that you are learning a lot in {course number}! Remember that problem
set {number} is due on {date} at {time} UTC. You can always check the
schedule {add link} on the Course Info page to plan ahead.

The contributions to the course discussions have been amazing. You'll also
see on the Course Info page that we have made several of you community
TAs to thank you for your thoughtful contributions. Keep those conversations
going!

We have a few additional announcements.

* Week {number} on {subject} is now available on the Courseware page.

* Problem set {number} is also available. It is due on {date} at {time} UTC.

* Remember that the due dates for problem sets and exams are in UTC (the GMT
  time zone). See the current UTC time here {add link}. Please convert the
  times given to your own time zone!

Wishing you continued success in the course,

{name} and the {course number} staff

Mid-Course Event

Before an exam or other significant course event, messages can provide practical information about the exam, communicate expectations regarding conduct, and also encourage students to continue working toward course completion. This example lets students know:

  • How long they have to complete the exam, and when they can see answers to questions.
  • How to communicate any errors or other issues found during the exam to the course staff.
  • Whether the course discussions will be open or closed during the exam. (In the example that follows, the discussions will remain open.)
  • What constitutes an honor code violation.
  • What technical limitations, if any, are imposed by external tools such as graders.

Be sure to search for the values enclosed by {braces} and replace them with information for your course.

Subject: {course number} Exam Info

Hello {course name} student,

Great job working through week {number}! As you know, the {course number}
exam is next week. If you missed a problem set, you can still earn a
certificate. Each problem set is worth only {number}% of the overall grade,
but this exam is worth {number}%.

Please read this important information about the exam before you begin taking
it.

* The exam starts on {date} at {time} UTC and must be finished by {date} at
  {time} UTC. Plan your schedule accordingly.

* Be sure that you know what time the UTC deadline is in your time zone. See
  the current UTC time {add link}. No extensions will be given.

* The exam is not timed. You can start, stop, and come back to it until the
  deadline.

* Each exam question allows only one answer submission. If you accidentally
  click "Check", that problem cannot be reset for you.

* The exam covers everything (video lectures, reading, and problem sets) from
  weeks {number}-{number}. If you missed any of these materials, you will
  want to review them before you take the exam.

* You can use the textbook and the Internet to clarify your knowledge of exam
  topics, as long as you are not deliberately looking up answers to exam
  questions.

* Course discussions will remain open during the exam, but anyone who posts
  an answer to an exam question will be violating the honor code and risk
  being removed from the class, forfeiting the certificate.

* If you need to alert the staff to an issue with the exam while the exam is
  open, add a post to the General discussion topic and include [EXAM] in
  the subject line.

* Check the Course Info page periodically. It is the fastest way the
  staff has to communicate any delays, corrections, or changes.

Good luck!

{name} and the {course number} staff

Technical Issue

In the event of an unanticipated system failure, a message can both alert students to the problem and reassure them that the issue is either resolved or being addressed. The message can also provide information about any changes made to the course as a result.

Technical issues can arise during a course for many different reasons, so this example is likely to need revision to apply to an issue that you encounter. Keep in mind that to reassure the students who are affected by the problem, the message should have a positive tone, and calmly and briefly identify the problem, the status of its solution, and any after effects.

Dear students,

We've encountered a technical problem with {video, assignment, etc. name}.
{We are working to resolve it now. / This issue has been fixed.}

As a result of this issue, we have {extended the deadline for / rescored}
this assignment so that it will not affect your grade.

Thanks for your patience, and we look forward to continuing the course with
you.

{name} and the {course number} staff

Course Farewell and Certificates

In the last few days before your course ends, a message can direct students to a course survey, answer questions about certificates, and provide information about future access to course materials. Be sure to replace values enclosed by {braces} with information for your course.

Subject: {course number} Final Remarks

Dear students,

Thank you for making {course number} so much fun these last few months! We
had a great time getting to know you through the course discussions. We
appreciate the effort that you put into this course, and we hope that you
enjoyed learning {subject} through edX. With or without a certificate, you
should be proud of your accomplishments.

* Please take a few minutes to answer the exit survey, now available under
  Courseware. We will use your responses to improve the course in the future.

* If you qualify for a certificate (overall score {number}% or higher), the
  edX dashboard will include a link to your certificate in the near future.
  While you may see the link in a few days, it can take up to two weeks edX
  to generate all of the course certificates.

* As an enrolled student, you will have access to the lecture videos even
  after the course ends. The problem sets and exams will be removed from the
  course when it is archived.

* The {course number} discussions close on {date} at {time} UTC. You will not
  be able to add to the discussions after that time, but you will be able to
  continue viewing all of the conversations that took place during the
  course.

We hope that you share what you learned in {course number} with your
colleagues, friends, and family.

Good luck on the final exam and beyond!

{name} and the {course number} staff

New Course Run Announcement

When you prepare a course for a new run, you can use the bulk email feature in its previous run (or runs) to inform an engaged and knowledgeable audience: your former students. Announcing a new run to students of an earlier run gives you the opportunity to highlight key aspects of the course, such as the quality and variety of its discussions, or the global interest and relevance of the subject, as demonstrated by past enrollment. You can also reveal new features or content that have been added to the new course run. By emphasizing the value of the course, you get people thinking and talking about their experiences, build excitement, and encourage re-enrollment.

This message template offers students who did not complete the course, or who did not previously choose the verified certificate track, the opportunity to do so. It also invites students to share the course with colleagues and and friends.

When preparing a message from this template, search for values enclosed by {braces} and replace them with information that applies to your course.

Subject: Announcing a new run of {course name}

Hello {course number} leaners,

The next run of {course number} {course name} begins on {date}! We are glad
to share this news with you, the students who made the earlier run{s} of
{course number} so succesful.

{Success story from the previous run.}

{New content or features for the upcoming run.}

Perhaps you want to share the {course name} experience with a friend or
colleague, earn an ID-verified certificate of achievement, or work through
course content that you weren't able to complete before. When {course number}
is offered in {time frame}, we welcome you to join the community of learners
again.

To learn more and to enroll, visit the {course name} page {add link}.

We hope to see you in the course,

The {course number} Staff

Using the Course Wiki

Wikis provide a way for course staff and students to access, share, and collaboratively edit information both about, and for, your course.

Every course has a wiki that you can set up in a way appropriate for your course. You can influence how students (and staff) use it by seeding the wiki with specific content, by explaining how you want it to be used at the beginning of the course, and by providing clear instructions and guidelines for its use.

Common uses for the course wiki might be:

  • Sharing answers to course FAQs and collecting new FAQs.
  • Sharing editable course information, such as download and installation instructions for software required for the course
  • Providing shared access to student-created resources, perhaps as part of a collaborative exercise.
  • Sharing errata for the course.
  • Collecting suggestions for future runs of the course.

As students and staff create and edit wiki articles, they contribute to a repository of information about your course that can be immediately useful to other students, or useful for you and your course team as you develop other courses or future runs of the same course.

The wiki for each course is a “child” wiki of the edX-wide wiki. From within any course wiki, clicking the top level Wiki link in the breadcrumb trail at the top of the page takes you to the edX-wide wiki.

Managing the Course Wiki

Keep these points in mind as you design the wiki for your course:

  • Be clear about the purpose for the wiki or for different parts of the wiki. For example, are some parts of the wiki only for disseminating information? If that is the case, then make sure that only your course team has write access for those articles.
  • Decide whether some parts of the wiki are intended for student collaboration or student input. Make sure that students are able to create and edit wiki articles in those sections, and use text to clearly indicate to students that these pages can be edited.
  • Think about the different tasks that will be performed by people in different roles. Typically you want your course team to have some privileges that students do not have. For example, course staff can delete wiki articles, but students cannot.

Course staff can perform these tasks to manage the wiki:

All users, including students, can perform the following tasks, depending on the permissions that you set for an article:

Showing or Hiding the Wiki

When you create a course, a wiki is included by default, and a Wiki tab is visible at the top of the course page. If you do not want to use the course wiki, you can hide the Wiki tab at the top of the course.

Follow these steps to show or hide the wiki in the course tabs.

  1. Open your course in Studio.
  2. Select Content, then Pages.
  3. Click the eye icon in the Wiki row. The Wiki tab is hidden when the eye icon has a slash through it. You can show the Wiki tab again by clicking the eye icon.

When you hide the wiki in your course, any existing articles remain in the edX- wide wiki, but the Wiki tab is removed from your course pages.

Controlling Access to the Wiki

You can control access to the wiki in various ways: by changing access to the wiki as a whole, by changing the read/write permissions settings of articles within the wiki, or by locking articles.

To change access to the course wiki:

  1. Open your course in Studio.
  2. Select Settings, then Advanced Settings.
  3. Scroll down to the Allow Public Access to Wiki field. This Boolean setting is set to False by default, meaning that only course team members and enrolled students can see the course wiki. If you change the value of this field to True, then any registered edX user can access the course wiki, even if they are not enrolled in your course. However, public users would have to explicitly navigate to your wiki via the edX-wide wiki structure, or a link that has been provided to them.

To modify viewing or editing permissions for specific groups of users by article, see Setting Permissions for Wiki Articles.

To lock an article and prevent further editing, see Locking a Wiki Article.

Setting Permissions for Wiki Articles

To prevent certain groups of users from being able to add or edit articles, you need to modify the read/write permissions for articles. For example, as a course instructor, you likely want to prevent students from creating wiki articles at the top level, so you should remove write access to course-level wiki articles for most users. (Top-level wiki articles are children of the edX-wide wiki, and cannot be found within the course wiki).

To modify the permissions for wiki articles, follow these steps.

  1. View the live version of your course.
  2. Click Wiki.
  3. Navigate to the article whose permissions you are modifying, then click Settings.
  4. In the Permissions section of the Settings page, select or clear the checkboxes for read or write access for Group or Other.
  5. At the bottom of the page, click the Save changes button for the Permissions section.

Note that there are two different Save changes buttons, one near the top of the page for the Notifications section, and one at the bottom of the page for the Permissions section. If you are modifying permissions, make sure you click the Save changes button at the bottom of the page for your changes to be saved.

Groups Used in Wiki Permissions

There are three groups for each course, managed by adding users to these groups on the Membership page of the Instructor Dashboard:

  • Beta testers (by default there are no beta testers until you add them)
  • Instructors (by default, the course author is always in the instructor group)
  • Staff (these are course team members)

The permissions for the Others group apply to users who are not in the three course groups, including students.

Seeding the Wiki

To ensure that students get the most out of your course wiki, design the wiki space before the course starts by seeding the course wiki with articles that give it the desired structure.

For example, you could create wiki articles to mirror the course outline. At the top level, you could provide a course outline, FAQs, and links to the main articles for each section. In the child articles for each section, you could provide information specific to the units and components in that section, and a page for students to share their feedback and experiences.

Adding a Wiki Article

When you add an article to the wiki, be aware of what level you are currently viewing, to make sure that you add your new article to the correct level in the course wiki.

To move down a level in the wiki, click the See all children link; to move up, click the appropriate level in the wiki breadcrumb trail links at the top of the page.

Add Articles at the Same Level

Follow these steps to add a wiki article at your current level. If you do not have permissions to add an article, when you click the Add Article button, a message indicates “Permission Denied” .

  1. In your course, click Wiki.
  2. Navigate to the level where you want to add a new article.
  3. Click the Add Article button near the top right of the page.
  4. On the new article page, add a title for the page, and optionally a few keywords to create a “slug” that provides a more specific location identifier for your article.
  5. Add contents to the article. You can enter plain text and use Markdown syntax to add formatting. For help with Markdown syntax, click the link to the cheat sheet at the upper right corner of the Contents field.
  6. When you have finished entering content for your wiki article, click Create Article.
Add Articles Below the Current Level

Follow these steps to add a child article to your current article. If you do not have permissions to add an article, when you click the Add Article button, a message indicates “Permission Denied” .

  1. In your course, click Wiki.
  2. Navigate to the level above where you want to add the new child article.
  3. Click See all children.
  4. Click the Add Article button under the wiki title.
  5. On the new article page, add a title for the page, and optionally a few keywords to create a “slug” that provides a more specific location identifier for your article.
  6. Add contents to the article. You can enter plain text and use Markdown syntax to add formatting. For help with Markdown syntax, click the link to the cheat sheet at the upper right corner of the Contents field.
  7. When you have finished entering content for your wiki article, click Create Article.

Editing a Wiki Article

If you have permissions to edit an article, you see an Edit button and icon to the right of the article content.

Follow these steps to make changes to a wiki article.

  1. In your course, click Wiki.
  2. Navigate to the article you want to edit.
  3. Click Edit.
  4. Make your changes. For help with Markdown syntax, click the link to the cheat sheet at the upper right corner of the Contents field.
  5. In the Summary field at the bottom left, below the Contents field, enter a short description of the changes you made. This description appears in the Changes list, and helps other users of the wiki understand what changes you made to the article.
  6. When you have finished making edits, click Save changes.

Searching for Wiki Articles

A Filter field is available only if any level of the wiki contains multiple articles.

Enter a text string in the Filter field to find a list of all articles with that text string in their titles.

Managing Versions of Wiki Articles

The wiki includes a change history for each article. You can view each past version of the article, roll back to a selected earlier version of the article, or merge the current version of the article with a selected earlier version.

View a List of Previous Versions of a Wiki Article
  1. In your course, click Wiki.
  2. Navigate to the wiki article for which you want to see the change history.
  3. Click Changes. Previously saved versions of the current article are listed, with the most recent at the top.
View a Previous Version of a Wiki Article
  1. On the Changes page for your wiki, select the revision of the article that you want to view.
  2. Click Preview this revision to see the article as it appeared after the revision was made.
See Line by Line Changes in a Previous Version
  1. On the Changes page for your wiki, select the revision of the article that you want to view.
  2. Click the linked date, time, and author information to see the line-by-line changes made in that revision. Text that is highlighted in red has been replaced by the text that is highlighted in green below it.
Replace a Current Version with a Previous Version
  1. On the Changes page for your wiki, select the revision of the article that you want to roll back to.
  2. Click Switch to selected version to replace the current version with the selected one.
Combine a Current Version with a Previous Version
  1. On the Changes page for your wiki, select the revision of the article that you want to merge with the current version.
  2. Click Merge selected with current to combine the current and the selected versions.

Locking a Wiki Article

Locking a wiki article prevents further changes from being made to it. Follow these steps to lock a wiki article either after you create it, or after you make specific edits.

  1. View the live version of your course.
  2. Click Wiki.
  3. Navigate to the article you want to lock, then click Settings.
  4. In the Permissions section of the Settings page, select the Lock article checkbox.
  5. At the bottom of the page, click the Save changes button for the Permissions section.

Deleting a Wiki Article

Only course team members can delete articles. In addition, you can only delete an article if you have permissions to edit that article. If you have the required permissions, you see a Delete article button at the bottom of the Edit page.

Follow these steps to delete an article:

  1. View the live version of your course.
  2. Click Wiki.
  3. Navigate to the article you want to delete, then click Edit.
  4. Click Delete article.
  5. On the deletion confirmation page, select Yes, I am sure.
  6. Optionally, also select the Purge checkbox. For details, see Purging a Wiki Article.
  7. Click Delete article to confirm the deletion.
Purging a Wiki Article

When you delete and purge an article, it is completely removed from the wiki, with no option to undo the deletion. Select this option only if you are sure you will not want to restore the content.

To purge an article as you delete it, select the Purge checkbox on the deletion confirmation page.

Restoring a Deleted Wiki Article

Articles that have been deleted but not purged can be restored. A link to the article remains visible at the level at which it was created.

To restore a deleted article, click the link to the article and click Restore.

Course Data

After you create a course, you can access information about it from the Instructor Dashboard. You can find:

  • Identifying information for the course.
  • Whether the course has started or ended.
  • The defined grade cutoff for passing or failing.

Additional data about the course and its students is available from other pages in the Instructor Dashboard, and from edX Insights. You also access Insights from the Instructor Dashboard: click the link in the banner at the top of each page. For more information, see Using edX Insights.

Review Course Data

To view course data:

  1. View the live version of your course.

  2. Click Instructor, then click Course Info if necessary.

    The Basic Course Information section of the page that opens lists information about the course.

    The basic course information section of the Instructor Dashboard

Sources in Studio of the Basic Course Information

The course data that displays on the Instructor Dashboard is defined in Studio, or derived from data that you define in Studio.

  • Organization: Specified in Studio when you create the course. Becomes part of the course URL, and cannot be changed.

  • Course Number: Specified in Studio when you create the course. Becomes part of the course URL, and cannot be changed.

  • Course Name: Specified in Studio when you create the course. Becomes part of the course URL, and cannot be changed. In Studio, this field is labeled Course Run.

  • Course Display Name: Specified in Studio when you create the course. In Studio, this field is labeled Course Name.

    This name can be changed in Studio (not recommended if your course is live): From the Settings menu select Advanced Settings. The value for the Course Display Name policy key defines the course name that appears in the LMS only.

    The illustration that follows shows the information collected by Studio for a new course side-by-side with the same information in the Basic Course Information section of the Instructor Dashboard.

The Course Name in Studio and the Course Display Name in the LMS are boxed; the Course Run in Studio and the Course Name in the LMS are circled
  • Has the course started: Derived from the Course Start Date and the current date. This date can be changed in Studio (not recommended if your course is live): select Settings > Schedule & Details.
  • Has the course ended: Derived from the Course End Date and the current date. This date can be changed in Studio (not recommended if your course is live): select Settings > Schedule & Details.
  • Grade Cutoffs: Specified in Studio when you define the cutoff for a failing grade. Students who earn exactly the cutoff value pass the course. Grading can be changed in Studio (not recommended if your course is live): select Settings > Grading.

Student Data

You can access data about the individuals who are enrolled in your course at any time after you create the course.

For information about student data, see the following topics:

To supplement the student data available from the Instructor Dashboard, you can use the charts and reports that are available from edX Insights. For more information, see Using edX Insights.

Guidance for Working with Personal Information

The information that edX collects from site registrants includes personal information that can be used to identify, contact, and locate individuals. This information is available to course authors for the students who are enrolled in their courses.

Course staff should follow the policies established by their organizations and comply with the legal requirements of their locales to prevent public distribution or misuse of this information.

Access Student Data

You can download data about the students who are currently enrolled in your course in a CSV (comma-separated values) file. For courses that have fewer than 200 students enrolled, you can also view data for enrolled students on the Instructor Dashboard.

Student-Reported Data

When students register with edX, they select a public username and supply information about themselves. Most of this information is optional, so not all of the students who are enrolled in your course provide it.

Fields that collect student information during registration

Students then enroll in as many individual courses as they choose, which enrolls them in each selected course.

You can access this self-reported information for all of the students who are enrolled in your course:

  • username
  • name
  • email
  • year_of_birth
  • gender
  • level_of_education
  • mailing_address
  • goals

The student data that is available to course staff always reflects the set of live, current enrollments. Students can enroll in your course throughout the defined enrollment period, and they can unenroll from a course at any time. Students can also change their email addresses and full names at any time. As a result, you may want to download student data periodically to gain insights into how the student population changes over time.

Note

In the future, edX may also request that students select a language and location. This data is not collected at this time.

Download or View Student Data

You can download a report of student data to learn about the individuals who are enrolled in your course. In addition to the self-reported data collected at registration, this report includes the user account ID numbers that edX assigns to each registrant. For courses that include student cohorts, this report includes the cohort group that is assigned to each student.

When you choose to download student data, a process starts on the edX servers. The number of students enrolled in your course, and whether your course has the cohort feature enabled, affect how long this process takes. You can download a report of student profile information in a CSV (comma-separated values) file after the process is complete.

For courses with fewer than 200 students enrolled, you also have the option to view student data on the Instructor Dashboard.

Note

In addition to the data for enrolled students, data for the course staff is included in the file or display.

To download student data:

  1. View the live version of your course.
  2. Click Instructor, then click Data Download.
  3. To download data about enrolled students in a CSV file, click Download profile information as a CSV.

A status message indicates that report generation is in progress. This process can take some time to complete, but you can navigate away from this page and do other work while it runs.

To track the progress of the report process, reload the page in your browser and scroll down to the Pending Instructor Tasks section.

  1. To open or save a student data report, click the {course_id}_student_profile_info_{date}.csv file name at the bottom of the page.
All student-supplied data is included in this file without truncation.

To view student data:

Note

This option is available only for courses with an enrollment of less than 200.

  1. View the live version of your course.

  2. Click Instructor, then click Data Download.

  3. To display data about enrolled students, click List enrolled students’ profile information.

    A table of the student data displays, with one row for each enrolled student. Longer values, such as student goals, are truncated.

Table with columns for the collected data points and rows for each student on the Instructor Dashboard

For courses that have the cohorts feature enabled, this report also includes a Cohort column with each student’s assigned cohort group.

Note

The columns for language and location are included in this report for backward compatibility only. This data is no longer collected during student registration.

Access Anonymized Student IDs

Some of the tools that are available for use with the edX platform, including external graders and surveys, work with anonymized student data. If it becomes necessary for you to deanonymize previously anonymized data, you can download a CSV file to use for that purpose.

To download a file of assigned user IDs and anonymized user IDs:

  1. View the live version of your course.
  2. Click Instructor, then click Data Download.
  3. Click Get Student Anonymized IDs CSV.

You are prompted to open or save the {course-id}-anon-id.csv file for your course. This file contains the user ID that is assigned to each student at registration and its corresponding edX-wide anonymized user ID and course specific anonymized user ID. Values are included for every student who ever enrolled for your course.

To research and deanonymize student data, you can use this file together with the {course_id}_student_profile_info_{date}.csv file of student data or the {course_id}_grade_report_{date}.csv file of grades.

Track Student Activity

To monitor student activity during your course, you can review the number of students who, each week, interacted with your course. To be considered active, students must visit pages, play videos, add to discussions, submit answers to problems, or complete other course activities. The active student count is updated weekly.

To display the number of active students:

  1. View the live version of your course.
  2. Click Instructor, then click Analytics. The count of active students appears at the top of the page.

Answer Data

To review student answers to the problems in your course, you can review the answer submitted by a selected student for a specific problem, download a course-wide report of answer data, or review a histogram of student answers for a selected problem.

Check a Student’s Answer Submission and Submission History

For a single student and problem, you can review the exact response submitted, the number of attempts made, and the date and time of the submission. You identify the student by supplying a username.

To review a response submitted by a student:

  1. View the live version of your course.
  2. Click Courseware and navigate to the unit that contains the problem you want to review.
  3. Display the problem and then click Submission History below the problem.
  4. Enter the username for the student whose work you want to review, then click View History at the end of the page.
Information about the response or responses provided by the student displays.

To close the Submission History Viewer, click on the browser page outside of the viewer.

Student Answer Distribution

For certain types of problems in your course, you can download a CSV file with data about the distribution of student answers. Student answer distribution data is included in the file for problems of these types:

  • Checkboxes (<choiceresponse>)
  • Dropdown (<optionresponse>)
  • Multiple choice (<multiplechoiceresponse>)
  • Numerical input (<numericalresponse>)
  • Text input (<stringresponse>)
  • Math expression input (<formularesponse>)

The file includes a row for each problem-answer combination selected by your students. For example, for a problem that has a total of five possible answers the file includes up to five rows, one for each answer selected by at least one student. For problems with Randomization enabled in Studio (sometimes called rerandomization), there is one row for each problem-variant-answer combination selected by your students. See Problem Settings.

The CSV file contains the following columns:

Column Description
ModuleID The internal identifier for the Problem component.
PartID For a Problem component that contains multiple problems, the internal identifier for each individual problem. For a Problem component that contains a single problem, the internal identifier of that problem.
Correct Answer 0 if this AnswerValue is incorrect, or 1 if this AnswerValue is correct.
Count The number of times that students entered or selected this answer as their most recent submission for the problem or problem variant. For problems with the number of Attempts set to a value greater than 1, this means that each student contributes a maximum of 1 to this count, even if the same answer is provided in multiple attempts.
ValueID The internal identifier of the answer choice for checkboxes and multiple choice problems. Blank for dropdown, numerical input, text input, and math expression input problems.
AnswerValue The text label of the answer choice for checkboxes, dropdown, and multiple choice problems. The value entered by the student for numerical input, text input, and math expression input problems.
Variant For problems that use the Randomization setting in Studio, contains the unique identifier for a variant of the problem. Blank for problems that do not use the Randomization setting, or that use the Never option for this setting.
Problem Display Name The Display Name defined for the problem.
Question The label for accessibility that appears above the answer choices or the text entry field for the problem. In Studio’s Simple Editor, this text is surrounded by two pairs of angle brackets (>>Question<<). Blank for questions that do not have an accessibility label defined.

Entries are sorted by the value in each column, starting with the ModuleID on the left and continuing through the columns to the right.

Download the Student Answer Distribution Report

An automated process runs periodically on the edX servers to update the CSV file of student answer data. A link to the most recently updated version of the CSV file is available on the Instructor Dashboard.

To download the most recent file of student answer data:

  1. View the live version of your course.
  2. Click Instructor, then click Data Download.
  3. At the bottom of the page, click the {course_id}_answer_distribution.csv file name. You may have to scroll down to find this file.
Frequently Asked Questions about the Student Answer Distribution Report

Answers to questions about the student answer distribution report follow.

My course doesn’t have a student answer distribution report. How can I generate it?

Student answer distribution reports are generated automatically, and refreshed several times each day. The {course_id}_answer_distribution.csv file displays after all of the {course_id}_grade_report_{date}.csv files. Be sure to scroll to the end of the list of available reports.

Why are some problems missing from this report? The ones that are missing do have the problem types listed under Answer Data.

This report includes only problems that at least one student has answered since early March 2014. For those problems, this report only includes activity that occurred after October 2013.

Why don’t I see an AnswerValue for some of my problems?

For checkboxes and multiple choice problems, the answer choices actually selected by a student after early March 2014 display as described in the previous answer. Answer choices selected by at least one student after October 2013, but not selected since early March 2014, are included on the report but do not include an AnswerValue. The ValueID does display the internal identifiers, such as choice_1 and choice_2, for those answers.

Why don’t I see a Question for some of my problems?

The value in the Question column is the accessibility label for the problem. For more information about how to set up labels for problems, see Creating Exercises and Tools.

Also, for problems that use the Randomization setting in Studio, if a particular answer has not been selected since early March 2014, the Question is blank for that answer.

My students are saying that they answered a question, but it isn’t showing up in the report. How can that be?

Only questions that have a Maximum Attempts setting of 1 or higher are included on the report.

I made a correction to a problem after it was released. How can I tell which students tried to answer it before I made the change?

Problem Count values reflect the entire problem history. If you change a problem after it is released, it may not be possible for you to determine which answers were given before and after you made the change.

Why is the same answer showing up in two different rows when I view the report in a spreadsheet?

Some spreadsheet applications can alter the data in the CSV report for display purposes. For example, for different student answers of “0.5” and ”.5” Excel correctly includes the two different lines from the CSV, but displays the AnswerValue on both of them as “0.5”. If you notice answers that appear to be the same on separate lines with separate counts, you can review the actual, unaltered data by opening the CSV file in a text editor.

Why are there strange characters in the report when I view it in a spreadsheet?

The CSV file is UTF-8 encoded, but not all spreadsheet applications interpret and render UTF-8 encoded characters correctly. For example, a student answer distribution report with answer values in French displays differently in Microsoft Excel for Mac than in OpenOffice Calc.

Answer Values in Microsoft Excel for Mac:

A spreadsheet that replaces accented French characters with underscores

Answer Values in OpenOffice Calc:

A spreadsheet that displays accented French characters correctly

If you notice characters that do not display as expected in a spreadsheet, try a different spreadsheet application such as LibreOffice or Apache OpenOffice to open the CSV file.

Interpret the Student Answer Distribution Report

You can use the Student Answer Distribution report to review student responses to assignments, which can then help you evaluate the structure and completeness of your courseware and problem components.

As an example, you define a text input question in Studio to have a single correct answer, “Warfarin”. When you produce the Student Answer Distribution report, you verify that this answer was in fact marked correct: there is a 1 in the Correct Answer column for this AnswerValue.

In Excel, 5 rows show 5 answer values, 4 of which show comprehension of the question, but only 1 answer is marked as correct

However, as you view the report you notice other student answers that you did not set up to be marked as correct in Studio, but that you might (or might not) also consider to be correct, such as “Warfarin or Coumadin”. The Correct Answer column shows that the other answers were marked incorrect (0), but for future iterations of your course you may want to revise the question or update the problem to evaluate additional variations of the answer as correct.

Many spreadsheet applications offer data visualization options, such as charts or graphs. Charts can help make your students’ common misconceptions easier to identify.

In Excel, AnswerValue and Count columns next to each other, values for 4 rows selected, and a column chart of the count for the 4 answers

In this example, the Student Answer Distribution report is open in Microsoft Excel. To create a chart that shows how many of your students chose various answers to a multiple choice question, you move the AnswerValue and Count columns next to each other. After you click and drag to select the report cells that contain the data you want to chart, you click the Charts toolbar and then click the type of chart you want.

Note

Refer to the help for the spreadsheet application that you use for information on using these options. You may have to make changes to your spreadsheet, such as reordering columns. Save a copy of the file you originally downloaded as a backup before you begin.

You can adjust your course content based on common student mistakes. While most students in this example selected the correct answer, the number of incorrect answer(s) can guide future changes to the courseware.

View a Histogram of Scores for a Single Problem

You can view a chart of the score distribution for a specified problem.

Note

To view the score distribution for a problem, you need its unique identifier. You can display a histogram for problems that have the /problem/ prefix in the unique identifier. See Find the Unique Location Identifier for a Problem.

To display the distribution of scores for a problem:

  1. View the live version of your course.

  2. Click Instructor, then click Analytics.

  3. In the Score Distribution section, select a problem by using its unique identifier.

    The Analytics page updates to display a histogram of scores for that problem.

    Graph of the number of students who received different scores for a selected problem
Interpret a Score Histogram

The histogram of scores for a selected problem provides the following information.

Histogram with indicators for the number of students scored value and the x-axis numbers that indicate plotted scores
  • The x-axis indicates the number of points that students can receive for the problem, unweighted. Although decimal values are marked on the x-axis, each score is a whole number. The whole number value at the left of a plotted bar is the score that applies to it.
  • The y-axis indicates the number of students who have answered and checked the problem.
  • Above the graph, a number of students scored displays. This number indicates the total number of database records that exist for the problem: it includes not only students who have answered and checked the problem to receive a score, but also students who have opened the problem but not yet completed it.
  • An automated process runs approximately weekly on the edX servers to update score histograms. This process runs less frequently than the process that updates the student answer distribution report: at certain times during a course the number of students shown in a score histogram can be quite different than the Count for the same problem in a student answer distribution report.

Student Grades and Grading

You can review information about how grading is configured for your course, and access student grades, at any time after you create the course. You can also make adjustments to student grading for a problem, for a single student or all students. For information about the grading data that you can access and the changes you can make, see the following topics:

To review student answers to the problems in your course, you can check the answer submitted by a specified student for a selected problem, download course-wide answer data, or review a graph of all answer data for a selected problem. See Answer Data.

For information about how you establish a grading policy and work with the Problem components in your course, see Establishing a Grading Policy or Working with Problem Components.

Review How Grading Is Configured for Your Course

You can review the assignment types that are graded and their respective weights on the Instructor Dashboard.

You establish a grading policy for your course when you create it in Studio. While the course is running, you can view an XML representation of the assignment types in your course and how they are weighted to determine students’ grades.

  1. View the live version of your course.

  2. Click Instructor, then click Data Download > Grading Configuration.

    A list of the assignment types in your course displays. In this example, Homework is weighted as 0.3 (30%) of the grade.

    XML of course assignment types and weights for grading

    In Studio, you define this information by selecting Settings > Grading. For more information, see Configure the Assignment Types.

    Studio example of homework assignment type and grading weight

Important

Any changes that you make to the course grading policy, to graded subsections, or to graded components after the course begins will affect the student experience in the course and analysis of its data. Unavoidable changes should be announced to students, on the Course Info page for example, and carefully tracked for researchers.

Generate Grades for Enrolled Students (All Courses)

For any course, you can generate grades and then download a file with the results for each enrolled student.

When you initiate calculations to grade student work, a process starts on the edX servers. The complexity of your grading configuration and the number of students enrolled in your course affect how long this process takes. You can download a report of the calculated grades in a CSV (comma-separated values) file when the grading process is complete.

For courses with fewer than 200 students enrolled, you also have the option to review student grades on the Instructor Dashboard. See Review Grades for Enrolled Students (Small Courses).

To generate the grade report for the students who are currently enrolled in your course:

  1. View the live version of your course.
  2. Click Instructor, then click Data Download.
  3. To start the grading process, click Generate Grade Report.
A status message indicates that the grading process is in progress. This process can take some time to complete, but you can navigate away from this page and do other work while it runs.
  1. To track the progress of the grading process, reload the page in your browser and scroll down to the Pending Instructor Tasks section.
Download Grades for Enrolled Students

After you request a grade report for your students, the result is a time- stamped CSV file that includes columns to identify each student: id, email, and username. It also includes a column for every assignment that is included in your grading configuration: each homework, lab, midterm, final, and any other assignment type you added to your course. If your course includes cohorts or content experiments, the grade report includes additional columns indicating the name of the cohort or experiment group that each student belongs to.

Important

Because this file contains confidential, personally identifiable data which may be subject to the Family Educational Rights and Privacy Act (FERPA), be sure to follow your institution’s data stewardship policies when you open or save this file.

To download a file of student grades:

  1. View the live version of your course.
  2. Click Instructor, then click Data Download.
  3. To open or save a grade report file, click the {course_id}_grade_report_{date}.csv file name at the bottom of the page.

Note

To prevent the accidental distribution of student data, you can only download these files by clicking the links on this page. Do not copy these links for reuse elsewhere, as they expire within 5 minutes. The links on this page also expire if the page is open for more than 5 minutes: if necessary, refresh the page to generate new links.

Interpret the Grade Report

Grade reports provide a snapshot of cumulative course scores, by assignment, of every currently enrolled student.

You can open {course_id}_grade_report_{date}.csv files in a spreadsheet application to sort, graph, and compare data.

A course grade report, opened in Excel, showing the grades acheived by students on several homework assignments and the midterm

The CSV file contains one row of data for each student, and columns that provide the following information.

  • Student identifiers, including an internal id, email address, and username.
  • The overall grade, with the total score a student has currently attained in the course. This value is expressed as a decimal: a student with a grade of 0.65 has earned 65% of the credit in the course, and a student with a grade of 1 has earned 100%.
  • Each {assignment type} {number} defined in your grading configuration, with the score a student attained for that specific assignment. For example, column HW 03 shows the scores for the third homework assignment.
  • An {assignment type} Avg with each student’s current average score for that assignment type: for example, HW Avg.
  • If cohorts are used in the course, a Cohort Name column indicates the name of the cohort that each student belongs to, including the default cohort. The column is empty for students who are not yet assigned to a cohort.
  • If content experiments are used in the course, an Experiment Group column indicates the name of the experiment group that each student belongs to within a group configuration. The column heading includes the name of the group configuration. The column is empty for students who are not assigned to an experiment group. If you have more than one experiment group configuration in your course, you see one column for each group configuration.

Note

The grade reports do not include information about individual questions within the assignments, or include student answer distributions.

Review Grades for Enrolled Students (Small Courses)

For courses with enrollments of up to 200 students, you can review a gradebook on the Instructor Dashboard.

  1. View the live version of your course.

  2. Click Instructor, then click Student Admin. For courses with fewer than 200 students enrolled, this tab includes a Student Gradebook section.

  3. Click View Gradebook. Grades are calculated and the gradebook displays.

    Course gradebook with rows for students and columns for assignment types

The gradebook includes the following features.

  • You can click the student username in each row to review that student’s Course Progress page. See Check the Progress of a Single Student.

  • There is a column for each {assignment type} {number} defined in your grading configuration, with the scores your student attained for that specific assignment.

    The gradebook does not have a scroll bar, but it is draggable: to see columns that are hidden at one side of the grade book, click the gradebook and then drag left or right to reveal those columns.

  • For assignment types that include more than one assignment, an {assignment type} Avg column displays each student’s current average score for that assignment type.

  • The Total column presents the total score a student has currently attained in the course. This value is expressed as a whole number: a student with a grade of 65 has earned 65% of the credit in the course, and a student with a grade of 100 has earned 100%.

  • If cohorts are used in the course, a Cohort Name column indicates the name of the cohort that each student belongs to, including the default cohort. The column is empty for students who are not yet assigned to a cohort.

  • If content experiments are used in the course, an Experiment Group column indicates the name of the experiment group that each student belongs to within a group configuration. The column heading includes the name of the group configuration. The column is empty for students who are not assigned to an experiment group. If you have more than one experiment group configuration in your course, you see one column for each group configuration.

  • To filter the data that displays you can use the Search students option. This option is case-sensitive and limits the rows shown in the gradebook to usernames that match your entry.

Check the Progress of a Single Student

To check a single student’s progress, you can locate the specific row on the grade report or review the student’s Progress page. The Progress page includes a chart that plots the score the student has earned for every graded assignment and the total grade as of the current date. Below the chart, each assignment and the score attained are listed.

To review a student’s Progress page, you supply an email address or username. You can check the progress for students who are either enrolled in, or who have unenrolled from, the course.

Students can view a similar chart and assignment list (of their own progress only) when they are logged in to the course. See A Student’s View of Course Progress.

To view the Progress page for a student:

  1. View the live version of your course.

  2. Click Instructor, then click Student Admin.

  3. In the Student-Specific Grade Inspection section, enter the student’s email address or username.

  4. Click Student Progress Page.

    The Progress page for the student displays a chart with the grade for each homework, lab, midterm, final, and any other assignment types in your course, and the total grade earned for the course to date. The chart does not reflect any cohort or experiment group assignments.

    Progress page chart for a student: includes a column graph with the score acheived for each assignment

    To learn more about a particular assignment, move the cursor onto the value in the chart. A brief description displays.

    Progress page with a tooltip for the X that was graphed for the last homework assignment, which indicates that the lowest homework score is dropped

    Below the chart, subsections are listed on the left and the units that contain assignments are listed on the right. The student’s individual problem scores display.

    Bottom portion of a Progress page for the same student with the score acheived for each problem in the first course subsection
Interpret the Student Progress Page

The chart of a student’s scores on the Progress page and the rows of data on the grade report present assignment scores in a similar order. However, the total, cumulative score earned for the course is placed in a different position on the Progress page.

In this example grade report, the indicated student has a current grade of 0.43 (43%).

A course grade report with a single student's information indicated by a rectangle
  • On each of the first four homework assignments the student scored 1 (100%), but currently has a 0 (0%) on each of the remaining three assignments.

    Notice, however, that the student’s current average score for homework assignments is listed as 0.666666667 (67%): in this course, the homework assignment with the lowest score is dropped, so this average is over six assignments rather than all seven.

  • The student has a score of 0.75 (75%) on the midterm, and a score of 0 (0%) on the final.

On the student’s Progress page, you see the same information graphically represented; however, the student’s “total” of 43% is on the far right.

Progress page for a student also included on the grade report: includes a column graph with the grade acheived for each assignment

The chart on the Progress page includes y-axis labels for the grade ranges defined for the course. In this example, Pass is set to 60%, so at the end of the course students with a grade of 0.60 or higher can receive certificates.

Note

Student scores on the Progress page are a snapshot of the current state of the problem score database. They can, at times, be out of sync with actual problem scores. For example, asynchronicities can occur if the weight of a live problem was changed during an assignment, and not all students have resubmitted their answers for that problem.

A Student’s View of Course Progress

Students can check their progress by clicking Progress in the course navigation bar. The student’s progress through the graded part of the course displays at the top of this page, above the subsection scores. Progress is visualized as a chart with entries for all the assignments, total percentage earned in the course so far, and percent needed for each grade cutoff. Here is an example of a student’s progress through edX101.

Image of a student's Course Progress page with the grade cutoffs legend highlighted

The student can see from this page that edX101 was graded as a Pass/Fail course with a cutoff of 34% and that the grading rubric contained one assignment type, called Learning Sequence, consisting of 11 assignments total. Furthermore, this particular student has only submitted correct responses to two assignments, and that her current total percent grade in the course is 6%. By hovering over each progress bar, the student can get further statistics of how much each assignment was counted as.

Further down on the Progress page is a list of all the subsections in the course, with the scores recorded for the student for all problems in the course. Here is the Progress page for the student in the example above:

Image of a student's Course Progress page with problems highlighted

Note that point scores from graded sections are called “Problem Scores”, while point scores from ungraded sections are called “Practice Scores”.

Adjust Grades

If you modify a problem or its settings after students have attempted to answer it, student grades can be affected. For information about making changes to problems in Studio, see Modifying a Released Problem.

To recalculate the grades of affected students when a correction or other change is unavoidable, you can make the following adjustments.

  • Rescore the submitted answer to reevaluate student work on the problem. You can rescore a problem for a single student or for all of the students enrolled in the course. See Rescore Student Submissions for a Problem.
  • Reset the number of times a student has attempted to answer the problem to zero so that the student can try again. You can reset the number of attempts for a single student or for all of the students enrolled in the course. See Reset Student Attempts for a Problem.
  • Delete a student’s database history, or “state”, completely for the problem. You can only delete student state for one student at a time. For example, you realize that a problem needs to be rewritten after only a few of your students have answered it. To resolve this situation, you rewrite the problem and then delete student state for the affected students only so that they can try again. See Delete Student State for a Problem.

To make adjustments to student grades, you need the unique location identifier of the modified problem. See Find the Unique Location Identifier for a Problem.

Find the Unique Location Identifier for a Problem

When you create each of the problems for a course, edX assigns a unique location to it. To make grading adjustments for a problem, or to view data about it, you need to specify the problem location.

To find the unique location identifier for a problem:

  1. View the live version of your course.

  2. Click Courseware and navigate to the unit that contains the problem.

  3. Display the problem and then click Staff Debug Info.

    Information about the problem displays, including its location.

    The Staff Debug view of a problem with the location identifier indicated
  1. To copy the location of the problem, select the entire location, right click, and choose Copy.

To close the Staff Debug viewer, click on the browser page outside of the viewer.

Rescore Student Submissions for a Problem

Each problem that you define for your course includes a correct answer, and may also include a tolerance or acceptable alternatives. If you decide to make a change to these values, you can rescore any responses that were already submitted. For a specified problem, you can rescore the work submitted by a single student, or rescore the submissions made by every enrolled student.

Note

You can only rescore problems that have a correct answer entered in edX Studio. This procedure cannot be used to rescore problems that are scored by an external grader.

Rescore a Submission for an Individual Student

To rescore a problem for a single student, you need that student’s username or email address.

  1. View the live version of your course.
  2. Click Courseware and navigate to the component that contains the problem you want to rescore.
  3. Display the problem, then click Staff Debug Info. The Staff Debug viewer opens.
  4. In the Username field, enter the student’s email address or username, then click Rescore Student Submission. A message indicates a successful adjustment.
  5. To close the Staff Debug viewer, click on the browser page outside of the viewer.
Rescore Submissions for All Students

To specify the problem you want to rescore, you need its location identifier. See Find the Unique Location Identifier for a Problem. To rescore a problem:

  1. View the live version of your course.

  2. Click Instructor, then click Student Admin.

  3. In the Course-Specific Grade Adjustment section of the page, enter the unique problem location, and then click Rescore ALL students’ problem submissions.

  4. When you see a dialog box that notifies you that the rescore process is in progress, click OK.

    This process can take some time to complete for all enrolled students. The process runs in the background, so you can navigate away from this page and do other work while it runs.

  1. To view the results of the rescore process, click either Show Background Task History for Student or Show Background Task History for Problem.

    A table displays the status of the rescore process for each student or problem.

Note

You can use a similar procedure to rescore the submission for a problem by a single student. You work in the Student-Specific Grade Adjustment section of the page to enter both the student’s email address or username and the unique problem identifier, and then click Rescore Student Submission.

Reset Student Attempts for a Problem

When you create a problem, you can limit the number of times that a student can try to answer that problem correctly. If unexpected issues occur for a problem, you can reset the value for one particular student’s attempts back to zero so that the student can begin work over again. If the unexpected behavior affects all of the students in your course, you can reset the number of attempts for all students to zero.

Reset Attempts for an Individual Student

To reset the number of attempts for a single student, you need that student’s username or email address.

  1. View the live version of your course.
  2. Click Courseware and navigate to the component that contains the problem you want to reset.
  3. Display the problem, then click Staff Debug Info. The Staff Debug viewer opens.
  4. In the Username field, enter the student’s email address or username, then click Reset Student Attempts. A message indicates a successful adjustment.
  5. To close the Staff Debug viewer, click on the browser page outside of the viewer.
Reset Attempts for All Students

To reset the number of attempts that all enrolled students have for a problem, you need the unique identifier of the problem. See Find the Unique Location Identifier for a Problem. To reset attempts for all students:

  1. View the live version of your course.

  2. Click Instructor, then click Student Admin.

  3. To reset the number of attempts for all enrolled students, you work in the Course-Specific Grade Adjustment section of the page. Enter the unique problem location, then click Reset ALL students’ attempts.

  4. A dialog opens to indicate that the reset process is in progress. Click OK.

    This process can take some time to complete. The process runs in the background, so you can navigate away from this page and do other work while it runs.

  1. To view the results of the reset process, click either Show Background Task History for Student or Show Background Task History for Problem.

    A table displays the status of the reset process for each student or problem.

Note

You can use a similar procedure to reset problem attempts for a single student. You work in the Student-Specific Grade Adjustment section of the page to enter both the student’s email address or username and the unique problem identifier, and then click Reset Student Attempts.

Delete Student State for a Problem

To delete a student’s entire history for a problem from the database, you need that student’s username or email address.

Important

Student state is deleted permanently by this process. This action cannot be undone.

You can use either the Staff Debug viewer or the Instructor Dashboard to delete student state.

To use the Staff Debug viewer:

  1. View the live version of your course.
  2. Click Courseware and navigate to the component that contains the problem.
  3. Display the problem, then click Staff Debug Info. The Staff Debug viewer opens.
  4. In the Username field, enter the student’s email address or username, then click Delete Student State. A message indicates a successful adjustment.
  5. To close the Staff Debug viewer, click on the browser page outside of the viewer.

To use the Instructor Dashboard, you need the unique identifier of the problem. See Find the Unique Location Identifier for a Problem.

  1. Click Instructor, then click Student Admin.
  2. In the Student-Specific Grade Adjustment section of the page, enter both the student’s email address or username and the unique problem identifier, and then click Delete Student State for Problem.

Assign Final Grades and Issue Certificates

As you prepare for the end of your course, you can send students a course farewell email message.

To assign a final grade to each student enrolled in a course, you generate grades after the Course End Date and Time have passed. See Generate Grades for Enrolled Students (All Courses).

The final grades of a student in the course and the grading configuration you set in Studio are used to determine whether the student has earned a Certificate of Mastery for the course.

The process of issuing certificates is completed at edX: work with your edX program manager to schedule a date to issue certificates and complete this process.