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.
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.
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.
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.
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 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.
To receive and share information by email, course team members can:
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.
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.
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.
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.
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.
Software engineers, system administrators, and translators work on extending and localizing the code for the edX platform.
Documentation for developers is available on the docs.edx.org web page.
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.
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.
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.
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.
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.
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.
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.
Date | Change |
---|---|
24 Feb 2015 | Initial release of document for the Open edX Birch release. |
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.
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 |
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 |
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 |
This chapter describes the tools you use to build an edX course, and how to create your first course:
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.
When you receive notice that you can create courses, log in to Studio.
You see the following page, which is your My Courses dashboard:
![]()
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.
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.
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:
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:
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.
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:
Instructors can apply these principles in course design by:
Resources
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:
To produce content that is more readable by all students:
Resources
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.
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
Preparing PowerPoint documents
Preparing Excel spreadsheets
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.
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:
You may need to update your existing teaching materials in PDF format to improve accessibility. This might include PDFs that were:
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
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.
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:
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, 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:
As best practices continue to emerge in this area, we will update these guidelines.
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:
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
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.
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
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 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.
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.
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
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:
Resources
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.
A - C - D - E - F - G - H - I - L - M - N - P - R - S - T - V - W - XYZ
A/B Test
See Content Experiment.
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.
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.
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.
Dropdown Problem
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.
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.
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.
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.
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.
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.
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.
Numerical Input Problem
A problem that asks students to enter numbers or specific and relatively simple mathematical expressions.
See Numerical Input for more information.
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.
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.
Rubric
List of the items that a student’s response should cover in an open response assessment.
See Rubric for more information.
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
See Content Experiment.
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.
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.
Video Component
A component that you can use to add recorded videos to your course.
See Working with Video Components for more information.
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.
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.
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.
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.
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.
![]()
- 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.
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
.
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.
To open a course, click the course name. The Studio Course Outline page appears.
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:
From the Tools menu, select Checklists.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The video should answer these key questions.
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:
To specify the number of hours that you expect students to spend on the course each week, follow these steps.
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.
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.
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.
To specify a prerequisite course, you must be a course author in both the current course and in the prerequisite course.
Note
Currently, you can specify only one prerequisite course.
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.
After students pass the exam, they can access all released materials in your course.
To require an entrance exam, follow these steps.
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.
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.
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.
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.
You must set dates and times for enrollment and for the course.
In Studio, from the Settings menu, select Schedule and Details.
Follow the on-screen text to enter the course and enrollment schedule.
Note
The Time fields on this page, and the times that students see, use Universal Coordinated Time (UTC).
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:
In the dashboard, students see the start dates and times for each of their courses, as in the following examples.
Note
If you do not specify a start time for your course, students see the default start time, 00:00 Coordinated Universal Time (UTC).
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:
The start date shown on the dashboard is now the value of the Course Advertised Start Date policy key:
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 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:
When grades and certificates are finalized, students who have not earned a certificate see their score and the score required to earn a certificate:
Students whose final score is equal to or higher than the required score can click Download Certificate to get their certificates as PDFs:
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.
You can manage your uploaded course files on the Files and Uploads page under the Content menu in Studio.
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:
From the Content menu, select Files & Uploads.
Click Upload New File.
In the Upload New File dialog box, click Choose File.
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.
You see the new files on the Files & Uploads page.
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.
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.
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.
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:
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.
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.
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.
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.
You add course updates and handouts in Studio.
Students see the course updates and handouts in the Course Info tab in your course:
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:
Note
You must enter the update in HTML. The visual editor is not supported for 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.
By default, your course has the following pages:
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.
You can create other pages for the grading policy, course slides, or any other purpose. More examples of pages you can add are:
See:
The new page is immediately available to students, if the course has started.
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:
Click the eye icon to hide the Wiki page. The icon changes:
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.
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
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.
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>
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:
To add a textbook:
Establishing a grading policy takes several steps. You must:
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.
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.
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):
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.
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.
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.
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:
By default, a new course you create has four assignment types:
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.
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.
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.
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.
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.
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.
Before you re-run a 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:
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.
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.
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:
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.
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.
There are several reasons you may want to export your course:
When you export your course, Studio creates a .tar.gz file that includes the following course data:
The following data is not exported with your course:
To export a course:
When the export completes you can then access the .tar.gz file on your computer.
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:
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:
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.
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:
Before you begin, you should understand the building blocks of an edX course.
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:
It is recommended that you test course content throughout the creation process.
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.
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.
You can revise your course content at any time.
The following diagram summarizes the content revision workflow and content visibility:
It is recommended that you test course content during the revision process.
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:
To view the course outline:
Log in to edX Studio.
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.
You must create the first section.
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:
As this example shows, the course is organized into the following levels:
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.
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:
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:
To add a subsection to the end of the section, expand the section and click New Subsection:
To add a unit to the end of a subsection, expand the subsection and click New Unit:
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.
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:
For more information, see the links above.
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:
Note
The publish icon only appears when there is new or changed content within the object.
For more information, see:
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:
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:
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:
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:
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.
To develop sections in your course, you must first understand the following:
Section tasks:
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.
The follow example shows four sections, all collapsed, in the course outline:
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:
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:
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:
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:
To make the content available to students, you must schedule the release date.
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:
The scheduled date must pass for the section to be visible to students.
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:
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:
You must publish the unit for students to see the updates.
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:
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:
Click New Section at the top or bottom of the outline:
A new section is added at the end of the course content, with the section name selected.
Enter the name for the new section. Remember that students see the section name in the courseware.
Add subsections to the new section as needed.
It is recommended that you test course content as you create new sections.
To edit a section name, hover over the section name to show the Edit 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.
To set the section release date:
Click the Settings icon in the section box:
The Settings dialog box opens.
Enter the release date and time for the section:
Click Save.
For more information, see Release Dates.
To publish all new and changed units in a section, click the publish icon in the box for the 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.
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:
Click the Settings icon in the section box:
The Settings dialog box opens.
Check Hide from students.
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.
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:
To develop subsections in your course, you must first understand the following:
Subsection tasks:
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.”
The following example shows three subsections in a section, all collapsed, in the course outline:
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.
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:
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:
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:
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:
Content in the subsection is not visible to students until you set a release date and the date passes.
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:
The scheduled date must pass for the subsection to be visible to students.
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:
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 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 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:
To create a new subsection:
It is recommended that you test course content as you create new subsections.
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.
To set the subsection release date:
Click the Settings icon in the subsection box:
The Settings dialog box opens.
Enter the release date and time for the section:
Click Save.
For more information, see Release Dates.
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:
Click the Settings icon in the subsection box:
The Settings dialog box opens.
Select the assignment type for this subsection in the Grade as field:
Enter or select a due date and time for problems in this subsection.
Click Save.
For more information, see Establishing a Grading Policy.
To publish all new and changed units in a subsection, click the publish icon in the box for the 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.
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:
Click the Settings icon in the subsection box:
The Settings dialog box opens.
Check Hide from students.
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.
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:
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.
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.
To view units in the outline, you expand the parent section and subsection:
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.
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:
When you have set up the section and subsection in the course outline, you then work with units.
The typical workflow is:
After you publish the unit, you can:
The following diagram shows the typical 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.
The following information summarizes whether or not students can see a unit.
For more information, see Controlling Content Visibility.
As an course author, you work with units with the following statuses:
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:
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.
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.
You’ve published the unit, but the release date hasn’t passed. Students cannot see this unit until the release date passes.
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:
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.
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.
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:
To create a new unit from a unit page:
In the Unit Location panel, click New Unit.
The unit page for the new unit opens automatically.
On the unit page, the unit name is selected. Edit the name as needed.
Add components to the new unit as needed.
You must then publish the unit to make it visible to students.
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.
To edit a unit name, hover over the name to show the Edit 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.
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:
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:
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 opens 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.
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.
To publish a unit from the outline, click the publish icon in the box for the unit:
Note
The publish icon only appears when there is new or changed content in the 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:
Caution
When you discard changes to a unit, the changes are permanently deleted. You cannot retrieve discarded changes or undo the action.
To view the last published version of a unit in the LMS, click View Published Version.
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.
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.
Select the Hide from students checkbox in the status panel:
For more information, see Controlling Content Visibility.
Click the Settings icon in the unit box:
The Settings dialog box opens.
Check Hide from students.
Click Save.
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:
This chapter describes how you develop course components. See:
For more information about specific component types, see:
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.
By default, Studio includes four types of components.
To add a component to the unit, click the component type that you want under Add 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.
To edit a component, click Edit:
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.
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:
Different types of components have different fields in the Settings dialog box, but all have the Display Name field.
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:
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.
Caution
Be sure you want to delete the component. You can not undo the deletion.
To delete a component:
After you delete a component, the component remians visible to students until you publish the unit.
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:
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.
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:
Click the arrow next to a child component name to collapse it and hide the component’s contents:
Click the arrow again to expand the component.
See:
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.
For more information, see the documentation for the specific component type that you want:
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.
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:
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.
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:
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.
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.
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:
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:
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.
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.
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:
Students see the same content in the LMS:
You later decide to add a multiple choice problem to the unit, before the 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:
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.
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.
In a unit page, click View Live Version.
You see the course in the Staff View.
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.
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.
In Student View:
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 unit page opens in Studio.
In the Instructor Dashboard, click View Course in Studio to open the course outline.
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.
For information about checking a student’s progress, see Review How Grading Is Configured for Your Course.
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.
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.
You can work with HTML in two ways:
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.
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.
You set the editor for an HTML component in the 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 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.
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.
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:
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.
When you select the raw editor for the HTML component, you edit your content in a text 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.
When you create a new HTML component, you select from a list of 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.
To create an HTML component:
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.
In the component, click Edit.
The HTML component opens in the visual editor.
Enter and format your content. You can Work with HTML code in the Visual editor if needed.
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.
Click Save to save the HTML component.
When using the visual editor, you can also:
When using the visual editor, to add a link to a website, course unit, or file in an HTML component, you work with the Insert link dialog box.
You can:
To add a link to a website:
Select the text that you want to make into the link.
Click the link icon in the toolbar.
In the Insert link dialog box, enter the URL of the website that you want in the URL field.
If you want the link to open in a new window, click the drop-down arrow next to the Target field, and then select New Window. If not, you can leave the default value.
Click OK.
Save the HTML component and test the link.
You can add a link to a course unit in an HTML component.
Obtain the unit identifier of the unit you’re linking to. To do this, open the unit page in Studio, and copy the unit ID from the Unit Identifier field under Unit Location in the right pane.
Open the HTML component where you want to add the link.
Select the text that you want to make into the link.
Click the link icon in the toolbar.
In the Insert link dialog box, enter the following in the URL field.
/jump_to_id/<unit identifier>
Make sure to replace <unit identifier> (including the brackets) with the unit identifier that you copied in step 2, and make sure to include both forward slashes (/).
If you want the link to open in a new window, click the drop-down arrow next to the Target field, and then select New Window. If not, you can leave the default value.
Click Insert.
Save the HTML component and test the link.
You can add a link in an HTML component to any file you’ve uploaded for the course. For more information about uploading files, see Adding Files to a Course.
![]()
Note
You must use the Embed URL to link to the file, not the External URL.
Select the text that you want to make into the link.
Click the link icon in the toolbar.
In the Insert link dialog box, enter the following in the URL field.
/static/FileName.type
Make sure to include both forward slashes (/).
If you want the link to open in a new window, click the drop-down arrow next to the Target field, and then select New Window. If not, you can leave the default value.
Click Insert.
Save the HTML component and test the link.
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.
![]()
Note
You must use the Embed URL to add the image, not the External URL.
Click the image icon in the toolbar.
In the Insert image dialog box, enter the following in the Source field.
/static/FileName.type
Make sure to include both forward slashes (/).
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.
As needed, customize the image dimensions. Keep Constrain proportions checked to ensure the image keeps the same width and height proportions.
To change the spacing and border of the image, click the Advanced tab.
Enter the Vertical space, Horizontal space, and Border as needed. The values you enter are automatically added to the Style field.
Click OK to insert the image in the HTML component.
Save the HTML component and test the image.
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.
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:
In the component editor, click Launch Latex Source Compiler. The LaTeX editor opens.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Under Add New Component, click Video.
When the new video component appears, click Edit. The video editor opens to the Basic tab.
You replace the default values with your own.
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.
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.
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
Optionally, click Advanced to set more options for the video. For a description of each option, see Advanced Options.
Click Save.
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. |
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.
After you obtain the .srt transcript file that will function as the table of contents, open the video component for the video.
On the Advanced tab, scroll down to Transcript Languages, and then click Add.
In the drop-down list that appears, select Table of Contents.
An Upload button appears.
Click Upload, browse to the .srt file for the transcript, and then click Open.
In the Upload translation dialog box, click Upload.
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.
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.
To add a downloadable transcript by using the Upload Handout field:
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.
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.
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.
After you obtain the .srt files for additional languages, open the video component for the video.
On the Advanced tab, scroll down to Transcript Languages, and then click Add.
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.
Click Upload, browse to the .srt file for the language that you want, and then click Open.
In the Upload translation dialog box, click Upload.
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.
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.
Obtain the .sjson file from a media company such as 3Play.
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.
Upload the .sjson file for your video to the Files & Uploads page.
Create a new video component.
On the Basic tab, enter the name that you want students to see in the Component Display Name field.
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
Click the Advanced tab.
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.
Set the other options that you want.
Click Save.
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:
Under Add New Component, click Discussion.
In the Discussion component that appears, click Edit.
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.
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.
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.
For students, the display name for the Discussion component appears in the course ribbon at the top of the page:
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:
In the Discussion tab at the top of the page, students can find the category and subcategory of the discussion in the left pane.
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.
All problems on the edX platform have several component parts.
Problem text. The problem text can contain any standard HTML formatting.
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.
Rendered answer. For some problem types, Studio uses MathJax to render plain text as “beautiful math.”
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.
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.
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.
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.
Feedback. After a student clicks Check, all problems return a green check mark or a red X.
Correct answer. Most problems require that the instructor specify a single correct answer.
Explanation. The instructor may include an explanation that appears when a student clicks Show Answer.
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.
Hide Answer button.
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.
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.
All problems are written in XML. However, Studio offers two interfaces for editing problem components: the Simple Editor and the Advanced Editor.
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.
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.
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:
The following problem templates open in the Simple 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.
The following problem templates open in the Advanced Editor.
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.
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.
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.
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.
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.
The score that a student earns for a problem is the result of the following formula:
Score = Weight × (Correct answers / Response fields)
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.
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.
If you want to change, or “randomize,” specific values in your problem, you have to do both the following:
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.
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. |
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.
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.
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.
For information about how to review and adjust student grades in the LMS, see Student Grades and Grading.
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.
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.
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.
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.
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.
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.
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.
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.
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>
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>
After you add the <randomize> </randomize>
tags, save and close the .xml
file.
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.
In Studio, re-import your course.
Note
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.
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.
Log in to Studio.
Click New Library.
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.
- 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.
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.
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.
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.
Log in to Studio.
Click Libraries, then click the library whose name you want to edit.
Click the Edit icon next to the library name.
The library name field becomes editable.
For details about giving other users access to the library, see Give Other Users Access to Your Library.
To add new components to your library, follow these steps.
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.
To view the entire contents of a library in Studio, follow these steps.
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.
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.
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.
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.
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:
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.
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.
Ensure that the new library member has an active Studio account.
On the Studio home page, click the Libraries tab and locate the library to which you are adding this user.
From the Settings menu select User Access.
On the User Access page, click Add a New User.
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.
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.
You are prompted to confirm the deletion.
The user is removed from the library.
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.
- 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.
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.
In Studio, click the Libraries tab and locate your library.
From the Settings menu select User Access.
On the User Access page, locate the user whose access level you are changing.
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.
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.
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.
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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 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 | 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 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. |
![]() |
IFrame Tool | IFrames allow you to integrate ungraded exercises and tools from any Internet site into an HTML component in your course. |
![]() |
LTI Component | LTI components allow you to add an external learning application or non-PDF textbook to Studio. |
![]() |
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. |
![]() |
Poll Tool | You can run polls in your course so that your students can share opinions on different questions. |
![]() |
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. |
![]() |
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. |
![]() |
Student Notes Tool | With student notes, students can make notes about what they read and highlight passages in the course content. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
Zooming Image Tool | Zooming images allow you to enlarge sections of an image so that students can see the section in detail. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
Molecule Viewer Tool | The molecule viewer allows you to create three-dimensional representations of molecules for students to view. |
![]() |
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. |
![]() |
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. |
![]() |
Protex Protein Builder Tool | The Protex protein builder asks students to create specified protein shapes by stringing together amino acids. |
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.
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.
Add the Annotation advanced component.
From the Settings menu select Advanced Settings.
In the field for the Advanced Module List policy key, place your cursor between the brackets.
Enter the following value. Make sure to include the quotation marks.
"annotatable"
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.
Return to the unit where you want to add the specialized problem. The list of possible components now contains an Advanced component.
![]()
2. Add the Instructions and Guided Discussion segments of the problem.
- In the unit where you want to create the problem, under Add New Component click Advanced.
- In the list of problem types, click Annotation.
- In the component that appears, click Edit.
- In the component editor, replace the example code with your own code.
- Click Save.
Add the Annotation problem segment of the problem.
Under the Annotation component, create a new blank Advanced Problem component.
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>
Click Save.
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.
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<<).
Under Add New Component, click Problem.
In the Select Problem Component Type screen, click Checkboxes on the Common Problem Types tab.
In the Problem component that appears, click Edit.
In the component editor, replace the default text with the text of your problem. Enter each answer option on its own line.
Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).
Select all the answer options, and then click the checkbox button.
When you do this, brackets appear next to each answer choice.
Add an x between the brackets for the correct answer or answers.
In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.
On the Settings tab, specify the settings that you want.
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]
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>
<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>
<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)
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.
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:
<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>
<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>
<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)
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.
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>
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.
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
Symlink to some set of xmodules. The following attributes can be specified for this tag:
sources - location id of modules, separated by ';'
<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>
<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>
<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 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.
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 your JavaScript application, and then upload all files associated with that application to the Files & Uploads page.
In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
Click Custom JavaScript Display and Grading.
In the component that appears, click Edit.
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.
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.
Click Save.
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.
<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.
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.
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 |
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.
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:
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.
In drag and drop problems, students respond to a question by dragging text or objects to a specific location on an image.
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.
On the Files & Uploads page, upload your image file. For more information about uploading files, see Adding Files to a Course.
In the unit where you want to create the problem, click Problem under Add New Component, and then click the Advanced tab.
Click Drag and Drop.
In the component that appears, click Edit.
In the component editor, replace the example text with the text of your problem.
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).
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"/>
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.
Determine the coordinates and radius of the correct area on the image.
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 (}).
Click Save.
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.
- Allopurinol.gif
- AllopurinolAnswer.gif
To download both these files in a .zip archive, click http://files.edx.org/DragAndDropProblemFiles.zip.
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>
<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>
<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)
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).
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.
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.
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.
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 incrementalgroup_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..
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.
+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
].
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.
You can create dropdown 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<<).
To create a dropdown problem, follow these steps.
Under Add New Component, click Problem.
In the Select Problem Component Type screen, click Dropdown on the Common Problem Types tab.
In the new Problem component that appears, click Edit.
Replace the default text with the text for your problem. Enter each of the possible answers on the same line, separated by commas.
Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).
Select all the answer options, and then click the dropdown button.
When you do this, a double set of brackets ([[ ]]) appears and surrounds the answer options.
Inside the brackets, surround the correct answer with parentheses.
In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.
On the Settings tab, specify the settings that you want.
Click Save.
For the example problem above, the text in the Problem component is the following.
>>What type of data are the following?<<
Age:
[[Nominal, Discrete, (Continuous)]]
Age, rounded to the nearest year:
[[Nominal, (Discrete), Continuous]]
Life stage - infant, child, and adult:
[[(Nominal), Discrete, Continuous]]
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>
<em>This exercise first appeared in HarvardX's PH207x Health in Numbers: Quantitative Methods in Clinical & Public Health Research course, fall 2012.</em>
</p>
<p>What type of data are the following?</p>
<p>Age:</p>
<optionresponse>
<optioninput options="('Nominal','Discrete','Continuous')" correct="Continuous" label="Age"/>
</optionresponse>
<p>Age, rounded to the nearest year:</p>
<optionresponse>
<optioninput options="('Nominal','Discrete','Continuous')" correct="Discrete" label="Age, rounded to the nearest year"/>
</optionresponse>
<p>Life stage - infant, child, and adult:</p>
<optionresponse>
<optioninput options="('Nominal','Discrete','Continuous')" correct="Nominal" label="Life stage"/>
</optionresponse>
</problem>
<problem>
<p>
Problem text</p>
<optionresponse>
<optioninput options="('Option 1','Option 2','Option 3')" correct="Option 2" label="label text"/>
</optionresponse>
<solution>
<div class="detailed-solution">
<p>Explanation or Solution Header</p>
<p>Explanation or solution text</p>
</div>
</solution>
</problem>
<problem>
<p>Problem text</p>
<optionresponse>
options="('A','B')"
correct="A"/>
label="label text"
</optionresponse>
<solution>
<div class="detailed-solution">
<p>Explanation or Solution Header</p>
<p>Explanation or solution text</p>
</div>
</solution>
</problem>
<optionresponse>
(required): Indicates that the problem is a dropdown problem.<optioninput>
(required): Lists the answer options.Tag: <optionresponse>
Indicates that the problem is a dropdown problem.
Attributes
(none)
Children
<optioninput>
Tag: <optioninput>
Lists the answer options.
Attributes
Attribute Description options (required) Lists the answer options. The list of all answer options is surrounded by parentheses. Individual answer options are surrounded by single quotation marks (‘) and separated by commas (,). correct (required) Indicates whether an answer is correct. Possible values are “true” and “false”. Only one correct attribute can be set to “true”. label (required) Specifies the name of the response field. Children
(none)
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:
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.
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:
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.
The following steps show the complete process:
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 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.
The grader receives student submissions as a JSON object with two keys:
For example:
{
"xqueue_body":
"{
"student_response": "def double(x):\n return 2*x\n",
"grader_payload": "problem_2"
}"
}
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>"
}
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:
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.
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.
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.
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.
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:
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 sees the full screen image in a unit page. When the student hovers the mouse pointer over the image, the Fullscreen button appears:
When the student clicks Fullscreen, the image opens and expands in the full browser window. The buttons Close, Zoom In, and Zoom Out appear:
The student can then zoom in on the image, and drag the image to view the desired part of it:
Upload your image file to the Files & Uploads page. For more information about how to do this, see Adding Files to a Course.
Under Add New Component, click html, and then click Full Screen Image.
In the new component that appears, click Edit.
In the component editor, replace the default title, remove the instructional paragraph, and add text as needed.
Switch to the HTML tab.
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.
Click Save to save the HTML component.
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:
For more information about the Gene Explorer, see The Gene Explorer.
<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:
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.
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:
Embedding a Google calendar in your course has three steps.
You can enable Google Calendars in the course by using either Studio or OLX.
To enable Google Calendars in your course:
From the Settings menu, select Advanced Settings.
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:
At the bottom of the page, select Save Changes.
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="["google-document",
"google-calendar"]" display_name="Sample Course"
start="2014-01-01T00:00:00Z">
...
</course>
For more information, see The Courseware Structure.
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.
Open the Google calendar.
From the Settings menu, select Settings.
Select the Calendars tab.
You might have multiple calendars on the Calendars tab. Find the calendar that you want to share in your courseware.
In the row for the calendar to share, in the Sharing column, select Edit Settings.
Click the Share this Calendar tab, and then select Make this calendar public.
Select Save.
The Calendar Settings page closes, and you return to the Calendars tab. You continue by obtaining the Google calendar’s ID.
On the Calendars tab, click the name of the calendar.
Select the Calendar Details tab.
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.
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.
To add a Google calendar in the courseware, you create aan advanced component in Studio or create a Google calendar XBlock in OLX.
Make sure that you enable Google Calendars in your course before you add the Google Calendar component.
To add a Google calendar component:
On the Course Outline page, open the unit where you want to add the Google calendar component.
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.
In the new component, select Edit.
In the Display Name field, type the name for the component.
In the Public Calendar ID field, paste the calendar ID you copied in the Obtain the Google Calendar ID task.
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.
Select Save.
You can then Preview Course Content to see how the unit with the Google calendar will appear to students.
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.
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.
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.
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.
You can embed the following types of Google Drive files.
Embedding a Google Drive file in your course has three steps:
You can enable Google Drive files in the course by using either Studio or OLX.
To enable Google Drive files in your course:
From the Settings menu, select Advanced Settings.
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:
At the bottom of the page, select Save Changes.
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="["google-document",
"google-calendar"]" display_name="Sample Course"
start="2014-01-01T00:00:00Z">
...
</course>
For more information, see The Courseware Structure.
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.
Open the Google Drive file.
From the File menu, select Publish to the web.
Click Publish, then select OK to confirm the action.
Click the Embed tab.
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.
To add a Google Drive file in the courseware, you create an advanced component in Studio or create a Google Document Xblock in OLX.
Ensure you enable Google Drive files before you add the component.
To add a Google Drive file component:
On the Course Outline page, open the unit where you want to add the Google Drive component.
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.
In the new component, select Edit.
In the Display Name field, type the name for the component.
In the Embed Code field, paste the embed code you copied in the Obtain the Google Drive File Embed Code task.
Click Save.
You can then Preview Course Content to see how the unit with the Google drive file will appear to students.
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="<iframe
frameborder="0" src="https://docs.google.com/spreadsheet/pub
?key=0AuZ_5O2JZpH5dGVUVDNGUE05aTFNcEl2Z0ZuTUNmWUE&output=html&widge
t=true"></iframe>" 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.
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.
This chapter describes how you can use instant hangouts in your course. See:
You can add the ability for students to participate in instant hangouts directly from your course.
With instant hangouts, students can:
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.
You can add one or more instant hangouts in your course. For example, you can add an instant hangout:
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.
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.
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.
To join the hangout, the student clicks Join the Hangout.
If not already logged in, the student is prompted to log in to Google:
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:
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.
To create an instant hangout in your course:
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.
Upload the JavaScript file to the Files & Uploads page in your course. See Adding Files to a Course for more information.
In either a page or an HTML component, open the HTML editor.
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>
After the <script> tag, add:
<div class='instanthangouts'/>
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'/>
Test the instant hangout in your course.
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.
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.
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.
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.
Under Add New Component, click html, and then click IFrame.
In the new component that appears, click Edit.
In the toolbar in the component editor, click HTML.
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>
<iframe>
tags. A student only sees this text if the student uses a browser that does not support IFrames.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>
<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.
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.
To create a image mapped input problem:
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>
<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>
<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)
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.
For example, the following LTI component incorporates a Cerego tool that students interact with.
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
Creating an LTI component in your course has three steps.
On the Settings menu, click Advanced Settings.
In the field for the Advanced Module List policy key, place your cursor between the brackets.
Enter "lti"
. Make sure to include the quotation marks, but not the
period.
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).
The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved.
To register the external LTI provider, you’ll add the LTI Passports policy key to the course’s advanced settings.
On the Advanced Settings page, locate the LTI Passports policy key.
Place your cursor between the brackets.
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"
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.
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. |
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.
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.
To create a math expression input problem:
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>
<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>
<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)
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.
To create a molecule editor, you need the following files:
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.
- In the unit where you want to create the problem, click HTML under Add New Component, and then click HTML.
- In the component that appears, click Edit.
- In the component editor, paste the HTML component code from below.
- Make any changes that you want, and then click Save.
- Under the HTML component, click Problem under Add New Component, and then click Blank Advanced Problem.
- In the component that appears, click Edit.
- In the component editor, paste the Problem component code from below.
- Click Save.
To create the molecule editor, you need an HTML component and a Problem component.
<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> </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"> </div>
<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 > .490
</script>
<customresponse cfn="grader_2">
<editamoleculeinput file="/static/dopamine.mol">
</editamoleculeinput>
</customresponse>
</problem>
Studio offers two tools that you can use in discussions of molecules:
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:
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.
Creating a molecule viewer tool has several steps:
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.
Download the MoleculeViewerFiles.zip file from edX.
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 that you downloaded from BioTopics into the data folder that you downloaded from edX.
Edit the MoleculeViewer.html file:
In a text editor, open the MoleculeViewer.html file.
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;"
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.
In Studio, open the unit where you want to add the molecule viewer.
Under Add New Component, click HTML, and then click IFrame.
In the component editor that opens, replace the existing content with your own text.
In the toolbar, click HTML.
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>
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>
Click OK to close the HTML Source Code box, and then click Save to save the component.
Click Preview to see your component as a student would see it.
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.
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.
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<<).
Under Add New Component, click Problem.
In the Select Problem Component Type screen, click Multiple Choice on the Common Problem Types tab.
When the new Problem component appears, click Edit.
In the component editor, replace the sample problem text with the text of your problem. Enter each answer option on its own line.
Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).
Select all the answer options, and then click the multiple choice button.
When you do this, the component editor adds a pair of parentheses next to each possible answer.
Add an “x” between the parentheses next to the correct answer.
In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.
On the Settings tab, specify the settings that you want.
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]
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>
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:
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:
And another view of the same problem, for another student or for the same student of a subsequent view of the unit, could be:
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.
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
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>
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.
You configure the problem to provide targeted feedback through XML in The Advanced Editor.
Follow these XML guidelines:
targeted-feedback
attribute to the <multiplechoiceresponse>
element, with no value: <multiplechoiceresponse targeted-feedback="">
<targetedfeedbackset>
element before the <solution>
element.<targetedfeedbackset>
, add one or more <targetedfeedback>
elements.<targetedfeedback>
element, enter your explanation for the incorrect answer in HTML as markup described below.<targetedfeedback>
element with a specific incorrect answer by using the same explanation-id
attribute value for each.<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>
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.
You configure the problem to provide answer pools through XML in The Advanced Editor.
Follow these XML guidelines:
<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">
.<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>
.<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>
<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>
<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)
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.
Note
Currently, students can only enter numerals in the text field. Students cannot enter words or mathematical expressions.
To create a multiple choice and numerical input problem:
<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 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.
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.
For more information about characters that students can enter, see Math Response Formatting for Students.
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.
For more information about including a Python script in your problem, see Write-Your-Own-Grader Problem.
When you do this, an equal sign appears next to the answer.
(Optional) Specify a margin of error, or tolerance. You can specify a percentage, number, or range.
In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.
On the Settings tab, specify the settings that you want.
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]
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>
The following templates represent problems with and without a decimal or percentage 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>
<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>
<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>
<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>
<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 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.
When you create an open response assessment assignment, you include several elements:
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.
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.
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.
You can ask your students to upload an image as part of their response. If you do this, however, keep the following in mind:
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.
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.
![]()
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.
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.
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.
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”).
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.
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.
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.
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.
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.
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.
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.
For more information, see Step 3. Add the Rubric and Provide Only Comment Fields for Individual Criteria.
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.
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.
If the student clicks the Assess Peers heading, the step expands. The student can then click Continue Assessing Peers.
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.
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.
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.
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.
To create the component for your open response assessment:
To add the prompt, or question:
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.
To allow students to submit an image with a response:
Note
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:
In the open response assessment component editor, click the Rubric tab.
In the first Criterion section, enter the name and prompt text of your first criterion.
In the first Option section, enter the name, explanation, and point value for the first option.
In the next Option section, enter the name, explanation, and point value for the next option.
Repeat step 4 for each option. If you need to add more options, click Add Option.
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.
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.
To provide a comment field without options:
To specify a name for the assignment as well as start and due dates for all student responses:
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.
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:
In the component editor, click the Settings tab.
Scroll down past the Allow Image Responses field.
Locate the following headings:
Select the check boxes for the steps that you want the assignment to include.
(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.
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.
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:
For more information, see Student Training Step.
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:
For the self assessment step, you’ll specify when the step starts and ends.
To allow students to see the top-scoring responses for the assignment, you’ll specify a number on the Settings tab.
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.
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.
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.
You can check the number of students who have completed, or are currently working through, the following steps:
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.
You can access information about an individual student’s performance on a peer assessment assignment, including:
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.
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:
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).
In the LMS, click the Instructor tab.
On the Instructor Dashboard, click Data Download.
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.
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.
When the link to the grade report appears in the Reports Available for Download list, click the link to open the spreadsheet.
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
.
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
.
Note
Make sure that you don’t copy the value in column B. You need the course-specific anonymized user ID from column C.
The student’s information appears below the Get Student Info box.
The following example shows:
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.
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.
To create a periodic table, you need the following files:
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.
You can run polls in your course so that your students can share opinions on different questions.
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.
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.
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.
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.
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.
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.
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>
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>
After you add the poll code, save and close the .xml file.
Re-package your course as a .tar.gz file.
In Studio, re-import your course. You can now review the poll question and answers that you added in Studio.
Note
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”.
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)
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.
<poll_question name="second_question" display_name="Second question">
<h3>Age</h3>
<p>How old are you?</p>
<answer id="less18">< 18</answer>
<answer id="10_25">from 10 to 25</answer>
<answer id="more25">> 25</answer>
</poll_question>
<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>
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.
To create the above problem:
<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 = "<font color='blue'>Hint: {0}</font>".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>
<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 = "<font color='blue'>Hint: {0}</font>".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.
<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"/>
).
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.
To create a problem written in LaTeX:
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.
To create the protein builder:
<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 |
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:
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.
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.
You must enable content libraries before you can use randomized components from content libraries in your courses.
In Studio, open the course in which you want to provide library content.
Select Settings, then Advanced Settings.
In the Advanced Module List field, place your cursor between the supplied pair of square brackets.
Type "library_content"
.
Click Save Changes.
Studio reformats the policy key you just entered to indent it on a new line.
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.
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.
![]()
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.
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.
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.
In Studio, navigate to the unit containing the randomized content block that references your library.
In the randomized content block, click the View icon.
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.
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.
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.
Click the Clear icon to restore the library default setting for that field.
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.
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.
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.
The Student Notes tool allows students to highlight and make notes about what they read in the body of the course.
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.
For detailed information about the ways students can use student notes, see SFD Student Notes.
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.
The page refreshes automatically. At the top of the page, you see a notification that your changes have been saved.
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.
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<<).
To create a text input problem in the Simple Editor, follow these steps.
Under Add New Component, click Problem.
In the Select Problem Component Type screen, click Text Input on the Common Problem Types tab.
In the new Problem component that appears, click Edit.
Replace the default text with the text for your problem.
Determine the text of the problem to use as a label, and then surround that text with two sets of angle brackets (>><<).
Select the text of the answer, and then click the text input button.
When you do this, an equal sign appears next to the answer.
In the component editor, select the text of the explanation, and then click the explanation button to add explanation tags around the text.
On the Settings tab, specify the settings that you want.
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]
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>
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.
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
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>
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>
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>
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.
<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>
<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 includestype="ci"
, the problem is not case sensitive. If the tag includestype="cs"
, the problem is case sensitive. If the tag includestype="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)
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.
To create a word cloud tool:
Add the Word Cloud advanced component.
On the Settings menu, click Advanced Settings.
In the field for the Advanced Module List policy key, place your cursor between the brackets.
Enter the following value. Make sure to include the quotation marks.
"word_cloud"
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.
Return to the unit where you want to add the specialized problem. The list of possible components now contains an Advanced component.
In the unit where you want to create the problem, click Advanced under Add New Component.
In the list of problem types, click Word Cloud.
In the component that appears, click Edit.
In the component editor, specify the settings that you want. You can leave the default value for everything except Display Name.
Click Save.
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.
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.
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.To create a custom Python-evaluated input problem using an <answer>
tag:
<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.
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.{ '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.{ '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.
To create a custom Python-evaluated input problem using a <script>
tag:
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>
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>
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.
To create a zooming image tool, you need the following files.
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.
Under Add New Component, click html, and then click Zooming Image.
In the new component that appears, click Edit.
In the component editor, replace the default problem text with your own text.
Switch to the HTML tab.
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.
Click Save to save the HTML component.
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.
In the HTML component editor, you can use MathJax both in Visual view and in HTML view.
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.
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:
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.
This chapter describes how to configure your course so that you can use content experiments. See:
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.
From the Settings menu, select Advanced Settings.
On the Advanced Settings page, locate Advanced Modules List.
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"
]
At the bottom of the page, click Save Changes.
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.
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.
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.
You can create a group configuration at any time.
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.
- 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.
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:
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.
On the Group Configurations page, hover over the group configuration and click Edit.
The following page opens:
Modify the name and description as needed.
Modify groups in the configuration as needed. See Create a Group Configuration for details.
Click Save to save your changes.
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.
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:
Click a link to go to the unit page that contains the experiment.
When working with a content experiment, you can view details about the group configuration used by that experiment in two ways:
In both cases, the group configuration opens:
You can use the link in the group configuration to return to the unit that contains the content experiment.
Review these guidelines if you must modify a group configuration after a course starts. These guidelines apply for courses built in Studio or OLX.
After the course starts, do not:
id
value of a group configuration.After the course starts, do not change the id
value of an experiment
group.
You can change experiment group names at any time.
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.
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.
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:
"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.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.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.
After you enable content experiments and set up group configurations in Studio, you can add content experiments to your course. See:
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:
After you configure a content experiment, you can change its group configuration. See Change the Group Configuration for a Content Experiment.
In the unit page, under Add New Component, click Advanced.
Select Content Experiment.
A new content experiment is added to the unit:
You can work with the content experiment as you can any other component. See Developing Course Components for more information.
Click either Select a Group Configuration or Edit to open the content experiment component.
Next to Group Configuration, select a group configuration.
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.
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.
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:
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:
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.
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:
Open the unit page of the unit that contains the content experiment.
In the content experiment component, click Edit.
Select a different group configuration.
Click Save.
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.
Drag and drop components from the Inactive Groups section into the new groups. You can also create new components in the new groups.
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.
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.
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.
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.
You can change the experiment group selection to view the content that a different experiment group of students sees.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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):
- If you want course-wide discussion topics to be divided by cohort, you need to complete some configuration tasks.
- In contrast, if you want content-specific discussion topics to be divided by cohort, you do not need to take any action. Instead, you need to complete some configuration tasks only if you want content-specific discussion topics to be unified.
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.
"cohorted": 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.
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.
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.
Open the course in Studio.
Select Settings, then Advanced Settings.
In the Cohort Configuration field, place your cursor after the opening
brace character ({
) and press Enter.
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"
]
],
). You must
include a comma to separate each of the policy keys that you define.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.
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.
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.
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.
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.
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:
|
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. |
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.
View the live version of your course. For example, in Studio, click View Live.
Click Instructor, then click Membership.
Scroll to the Cohort Management section at the bottom.
Under Assign students to cohorts by uploading a CSV file, click Browse to navigate to the .csv file you want to upload.
Click Upload File and Assign Students. A status message displays above the Browse button.
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.
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.
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:
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 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.
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.
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.
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.
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:
In the LMS:
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 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.
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.
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.
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.
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.
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:
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.
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. |
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.
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.
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.
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.
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.
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.
Open the course in Studio.
Select Settings, then Advanced Settings.
In the Cohort Configuration field, place your cursor after the opening
brace character ({
) and press Enter.
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" ]
"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.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.
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.
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.
Open your course in Studio.
Select Settings, then Advanced Settings.
In the Cohort Configuration field, place your cursor after the opening
brace character ({
) and after any existing policy key definitions, then press Enter.
Press Enter to create a new line. On the new line, type
"always_cohort_inline_discussions": false
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.
Select Settings, then Advanced Settings.
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 ([ ]
).
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" ]
"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.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.
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.
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.
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.
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.
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.
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.
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.
It may be helpful to keep these additional considerations in mind when you edit posts in a course that includes cohorts.
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.
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.
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.
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.
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.
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.
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.
Your beta testers should also have varying levels of knowledge about the course 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.
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.
Beta testers should interact with everything in the course.
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.
To beta test a course, you:
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.
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.
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.
Before you can add beta testers:
When you add beta testers, note the following.
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:
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.
To add a single beta tester:
View the live version of your course.
Click Instructor then Membership.
In the Administration List Management section, use the drop-down list to select Beta Testers.
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.
Despite the efforts of the course team and the beta testers, additional problems, questions, and issues can occur while a course is running.
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.
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
Welcome Students
Prepare Staff
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
location
markdown
display_name
max_attempts
attempts
max_attempts
.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.
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.
To provide access to features on the LMS Instructor Dashboard you assign the Course Staff role or the Instructors role.
Course Staff can:
Instructors have access to all of the same options for running the course as the course staff. They can also:
Before you can assign the Course Staff or Instructors role to a team member:
To assign a staff role:
To remove an assigned role, view the list of users and then click Revoke access.
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.
Before a student can enroll in a course, he or she must:
www.edx.org
, edge.edx.org
, or your implementation of the edX
platform. Each platform requires a separate user account.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.
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.
To enroll students or staff members:
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.
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:
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.
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.
Note
The Auto Enroll option has no effect when you click Unenroll.
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.
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.
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.
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.
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:
}
):},
).When students click the Discussion page for your course, the drop-down Discussion list now includes the topic you added.
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.
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.
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:
Before you can assign roles to your discussion team, you need their email addresses or usernames.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
Discussion monitors can cultivate qualities in their own discussion interactions to make their influence positive and their time productive.
For a template that you can use to develop guidelines for your course moderators, see Guidance for Discussion Moderators.
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:
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.
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.
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.
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.
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.
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.
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.
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:
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.
To define when discussions are closed to new contributions and when they reopen:
Open your course in Studio.
Select Settings, then Advanced Settings.
Scroll down to the Discussion Blackout Dates policy key.
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:
Click Save Changes.
Studio reformats your entry to add line feeds and indentation, like this:
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.
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:
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.
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.
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.
When you visit the Discussion page, you can read and add to any of the discussion topics.
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.
When you make a contribution to a course discussion topic, it can typically be categorized as either a question or a discussion.
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.
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).
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.
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:
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.
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 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.
Click Courseware.
Open the part of the course that includes the discussion topic that you want to add to.
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.
You can also use this procedure to add a post to any of the content-specific discussion topics.
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.
- 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.
You can also use this procedure to add a response or comment to any of the content-specific discussion topics.
- 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.
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.
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.
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.
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.
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.
When you click the “More” icon, a menu of the options that currently apply appears.
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.
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 number of votes that each post has received displays in the list of posts. (Votes for responses are not included in the number.)
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.
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.
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.
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.
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.
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.
Certain types of posts require more attention from the moderators than others, or may need to be handled in a particular way.
- 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.
You might say: “Thanks for letting us know about that issue. We are working with edX to get it fixed as quickly as possible.”
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.”
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.
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:
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.
To send an email message to course participants:
- Myself
- Staff and Instructors
- All (students, staff and instructors)
Enter a Subject for the message. A subject is required.
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.
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.
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.
The workflow states for a bulk email task are:
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.
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.
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.
View the live version of your course.
Click Instructor then click Email.
In the Email Task History section of the page, click Sent Email History. The list of sent messages displays.
To review additional information for a message, click its subject. The message opens in a dialog box.
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.
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:
To produce the Email Task History report:
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:
No Task Progress messages display for tasks that have a State of Failure.
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 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:
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
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
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
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
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
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:
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
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
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
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
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:
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.
Keep these points in mind as you design the wiki for your course:
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:
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.
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.
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:
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.
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.
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.
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.
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.
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.
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” .
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” .
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.
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.
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.
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.
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:
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.
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.
After you create a course, you can access information about it from the Instructor Dashboard. You can find:
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.
To view course data:
View the live version of your course.
Click Instructor, then click Course Info if necessary.
The Basic Course Information section of the page that opens lists information about the course.
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.
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.
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.
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.
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.
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:
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.
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:
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.
{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.
View the live version of your course.
Click Instructor, then click Data Download.
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.
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.
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:
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.
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:
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.
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:
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.
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:
<choiceresponse>
)<optionresponse>
)<multiplechoiceresponse>
)<numericalresponse>
)<stringresponse>
)<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.
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:
{course_id}_answer_distribution.csv
file name. You may have to scroll down to find this file.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:
![]()
Answer Values in OpenOffice Calc:
![]()
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.
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.
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 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.
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:
View the live version of your course.
Click Instructor, then click Analytics.
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.
The histogram of scores for a selected problem provides the following information.
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.
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.
View the live version of your course.
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.
In Studio, you define this information by selecting Settings > Grading. For more information, see Configure the Assignment Types.
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.
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:
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.
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:
{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.
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.
The CSV file contains one row of data for each student, and columns that provide the following information.
Note
The grade reports do not include information about individual questions within the assignments, or include student answer distributions.
For courses with enrollments of up to 200 students, you can review a gradebook on the Instructor Dashboard.
View the live version of your course.
Click Instructor, then click Student Admin. For courses with fewer than 200 students enrolled, this tab includes a Student Gradebook section.
Click View Gradebook. Grades are calculated and the gradebook displays.
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.
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:
View the live version of your course.
Click Instructor, then click Student Admin.
In the Student-Specific Grade Inspection section, enter the student’s email address or username.
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.
To learn more about a particular assignment, move the cursor onto the value in the chart. A brief description displays.
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.
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%).
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.
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.
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.
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:
Note that point scores from graded sections are called “Problem Scores”, while point scores from ungraded sections are called “Practice Scores”.
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.
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.
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:
View the live version of your course.
Click Courseware and navigate to the unit that contains the problem.
Display the problem and then click Staff Debug Info.
Information about the problem displays, including its location.
To close the Staff Debug viewer, click on the browser page outside of the viewer.
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.
To rescore a problem for a single student, you need that student’s username or email address.
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:
View the live version of your course.
Click Instructor, then click Student Admin.
In the Course-Specific Grade Adjustment section of the page, enter the unique problem location, and then click Rescore ALL students’ problem submissions.
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.
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.
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.
To reset the number of attempts for a single student, you need that student’s username or email address.
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:
View the live version of your course.
Click Instructor, then click Student Admin.
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.
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.
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.
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:
To use the Instructor Dashboard, you need the unique identifier of the problem. See Find the Unique Location Identifier for a Problem.
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.