From d4b3f1efd237be440d23e859cffa6a5d08c859e6 Mon Sep 17 00:00:00 2001 From: Julian Arni Date: Tue, 30 Jul 2013 14:10:18 -0400 Subject: [PATCH] New index page for documentation --- _images/draganddrop_logic_flow.png | Bin 305398 -> 0 bytes .../conditional_module/conditional_module.txt | 77 - _sources/course_data_formats/course_xml.txt | 772 -------- .../course_data_formats/custom_response.txt | 142 -- .../drag_and_drop/drag_and_drop_input.txt | 425 ----- _sources/course_data_formats/grading.txt | 171 -- .../graphical_slider_tool.txt | 563 ------ .../poll_module/poll_module.txt | 67 - .../course_data_formats/symbolic_response.txt | 40 - _sources/index.txt | 47 - .../internal_data_formats/discussion_data.txt | 123 -- _sources/internal_data_formats/sql_schema.txt | 631 ------ .../internal_data_formats/tracking_logs.txt | 389 ---- _static/ajax-loader.gif | Bin 673 -> 0 bytes _static/basic.css | 540 ------ _static/comment-bright.png | Bin 3500 -> 0 bytes _static/comment-close.png | Bin 3578 -> 0 bytes _static/comment.png | Bin 3445 -> 0 bytes _static/contents.png | Bin 202 -> 0 bytes _static/doctools.js | 247 --- _static/down-pressed.png | Bin 368 -> 0 bytes _static/down.png | Bin 363 -> 0 bytes _static/file.png | Bin 392 -> 0 bytes _static/jquery.js | 154 -- _static/minus.png | Bin 199 -> 0 bytes _static/navigation.png | Bin 218 -> 0 bytes _static/plus.png | Bin 199 -> 0 bytes _static/pygments.css | 62 - _static/searchtools.js | 560 ------ _static/sphinxdoc.css | 339 ---- _static/underscore.js | 23 - _static/up-pressed.png | Bin 372 -> 0 bytes _static/up.png | Bin 363 -> 0 bytes _static/websupport.js | 808 -------- .../conditional_module.html | 201 -- course_data_formats/course_xml.html | 940 --------- course_data_formats/custom_response.html | 263 --- .../drag_and_drop/drag_and_drop_input.html | 1687 ----------------- course_data_formats/grading.html | 268 --- .../graphical_slider_tool.html | 924 --------- .../poll_module/poll_module.html | 189 -- course_data_formats/symbolic_response.html | 147 -- genindex.html | 146 -- index.html | 198 -- internal_data_formats/discussion_data.html | 292 --- internal_data_formats/sql_schema.html | 959 ---------- internal_data_formats/tracking_logs.html | 563 ------ newindex.html | 66 +- objects.inv | 6 - py-modindex.html | 142 -- search.html | 106 -- searchindex.js | 1 - 52 files changed, 38 insertions(+), 13240 deletions(-) delete mode 100644 _images/draganddrop_logic_flow.png delete mode 100644 _sources/course_data_formats/conditional_module/conditional_module.txt delete mode 100644 _sources/course_data_formats/course_xml.txt delete mode 100644 _sources/course_data_formats/custom_response.txt delete mode 100644 _sources/course_data_formats/drag_and_drop/drag_and_drop_input.txt delete mode 100644 _sources/course_data_formats/grading.txt delete mode 100644 _sources/course_data_formats/graphical_slider_tool/graphical_slider_tool.txt delete mode 100644 _sources/course_data_formats/poll_module/poll_module.txt delete mode 100644 _sources/course_data_formats/symbolic_response.txt delete mode 100644 _sources/index.txt delete mode 100644 _sources/internal_data_formats/discussion_data.txt delete mode 100644 _sources/internal_data_formats/sql_schema.txt delete mode 100644 _sources/internal_data_formats/tracking_logs.txt delete mode 100644 _static/ajax-loader.gif delete mode 100644 _static/basic.css delete mode 100644 _static/comment-bright.png delete mode 100644 _static/comment-close.png delete mode 100644 _static/comment.png delete mode 100644 _static/contents.png delete mode 100644 _static/doctools.js delete mode 100644 _static/down-pressed.png delete mode 100644 _static/down.png delete mode 100644 _static/file.png delete mode 100644 _static/jquery.js delete mode 100644 _static/minus.png delete mode 100644 _static/navigation.png delete mode 100644 _static/plus.png delete mode 100644 _static/pygments.css delete mode 100644 _static/searchtools.js delete mode 100644 _static/sphinxdoc.css delete mode 100644 _static/underscore.js delete mode 100644 _static/up-pressed.png delete mode 100644 _static/up.png delete mode 100644 _static/websupport.js delete mode 100644 course_data_formats/conditional_module/conditional_module.html delete mode 100644 course_data_formats/course_xml.html delete mode 100644 course_data_formats/custom_response.html delete mode 100644 course_data_formats/drag_and_drop/drag_and_drop_input.html delete mode 100644 course_data_formats/grading.html delete mode 100644 course_data_formats/graphical_slider_tool/graphical_slider_tool.html delete mode 100644 course_data_formats/poll_module/poll_module.html delete mode 100644 course_data_formats/symbolic_response.html delete mode 100644 genindex.html delete mode 100644 index.html delete mode 100644 internal_data_formats/discussion_data.html delete mode 100644 internal_data_formats/sql_schema.html delete mode 100644 internal_data_formats/tracking_logs.html delete mode 100644 objects.inv delete mode 100644 py-modindex.html delete mode 100644 search.html delete mode 100644 searchindex.js diff --git a/_images/draganddrop_logic_flow.png b/_images/draganddrop_logic_flow.png deleted file mode 100644 index 2bb1c11a41eebe8ca593671f01c6ea4a5a6d6c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305398 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�fUVI-*UNzLw$ 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 KjZZi2BmNK4O-o4t diff --git a/_sources/course_data_formats/conditional_module/conditional_module.txt b/_sources/course_data_formats/conditional_module/conditional_module.txt deleted file mode 100644 index 82c555d3e7..0000000000 --- a/_sources/course_data_formats/conditional_module/conditional_module.txt +++ /dev/null @@ -1,77 +0,0 @@ -********************************************** -Xml format of conditional module [xmodule] -********************************************** - -.. module:: conditional_module - -Format description -================== - -The main tag of Conditional module input is: - -.. code-block:: xml - - ... - -``conditional`` can include any number of any xmodule tags (``html``, ``video``, ``poll``, etc.) or ``show`` tags. - -conditional tag ---------------- - -The main container for a single instance of 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. - - [completed] - map to `is_completed` module method - [attempted] - map to `is_attempted` module method - [poll_answer] - map to `poll_answer` module attribute - [voted] - map to `voted` module attribute - -show tag --------- - -Symlink to some set of xmodules. The following attributes can -be specified for this tag:: - - sources - location id of modules, separated by ';' - -Example -======= - -Examples of conditional depends on poll -------------------------------------------- - -.. code-block:: xml - - - -

You see this, cause your vote value for "First question" was "man"

- - - -Examples of conditional depends on poll (use tag) -------------------------------------------- - -.. code-block:: xml - - - - - - - -Examples of conditional depends on problem -------------------------------------------- - -.. code-block:: xml - - - You see this, cause "lec27_Q1" is attempted. - - - You see this, cause "lec27_Q1" is not attempted. - \ No newline at end of file diff --git a/_sources/course_data_formats/course_xml.txt b/_sources/course_data_formats/course_xml.txt deleted file mode 100644 index 22d96d1432..0000000000 --- a/_sources/course_data_formats/course_xml.txt +++ /dev/null @@ -1,772 +0,0 @@ -################### -Course XML Tutorial -################### -EdX uses an XML format to describe the structure and contents of its courses. While much of this is abstracted away by the Studio authoring interface, it is still helpful to understand how the edX platform renders a course. - -This guide was written with the assumption that you've dived straight into the edX platform without necessarily having any prior programming/CS knowledge. It will be especially valuable to you if your course is being authored with XML files rather than Studio -- in which case you're likely using functionality that is not yet fully supported in Studio. - -***** -Goals -***** -After reading this, you should be able to: - -* Organize your course content into the files and folders the edX platform expects. -* Add new content to a course and make sure it shows up in the courseware. - -*Prerequisites:* it would be helpful to know a little bit about xml. Here is a -`simple example `_ if you've never seen it before. - -************ -Introduction -************ - -A course is organized hierarchically. We start by describing course-wide parameters, then break the course into chapters, and then go deeper and deeper until we reach a specific pset, video, etc. You could make an analogy to finding a green shirt in your house -> bedroom -> closet -> drawer -> shirts -> green shirt. - -We'll begin with a sample course structure as a case study of how XML and files in a course are organized. More technical details will follow, including discussion of some special cases. - -********** -Case Study -********** -Let's jump right in by looking at the directory structure of a very simple toy course:: - - toy/ - course/ - course.xml - problem/ - policies/ - roots/ - -The only top level file is `course.xml`, which should contain one line, looking something like this: - -.. code-block:: xml - - - -This gives all the information to uniquely identify a particular run of any course -- which organization is producing the course, what the course name is, and what "run" this is, specified via the `url_name` attribute. - -Obviously, this doesn't actually specify any of the course content, so we need to find that next. To know where to look, you need to know the standard organizational structure of our system: course elements are uniquely identified by the combination `(category, url_name)`. In this case, we are looking for a `course` element with the `url_name` "2012_Fall". The definition of this element will be in `course/2012_Fall.xml`. Let's look there next:: - - toy/ - course/ - 2012_Fall.xml # <-- Where we look for category="course", url_name="2012_Fall" - -.. code-block:: xml - - - - - - - - - - -Aha. Now we've found some content. We can see that the course is organized hierarchically, in this case with only one chapter, with `url_name` "Overview". The chapter contains a `videosequence` and a `video`, with the sequence containing a problem and another video. When viewed in the courseware, chapters are shown at the top level of the navigation accordion on the left, with any elements directly included in the chapter below. - -Looking at this file, we can see the course structure, and the youtube urls for the videos, but what about the "warmup" problem? There is no problem content here! Where should we look? This is a good time to pause and try to answer that question based on our organizational structure above. - -As you hopefully guessed, the problem would be in `problem/warmup.xml`. (Note: This tutorial doesn't discuss the xml format for problems -- there are chapters of edx4edx that describe it.) This is an instance of a *pointer tag*: any xml tag with only the category and a url_name attribute will point to the file `{category}/{url_name}.xml`. For example, this means that our toy `course.xml` could have also been written as - -.. code-block:: xml - - - - - - -with `chapter/Overview.xml` containing - -.. code-block:: xml - - - - - - - -In fact, this is the recommended structure for real courses -- putting each chapter into its own file makes it easy to have different people work on each without conflicting or having to merge. Similarly, as sequences get large, it can be handy to split them out as well (in `sequence/{url_name}.xml`, of course). - -Note that the `url_name` is only specified once per element -- either the inline definition, or in the pointer tag. - -Policy Files -============ - -We still haven't looked at two of the directories in the top-level listing above: `policies` and `roots`. Let's look at policies next. The policy directory contains one file:: - - toy/ - policies/ - 2012_Fall.json - -and that file is named `{course-url_name}.json`. As you might expect, this file contains a policy for the course. In our example, it looks like this: - -.. code-block:: json - - { - "course/2012_Fall": { - "graceperiod": "2 days 5 hours 59 minutes 59 seconds", - "start": "2015-07-17T12:00", - "display_name": "Toy Course" - }, - "chapter/Overview": { - "display_name": "Overview" - }, - "videosequence/Toy_Videos": { - "display_name": "Toy Videos", - "format": "Lecture Sequence" - }, - "problem/warmup": { - "display_name": "Getting ready for the semester" - }, - "video/Video_Resources": { - "display_name": "Video Resources" - }, - "video/Welcome": { - "display_name": "Welcome" - } - } - -The policy specifies metadata about the content elements -- things which are not inherent to the definition of the content, but which describe how the content is presented to the user and used in the course. See below for a full list of metadata attributes; as the example shows, they include `display_name`, which is what is shown when this piece of content is referenced or shown in the courseware, and various dates and times, like `start`, which specifies when the content becomes visible to students, and various problem-specific parameters like the allowed number of attempts. One important point is that some metadata is inherited: for example, specifying the start date on the course makes it the default for every element in the course. See below for more details. - -It is possible to put metadata directly in the XML, as attributes of the appropriate tag, but using a policy file has two benefits: it puts all the policy in one place, making it easier to check that things like due dates are set properly, and it allows the content definitions to be easily used in another run of the same course, with the same or similar content, but different policy. - -Roots -===== -The last directory in the top level listing is `roots`. In our toy course, it contains a single file:: - - roots/ - 2012_Fall.xml - -This file is identical to the top-level `course.xml`, containing - -.. code-block:: xml - - - -In fact, the top level `course.xml` is a symbolic link to this file. When there is only one run of a course, the roots directory is not really necessary, and the top-level course.xml file can just specify the `url_name` of the course. However, if we wanted to make a second run of our toy course, we could add another file called, e.g., `roots/2013_Spring.xml`, containing - -.. code-block:: xml - - - -After creating `course/2013_Spring.xml` with the course structure (possibly as a symbolic link or copy of `course/2012_Fall.xml` if no content was changing), and `policies/2013_Spring.json`, we would have two different runs of the toy course in the course repository. Our build system understands this roots structure, and will build a course package for each root. - -.. note:: - If you're using a local development environment, make the top level `course.xml` point to the desired root, and check out the repo multiple times if you need multiple runs simultaneously). - -That's basically all there is to the organizational structure. Read the next section for details on the tags we support, including some special case tags like `customtag` and `html` invariants, and look at the end for some tips that will make the editing process easier. - -**** -Tags -**** - - .. list-table:: - :widths: 10 80 - :header-rows: 0 - - * - `abtest` - - Support for A/B testing. TODO: add details.. - * - `chapter` - - Top level organization unit of a course. The courseware display code currently expects the top level `course` element to contain only chapters, though there is no philosophical reason why this is required, so we may change it to properly display non-chapters at the top level. - * - `conditional` - - Conditional element, which shows one or more modules only if certain conditions are satisfied. - * - `course` - - Top level tag. Contains everything else. - * - `customtag` - - Render an html template, filling in some parameters, and return the resulting html. See below for details. - * - `discussion` - - Inline discussion forum. - * - `html` - - A reference to an html file. - * - `error` - - Don't put these in by hand :) The internal representation of content that has an error, such as malformed XML or some broken invariant. - * - `problem` - - See elsewhere in edx4edx for documentation on the format. - * - `problemset` - - Logically, a series of related problems. Currently displayed vertically. May contain explanatory html, videos, etc. - * - `sequential` - - A sequence of content, currently displayed with a horizontal list of tabs. If possible, use a more semantically meaningful tag (currently, we only have `videosequence`). - * - `vertical` - - A sequence of content, displayed vertically. Content will be accessed all at once, on the right part of the page. No navigational bar. May have to use browser scroll bars. Content split with separators. If possible, use a more semantically meaningful tag (currently, we only have `problemset`). - * - `video` - - A link to a video, currently expected to be hosted on youtube. - * - `videosequence` - - A sequence of videos. This can contain various non-video content; it just signals to the system that this is logically part of an explanatory sequence of content, as opposed to say an exam sequence. - -Container Tags -============== -Container tags include `chapter`, `sequential`, `videosequence`, `vertical`, and `problemset`. They are all specified in the same way in the xml, as shown in the tutorial above. - -`course` -======== -`course` is also a container, and is similar, with one extra wrinkle: the top level pointer tag *must* have `org` and `course` attributes specified--the organization name, and course name. Note that `course` is referring to the platonic ideal of this course (e.g. "6.002x"), not to any particular run of this course. The `url_name` should be the particular run of this course. - -`conditional` -============= -`conditional` is as special kind of container tag as well. Here are two examples: - - .. code-block:: xml - - - - - - - - -The condition can be either `require_completed`, in which case the required modules must be completed, or `require_attempted`, in which case the required modules must have been attempted. - -The required modules are specified as a set of `tag`/`url_name`, joined by an ampersand. - -`customtag` -=========== -When we see: - - .. code-block:: xml - - - -We will: - -#. Look for a file called `custom_tags/special` in your course dir. -#. Render it as a mako template, passing parameters {'animal':'unicorn', 'hat':'blue'}, generating html. (Google `mako` for template syntax, or look at existing examples). - -Since `customtag` is already a pointer, there is generally no need to put it into a separate file--just use it in place: - - .. code-block:: xml - - - -`discussion` -============ -The discussion tag embeds an inline discussion module. The XML format is: - - .. code-block:: xml - - - -The meaning of each attribute is as follows: - - .. list-table:: - :widths: 10 80 - :header-rows: 0 - - * - `for` - - A string that describes the discussion. Purely for descriptive purposes (to the student). - * - `id` - - The identifier that the discussion forum service uses to refer to this inline discussion module. Since the `id` must be unique and lives in a common namespace with all other courses, the preferred convention is to use `__` as in the above example. The `id` should be "machine-friendly", e.g. use alphanumeric characters, underscores. Do **not** use a period (e.g. `6.002x_Fall_2012_Overview`). - * - `discussion_category` - - The inline module will be indexed in the main "Discussion" tab of the course. The inline discussions are organized into a directory-like hierarchy. Note that the forward slash indicates depth, as in conventional filesytems. In the above example, this discussion module will show up in the following "directory": `Week 1/Overview/Course overview` - -Note that the `for` tag has been appended to the end of the `discussion_category`. This can often lead into deeply nested subforums, which may not be intended. In the above example, if we were to use instead: - - .. code-block:: xml - - - -This discussion module would show up in the main forums as `Week 1 / Course overview`, which is more succinct. - -`html` -====== -Most of our content is in XML, but some HTML content may not be proper xml (all tags matched, single top-level tag, etc), since browsers are fairly lenient in what they'll display. So, there are two ways to include HTML content: - -* If your HTML content is in a proper XML format, just put it in `html/{url_name}.xml`. -* If your HTML content is not in proper XML format, you can put it in `html/{filename}.html`, and put `` in `html/{filename}.xml`. This allows another level of indirection, and makes sure that we can read the XML file and then just return the actual HTML content without trying to parse it. - -`video` -======= -Videos have an attribute `youtube`, which specifies a series of speeds + youtube video IDs: - - .. code-block:: xml - -
the text. - -The course content can then link to page 25 using the `customtag` element: - -.. code-block:: xml - - - - -HTML-based Textbooks -==================== - -Configuration -------------- - -HTML-based textbooks are configured at the course level in the policy file. The JSON markup consists of an array of maps, with each map corresponding to a separate textbook. There are two styles to presenting HTML-based material. The first way is as a single HTML on a tab, which requires only a tab title and a URL for configuration. A second way permits the display of multiple HTML files that should be displayed together on a single view. For this view, a side panel of links is available on the left, allowing selection of a particular HTML to view. - -.. code-block:: json - - "html_textbooks": [ - {"tab_title": "Textbook 1", - "url": "https://www.example.com/thiscourse/book1/book1.html" }, - {"tab_title": "Textbook 2", - "chapters": [ - { "title": "Chapter 1", "url": "https://www.example.com/thiscourse/book2/Chapter1.html" }, - { "title": "Chapter 2", "url": "https://www.example.com/thiscourse/book2/Chapter2.html" }, - { "title": "Chapter 3", "url": "https://www.example.com/thiscourse/book2/Chapter3.html" }, - { "title": "Chapter 4", "url": "https://www.example.com/thiscourse/book2/Chapter4.html" }, - { "title": "Chapter 5", "url": "https://www.example.com/thiscourse/book2/Chapter5.html" }, - { "title": "Chapter 6", "url": "https://www.example.com/thiscourse/book2/Chapter6.html" }, - { "title": "Chapter 7", "url": "https://www.example.com/thiscourse/book2/Chapter7.html" } - ] - } - ] - -Some notes: - -* It is not a good idea to include a top-level URL and chapter-level URLs in the same textbook configuration. - -Linking from Content --------------------- - -It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook, the chapter (if chapters are used), and the page number. For a book with no chapters, the URL is of the form `/course/htmlbook/${bookindex}`. For a book with chapters, use `/course/htmlbook/${bookindex}/chapter/${chapter}` for a specific chapter, or `/course/htmlbook/${bookindex}` will default to the first chapter. - -For example, for the book with no chapters configured above, the textbook can be reached using the URL `/course/htmlbook/0`. Reaching the third chapter of the second book is accomplished with `/course/htmlbook/1/chapter/3`. - -You can use a `customtag` to create a template for such links. For example, you can create a `htmlbook` template in the `customtag` directory, containing: - -.. code-block:: xml - - More information given in the text. - -And a `htmlchapter` template containing: - -.. code-block:: xml - - More information given in the text. - -The example pages can then be linked using the `customtag` element: - -.. code-block:: xml - - - - -PDF-based Textbooks -=================== - -Configuration -------------- - -PDF-based textbooks are configured at the course level in the policy file. The JSON markup consists of an array of maps, with each map corresponding to a separate textbook. There are two styles to presenting PDF-based material. The first way is as a single PDF on a tab, which requires only a tab title and a URL for configuration. A second way permits the display of multiple PDFs that should be displayed together on a single view. For this view, a side panel of links is available on the left, allowing selection of a particular PDF to view. - -.. code-block:: json - - "pdf_textbooks": [ - {"tab_title": "Textbook 1", - "url": "https://www.example.com/thiscourse/book1/book1.pdf" }, - {"tab_title": "Textbook 2", - "chapters": [ - { "title": "Chapter 1", "url": "https://www.example.com/thiscourse/book2/Chapter1.pdf" }, - { "title": "Chapter 2", "url": "https://www.example.com/thiscourse/book2/Chapter2.pdf" }, - { "title": "Chapter 3", "url": "https://www.example.com/thiscourse/book2/Chapter3.pdf" }, - { "title": "Chapter 4", "url": "https://www.example.com/thiscourse/book2/Chapter4.pdf" }, - { "title": "Chapter 5", "url": "https://www.example.com/thiscourse/book2/Chapter5.pdf" }, - { "title": "Chapter 6", "url": "https://www.example.com/thiscourse/book2/Chapter6.pdf" }, - { "title": "Chapter 7", "url": "https://www.example.com/thiscourse/book2/Chapter7.pdf" } - ] - } - ] - -Some notes: - -* It is not a good idea to include a top-level URL and chapter-level URLs in the same textbook configuration. - -Linking from Content --------------------- - -It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook, the chapter (if chapters are used), and the page number. For a book with no chapters, the URL is of the form `/course/pdfbook/${bookindex}/$page}`. For a book with chapters, use `/course/pdfbook/${bookindex}/chapter/${chapter}/${page}`. If the page is omitted from the URL, the first page is assumed. - -For example, for the book with no chapters configured above, page 25 can be reached using the URL `/course/pdfbook/0/25`. Reaching page 19 in the third chapter of the second book is accomplished with `/course/pdfbook/1/chapter/3/19`. - -You can use a `customtag` to create a template for such links. For example, you can create a `pdfbook` template in the `customtag` directory, containing: - -.. code-block:: xml - - More information given in the text. - -And a `pdfchapter` template containing: - -.. code-block:: xml - - More information given in the text. - -The example pages can then be linked using the `customtag` element: - -.. code-block:: xml - - - - - -************************************* -Other file locations (info and about) -************************************* -With different course runs, we may want different course info and about materials. This is now supported by putting files in as follows:: - - / - about/ - foo.html -- shared default for all runs - url_name1/ - foo.html -- version used for url_name1 - bar.html -- bar for url_name1 - url_name2/ - bar.html -- bar for url_name2 - -- url_name2 will use default foo.html - -and the same works for the `info` directory. - - -*************************** -Tips for content developers -*************************** - -#. We will be making better tools for managing policy files soon. In the meantime, you can add dummy definitions to make it easier to search and separate the file visually. For example, you could add `"WEEK 1" : "###################"`, before the week 1 material to make it easy to find in the file. - -#. Come up with a consistent pattern for url_names, so that it's easy to know where to look for any piece of content. It will also help to come up with a standard way of splitting your content files. As a point of departure, we suggest splitting chapters, sequences, html, and problems into separate files. - -#. Prefer the most "semantic" name for containers: e.g., use problemset rather than sequential for a problem set. That way, if we decide to display problem sets differently, we don't have to change the XML. - diff --git a/_sources/course_data_formats/custom_response.txt b/_sources/course_data_formats/custom_response.txt deleted file mode 100644 index b59e671f41..0000000000 --- a/_sources/course_data_formats/custom_response.txt +++ /dev/null @@ -1,142 +0,0 @@ -#################################### -CustomResponse XML and Python Script -#################################### - -This document explains how to write a CustomResponse problem. CustomResponse -problems execute Python script to check student answers and provide hints. - -There are two general ways to create a CustomResponse problem: - - -***************** -Answer tag format -***************** -One format puts the Python code in an ```` tag: - -.. code-block:: xml - - -

What is the sum of 2 and 3?

- - - - - - - # Python script goes here - -
- - -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``, then ``answers[0]`` would - equal ``6``. - * ``expect``: The value of the ``expect`` attribute of ```` - (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 message strings that will be displayed - beneath each input. You can use this to provide hints to users. - For example ``messages[0] = "The capital of California is Sacramento"`` - would display that message beneath the first input of the response. - * ``overall_message``: A string that will be displayed beneath the - entire problem. You can use this to provide a hint that applies - to the entire problem rather than a particular input. - -Example of a checking script: - -.. code-block:: python - - 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' - -**Important**: Python is picky about indentation. Within the ```` tag, -you must begin your script with no indentation. - -***************** -Script tag format -***************** -The other way to create a CustomResponse is to put a "checking function" -in a `` - - - -**Important**: Python is picky about indentation. Within the `` - - - - - - - - - - -
- -
- -
-
-
-
- -
-

Xml format of conditional module [xmodule]

-
-

Format description

-

The main tag of Conditional module input is:

-
<conditional> ... </conditional>
-
-
-

conditional can include any number of any xmodule tags (html, video, poll, etc.) or show tags.

-
-

conditional tag

-

The main container for a single instance of 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.
-
-[completed] - map to `is_completed` module method
-[attempted] - map to `is_attempted` module method
-[poll_answer] - map to `poll_answer` module attribute
-[voted] - map to `voted` module attribute
-
-
-
-

show tag

-

Symlink to some set of xmodules. The following attributes can -be specified for this tag:

-
sources - location id of modules, separated by ';'
-
-
-
-
-

Example

-
-

Examples of conditional depends on poll

-
<conditional sources="i4x://MITx/0.000x/poll_question/first_real_poll_seq_with_reset" poll_answer="man"
-message="{link} must be answered for this to become visible.">
-    <html>
-        <h2>You see this, cause your vote value for "First question" was "man"</h2>
-    </html>
-</conditional>
-
-
-
-
-

Examples of conditional depends on poll (use <show> tag)

-
<conditional sources="i4x://MITx/0.000x/poll_question/first_real_poll_seq_with_reset" poll_answer="man"
-message="{link} must be answered for this to become visible.">
-    <html>
-        <show sources="i4x://MITx/0.000x/problem/test_1; i4x://MITx/0.000x/Video/Avi_resources; i4x://MITx/0.000x/problem/test_1"/>
-    </html>
-</conditional>
-
-
-
-
-

Examples of conditional depends on problem

-
<conditional sources="i4x://MITx/0.000x/problem/Conditional:lec27_Q1" attempted="True">
-    <html display_name="HTML for attempted problem">You see this, cause "lec27_Q1" is attempted.</html>
-</conditional>
-<conditional sources="i4x://MITx/0.000x/problem/Conditional:lec27_Q1" attempted="False">
-    <html display_name="HTML for not attempted problem">You see this, cause "lec27_Q1" is not attempted.</html>
-</conditional>
-
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/course_xml.html b/course_data_formats/course_xml.html deleted file mode 100644 index bd4aa20f55..0000000000 --- a/course_data_formats/course_xml.html +++ /dev/null @@ -1,940 +0,0 @@ - - - - - - - - - - Course XML Tutorial — edX Data 0.1 documentation - - - - - - - - - - - - - - - - - -
-
-
-
- -
-

Course XML Tutorial

-

EdX uses an XML format to describe the structure and contents of its courses. While much of this is abstracted away by the Studio authoring interface, it is still helpful to understand how the edX platform renders a course.

-

This guide was written with the assumption that you’ve dived straight into the edX platform without necessarily having any prior programming/CS knowledge. It will be especially valuable to you if your course is being authored with XML files rather than Studio – in which case you’re likely using functionality that is not yet fully supported in Studio.

-
-

Goals

-

After reading this, you should be able to:

-
    -
  • Organize your course content into the files and folders the edX platform expects.
  • -
  • Add new content to a course and make sure it shows up in the courseware.
  • -
-

Prerequisites: it would be helpful to know a little bit about xml. Here is a -simple example if you’ve never seen it before.

-
-
-

Introduction

-

A course is organized hierarchically. We start by describing course-wide parameters, then break the course into chapters, and then go deeper and deeper until we reach a specific pset, video, etc. You could make an analogy to finding a green shirt in your house -> bedroom -> closet -> drawer -> shirts -> green shirt.

-

We’ll begin with a sample course structure as a case study of how XML and files in a course are organized. More technical details will follow, including discussion of some special cases.

-
-
-

Case Study

-

Let’s jump right in by looking at the directory structure of a very simple toy course:

-
toy/
-    course/
-    course.xml
-    problem/
-    policies/
-    roots/
-
-

The only top level file is course.xml, which should contain one line, looking something like this:

-
<course org="edX" course="toy" url_name="2012_Fall"/>
-
-
-

This gives all the information to uniquely identify a particular run of any course – which organization is producing the course, what the course name is, and what “run” this is, specified via the url_name attribute.

-

Obviously, this doesn’t actually specify any of the course content, so we need to find that next. To know where to look, you need to know the standard organizational structure of our system: course elements are uniquely identified by the combination (category, url_name). In this case, we are looking for a course element with the url_name “2012_Fall”. The definition of this element will be in course/2012_Fall.xml. Let’s look there next:

-
toy/
-    course/
-           2012_Fall.xml # <-- Where we look for category="course", url_name="2012_Fall"
-
-
<!-- Contents of course/2012_Fall.xml -->
-<course>
-  <chapter url_name="Overview">
-    <videosequence url_name="Toy_Videos">
-      <problem url_name="warmup"/>
-      <video url_name="Video_Resources" youtube="1.0:1bK-WdDi6Qw"/>
-    </videosequence>
-    <video url_name="Welcome" youtube="1.0:p2Q6BrNhdh8"/>
-  </chapter>
-</course>
-
-
-

Aha. Now we’ve found some content. We can see that the course is organized hierarchically, in this case with only one chapter, with url_name “Overview”. The chapter contains a videosequence and a video, with the sequence containing a problem and another video. When viewed in the courseware, chapters are shown at the top level of the navigation accordion on the left, with any elements directly included in the chapter below.

-

Looking at this file, we can see the course structure, and the youtube urls for the videos, but what about the “warmup” problem? There is no problem content here! Where should we look? This is a good time to pause and try to answer that question based on our organizational structure above.

-

As you hopefully guessed, the problem would be in problem/warmup.xml. (Note: This tutorial doesn’t discuss the xml format for problems – there are chapters of edx4edx that describe it.) This is an instance of a pointer tag: any xml tag with only the category and a url_name attribute will point to the file {category}/{url_name}.xml. For example, this means that our toy course.xml could have also been written as

-
<!-- Contents of course/2012_Fall.xml -->
-<course>
-  <chapter url_name="Overview"/>
-</course>
-
-
-

with chapter/Overview.xml containing

-
<chapter>
-  <videosequence url_name="Toy_Videos">
-    <problem url_name="warmup"/>
-    <video url_name="Video_Resources" youtube="1.0:1bK-WdDi6Qw"/>
-  </videosequence>
-  <video url_name="Welcome" youtube="1.0:p2Q6BrNhdh8"/>
-</chapter>
-
-
-

In fact, this is the recommended structure for real courses – putting each chapter into its own file makes it easy to have different people work on each without conflicting or having to merge. Similarly, as sequences get large, it can be handy to split them out as well (in sequence/{url_name}.xml, of course).

-

Note that the url_name is only specified once per element – either the inline definition, or in the pointer tag.

-
-

Policy Files

-

We still haven’t looked at two of the directories in the top-level listing above: policies and roots. Let’s look at policies next. The policy directory contains one file:

-
toy/
-    policies/
-             2012_Fall.json
-
-

and that file is named {course-url_name}.json. As you might expect, this file contains a policy for the course. In our example, it looks like this:

-
{
-    "course/2012_Fall": {
-        "graceperiod": "2 days 5 hours 59 minutes 59 seconds",
-        "start": "2015-07-17T12:00",
-        "display_name": "Toy Course"
-    },
-    "chapter/Overview": {
-        "display_name": "Overview"
-    },
-    "videosequence/Toy_Videos": {
-        "display_name": "Toy Videos",
-        "format": "Lecture Sequence"
-    },
-    "problem/warmup": {
-        "display_name": "Getting ready for the semester"
-    },
-    "video/Video_Resources": {
-        "display_name": "Video Resources"
-    },
-    "video/Welcome": {
-        "display_name": "Welcome"
-    }
-}
-
-
-

The policy specifies metadata about the content elements – things which are not inherent to the definition of the content, but which describe how the content is presented to the user and used in the course. See below for a full list of metadata attributes; as the example shows, they include display_name, which is what is shown when this piece of content is referenced or shown in the courseware, and various dates and times, like start, which specifies when the content becomes visible to students, and various problem-specific parameters like the allowed number of attempts. One important point is that some metadata is inherited: for example, specifying the start date on the course makes it the default for every element in the course. See below for more details.

-

It is possible to put metadata directly in the XML, as attributes of the appropriate tag, but using a policy file has two benefits: it puts all the policy in one place, making it easier to check that things like due dates are set properly, and it allows the content definitions to be easily used in another run of the same course, with the same or similar content, but different policy.

-
-
-

Roots

-

The last directory in the top level listing is roots. In our toy course, it contains a single file:

-
roots/
-      2012_Fall.xml
-
-

This file is identical to the top-level course.xml, containing

-
<course org="edX" course="toy" url_name="2012_Fall"/>
-
-
-

In fact, the top level course.xml is a symbolic link to this file. When there is only one run of a course, the roots directory is not really necessary, and the top-level course.xml file can just specify the url_name of the course. However, if we wanted to make a second run of our toy course, we could add another file called, e.g., roots/2013_Spring.xml, containing

-
<course org="edX" course="toy" url_name="2013_Spring"/>
-
-
-

After creating course/2013_Spring.xml with the course structure (possibly as a symbolic link or copy of course/2012_Fall.xml if no content was changing), and policies/2013_Spring.json, we would have two different runs of the toy course in the course repository. Our build system understands this roots structure, and will build a course package for each root.

-
-

Note

-

If you’re using a local development environment, make the top level course.xml point to the desired root, and check out the repo multiple times if you need multiple runs simultaneously).

-
-

That’s basically all there is to the organizational structure. Read the next section for details on the tags we support, including some special case tags like customtag and html invariants, and look at the end for some tips that will make the editing process easier.

-
-
-
-

Tags

-
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
abtestSupport for A/B testing. TODO: add details..
chapterTop level organization unit of a course. The courseware display code currently expects the top level course element to contain only chapters, though there is no philosophical reason why this is required, so we may change it to properly display non-chapters at the top level.
conditionalConditional element, which shows one or more modules only if certain conditions are satisfied.
courseTop level tag. Contains everything else.
customtagRender an html template, filling in some parameters, and return the resulting html. See below for details.
discussionInline discussion forum.
htmlA reference to an html file.
errorDon’t put these in by hand :) The internal representation of content that has an error, such as malformed XML or some broken invariant.
problemSee elsewhere in edx4edx for documentation on the format.
problemsetLogically, a series of related problems. Currently displayed vertically. May contain explanatory html, videos, etc.
sequentialA sequence of content, currently displayed with a horizontal list of tabs. If possible, use a more semantically meaningful tag (currently, we only have videosequence).
verticalA sequence of content, displayed vertically. Content will be accessed all at once, on the right part of the page. No navigational bar. May have to use browser scroll bars. Content split with separators. If possible, use a more semantically meaningful tag (currently, we only have problemset).
videoA link to a video, currently expected to be hosted on youtube.
videosequenceA sequence of videos. This can contain various non-video content; it just signals to the system that this is logically part of an explanatory sequence of content, as opposed to say an exam sequence.
-
-
-

Container Tags

-

Container tags include chapter, sequential, videosequence, vertical, and problemset. They are all specified in the same way in the xml, as shown in the tutorial above.

-
-
-

course

-

course is also a container, and is similar, with one extra wrinkle: the top level pointer tag must have org and course attributes specified–the organization name, and course name. Note that course is referring to the platonic ideal of this course (e.g. “6.002x”), not to any particular run of this course. The url_name should be the particular run of this course.

-
-
-

conditional

-

conditional is as special kind of container tag as well. Here are two examples:

-
-
<conditional condition="require_completed" required="problem/choiceprob">
-  <video url_name="secret_video" />
-</conditional>
-
-<conditional condition="require_attempted" required="problem/choiceprob&problem/sumprob">
-  <html url_name="secret_page" />
-</conditional>
-
-
-
-

The condition can be either require_completed, in which case the required modules must be completed, or require_attempted, in which case the required modules must have been attempted.

-

The required modules are specified as a set of tag/url_name, joined by an ampersand.

-
-
-

customtag

-

When we see:

-
-
<customtag impl="special" animal="unicorn" hat="blue"/>
-
-
-
-

We will:

-
    -
  1. Look for a file called custom_tags/special in your course dir.
  2. -
  3. Render it as a mako template, passing parameters {‘animal’:’unicorn’, ‘hat’:’blue’}, generating html. (Google mako for template syntax, or look at existing examples).
  4. -
-

Since customtag is already a pointer, there is generally no need to put it into a separate file–just use it in place:

-
-
<customtag url_name="my_custom_tag" impl="blah" attr1="..."/>
-
-
-
-
-
-

discussion

-

The discussion tag embeds an inline discussion module. The XML format is:

-
-
<discussion for="Course overview" id="6002x_Fall_2012_Overview" discussion_category="Week 1/Overview" />
-
-
-
-

The meaning of each attribute is as follows:

-
-
---- - - - - - - - - - - - -
forA string that describes the discussion. Purely for descriptive purposes (to the student).
idThe identifier that the discussion forum service uses to refer to this inline discussion module. Since the id must be unique and lives in a common namespace with all other courses, the preferred convention is to use <course_name>_<course_run>_<descriptor> as in the above example. The id should be “machine-friendly”, e.g. use alphanumeric characters, underscores. Do not use a period (e.g. 6.002x_Fall_2012_Overview).
discussion_categoryThe inline module will be indexed in the main “Discussion” tab of the course. The inline discussions are organized into a directory-like hierarchy. Note that the forward slash indicates depth, as in conventional filesytems. In the above example, this discussion module will show up in the following “directory”: Week 1/Overview/Course overview
-
-

Note that the for tag has been appended to the end of the discussion_category. This can often lead into deeply nested subforums, which may not be intended. In the above example, if we were to use instead:

-
-
<discussion for="Course overview" id="6002x_Fall_2012_Overview" discussion_category="Week 1" />
-
-
-
-

This discussion module would show up in the main forums as Week 1 / Course overview, which is more succinct.

-
-
-

html

-

Most of our content is in XML, but some HTML content may not be proper xml (all tags matched, single top-level tag, etc), since browsers are fairly lenient in what they’ll display. So, there are two ways to include HTML content:

-
    -
  • If your HTML content is in a proper XML format, just put it in html/{url_name}.xml.
  • -
  • If your HTML content is not in proper XML format, you can put it in html/{filename}.html, and put <html filename={filename} /> in html/{filename}.xml. This allows another level of indirection, and makes sure that we can read the XML file and then just return the actual HTML content without trying to parse it.
  • -
-
-
-

video

-

Videos have an attribute youtube, which specifies a series of speeds + youtube video IDs:

-
-
<video youtube="0.75:1yk1A8-FPbw,1.0:vNMrbPvwhU4,1.25:gBW_wqe7rDc,1.50:7AE_TKgaBwA"
-       url_name="S15V14_Response_to_impulse_limit_case"/>
-
-
-
-

This video has been encoded at 4 different speeds: 0.75x, 1x, 1.25x, and 1.5x.

-
-
-

More on url_name

-

Every content element (within a course) should have a unique id. This id is formed as {category}/{url_name}, or automatically generated from the content if url_name is not specified. Categories are the different tag types (‘chapter’, ‘problem’, ‘html’, ‘sequential’, etc). Url_name is a string containing a-z, A-Z, dot (.), underscore (_), and ‘:’. This is what appears in urls that point to this object.

-

Colon (‘:’) is special–when looking for the content definition in an xml, ‘:’ will be replaced with ‘/’. This allows organizing content into folders. For example, given the pointer tag

-
-
<problem url_name="conceptual:add_apples_and_oranges"/>
-
-
-
-

we would look for the problem definition in problem/conceptual/add_apples_and_oranges.xml. (There is a technical reason why we can’t just allow ‘/’ in the url_name directly.)

-
-

Important

-

A student’s state for a particular content element is tied to the element ID, so automatic ID generation is only ok for elements that do not need to store any student state (e.g. verticals or customtags). For problems, sequentials, and videos, and any other element where we keep track of what the student has done and where they are at, you should specify a unique url_name. Of course, any content element that is split out into a file will need a url_name to specify where to find the definition.

-
-
-
-
-

Policy Files

-
    -
  • A policy file is useful when running different versions of a course e.g. internal, external, fall, spring, etc. as you can change due dates, etc, by creating multiple policy files.
  • -
  • A policy file provides information on the metadata of the course–things that are not inherent to the definitions of the contents, but that may vary from run to run.
  • -
  • Note: We will be expanding our understanding and format for metadata in the not-too-distant future, but for now it is simply a set of key-value pairs.
  • -
-
-

Locations

-
    -
  • The policy for a course run some_url_name should live in policies/some_url_name/policy.json (NOTE: the old format of putting it in policies/some_url_name.json will also work, but we suggest using the subdirectory to have all the per-course policy files in one place)
  • -
  • Grading policy files go in policies/some_url_name/grading_policy.json (if there’s only one course run, can also put it directly in the course root: /grading_policy.json)
  • -
-
-
-

Contents

-
    -
  • The file format is JSON, and is best shown by example, as in the tutorial above.
  • -
  • The expected contents are a dictionary mapping from keys to values (syntax { key : value, key2 : value2, etc})
  • -
  • Keys are in the form {category}/{url_name}, which should uniquely identify a content element. Values are dictionaries of the form {“metadata-key” : “metadata-value”}.
  • -
  • The order in which things appear does not matter, though it may be helpful to organize the file in the same order as things appear in the content.
  • -
  • NOTE: JSON is picky about commas. If you have trailing commas before closing braces, it will complain and refuse to parse the file. This can be irritating at first.
  • -
-
-
-

Supported fields at the course level

-
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
startspecify the start date for the course. Format-by-example: “2012-09-05T12:00”.
advertised_startspecify what you want displayed as the start date of the course in the course listing and course about pages. This can be useful if you want to let people in early before the formal start. Format-by-example: “2012-09-05T12:”00.
disable_policy_graphset to true (or “Yes”), if the policy graph should be disabled (ie not shown).
enrollment_start, enrollment_end– when can students enroll? (if not specified, can enroll anytime). Same format as start.
endspecify the end date for the course. Format-by-example: “2012-11-05T12:00”.
end_of_course_survey_urla url for an end of course survey – shown after course is over, next to certificate download links.
tabshave custom tabs in the courseware. See below for details on config.
discussion_blackoutsAn array of time intervals during which you want to disable a student’s ability to create or edit posts in the forum. Moderators, Community TAs, and Admins are unaffected. You might use this during exam periods, but please be aware that the forum is often a very good place to catch mistakes and clarify points to students. The better long term solution would be to have better flagging/moderation mechanisms, but this is the hammer we have today. Format by example: [[“2012-10-29T04:00”, “2012-11-03T04:00”], [“2012-12-30T04:00”, “2013-01-02T04:00”]]
show_calculator(value “Yes” if desired)
days_early_for_betanumber of days (floating point ok) early that students in the beta-testers group get to see course content. Can also be specified for any other course element, and overrides values set at higher levels.
cohort_config
    -
  • cohorted : boolean. Set to true if this course uses student cohorts. If so, all inline discussions are automatically cohorted, and top-level discussion topics are configurable via the cohorted_discussions list. Default is not cohorted).
  • -
  • cohorted_discussions: list of discussions that should be cohorted. Any not specified in this list are not cohorted.
  • -
  • auto_cohort: Truthy.
  • -
  • auto_cohort_groups: [“group name 1”, “group name 2”, ...] If cohorted and auto_cohort is true, automatically put each student into a random group from the auto_cohort_groups list, creating the group if needed.
  • -
-
pdf_textbookshave pdf-based textbooks on tabs in the courseware. See below for details on config.
html_textbookshave html-based textbooks on tabs in the courseware. See below for details on config.
-
-
-
-

Available metadata

-
-

Not Inherited

-
-
display_name
-
Name that will appear when this content is displayed in the courseware. Useful for all tag types.
-
format
-
Subheading under display name – currently only displayed for chapter sub-sections. Also used by the the grader to know how to process students assessments that the section contains. New formats can be defined as a ‘type’ in the GRADER variable in course_settings.json. Optional. (TODO: double check this–what’s the current behavior?)
-
hide_from_toc
-
If set to true for a chapter or chapter subsection, will hide that element from the courseware navigation accordion. This is useful if you’d like to link to the content directly instead (e.g. for tutorials)
-
ispublic
-
Specify whether the course is public. You should be able to use start dates instead (?)
-
-
-
-

Inherited

-
-
start
-
When this content should be shown to students. Note that anyone with staff access to the course will always see everything.
-
showanswer
-
When to show answer. For ‘attempted’, will show answer after first attempt. Values: never, attempted, answered, closed. Default: closed. Optional.
-
graded
-
Whether this section will count towards the students grade. “true” or “false”. Defaults to “false”.
-
rerandomize
-

Randomize question on each attempt. Optional. Possible values:

-
-
always (default)
-
Students see a different version of the problem after each attempt to solve it.
-
onreset
-
Randomize question when reset button is pressed by the student.
-
never
-
All students see the same version of the problem.
-
per_student
-
Individual students see the same version of the problem each time the look at it, but that version is different from what other students see.
-
due
-
Due date for assignment. Assignment will be closed after that. Values: valid date. Default: none. Optional.
-
attempts
-
Number of allowed attempts. Values: integer. Default: infinite. Optional.
-
graceperiod
-
A default length of time that the problem is still accessible after the due date in the format “2 days 3 hours” or “1 day 15 minutes”. Note, graceperiods are currently the easiest way to handle time zones. Due dates are all expressed in UTC.
-
xqa_key
-
For integration with Ike’s content QA server. – should typically be specified at the course level.
-
-
-
-
-
-

Inheritance example

-

This is a sketch (“tue” is not a valid start date), that should help illustrate how metadata inheritance works.

-
-
<course start="tue">
-  <chap1> -- start tue
-    <problem>   --- start tue
-  </chap1>
-  <chap2 start="wed">  -- start wed
-   <problem2 start="thu">  -- start thu
-   <problem3>      -- start wed
-  </chap2>
-</course>
-
-
-
-
-
-

Specifying metadata in the XML file

-

Metadata can also live in the xml files, but anything defined in the policy file overrides anything in the XML. This is primarily for backwards compatibility, and you should probably not use both. If you do leave some metadata tags in the xml, you should be consistent (e.g. if display_name stays in XML, they should all stay in XML. Note display_name should be specified in the problem xml definition itself, ie, <problem display_name=”Title”>Problem Text</problem>, in file ProblemFoo.xml).

-
-

Note

-

Some xml attributes are not metadata. e.g. in <video youtube=”xyz987293487293847”/>, the youtube attribute specifies what video this is, and is logically part of the content, not the policy, so it should stay in the xml.

-
-

Another example policy file:

-
{
-    "course/2012": {
-        "graceperiod": "1 day",
-        "start": "2012-10-15T12:00",
-        "display_name": "Introduction to Computer Science I",
-        "xqa_key": "z1y4vdYcy0izkoPeihtPClDxmbY1ogDK"
-    },
-    "chapter/Week_0": {
-        "display_name": "Week 0"
-    },
-    "sequential/Pre-Course_Survey": {
-        "display_name": "Pre-Course Survey",
-        "format": "Survey"
-    }
-}
-
-
-
-
-

Deprecated Formats

-

If you look at some older xml, you may see some tags or metadata attributes that aren’t listed above. They are deprecated, and should not be used in new content. We include them here so that you can understand how old-format content works.

-
-
Obsolete Tags
-
-
section
-
This used to be necessary within chapters. Now, you can just use any standard tag inside a chapter, so use the container tag that makes the most sense for grouping content–e.g. problemset, videosequence, and just include content directly if it belongs inside a chapter (e.g. html, video, problem)
-
videodev, book, slides, image, discuss
-
There used to be special purpose tags that all basically did the same thing, and have been subsumed by customtag. The list is videodev, book, slides, image, discuss. Use customtag in new content. (e.g. instead of <book page=”12”/>, use <customtag impl=”book” page=”12”/>)
-
-
-
-
Obsolete Attributes
-
-
slug
-
Old term for url_name. Use url_name
-
name
-
We didn’t originally have a distinction between url_name and display_name – this made content element ids fragile, so please use url_name as a stable unique identifier for the content, and display_name as the particular string you’d like to display for it.
-
-
-
-
-
- -
-

Tabs

-

If you want to customize the courseware tabs displayed for your course, specify a “tabs” list in the course-level policy, like the following example:

-
"tabs" : [
-  {"type": "courseware"},
-  {
-    "type": "course_info",
-    "name": "Course Info"
-  },
-  {
-    "type": "external_link",
-    "name": "My Discussion",
-    "link": "http://www.mydiscussion.org/blah"
-  },
-  {"type": "progress", "name": "Progress"},
-  {"type": "wiki", "name": "Wonderwiki"},
-  {
-    "type": "static_tab",
-    "url_slug": "news",
-    "name": "Exciting news"
-  },
-  {"type": "textbooks"},
-  {"type": "html_textbooks"},
-  {"type": "pdf_textbooks"}
-]
-
-
    -
  • If you specify any tabs, you must specify all tabs. They will appear in the order given.
  • -
  • The first two tabs must have types “courseware” and “course_info”, in that order, or the course will not load.
  • -
  • The courseware tab never has a name attribute – it’s always rendered as “Courseware” for consistency between courses.
  • -
  • The textbooks tab will actually generate one tab per textbook, using the textbook titles as names.
  • -
  • The html_textbooks tab will actually generate one tab per html_textbook. The tab name is found in the html textbook definition.
  • -
  • The pdf_textbooks tab will actually generate one tab per pdf_textbook. The tab name is found in the pdf textbook definition.
  • -
  • For static tabs, the url_slug will be the url that points to the tab. It can not be one of the existing courseware url types (even if those aren’t used in your course). The static content will come from tabs/{course_url_name}/{url_slug}.html, or tabs/{url_slug}.html if that doesn’t exist.
  • -
  • An Instructor tab will be automatically added at the end for course staff users.
  • -
- - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Supported Tabs and Parameters
coursewareNo other parameters.
course_infoParameter name.
wikiParameter name.
discussionParameter name.
external_linkParameters name, link.
textbooksNo parameters–generates tab names from book titles.
html_textbooksNo parameters–generates tab names from html book definition. (See discussion below for configuration.)
pdf_textbooksNo parameters–generates tab names from pdf book definition. (See discussion below for configuration.)
progressParameter name.
static_tabParameters name, url_slug–will look for tab contents in ‘tabs/{course_url_name}/{tab url_slug}.html’
staff_gradingNo parameters. If specified, displays the staff grading tab for instructors.
-
-
-

Textbooks

-

Support is currently provided for image-based, HTML-based and PDF-based textbooks. In addition to enabling the display of textbooks in tabs (see above), specific information about the location of textbook content must be configured.

-
-

Image-based Textbooks

-
-

Configuration

-

Image-based textbooks are configured at the course level in the XML markup. Here is an example:

-
<course>
-  <textbook title="Textbook 1" book_url="https://www.example.com/textbook_1/" />
-  <textbook title="Textbook 2" book_url="https://www.example.com/textbook_2/" />
-  <chapter url_name="Overview">
-  <chapter url_name="First week">
-</course>
-
-
-

Each textbook element is displayed on a different tab. The title attribute is used as the tab’s name, and the book_url attribute points to the remote directory that contains the images of the text. Note the trailing slash on the end of the book_url attribute.

-

The images must be stored in the same directory as the book_url, with filenames matching pXXX.png, where XXX is a three-digit number representing the page number (with leading zeroes as necessary). Pages start at p001.png.

-

Each textbook must also have its own table of contents. This is read from the book_url location, by appending toc.xml. This file contains a table_of_contents parent element, with entry elements nested below it. Each entry has attributes for name, page_label, and page, as well as an optional chapter attribute. An arbitrary number of levels of nesting of entry elements within other entry elements is supported, but you’re likely to only want two levels. The page represents the actual page to link to, while the page_label matches the displayed page number on that page. Here’s an example:

-
<table_of_contents>
-  <entry page="1" page_label="i" name="Title" />
-  <entry page="2" page_label="ii" name="Preamble">
-    <entry page="2" page_label="ii" name="Copyright"/>
-    <entry page="3" page_label="iii" name="Brief Contents"/>
-    <entry page="5" page_label="v" name="Contents"/>
-    <entry page="9" page_label="1" name="About the Authors"/>
-    <entry page="10" page_label="2" name="Acknowledgments"/>
-    <entry page="11" page_label="3" name="Dedication"/>
-    <entry page="12" page_label="4" name="Preface"/>
-  </entry>
-  <entry page="15" page_label="7" name="Introduction to edX" chapter="1">
-    <entry page="15" page_label="7" name="edX in the Modern World"/>
-    <entry page="18" page_label="10" name="The edX Method"/>
-    <entry page="18" page_label="10" name="A Description of edX"/>
-    <entry page="29" page_label="21" name="A Brief History of edX"/>
-    <entry page="51" page_label="43" name="Introduction to edX"/>
-    <entry page="56" page_label="48" name="Endnotes"/>
-  </entry>
-  <entry page="73" page_label="65" name="Art and Photo Credits" chapter="30">
-    <entry page="73" page_label="65" name="Molecular Models"/>
-    <entry page="73" page_label="65" name="Photo Credits"/>
-  </entry>
-  <entry page="77" page_label="69" name="Index" />
-</table_of_contents>
-
-
-
-
-

Linking from Content

-

It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook and the page number. The URL is of the form /course/book/${bookindex}/$page}. If the page is omitted from the URL, the first page is assumed.

-

You can use a customtag to create a template for such links. For example, you can create a book template in the customtag directory, containing:

-
<img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/book/${book}/${page}">the text</a>.
-
-
-

The course content can then link to page 25 using the customtag element:

-
<customtag book="0" page="25" impl="book"/>
-
-
-
-
-
-

HTML-based Textbooks

-
-

Configuration

-

HTML-based textbooks are configured at the course level in the policy file. The JSON markup consists of an array of maps, with each map corresponding to a separate textbook. There are two styles to presenting HTML-based material. The first way is as a single HTML on a tab, which requires only a tab title and a URL for configuration. A second way permits the display of multiple HTML files that should be displayed together on a single view. For this view, a side panel of links is available on the left, allowing selection of a particular HTML to view.

-
"html_textbooks": [
-  {"tab_title": "Textbook 1",
-   "url": "https://www.example.com/thiscourse/book1/book1.html" },
-  {"tab_title": "Textbook 2",
-   "chapters": [
-       { "title": "Chapter 1", "url": "https://www.example.com/thiscourse/book2/Chapter1.html" },
-       { "title": "Chapter 2", "url": "https://www.example.com/thiscourse/book2/Chapter2.html" },
-       { "title": "Chapter 3", "url": "https://www.example.com/thiscourse/book2/Chapter3.html" },
-       { "title": "Chapter 4", "url": "https://www.example.com/thiscourse/book2/Chapter4.html" },
-       { "title": "Chapter 5", "url": "https://www.example.com/thiscourse/book2/Chapter5.html" },
-       { "title": "Chapter 6", "url": "https://www.example.com/thiscourse/book2/Chapter6.html" },
-       { "title": "Chapter 7", "url": "https://www.example.com/thiscourse/book2/Chapter7.html" }
-       ]
-  }
-]
-
-

Some notes:

-
    -
  • It is not a good idea to include a top-level URL and chapter-level URLs in the same textbook configuration.
  • -
-
-
-

Linking from Content

-

It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook, the chapter (if chapters are used), and the page number. For a book with no chapters, the URL is of the form /course/htmlbook/${bookindex}. For a book with chapters, use /course/htmlbook/${bookindex}/chapter/${chapter} for a specific chapter, or /course/htmlbook/${bookindex} will default to the first chapter.

-

For example, for the book with no chapters configured above, the textbook can be reached using the URL /course/htmlbook/0. Reaching the third chapter of the second book is accomplished with /course/htmlbook/1/chapter/3.

-

You can use a customtag to create a template for such links. For example, you can create a htmlbook template in the customtag directory, containing:

-
<img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/htmlbook/${book}">the text</a>.
-
-
-

And a htmlchapter template containing:

-
<img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/htmlbook/${book}/chapter/${chapter}">the text</a>.
-
-
-

The example pages can then be linked using the customtag element:

-
<customtag book="0" impl="htmlbook"/>
-<customtag book="1" chapter="3" impl="htmlchapter"/>
-
-
-
-
-
-

PDF-based Textbooks

-
-

Configuration

-

PDF-based textbooks are configured at the course level in the policy file. The JSON markup consists of an array of maps, with each map corresponding to a separate textbook. There are two styles to presenting PDF-based material. The first way is as a single PDF on a tab, which requires only a tab title and a URL for configuration. A second way permits the display of multiple PDFs that should be displayed together on a single view. For this view, a side panel of links is available on the left, allowing selection of a particular PDF to view.

-
"pdf_textbooks": [
-  {"tab_title": "Textbook 1",
-   "url": "https://www.example.com/thiscourse/book1/book1.pdf" },
-  {"tab_title": "Textbook 2",
-   "chapters": [
-       { "title": "Chapter 1", "url": "https://www.example.com/thiscourse/book2/Chapter1.pdf" },
-       { "title": "Chapter 2", "url": "https://www.example.com/thiscourse/book2/Chapter2.pdf" },
-       { "title": "Chapter 3", "url": "https://www.example.com/thiscourse/book2/Chapter3.pdf" },
-       { "title": "Chapter 4", "url": "https://www.example.com/thiscourse/book2/Chapter4.pdf" },
-       { "title": "Chapter 5", "url": "https://www.example.com/thiscourse/book2/Chapter5.pdf" },
-       { "title": "Chapter 6", "url": "https://www.example.com/thiscourse/book2/Chapter6.pdf" },
-       { "title": "Chapter 7", "url": "https://www.example.com/thiscourse/book2/Chapter7.pdf" }
-       ]
-  }
-]
-
-

Some notes:

-
    -
  • It is not a good idea to include a top-level URL and chapter-level URLs in the same textbook configuration.
  • -
-
-
-

Linking from Content

-

It is possible to add links to specific pages in a textbook by using a URL that encodes the index of the textbook, the chapter (if chapters are used), and the page number. For a book with no chapters, the URL is of the form /course/pdfbook/${bookindex}/$page}. For a book with chapters, use /course/pdfbook/${bookindex}/chapter/${chapter}/${page}. If the page is omitted from the URL, the first page is assumed.

-

For example, for the book with no chapters configured above, page 25 can be reached using the URL /course/pdfbook/0/25. Reaching page 19 in the third chapter of the second book is accomplished with /course/pdfbook/1/chapter/3/19.

-

You can use a customtag to create a template for such links. For example, you can create a pdfbook template in the customtag directory, containing:

-
<img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/pdfbook/${book}/${page}">the text</a>.
-
-
-

And a pdfchapter template containing:

-
<img src="/static/images/icons/textbook_icon.png"/> More information given in <a href="/course/pdfbook/${book}/chapter/${chapter}/${page}">the text</a>.
-
-
-

The example pages can then be linked using the customtag element:

-
<customtag book="0" page="25" impl="pdfbook"/>
-<customtag book="1" chapter="3" page="19" impl="pdfchapter"/>
-
-
-
-
-
-
-

Other file locations (info and about)

-

With different course runs, we may want different course info and about materials. This is now supported by putting files in as follows:

-
/
-  about/
-       foo.html      -- shared default for all runs
-       url_name1/
-            foo.html   -- version used for url_name1
-            bar.html   -- bar for url_name1
-       url_name2/
-            bar.html   -- bar for url_name2
-                       -- url_name2 will use default foo.html
-
-

and the same works for the info directory.

-
-
-

Tips for content developers

-
    -
  1. We will be making better tools for managing policy files soon. In the meantime, you can add dummy definitions to make it easier to search and separate the file visually. For example, you could add “WEEK 1” : “###################”, before the week 1 material to make it easy to find in the file.
  2. -
  3. Come up with a consistent pattern for url_names, so that it’s easy to know where to look for any piece of content. It will also help to come up with a standard way of splitting your content files. As a point of departure, we suggest splitting chapters, sequences, html, and problems into separate files.
  4. -
  5. Prefer the most “semantic” name for containers: e.g., use problemset rather than sequential for a problem set. That way, if we decide to display problem sets differently, we don’t have to change the XML.
  6. -
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/custom_response.html b/course_data_formats/custom_response.html deleted file mode 100644 index 6a40bdd4a7..0000000000 --- a/course_data_formats/custom_response.html +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - CustomResponse XML and Python Script — edX Data 0.1 documentation - - - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

Previous topic

-

Xml format of conditional module [xmodule]

-

Next topic

-

Student Info and Progress Data

-

This Page

- - - -
-
- -
-
-
-
- -
-

CustomResponse XML and Python Script

-

This document explains how to write a CustomResponse problem. CustomResponse -problems execute Python script to check student answers and provide hints.

-

There are two general ways to create a CustomResponse problem:

-
-

Answer tag format

-

One format puts the Python code in an <answer> tag:

-
<problem>
-    <p>What is the sum of 2 and 3?</p>
-
-    <customresponse expect="5">
-    <textline math="1" />
-    </customresponse>
-
-    <answer>
-# Python script goes here
-    </answer>
-</problem>
-
-
-
-
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, then 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 message strings that will be displayed -beneath each input. You can use this to provide hints to users. -For example messages[0] = "The capital of California is Sacramento" -would display that message beneath the first input of the response.
  • -
  • overall_message: A string that will be displayed beneath the -entire problem. You can use this to provide a hint that applies -to the entire problem rather than a particular input.
  • -
-
-
-

Example of a checking script:

-
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'
-
-
-

Important: Python is picky about indentation. Within the <answer> tag, -you must begin your script with no indentation.

-
-
-

Script tag format

-

The other way to create a CustomResponse is to put a “checking function” -in a <script> tag, then use the cfn attribute of the -<customresponse> tag:

-
<problem>
-    <p>What is the sum of 2 and 3?</p>
-
-    <customresponse cfn="check_func" expect="5">
-    <textline math="1" />
-    </customresponse>
-
-    <script type="loncapa/python">
-def check_func(expect, ans):
-    # Python script goes here
-    </script>
-</problem>
-
-
-

Important: Python is picky about 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 there is only one input.
    • -
    • An ordered list of answers the student provided, if there -are multiple inputs.
    • -
    -
    -
  • -
-
-
-

There are several ways that the check function can indicate whether the student -succeeded. The check function can return any of the following:

-
-
    -
  • True: Indicates that the student answered correctly for all inputs.
  • -
  • False: Indicates that the student answered incorrectly. -All inputs will be marked incorrect.
  • -
  • A dictionary of the form: { 'ok': True, 'msg': 'Message' } -If the dictionary’s value for ok is set to True, all inputs are -marked correct; if it is set to False, all inputs are marked incorrect. -The msg is displayed beneath all inputs, and it may contain -XHTML markup.
  • -
  • A dictionary of the form
  • -
-
-
{ 'overall_message': 'Overall message',
-    'input_list': [
-        { 'ok': True, 'msg': 'Feedback for input 1'},
-        { 'ok': False, 'msg': 'Feedback for input 2'},
-        ... ] }
-
-
-

The last form is useful for responses that contain multiple inputs. -It allows you to provide feedback for each input 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.

-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/drag_and_drop/drag_and_drop_input.html b/course_data_formats/drag_and_drop/drag_and_drop_input.html deleted file mode 100644 index bca6ea888d..0000000000 --- a/course_data_formats/drag_and_drop/drag_and_drop_input.html +++ /dev/null @@ -1,1687 +0,0 @@ - - - - - - - - - - XML format of drag and drop input [inputtypes] — edX Data 0.1 documentation - - - - - - - - - - - - - - - - - -
-
-
-
- -
-

XML format of drag and drop input [inputtypes]

-
-

Format description

-

The main tag of Drag and Drop (DnD) input is:

-
<drag_and_drop_input> ... </drag_and_drop_input>
-
-

drag_and_drop_input can include any number of the following 2 tags: -draggable and target.

-
-

drag_and_drop_input tag

-

The main container for a single instance of DnD. The following attributes can -be specified for this tag:

-
img - Relative path to an image that will be the base image. All draggables
-      can be dragged onto it.
-target_outline - Specify 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 default value is
-      'false'.
-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 - 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.
-
-
-
-

draggable tag

-

Draggable tag specifies a single draggable object which has the following -attributes:

-
id - Unique identifier of the draggable object.
-label - Human readable label that will be shown to the user.
-icon - Relative path to an image that will be shown to the user.
-can_reuse - true or false, default is false. If true, same draggable can be
-used multiple times.
-
-

A draggable is what the user must drag out of the slider and place onto the -base image. After a drag operation, if the center of the draggable ends up -outside the rectangular dimensions of the image, it will be returned back -to the slider.

-

In order for the grader to work, it is essential that a unique ID -is provided. Otherwise, there will be no way to tell which draggable is at what -coordinate, or over what target. Label and icon attributes are optional. If -they are provided they will be used, otherwise, you can have an empty -draggable. The path is relative to ‘course_folder’ folder, for example, -/static/images/img1.png.

-
-
-

target tag

-

Target tag specifies a single target object which has the following required -attributes:

-
id - 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.
-h - Height of the target.
-
-

A target specifies a place on the base image where a draggable can be -positioned. 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]], then it is within -the target. Otherwise, it is outside.

-

If at lest one target is provided, the behavior of the client side logic -changes. If a draggable is not dragged on to a target, it is returned back to -the slider.

-

If no targets are provided, then a draggable can be dragged and placed anywhere -on the base image.

-
-
-

Targets on draggables

-

Sometimes it is not enough to have targets only on the base image, and all of the -draggables on these targets. If a complex problem exists where a draggable must -become itself a target (or many targets), then the following extended syntax -can be used:

-
<draggable {attribute list}>
-    <target {attribute list} />
-    <target {attribute list} />
-    <target {attribute list} />
-    ...
-</draggable>
-
-

The attribute list in the tags above (‘draggable’ and ‘target’) is the same as for -normal ‘draggable’ and ‘target’ tags. The only difference is when you will be -specifying inner target position coordinates. Using the ‘x’ and ‘y’ attributes you -are setting the offset of the inner target from the upper-left corner of the -parent draggable (that contains the inner target).

-
-
-

Limitations of targets on draggables

-

1.) 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 instance will be graded only in the case 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.

-

2.) Another limitation is that the target bounds are not checked against -other targets.

-

For now, it is the responsibility of the person who is constructing the course -material to make sure that there is no overlapping of targets. It is also preferable -that targets on draggables are smaller than the actual parent draggable. Technically -this is not necessary, but from the usability perspective it is desirable.

-

3.) 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 draggables on the base image.

-
-
-

Correct answer format

-

(NOTE: For specifying answers for targets on draggables please see next section.)

-

There are two correct answer formats: short and long -If short from 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 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 list of draggables id. Target is list of targets id, draggables -must be dragged to with considering rule. Rule is string.

-

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, anyof, unordered_equal, anyof+number, unordered_equal+number

-
    -
  • Exact rule means that targets for draggable id’s in user_answer are the same that targets from correct answer. For example, for draggables 7 and 8 user must drag 7 to target1 and 8 to target2 if correct_answer is:

    -
    correct_answer = [
    -{
    -'draggables':   ['7', '8'],
    -'targets':  ['tartget1', 'target2'],
    -'rule': 'exact'
    -}]
    -
    -
    -
  • -
  • unordered_equal rule allows draggables be dragged to targets unordered. If one want to allow for student to drag 7 to target1 or target2 and 8 to target2 or target 1 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 rule allows draggables to be dragged to any of targets. If one want to allow for student to drag 7 and 8 to target1 or target2, which means that if 7 is on target1 and 8 is on target1 or 7 on target2 and 8 on target2 or 7 on target1 and 8 on target2. Any of theese are correct which anyof rule:

    -
    correct_answer = [
    -{
    -'draggables':   ['7', '8'],
    -'targets':  ['tartget1', 'target2'],
    -'rule': 'anyof'
    -}]
    -
    -
    -
  • -
  • If you have can_reuse true, then you, for example, 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 ‘b’ draggable to target2 or target5 for target5 and target2 etc..:

    -
    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'
    -    }]
    -
    -
    -
  • -
  • And sometimes you want to allow drag only two ‘b’ draggables, in these case you should use ‘anyof+number’ of ‘unordered_equal+number’ rule:

    -
    correct_answer = [
    -    {
    -        'draggables': ['a', 'a', 'a'],
    -        'targets': ['target1',  'target4', 'target7'],
    -        'rule': 'unordered_equal+numbers'
    -    },
    -    {
    -        'draggables': ['b', 'b'],
    -        'targets': ['target2', 'target5', 'target8'],
    -        'rule': 'anyof+numbers'
    -    },
    -    {
    -        'draggables': ['c'],
    -        'targets': ['target3', 'target6', 'target9'],
    -        'rule': 'unordered_equal'
    -    }]
    -
    -
    -
  • -
-

In case if we have no multiple draggables per targets (one_per_target=”true”), -for same number of draggables, anyof is equal to unordered_equal

-

If we have can_reuse=true, than one must use only long form of correct answer.

-
-
-

Answer format for targets on draggables

-

As with the cases described above, an answer must provide precise positioning for -each draggable (on which targets it must reside). In the case when a draggable must -be placed on a target that itself is on a draggable, then the answer must contain -the chain of target-draggable-target. It is best to understand this on an 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 it is a requirement to specify rules for all draggables, even if some draggable gets included -in more than one chain.

-
-
-

Grading logic

-
    -
  1. User answer (that comes from browser) and correct answer (from xml) are parsed to the same format:

    -
    group_id: group_draggables, group_targets, group_rule
    -
    -
  2. -
-

Group_id is ordinal number, for every dict in correct answer incremental -group_id is assigned: 0, 1, 2, ...

-

Draggables from user answer are added to same group_id where identical draggables -from correct answer are, for example:

-
If correct_draggables[group_0] = [t1, t2] then
-user_draggables[group_0] are all draggables t1 and t2 from user answer:
-[t1] or [t1, t2] or [t1, t2, t2] etc..
-
-

2. For every group from user answer, for that group draggables, if ‘number’ is in group rule, set() is applied, -if ‘number’ is not in rule, set is not applied:

-
set() : [t1, t2, t3, t3] -> [t1, t2, ,t3]
-
-

For every group, at this step, draggables lists are equal.

-
    -
  1. For every group, lists of targets are compared using rule for that group.
  2. -
-
-

Set and ‘+number’ cases

-

Set() and ‘+number’ are needed only for case of reusable draggables, -for other cases there are no equal draggables in list, so set() does nothing.

-
    -
  • Usage of set() operation allows easily create rule for case of “any number of same draggable can be dragged to some targets”:

    -
    {
    -        'draggables': ['draggable_1'],
    -        'targets': ['target3', 'target6', 'target9'],
    -        'rule': 'anyof'
    -}
    -
    -
    -
  • -
  • ‘number’ rule is used for the case of reusable draggables, when one 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 can’t recognize from user interface which reusable draggable is on which target. Absurd 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’ too) we don’t need ‘number’ if you have only same draggable in group, as targets length will provide constraint for the number of draggables:

    -
    {
    -        'draggables': ['draggable_1'],
    -        'targets': ['target3', 'target6', 'target9'],
    -        'rule': 'unordered_equal'
    -}
    -
    -
    -This means that only three draggaggables 'draggable_1' can be dragged.
    -
    -
  • -
  • But if you have more that one different reusable draggable in list, you may use ‘number’ rule:

    -
    {
    -        'draggables': ['draggable_1', 'draggable_1', 'draggable_2'],
    -        'targets': ['target3', 'target6', 'target9'],
    -        'rule': 'unordered_equal+number'
    -}
    -
    -
    -If not use number, draggables list will be setted to  ['draggable_1', 'draggable_2']
    -
    -
  • -
-
-
-
-

Logic flow

-

(Click on image to see full size version.)

-../../_images/draganddrop_logic_flow.png -
-
-
-

Example

-
-

Examples of draggables that can’t be reused

-
<problem display_name="Drag and drop demos: drag and drop icons or labels
-    to proper positions." >
-
-<customresponse>
-    <text>
-        <h4>[Anyof rule example]</h4><br/>
-        <h4>Please label hydrogen  atoms connected with left carbon atom.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/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"><![CDATA[
-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>
-
-<customresponse>
-    <text>
-        <h4>[Complex grading example]</h4><br/>
-        <h4>Describe carbon molecule in LCAO-MO.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true" >
-
-        <!-- filled bond -->
-        <draggable id="1" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="2" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="3" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="4" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="5" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="6" icon="/static/images/images_list/lcao-mo/u_d.png" />
-
-        <!-- up bond -->
-        <draggable id="7"  icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="8"  icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="9"  icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="10" icon="/static/images/images_list/lcao-mo/up.png"/>
-
-        <!-- sigma -->
-        <draggable id="11" icon="/static/images/images_list/lcao-mo/sigma.png"/>
-        <draggable id="12" icon="/static/images/images_list/lcao-mo/sigma.png"/>
-
-        <!-- sigma* -->
-        <draggable id="13" icon="/static/images/images_list/lcao-mo/sigma_s.png"/>
-        <draggable id="14" icon="/static/images/images_list/lcao-mo/sigma_s.png"/>
-
-        <!-- pi -->
-        <draggable id="15" icon="/static/images/images_list/lcao-mo/pi.png" />
-
-        <!-- pi* -->
-        <draggable id="16" icon="/static/images/images_list/lcao-mo/pi_s.png" />
-
-        <!-- images that should not be dragged -->
-        <draggable id="17" icon="/static/images/images_list/lcao-mo/d.png" />
-        <draggable id="18" icon="/static/images/images_list/lcao-mo/d.png" />
-
-        <!-- positions of electrons and electron pairs -->
-        <target id="s_left"       x="130" y="360"    w="32" h="32"/>
-        <target id="s_right"      x="505" y="360"    w="32" h="32"/>
-        <target id="s_sigma"      x="320" y="425"    w="32" h="32"/>
-        <target id="s_sigma_star" x="320" y="290"    w="32" h="32"/>
-        <target id="p_left_1"     x="80"  y="100"    w="32" h="32"/>
-        <target id="p_left_2"     x="125" y="100"    w="32" h="32"/>
-        <target id="p_left_3"     x="175" y="100"    w="32" h="32"/>
-        <target id="p_right_1"    x="465" y="100"    w="32" h="32"/>
-        <target id="p_right_2"    x="515" y="100"    w="32" h="32"/>
-        <target id="p_right_3"    x="560" y="100"    w="32" h="32"/>
-        <target id="p_pi_1"       x="290" y="220"    w="32" h="32"/>
-        <target id="p_pi_2"       x="335" y="220"    w="32" h="32"/>
-        <target id="p_sigma"      x="315" y="170"    w="32" h="32"/>
-        <target id="p_pi_star_1"  x="290" y="40"     w="32" h="32"/>
-        <target id="p_pi_star_2"  x="340" y="40"     w="32" h="32"/>
-        <target id="p_sigma_star" x="315" y="0"      w="32" h="32"/>
-
-        <!-- positions of names of energy levels -->
-        <target id="s_sigma_name"      x="400" y="425"  w="32" h="32"/>
-        <target id="s_sigma_star_name" x="400" y="290"  w="32" h="32"/>
-        <target id="p_pi_name"         x="400" y="220"  w="32" h="32"/>
-        <target id="p_sigma_name"      x="400" y="170"  w="32" h="32"/>
-        <target id="p_pi_star_name"    x="400" y="40"   w="32" h="32"/>
-        <target id="p_sigma_star_name" x="400" y="0"    w="32" h="32"/>
-
-  </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-{
-  'draggables': ['1', '2', '3', '4', '5', '6'],
-  'targets': [
-    's_left', 's_right', 's_sigma', 's_sigma_star', 'p_pi_1', 'p_pi_2'
-  ],
-  'rule': 'unordered_equal'
-}, {
-  'draggables': ['7','8', '9', '10'],
-  'targets': ['p_left_1', 'p_left_2', 'p_right_1','p_right_2'],
-  'rule': 'unordered_equal'
-}, {
-  'draggables': ['11', '12'],
-  'targets': ['s_sigma_name', 'p_sigma_name'],
-  'rule': 'unordered_equal'
-}, {
-  'draggables': ['13', '14'],
-  'targets': ['s_sigma_star_name', 'p_sigma_star_name'],
-  'rule': 'unordered_equal'
-}, {
-  'draggables': ['15'],
-  'targets': ['p_pi_name'],
-  'rule': 'unordered_equal'
-}, {
-  'draggables': ['16'],
-  'targets': ['p_pi_star_name'],
-  'rule': 'unordered_equal'
-}]
-
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Another complex grading example]</h4><br/>
-        <h4>Describe oxygen molecule in LCAO-MO</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true" one_per_target="true">
-        <!-- filled bond -->
-        <draggable id="1" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="2" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="3" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="4" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="5" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="6" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="v_fb_1" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="v_fb_2" icon="/static/images/images_list/lcao-mo/u_d.png" />
-        <draggable id="v_fb_3" icon="/static/images/images_list/lcao-mo/u_d.png" />
-
-        <!-- up bond -->
-        <draggable id="7"  icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="8"  icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="9"  icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="10" icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="v_ub_1" icon="/static/images/images_list/lcao-mo/up.png"/>
-        <draggable id="v_ub_2" icon="/static/images/images_list/lcao-mo/up.png"/>
-
-        <!-- sigma -->
-        <draggable id="11" icon="/static/images/images_list/lcao-mo/sigma.png"/>
-        <draggable id="12" icon="/static/images/images_list/lcao-mo/sigma.png"/>
-
-        <!-- sigma* -->
-        <draggable id="13" icon="/static/images/images_list/lcao-mo/sigma_s.png"/>
-        <draggable id="14" icon="/static/images/images_list/lcao-mo/sigma_s.png"/>
-
-        <!-- pi -->
-        <draggable id="15" icon="/static/images/images_list/lcao-mo/pi.png" />
-
-        <!-- pi* -->
-        <draggable id="16" icon="/static/images/images_list/lcao-mo/pi_s.png" />
-
-        <!-- images that should not be dragged -->
-        <draggable id="17" icon="/static/images/images_list/lcao-mo/d.png" />
-        <draggable id="18" icon="/static/images/images_list/lcao-mo/d.png" />
-
-        <!-- positions of electrons and electron pairs -->
-        <target id="s_left"       x="130" y="360"    w="32" h="32"/>
-        <target id="s_right"      x="505" y="360"    w="32" h="32"/>
-        <target id="s_sigma"      x="320" y="425"    w="32" h="32"/>
-        <target id="s_sigma_star" x="320" y="290"   w="32" h="32"/>
-        <target id="p_left_1"     x="80"  y="100"   w="32" h="32"/>
-        <target id="p_left_2"     x="125" y="100"   w="32" h="32"/>
-        <target id="p_left_3"     x="175" y="100"   w="32" h="32"/>
-        <target id="p_right_1"    x="465" y="100"   w="32" h="32"/>
-        <target id="p_right_2"    x="515" y="100"   w="32" h="32"/>
-        <target id="p_right_3"    x="560" y="100"   w="32" h="32"/>
-        <target id="p_pi_1"       x="290" y="220"  w="32" h="32"/>
-        <target id="p_pi_2"       x="335" y="220"  w="32" h="32"/>
-        <target id="p_sigma"      x="315" y="170"  w="32" h="32"/>
-        <target id="p_pi_star_1"  x="290" y="40"  w="32" h="32"/>
-        <target id="p_pi_star_2"  x="340" y="40"  w="32" h="32"/>
-        <target id="p_sigma_star" x="315" y="0"  w="32" h="32"/>
-
-        <!-- positions of names of energy levels -->
-        <target id="s_sigma_name" x="400" y="425"  w="32" h="32"/>
-        <target id="s_sigma_star_name" x="400" y="290"  w="32" h="32"/>
-        <target id="p_pi_name" x="400" y="220"  w="32" h="32"/>
-        <target id="p_pi_star_name" x="400" y="40"  w="32" h="32"/>
-        <target id="p_sigma_name" x="400" y="170"  w="32" h="32"/>
-        <target id="p_sigma_star_name" x="400" y="0"  w="32" h="32"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [{
-  'draggables': ['1', '2', '3', '4', '5', '6', 'v_fb_1', 'v_fb_2', 'v_fb_3'],
-  'targets': [
-    's_left', 's_right', 's_sigma', 's_sigma_star', 'p_pi_1', 'p_pi_2',
-    'p_sigma', 'p_left_1', 'p_right_3'
-  ],
-  'rule': 'anyof'
-}, {
-  'draggables': ['7', '8', '9', '10', 'v_ub_1', 'v_ub_2'],
-  'targets': [
-    'p_left_2', 'p_left_3', 'p_right_1', 'p_right_2', 'p_pi_star_1',
-    'p_pi_star_2'
-  ],
-  'rule': 'anyof'
-}, {
-  'draggables': ['11', '12'],
-  'targets': ['s_sigma_name', 'p_sigma_name'],
-  'rule': 'anyof'
-}, {
-  'draggables': ['13', '14'],
-  'targets': ['s_sigma_star_name', 'p_sigma_star_name'],
-  'rule': 'anyof'
-}, {
-  'draggables': ['15'],
-  'targets': ['p_pi_name'],
-  'rule': 'anyof'
-}, {
-  'draggables': ['16'],
-  'targets': ['p_pi_star_name'],
-  'rule': 'anyof'
-}]
-
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Individual targets with outlines, One draggable per target]</h4><br/>
-        <h4>
-        Drag -Ant- to first position and -Star- to third position </h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" target_outline="true">
-        <draggable id="1" label="Label 1"/>
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg"/>
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" />
-        <draggable id="5" label="Label2" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" />
-        <draggable id="7" label="Label3" />
-
-        <target id="t1" x="20" y="20" w="90" h="90"/>
-        <target id="t2" x="300" y="100" w="90" h="90"/>
-        <target id="t3" x="150" y="40" w="50" h="50"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = {'name_with_icon': 't1', 'name4': 't2'}
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[SMALL IMAGE,  Individual targets WITHOUT outlines, One draggable
-            per target]</h4><br/>
-        <h4>
-            Move -Star- to the volcano opening, and -Label3- on to
-            the right ear of the cow.
-        </h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow3.png" target_outline="false">
-        <draggable id="1" label="Label 1"/>
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg"/>
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" />
-        <draggable id="5" label="Label2" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" />
-        <draggable id="7" label="Label3" />
-
-        <target id="t1" x="111" y="58" w="90" h="90"/>
-        <target id="t2" x="212" y="90" w="90" h="90"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = {'name4': 't1',
-                '7': 't2'}
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Many draggables per target]</h4><br/>
-        <h4>Move -Star- and -Ant- to most left target
-            and -Label3- and -Label2- to most right target.</h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" target_outline="true" one_per_target="false">
-        <draggable id="1" label="Label 1"/>
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg"/>
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" />
-        <draggable id="5" label="Label2" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" />
-        <draggable id="7" label="Label3" />
-
-        <target id="t1" x="20" y="20" w="90" h="90"/>
-        <target id="t2" x="300" y="100" w="90" h="90"/>
-        <target id="t3" x="150" y="40" w="50" h="50"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = {'name4': 't1',
-                'name_with_icon': 't1',
-                '5': 't2',
-                '7':'t2'}
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Draggables can be placed anywhere on base image]</h4><br/>
-        <h4>
-            Place -Grass- in the middle of the image and -Ant- in the
-            right upper corner.</h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" >
-        <draggable id="1" label="Label 1"/>
-        <draggable id="ant" label="Ant" icon="/static/images/images_list/ant.jpg"/>
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" />
-        <draggable id="5" label="Label2" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" />
-        <draggable id="grass" label="Grass" icon="/static/images/images_list/grass.jpg" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" />
-        <draggable id="7" label="Label3" />
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = {'grass':     [[300, 200], 200],
-                  'ant': [[500, 0], 200]}
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Another anyof example]</h4><br/>
-        <h4>Please identify the Carbon and Oxygen atoms in the molecule.</h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/ethglycol.jpg" target_outline="true" one_per_target="true">
-        <draggable id="l1_c" label="Carbon" />
-        <draggable id="l2" label="Methane"/>
-        <draggable id="l3_o" label="Oxygen" />
-        <draggable id="l4" label="Calcium" />
-        <draggable id="l5" label="Methane"/>
-        <draggable id="l6" label="Calcium" />
-        <draggable id="l7" label="Hydrogen" />
-        <draggable id="l8_c" label="Carbon" />
-        <draggable id="l9" label="Hydrogen" />
-        <draggable id="l10_o" label="Oxygen" />
-
-        <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"><![CDATA[
-correct_answer = [
-{
-    'draggables':  ['l3_o', 'l10_o'],
-    'targets':  ['t1_o', 't9_o'],
-    'rule': 'anyof'
-},
-{
-    'draggables': ['l1_c','l8_c'],
-    'targets': ['t5_c','t6_c'],
-    'rule': 'anyof'
-}
-]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Again another anyof example]</h4><br/>
-        <h4>If the element appears in this molecule, drag the label onto it</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/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" />
-        <draggable id="3" label="Nytrogen" />
-        <draggable id="4" label="Nytrogen" />
-        <draggable id="5" label="Boron" />
-        <draggable id="6" label="Boron" />
-        <draggable id="7" label="Carbon" />
-        <draggable id="8" label="Carbon" />
-
-        <target id="t1_o" x="10" y="67" w="100" h="100"/>
-        <target id="t2_h" x="133" y="3" w="70" h="70"/>
-        <target id="t3_h" x="2" y="384" w="70" h="70"/>
-        <target id="t4_h" 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_h" x="393" y="463" w="70" h="70"/>
-        <target id="t8_h" x="344" y="214" w="70" h="70"/>
-        <target id="t9_o" x="445" y="162" w="100" h="100"/>
-        <target id="t10_h" x="591" y="132" w="70" h="70"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-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'
-}]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Wrong base image url example]
-        </h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow3_bad.png" target_outline="false">
-        <draggable id="1" label="Label 1"/>
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg"/>
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" />
-        <draggable id="5" label="Label2" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" />
-        <draggable id="7" label="Label3" />
-
-        <target id="t1" x="111" y="58" w="90" h="90"/>
-        <target id="t2" x="212" y="90" w="90" h="90"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = {'name4': 't1',
-                '7': 't2'}
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-</problem>
-
-
-
-
-

Draggables can be reused

-
<problem display_name="Drag and drop demos: drag and drop icons or labels
-    to proper positions." >
-
-<customresponse>
-    <text>
-        <h4>[Draggable is reusable example]</h4>
-        <br/>
-        <h4>Please label all hydrogen atoms.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input
-        img="/static/images/images_list/ethglycol.jpg"
-        target_outline="true"
-        one_per_target="true"
-        no_labels="true"
-        label_bg_color="rgb(222, 139, 238)"
-    >
-        <draggable id="1" label="Hydrogen" can_reuse='true' />
-
-        <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">
-    <![CDATA[
-correct_answer = [{
-    'draggables': ['1'],
-    'targets': ['t2', 't3', 't4', 't7', 't8', 't10'],
-    'rule': 'exact'
-}]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-    ]]>
-    </answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Complex grading example]</h4><br/>
-        <h4>Describe carbon molecule in LCAO-MO.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true" >
-
-        <!-- filled bond -->
-        <draggable id="1" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" />
-
-        <!-- up bond -->
-        <draggable id="7"  icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" />
-
-        <!-- sigma -->
-        <draggable id="11" icon="/static/images/images_list/lcao-mo/sigma.png" can_reuse="true" />
-
-        <!-- sigma* -->
-        <draggable id="13" icon="/static/images/images_list/lcao-mo/sigma_s.png" can_reuse="true" />
-
-        <!-- pi -->
-        <draggable id="15" icon="/static/images/images_list/lcao-mo/pi.png" can_reuse="true" />
-
-        <!-- pi* -->
-        <draggable id="16" icon="/static/images/images_list/lcao-mo/pi_s.png" can_reuse="true" />
-
-        <!-- images that should not be dragged -->
-        <draggable id="17" icon="/static/images/images_list/lcao-mo/d.png" can_reuse="true" />
-
-        <!-- positions of electrons and electron pairs -->
-        <target id="s_left"       x="130" y="360"    w="32" h="32"/>
-        <target id="s_right"      x="505" y="360"    w="32" h="32"/>
-        <target id="s_sigma"      x="320" y="425"    w="32" h="32"/>
-        <target id="s_sigma_star" x="320" y="290"    w="32" h="32"/>
-        <target id="p_left_1"     x="80"  y="100"    w="32" h="32"/>
-        <target id="p_left_2"     x="125" y="100"    w="32" h="32"/>
-        <target id="p_left_3"     x="175" y="100"    w="32" h="32"/>
-        <target id="p_right_1"    x="465" y="100"    w="32" h="32"/>
-        <target id="p_right_2"    x="515" y="100"    w="32" h="32"/>
-        <target id="p_right_3"    x="560" y="100"    w="32" h="32"/>
-        <target id="p_pi_1"       x="290" y="220"    w="32" h="32"/>
-        <target id="p_pi_2"       x="335" y="220"    w="32" h="32"/>
-        <target id="p_sigma"      x="315" y="170"    w="32" h="32"/>
-        <target id="p_pi_star_1"  x="290" y="40"     w="32" h="32"/>
-        <target id="p_pi_star_2"  x="340" y="40"     w="32" h="32"/>
-        <target id="p_sigma_star" x="315" y="0"      w="32" h="32"/>
-
-        <!-- positions of names of energy levels -->
-        <target id="s_sigma_name"      x="400" y="425"  w="32" h="32"/>
-        <target id="s_sigma_star_name" x="400" y="290"  w="32" h="32"/>
-        <target id="p_pi_name"         x="400" y="220"  w="32" h="32"/>
-        <target id="p_sigma_name"      x="400" y="170"  w="32" h="32"/>
-        <target id="p_pi_star_name"    x="400" y="40"   w="32" h="32"/>
-        <target id="p_sigma_star_name" x="400" y="0"    w="32" h="32"/>
-
-  </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-{
-  'draggables': ['1'],
-  'targets': [
-    's_left', 's_right', 's_sigma', 's_sigma_star', 'p_pi_1', 'p_pi_2'
-  ],
-  'rule': 'exact'
-}, {
-  'draggables': ['7'],
-  'targets': ['p_left_1', 'p_left_2', 'p_right_1','p_right_2'],
-  'rule': 'exact'
-}, {
-  'draggables': ['11'],
-  'targets': ['s_sigma_name', 'p_sigma_name'],
-  'rule': 'exact'
-}, {
-  'draggables': ['13'],
-  'targets': ['s_sigma_star_name', 'p_sigma_star_name'],
-  'rule': 'exact'
-}, {
-  'draggables': ['15'],
-  'targets': ['p_pi_name'],
-  'rule': 'exact'
-}, {
-  'draggables': ['16'],
-  'targets': ['p_pi_star_name'],
-  'rule': 'exact'
-}]
-
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Many draggables per target]</h4><br/>
-        <h4>Move two Stars and three Ants to most left target
-            and one Label3 and four Label2 to most right target.</h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" target_outline="true" one_per_target="false">
-        <draggable id="1" label="Label 1" can_reuse="true" />
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg" can_reuse="true" />
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" can_reuse="true" />
-        <draggable id="5" label="Label2" can_reuse="true" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" can_reuse="true" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" can_reuse="true" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" can_reuse="true" />
-        <draggable id="7" label="Label3" can_reuse="true" />
-
-        <target id="t1" x="20" y="20" w="90" h="90"/>
-        <target id="t2" x="300" y="100" w="90" h="90"/>
-        <target id="t3" x="150" y="40" w="50" h="50"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-{
-    'draggables': ['name4'],
-    'targets': [
-        't1', 't1'
-    ],
-    'rule': 'exact'
-},
-{
-    'draggables': ['name_with_icon'],
-    'targets': [
-        't1', 't1', 't1'
-    ],
-    'rule': 'exact'
-},
-{
-    'draggables': ['5'],
-    'targets': [
-        't2', 't2', 't2', 't2'
-    ],
-    'rule': 'exact'
-},
-{
-    'draggables': ['7'],
-    'targets': [
-        't2'
-    ],
-    'rule': 'exact'
-}
-]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Draggables can be placed anywhere on base image]</h4><br/>
-        <h4>
-            Place -Grass- in the middle of the image and -Ant- in the
-            right upper corner.</h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" >
-        <draggable id="1" label="Label 1" can_reuse="true" />
-        <draggable id="ant" label="Ant" icon="/static/images/images_list/ant.jpg" can_reuse="true" />
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" can_reuse="true" />
-        <draggable id="5" label="Label2" can_reuse="true" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" can_reuse="true" />
-        <draggable id="grass" label="Grass" icon="/static/images/images_list/grass.jpg" can_reuse="true" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" can_reuse="true" />
-        <draggable id="7" label="Label3" can_reuse="true" />
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = {
-    'grass': [[300, 200], 200],
-    'ant': [[500, 0], 200]
-}
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Another anyof example]</h4><br/>
-        <h4>Please identify the Carbon and Oxygen atoms in the molecule.</h4><br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/ethglycol.jpg" target_outline="true" one_per_target="true">
-        <draggable id="l1_c" label="Carbon" can_reuse="true" />
-        <draggable id="l2" label="Methane" can_reuse="true" />
-        <draggable id="l3_o" label="Oxygen" can_reuse="true" />
-        <draggable id="l4" label="Calcium" can_reuse="true" />
-        <draggable id="l7" label="Hydrogen" can_reuse="true" />
-
-        <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"><![CDATA[
-correct_answer = [
-{
-    'draggables': ['l3_o'],
-    'targets': ['t1_o', 't9_o'],
-    'rule': 'exact'
-},
-{
-    'draggables': ['l1_c'],
-    'targets': ['t5_c', 't6_c'],
-    'rule': 'exact'
-}
-]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Exact number of draggables for a set of targets.]</h4><br/>
-        <h4>Drag two Grass and one Star to first or second positions, and three Cloud to any of the three positions.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" target_outline="true" one_per_target="false">
-        <draggable id="1" label="Label 1" can_reuse="true" />
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg" can_reuse="true" />
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" can_reuse="true" />
-        <draggable id="5" label="Label2" can_reuse="true" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" can_reuse="true" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" can_reuse="true" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" can_reuse="true" />
-        <draggable id="7" label="Label3" can_reuse="true" />
-
-        <target id="t1" x="20" y="20" w="90" h="90"/>
-        <target id="t2" x="300" y="100" w="90" h="90"/>
-        <target id="t3" x="150" y="40" w="50" h="50"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-{
-    'draggables': ['name_label_icon3', 'name_label_icon3'],
-    'targets': ['t1', 't3'],
-    'rule': 'unordered_equal+number'
-},
-{
-    'draggables': ['name4'],
-    'targets': ['t1', 't3'],
-    'rule': 'anyof+number'
-},
-{
-    'draggables': ['with_icon', 'with_icon', 'with_icon'],
-    'targets': ['t1', 't2', 't3'],
-    'rule': 'anyof+number'
-}
-]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[As many as you like draggables for a set of targets.]</h4><br/>
-        <h4>Drag some Grass to any of the targets, and some Stars to either first or last target.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/cow.png" target_outline="true" one_per_target="false">
-        <draggable id="1" label="Label 1" can_reuse="true" />
-        <draggable id="name_with_icon" label="Ant" icon="/static/images/images_list/ant.jpg" can_reuse="true" />
-        <draggable id="with_icon" label="Cloud" icon="/static/images/images_list/cloud.jpg" can_reuse="true" />
-        <draggable id="5" label="Label2" can_reuse="true" />
-        <draggable id="2" label="Drop" icon="/static/images/images_list/drop.jpg" can_reuse="true" />
-        <draggable id="name_label_icon3" label="Grass" icon="/static/images/images_list/grass.jpg" can_reuse="true" />
-        <draggable id="name4" label="Star" icon="/static/images/images_list/star.png" can_reuse="true" />
-        <draggable id="7" label="Label3" can_reuse="true" />
-
-        <target id="t1" x="20" y="20" w="90" h="90"/>
-        <target id="t2" x="300" y="100" w="90" h="90"/>
-        <target id="t3" x="150" y="40" w="50" h="50"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-{
-    'draggables': ['name_label_icon3'],
-    'targets': ['t1', 't2', 't3'],
-    'rule': 'anyof'
-},
-{
-    'draggables': ['name4'],
-    'targets': ['t1', 't2'],
-    'rule': 'anyof'
-}
-]
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-</problem>
-
-
-
-
-

Examples of targets on draggables

-
<problem display_name="Drag and drop demos chem features: drag and drop icons or labels
-    to proper positions." attempts="10">
-
-<customresponse>
-    <text>
-        <h4>[Simple grading example: draggables on draggables]</h4><br/>
-        <h4>Describe carbon molecule in LCAO-MO.</h4><br/>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true" >
-
-        <!-- filled bond -->
-        <draggable id="up_and_down" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" />
-        <!-- up bond -->
-        <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" >
-            <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>
-
-        <!-- positions of electrons and electron pairs -->
-        <target id="s_l" x="130" y="360" w="32" h="32"/>
-        <target id="s_r" x="505" y="360" w="32" h="32"/>
-        <target id="p_l" x="80"  y="100" w="100" h="32"/>
-        <target id="p_r" x="465" y="100" w="100" h="32"/>
-
-  </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-    {
-        'draggables': ['p'],
-        'targets': ['p_l', 'p_r'],
-        'rule': 'unordered_equal'
-    },
-    {
-        'draggables': ['s'],
-        'targets': ['s_l', 's_r'],
-        'rule': 'unordered_equal'
-    },
-    {
-      'draggables': ['up_and_down'],
-      'targets': [
-        's_l[s][1]', 's_r[s][1]'
-      ],
-      'rule': 'unordered_equal'
-    },
-    {
-      'draggables': ['up'],
-      'targets': [
-        'p_l[p][1]', 'p_l[p][3]', 'p_r[p][1]', 'p_r[p][3]'
-      ],
-      'rule': 'unordered_equal'
-    }
-]
-
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Complex grading example: draggables on draggables]</h4><br/>
-        <h4>Describe carbon molecule in LCAO-MO.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo-clean.jpg" target_outline="true" >
-
-        <!-- filled bond -->
-        <draggable id="up_and_down" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" />
-        <!-- up bond -->
-        <draggable id="up" icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" />
-
-        <!-- images that should not be dragged -->
-        <draggable id="down" icon="/static/images/images_list/lcao-mo/d.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>
-
-        <draggable id="s-sigma" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s-sigma orbital" can_reuse="true" >
-            <target id="1" x="0" y="0" w="32" h="32"/>
-        </draggable>
-
-        <draggable id="s-sigma*" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="s-sigma* orbital" can_reuse="true" >
-            <target id="1" x="0" y="0" w="32" h="32"/>
-        </draggable>
-
-        <draggable id="p-pi" icon="/static/images/images_list/lcao-mo/orbital_double.png" label="p-pi orbital" can_reuse="true" >
-            <target id="1" x="0" y="0" w="32" h="32"/>
-            <target id="2" x="34" y="0" w="32" h="32"/>
-        </draggable>
-
-        <draggable id="p-sigma" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="p-sigma orbital" can_reuse="true" >
-            <target id="1" x="0" y="0" w="32" h="32"/>
-        </draggable>
-
-        <draggable id="p-pi*" icon="/static/images/images_list/lcao-mo/orbital_double.png" label="p-pi* orbital" can_reuse="true" >
-            <target id="1" x="0" y="0" w="32" h="32"/>
-            <target id="2" x="34" y="0" w="32" h="32"/>
-        </draggable>
-
-        <draggable id="p-sigma*" icon="/static/images/images_list/lcao-mo/orbital_single.png" label="p-sigma* orbital" can_reuse="true" >
-            <target id="1" x="0" y="0" w="32" h="32"/>
-        </draggable>
-
-        <!-- positions of electrons and electron pairs -->
-        <target id="s-left-target" x="130" y="360" w="32" h="32"/>
-        <target id="s-right-target" x="505" y="360" w="32" h="32"/>
-        <target id="s-sigma-target" x="315" y="425" w="32" h="32"/>
-        <target id="s-sigma*-target" x="315" y="290" w="32" h="32"/>
-        <target id="p-left-target" x="80"  y="100" w="100" h="32"/>
-        <target id="p-right-target" x="480" y="100" w="100" h="32"/>
-        <target id="p-pi-target" x="300" y="220" w="66" h="32"/>
-        <target id="p-sigma-target" x="315" y="170" w="32" h="32"/>
-        <target id="p-pi*-target" x="300" y="40" w="66" h="32"/>
-        <target id="p-sigma*-target" x="315" y="0" w="32" h="32"/>
-
-    </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-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': ['s-sigma'], 'targets': ['s-sigma-target'], 'rule': 'exact'},
-{'draggables': ['s-sigma*'], 'targets': ['s-sigma*-target'], 'rule': 'exact'},
-{'draggables': ['p-pi'], 'targets': ['p-pi-target'], 'rule': 'exact'},
-{'draggables': ['p-sigma'], 'targets': ['p-sigma-target'], 'rule': 'exact'},
-{'draggables': ['p-pi*'], 'targets': ['p-pi*-target'], 'rule': 'exact'},
-{'draggables': ['p-sigma*'], 'targets': ['p-sigma*-target'], 'rule': 'exact'},
-{
-    'draggables': ['up_and_down'],
-    'targets': ['s-left-target[s][1]', 's-right-target[s][1]', 's-sigma-target[s-sigma][1]', 's-sigma*-target[s-sigma*][1]', 'p-pi-target[p-pi][1]', 'p-pi-target[p-pi][2]'],
-    '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'
-}
-]
-
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-<customresponse>
-    <text>
-        <h4>[Complex grading example: no draggables on draggables]</h4><br/>
-        <h4>Describe carbon molecule in LCAO-MO.</h4>
-        <br/>
-    </text>
-
-    <drag_and_drop_input img="/static/images/images_list/lcao-mo/lcao-mo.jpg" target_outline="true">
-
-        <!-- filled bond -->
-        <draggable id="1" icon="/static/images/images_list/lcao-mo/u_d.png" can_reuse="true" />
-
-        <!-- up bond -->
-        <draggable id="7"  icon="/static/images/images_list/lcao-mo/up.png" can_reuse="true" />
-
-        <!-- sigma -->
-        <draggable id="11" icon="/static/images/images_list/lcao-mo/sigma.png" can_reuse="true" />
-
-        <!-- sigma* -->
-        <draggable id="13" icon="/static/images/images_list/lcao-mo/sigma_s.png" can_reuse="true" />
-
-        <!-- pi -->
-        <draggable id="15" icon="/static/images/images_list/lcao-mo/pi.png" can_reuse="true" />
-
-        <!-- pi* -->
-        <draggable id="16" icon="/static/images/images_list/lcao-mo/pi_s.png" can_reuse="true" />
-
-        <!-- images that should not be dragged -->
-        <draggable id="17" icon="/static/images/images_list/lcao-mo/d.png" can_reuse="true" />
-
-        <!-- positions of electrons and electron pairs -->
-        <target id="s_left"       x="130" y="360"    w="32" h="32"/>
-        <target id="s_right"      x="505" y="360"    w="32" h="32"/>
-        <target id="s_sigma"      x="320" y="425"    w="32" h="32"/>
-        <target id="s_sigma_star" x="320" y="290"    w="32" h="32"/>
-        <target id="p_left_1"     x="80"  y="100"    w="32" h="32"/>
-        <target id="p_left_2"     x="125" y="100"    w="32" h="32"/>
-        <target id="p_left_3"     x="175" y="100"    w="32" h="32"/>
-        <target id="p_right_1"    x="465" y="100"    w="32" h="32"/>
-        <target id="p_right_2"    x="515" y="100"    w="32" h="32"/>
-        <target id="p_right_3"    x="560" y="100"    w="32" h="32"/>
-        <target id="p_pi_1"       x="290" y="220"    w="32" h="32"/>
-        <target id="p_pi_2"       x="335" y="220"    w="32" h="32"/>
-        <target id="p_sigma"      x="315" y="170"    w="32" h="32"/>
-        <target id="p_pi_star_1"  x="290" y="40"     w="32" h="32"/>
-        <target id="p_pi_star_2"  x="340" y="40"     w="32" h="32"/>
-        <target id="p_sigma_star" x="315" y="0"      w="32" h="32"/>
-
-        <!-- positions of names of energy levels -->
-        <target id="s_sigma_name"      x="400" y="425"  w="32" h="32"/>
-        <target id="s_sigma_star_name" x="400" y="290"  w="32" h="32"/>
-        <target id="p_pi_name"         x="400" y="220"  w="32" h="32"/>
-        <target id="p_sigma_name"      x="400" y="170"  w="32" h="32"/>
-        <target id="p_pi_star_name"    x="400" y="40"   w="32" h="32"/>
-        <target id="p_sigma_star_name" x="400" y="0"    w="32" h="32"/>
-
-  </drag_and_drop_input>
-
-    <answer type="loncapa/python"><![CDATA[
-correct_answer = [
-{
-  'draggables': ['1'],
-  'targets': [
-    's_left', 's_right', 's_sigma', 's_sigma_star', 'p_pi_1', 'p_pi_2'
-  ],
-  'rule': 'exact'
-}, {
-  'draggables': ['7'],
-  'targets': ['p_left_1', 'p_left_2', 'p_right_2','p_right_3'],
-  'rule': 'exact'
-}, {
-  'draggables': ['11'],
-  'targets': ['s_sigma_name', 'p_sigma_name'],
-  'rule': 'exact'
-}, {
-  'draggables': ['13'],
-  'targets': ['s_sigma_star_name', 'p_sigma_star_name'],
-  'rule': 'exact'
-}, {
-  'draggables': ['15'],
-  'targets': ['p_pi_name'],
-  'rule': 'exact'
-}, {
-  'draggables': ['16'],
-  'targets': ['p_pi_star_name'],
-  'rule': 'exact'
-}]
-
-if draganddrop.grade(submission[0], correct_answer):
-    correct = ['correct']
-else:
-    correct = ['incorrect']
-]]></answer>
-</customresponse>
-
-</problem>
-
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/grading.html b/course_data_formats/grading.html deleted file mode 100644 index 929caf6939..0000000000 --- a/course_data_formats/grading.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - - Course Grading — edX Data 0.1 documentation - - - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

Previous topic

-

Course XML Tutorial

-

Next topic

-

XML format of drag and drop input [inputtypes]

-

This Page

- - - -
-
- -
-
-
-
- -
-

Course Grading

-

This document is written to help professors understand how a final grade for a -course is computed.

-

Course grading is the process of taking all of the problems scores for a student -in a course and generating a final score (and corresponding letter grade). This -grading process can be split into two phases - totaling sections and section -weighting.

-
-

Totaling sections

-

The process of totaling sections is to get a percentage score (between 0.0 and -1.0) for every section in the course. A section is any module that is a direct -child of a chapter. For example, psets, labs, and sequences are all common -sections. Only the percentage on the section will be available to compute the -final grade, not the final number of points earned / possible.

-
-

Important

-

For a section to be included in the final grade, the policies file must set -graded = True for the section.

-
-

For each section, the grading function retrieves all problems within the -section. The section percentage is computed as (total points earned) / (total -points possible).

-
-
-

Weighting Problems

-

In some cases, one might want to give weights to problems within a section. For -example, a final exam might contain four questions each worth 1 point by default. -This means each question would by default have the same weight. If one wanted -the first problem to be worth 50% of the final exam, the policy file could specify -weights of 30, 10, 10, and 10 to the four problems, respectively.

-

Note that the default weight of a problem is not 1. The default weight of a -problem is the module’s max_grade.

-

If weighting is set, each problem is worth the number of points assigned, regardless of the number of responses it contains.

-

Consider a Homework section that contains two problems.

-
<problem display_name=”Problem 1”>
-  <numericalresponse> ... </numericalreponse>
-</problem>
-
-
<problem display_name=”Problem 2”>
-  <numericalresponse> ... </numericalreponse>
-  <numericalresponse> ... </numericalreponse>
-  <numericalresponse> ... </numericalreponse>
-</problem>
-
-

Without weighting, Problem 1 is worth 25% of the assignment, and Problem 2 is worth 75% of the assignment.

-

Weighting for the problems can be set in the policy.json file.

-
"problem/problem1": {
-  "weight": 2
-},
-"problem/problem2": {
-  "weight": 2
-},
-
-

With the above weighting, Problems 1 and 2 are each worth 50% of the assignment.

-

Please note: When problems have weight, the point value is automatically included in the display name except when “weight”: 1. When the weight is 1, no visual change occurs in the display name, leaving the point value open to interpretation to the student.

-
-
-

Weighting Sections

-

Once each section has a percentage score, we must total those sections into a -final grade. Of course, not every section has equal weight in the final grade. -The policies for weighting sections into a final grade are specified in the -grading_policy.json file.

-

The grading_policy.json file specifies several sub-graders that are each given -a weight and factored into the final grade. There are currently two types of -sub-graders, section format graders and single section graders.

-

We will use this simple example of a grader with one section format grader and -one single section grader.

-
"GRADER" : [
-    {
-      "type" : "Homework",
-      "min_count" : 12,
-      "drop_count" : 2,
-      "short_label" : "HW",
-      "weight" : 0.4
-    },
-    {
-      "type" : "Final",
-      "name" : "Final Exam",
-      "short_label" : "Final",
-      "weight" : 0.6
-    }
-]
-
-
-

Section Format Graders

-

A section format grader grades a set of sections with the same format, as -defined in the course policy file. To make a vertical named Homework1 be graded -by the Homework section format grader, the following definition would be in the -course policy file.

-
"vertical/Homework1": {
-    "display_name": "Homework 1",
-    "graded": true,
-    "format": "Homework"
-},
-
-

In the example above, the section format grader declares that it will expect to -find at least 12 sections with the format “Homework”. It will drop the lowest 2. -All of the homework assignments will have equal weight, relative to each other -(except, of course, for the assignments that are dropped).

-

This format supports forecasting the number of homework assignments. For -example, if the course only has 3 homeworks written, but the section format -grader has been told to expect 12, the missing 9 will have an assumed 0% and -will still show up in the grade breakdown.

-

A section format grader will also show the average of that section in the grade -breakdown (shown on the Progress page, gradebook, etc.).

-
-
-

Single Section Graders

-

A single section grader grades exactly that - a single section. If a section -is found with a matching format and display name then the score of that section -is used. If not, a score of 0% is assumed.

-
-
-

Combining sub-graders

-

The final grade is computed by taking the score and weight of each sub grader. -In the above example, homework will be 40% of the final grade. The final exam -will be 60% of the final grade.

-
-
-
-

Displaying the final grade

-

The final grade is then rounded up to the nearest percentage point. This is so -the system can consistently display a percentage without worrying whether the -displayed percentage has been rounded up or down (potentially misleading the -student). The formula for the rounding is:

-
rounded_percent = round(computed_percent * 100 + 0.05) / 100
-
-
-

The grading policy file also specifies the cutoffs for the grade levels. A -grade is either A, B, or C. If the student does not reach the cutoff threshold -for a C grade then the student has not earned a grade and will not be eligible -for a certificate. Letter grades are only awarded to students who have -completed the course. There is no notion of a failing letter grade.

-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/graphical_slider_tool/graphical_slider_tool.html b/course_data_formats/graphical_slider_tool/graphical_slider_tool.html deleted file mode 100644 index 5a2d07a47c..0000000000 --- a/course_data_formats/graphical_slider_tool/graphical_slider_tool.html +++ /dev/null @@ -1,924 +0,0 @@ - - - - - - - - - - XML format of graphical slider tool [xmodule] — edX Data 0.1 documentation - - - - - - - - - - - - - - - - - -
-
-
-
- -
-

XML format of graphical slider tool [xmodule]

-
-

Format description

-

Graphical slider tool (GST) main tag is:

-
<graphical_slider_tool> BODY </graphical_slider_tool>
-
-

graphical_slider_tool tag must have two children tags: render -and configuration.

-
-

Render tag

-

Render tag can contain usual html tags mixed with some GST specific tags:

-
<slider/> - represents jQuery slider for changing a parameter's value
-<textbox/> - represents a text input field for changing a parameter's value
-<plot/> - represents Flot JS plot element
-
-

Also GST will track all elements inside <render></render> where id -attribute is set, and a corresponding parameter referencing that id is present -in the configuration section below. These will be referred to as dynamic elements.

-

The contents of the <render> section will be shown to the user after -all occurrences of:

-
<slider var="{parameter name}" [style="{CSS statements}"] />
-<textbox var="{parameter name}" [style="{CSS statements}"] />
-<plot [style="{CSS statements}"] />
-
-

have been converted to actual sliders, text inputs, and a plot graph. -Everything in square brackets is optional. After initialization, all -text input fields, sliders, and dynamic elements will be set to the initial -values of the parameters that they are assigned to.

-

{parameter name} specifies the parameter to which the slider or text -input will be attached to.

-

[style=”{CSS statements}”] specifies valid CSS styling. It will be passed -directly to the browser without any parsing.

-

There is a one-to-one relationship between a slider and a parameter. -I.e. for one parameter you can put only one <slider> in the -<render> section. However, you don’t have to specify a slider - they -are optional.

-

There is a many-to-one relationship between text inputs and a -parameter. I.e. for one parameter you can put many ‘<textbox>’ elements in -the <render> section. However, you don’t have to specify a text -input - they are optional.

-

You can put only one <plot> in the <render> section. It is not -required.

-
-

Slider tag

-

Slider tag must have var attribute and optional style attribute:

-
<slider var='a' style="width:400px;float:left;" />
-
-

After processing, slider tags will be replaced by jQuery UI sliders with applied -style attribute.

-

var attribute must correspond to a parameter. Parameters can be used in any -of the function tags in functions tag. By moving slider, value of -parameter a will change, and so result of function, that depends on parameter -a, will also change.

-
-
-

Textbox tag

-

Texbox tag must have var attribute and optional style attribute:

-
<textbox var="b" style="width:50px; float:left; margin-left:10px;" />
-
-

After processing, textbox tags will be replaced by html text inputs with applied -style attribute. If you want a readonly text input, then you should use a -dynamic element instead (see section below “HTML tagsd with ID”).

-

var attribute must correspond to a parameter. Parameters can be used in any -of the function tags in functions tag. By changing the value on the text input, -value of parameter a will change, and so result of function, that depends on -parameter a, will also change.

-
-
-

Plot tag

-

Plot tag may have optional style attribute:

-
<plot style="width:50px; float:left; margin-left:10px;" />
-
-

After processing plot tags will be replaced by Flot JS plot with applied -style attribute.

-
-
-

HTML tags with ID (dynamic elements)

-

Any HTML tag with ID, e.g. <span id="answer_span_1"> can be used as a -place where result of function can be inserted. To insert function result to -an element, element ID must be included in function tag as el_id attribute -and output value must be "element":

-
<function output="element" el_id="answer_span_1">
-                function add(a, b, precision) {
-                    var x = Math.pow(10, precision || 2);
-                    return (Math.round(a * x) + Math.round(b * x)) / x;
-                }
-
-                return add(a, b, 5);
-</function>
-
-
-
-
-

Configuration tag

-

The configuration tag contains parameter settings, graph -settings, and function definitions which are to be plotted on the -graph and that use specified parameters.

-

Configuration tag contains two mandatory tag functions and parameters and -may contain another plot tag.

-
-

Parameters tag

-

Parameters tag contains parameter tags. Each parameter tag must have -var, max, min, step and initial attributes:

-
<parameters>
-        <param var="a" min="-10.0" max="10.0" step="0.1" initial="0" />
-        <param var="b" min="-10.0" max="10.0" step="0.1" initial="0" />
-</parameters>
-
-

var attribute links min, max, step and initial values to parameter name.

-

min attribute is the minimal value that a parameter can take. Slider and input -values can not go below it.

-

max attribute is the maximal value that a parameter can take. Slider and input -values can not go over it.

-

step attribute is value of slider step. When a slider increase or decreases -the specified parameter, it will do so by the amount specified with ‘step’

-

initial attribute is the initial value that the specified parameter should be -set to. Sliders and inputs will initially show this value.

-

The parameter’s name is specified by the var property. All occurrences -of sliders and/or text inputs that specify a var property, will be -connected to this parameter - i.e. they will reflect the current -value of the parameter, and will be updated when the parameter -changes.

-

If at lest one of these attributes is not set, then the parameter -will not be used, slider’s and/or text input elements that specify -this parameter will not be activated, and the specified functions -which use this parameter will not return a numeric value. This means -that neglecting to specify at least one of the attributes for some -parameter will have the result of the whole GST instance not working -properly.

-
-
-

Functions tag

-

For the GST to do something, you must defined at least one -function, which can use any of the specified parameter values. The -function expects to take the x value, do some calculations, and -return the y value. I.e. this is a 2D plot in Cartesian -coordinates. This is how the default function is meant to be used for -the graph.

-

There are other special cases of functions. They are used mainly for -outputting to elements, plot labels, or for custom output. Because -the return a single value, and that value is meant for a single element, -these function are invoked only with the set of all of the parameters. -I.e. no x value is available inside them. They are useful for -showing the current value of a parameter, showing complex static -formulas where some parameter’s value must change, and other useful -things.

-

The different style of function is specified by the output attribute.

-

Each function must be defined inside function tag in functions tag:

-
<functions>
-    <function output="element" el_id="answer_span_1">
-        function add(a, b, precision) {
-            var x = Math.pow(10, precision || 2);
-            return (Math.round(a * x) + Math.round(b * x)) / x;
-        }
-
-        return add(a, b, 5);
-    </function>
-</functions>
-
-

The parameter names (along with their values, as provided from text -inputs and/or sliders), will be available inside all defined -functions. A defined function body string will be parsed internally -by the browser’s JavaScript engine and converted to a true JS -function.

-

The function’s parameter list will automatically be created and -populated, and will include the x (when output is not specified or -is set to "graph"), and all of the specified parameter values (from sliders -and text inputs). This means that each of the defined functions will have -access to all of the parameter values. You don’t have to use them, but -they will be there.

-

Examples:

-
<function>
-    return x;
-</function>
-
-<function dot="true" label="\(y_2\)">
-    return (x + a) * Math.sin(x * b);
-</function>
-
-<function color="green">
-    function helperFunc(c1) {
-        return c1 * c1 - a;
-    }
-    return helperFunc(x + 10 * a * b) + Math.sin(a - x);
-</function>
-
-

Required parameters:

-
function body:
-
-A string composing a normal JavaScript function
-except that there is no function declaration
-(along with parameters), and no closing bracket.
-
-So if you normally would have written your
-JavaScript function like this:
-
-    function myFunc(x, a, b) {
-        return x * a + b;
-    }
-
-here you must specify just the function body
-(everything that goes between '{' and '}'). So,
-you would specify the above function like so (the
-bare-bone minimum):
-
-    <function>return x * a + b;</function>
-
-VERY IMPORTANT: Because the function will be passed
-to the browser as a single string, depending on implementation
-specifics, the end-of-line characters can be stripped. This
-means that single line JavaScript comments (starting with "//")
-can lead to the effect that everything after the first such comment
-will be treated as a comment. Therefore, it is absolutely
-necessary that such single line comments are not used when
-defining functions for GST. You can safely use the alternative
-multiple line JavaScript comments (such comments start with "/*"
-and end with "*/).
-
-VERY IMPORTANT: If you have a large function body, and decide to
-split it into several lines, than you must wrap it in "CDATA" like
-so:
-
-    <function>
-    <![CDATA[
-        var dNew;
-
-        dNew = 0.3;
-
-        return x * a + b - dNew;
-    ]]>
-    </function>
-
-

Optional parameters:

-
color:  Color name ('red', 'green', etc.) or in the form of
-        '#FFFF00'. If not specified, a default color (different
-        one for each graphed function) will be given by Flot JS.
-line:   A string - 'true' or 'false'. Should the data points be
-        connected by a line on the graph? Default is 'true'.
-dot:    A string - 'true' or 'false'. Should points be shown for
-        each data point on the graph? Default is 'false'.
-bar:    A string - 'true' or 'false'. When set to 'true', points
-        will be plotted as bars.
-label:  A string. If provided, will be shown in the legend, along
-        with the color that was used to plot the function.
-output: 'element', 'none', 'plot_label', or 'graph'. If not defined,
-        function will be plotted (same as setting 'output' to 'graph').
-        If defined, and other than 'graph', function will not be
-        plotted, but it's output will be inserted into the element
-        with ID specified by 'el_id' attribute.
-el_id:  Id of HTML element, defined in '<render>' section. Value of
-        function will be inserted as content of this element.
-disable_auto_return: By default, if JavaScript function string is written
-                     without a "return" statement, the "return" will be
-                     prepended to it. Set to "true" to disable this
-                     functionality. This is done so that simple functions
-                     can be defined in an easy fashion (for example, "a",
-                     which will be translated into "return a").
-update_on: A string - 'change', or 'slide'. Default (if not set) is
-           'slide'. This defines the event on which a given function is
-           called, and its result is inserted into an element. This
-           setting is relevant only when "output" is other than "graph".
-
-
-
When specifying el_id, it is essential to set “output” to one of
-
-
element - GST will invoke the function, and the return of it will be
-
inserted into a HTML element with id specified by el_id.
-
none - GST will simply inoke the function. It is left to the instructor
-
who writes the JavaScript function body to update all necesary -HTML elements inside the function, before it exits. This is done -so that extra steps can be preformed after an HTML element has -been updated with a value. Note, that because the return value -from this function is not actually used, it will be tempting to -omit the “return” statement. However, in this case, the attribute -“disable_auto_return” must be set to “true” in order to prevent -GST from inserting a “return” statement automatically.
-
plot_label - GST will process all plot labels (which are strings), and
-
will replace the all instances of substrings specified by -el_id with the returned value of the function. This is -necessary if you want a label in the graph to have some changing -number. Because of the nature of Flot JS, it is impossible to -achieve the same effect by setting the “output” attribute -to “element”, and including a HTML element in the label.
-
-
-
-

The above values for “output” will tell GST that the function is meant for an -HTML element (not for graph), and that it should not get an ‘x’ parameter (along -with some value).

-
-
-

[Note on MathJax and labels]

-

Independently of this module, will render all TeX code -within the <render> section into nice mathematical formulas. Just -remember to wrap it in one of:

-
\(  and  \)  -  for inline formulas (formulas surrounded by
-              standard text)
-\[  and  \]  -  if you want the formula to be a separate line
-
-

It is possible to define a label in standard TeX notation. The JS -library MathJax will work on these labels also because they are -inserted on top of the plot as standard HTML (text within a DIV).

-

If the label is dynamic, i.e. it will contain some text (numeric, or other) -that has to be updated on a parameter’s change, then one can define -a special function to handle this. The “output” of such a function must be -set to “none”, and the JavaScript code inside this function must update the -MathJax element by itself. Before exiting, MathJax typeset function should -be called so that the new text will be re-rendered by MathJax. For example,

-
-
-
<render>
-
... -<span id=”dynamic_mathjax”></span>
-
-

</render> -... -<function output=”none” el_id=”dynamic_mathjax”> -<![CDATA[

-
-

var out_text;

-
-
out_text = “\[\mathrm{Percent \space of \space treated \space with \space YSS=\frac{“
-
+(treated_men*10)+”\space men *” -+(your_m_tx_yss/100)+”\space prev. +\space ” -+((100-treated_men)*10)+”\space women *” -+(your_f_tx_yss/100)+”\space prev.}” -+”{1000\space total\space treated\space patients}” -+”=”+drummond_combined[0][1]+”\%}\]”; -mathjax_for_prevalence_calcs+=”\[\mathrm{Percent \space of \space untreated \space with \space YSS=\frac{” -+(untreated_men*10)+”\space men *” -+(your_m_utx_yss/100)+”\space prev. +\space ” -+((100-untreated_men)*10)+”\space women *” -+(your_f_utx_yss/100)+”\space prev.}” -+”{1000\space total\space untreated\space patients}” -+”=”+drummond_combined[1][1]+”\%}\]”;
-
-

$(“#dynamic_mathjax”).html(out_text);

-

MathJax.Hub.Queue([“Typeset”,MathJax.Hub,”dynamic_mathjax”]);

-
-

]]> -</function> -...

-
-
-
-

Plot tag

-

Plot tag inside configuration tag defines settings for plot output.

-

Required parameters:

-
xrange: 2 functions that must return value. Value is constant (3.1415)
-        or depend on parameter from parameters section:
-            <xrange>
-                <min>return 0;</min>
-                <max>return 30;</max>
-            </xrange>
-                                    or
-            <xrange>
-                <min>return -a;</min>
-                <max>return a;</max>
-            </xrange>
-
-        All functions will be calculated over domain between xrange:min
-        and xrange:max. Xrange depending on parameter is extremely
-        useful when domain(s) of your function(s) depends on parameter
-        (like circle, when parameter is radius and you want to allow
-        to change it).
-
-

Optional parameters:

-
num_points: Number of data points to generated for the plot. If
-            this is not set, the number of points will be
-            calculated as width / 5.
-
-bar_width: If functions are present which are to be plotted as bars,
-           then this parameter specifies the width of the bars. A
-           numeric value for this parameter is expected.
-
-bar_align: If functions are present which are to be plotted as bars,
-           then this parameter specifies how to align the bars relative
-           to the tick. Available values are "left" and "center".
-
-xticks,
-yticks:    3 floating point numbers separated by commas. This
-           specifies how many ticks are created, what number they
-           start at, and what number they end at. This is different
-           from the 'xrange' setting in that it has nothing to do
-           with the data points - it control what area of the
-           Cartesian space you will see. The first number is the
-           first tick's value, the second number is the step
-           between each tick, the third number is the value of the
-           last tick. If these configurations are not specified,
-           Flot will chose them for you based on the data points
-           set that he is currently plotting. Usually, this results
-           in a nice graph, however, sometimes you need to fine
-           grain the controls. For example, when you want to show
-           a fixed area of the Cartesian space, even when the data
-           set changes. On it's own, Flot will recalculate the
-           ticks, which will result in a different graph each time.
-           By specifying the xticks, yticks configurations, only
-           the plotted data will change - the axes (ticks) will
-           remain as you have defined them.
-
-xticks_names, yticks_names:
-          A JSON string which represents a mapping of xticks, yticks
-          values to some defined strings. If specified, the graph will
-          not have any xticks, yticks except those for which a string
-          value has been defined in the JSON string. Note that the
-          matching will be string-based and not numeric. I.e. if a tick
-          value was "3.70" before, then inside the JSON there should be
-          a mapping like {..., "3.70": "Some string", ...}. Example:
-
-              <xticks_names>
-              <![CDATA[
-              {
-                  "1": "Treated", "2": "Not Treated",
-                  "4": "Treated", "5": "Not Treated",
-                  "7": "Treated", "8": "Not Treated"
-              }
-              ]]>
-              </xticks_names>
-
-              <yticks_names>
-              <![CDATA[
-                  {"0": "0%", "10": "10%", "20": "20%", "30": "30%", "40": "40%", "50": "50%"}
-              ]]>
-              </yticks_names>
-
-xunits,
-yunits:   Units values to be set on axes. Use MathJax. Example:
-            <xunits>\(cm\)</xunits>
-            <yunits>\(m\)</yunits>
-
-moving_label:
-          A way to specify a label that should be positioned dynamically,
-          based on the values of some parameters, or some other factors.
-          It is similar to a <function>, but it is only valid for a plot
-          because it is drawn relative to the plot coordinate system.
-
-          Multiple "moving_label" configurations can be provided, each one
-          with a unique text and a unique set of functions that determine
-          it's dynamic positioning.
-
-          Each "moving_label" can have a "color" attribute (CSS color notation),
-          and a "weight" attribute. "weight" can be one of "normal" or "bold",
-          and determines the styling of moving label's text.
-
-          Each "moving_label" function should return an object with a 'x'
-          and 'y properties. Within those functions, all of the parameter
-          names along with their value are available.
-
-          Example (note that "return" statement is missing; it will be automatically
-          inserted by GST):
-
-              <moving_label text="Co" weight="bold" color="red>
-              <![CDATA[  {'x': -50, 'y': c0};]]>
-              </moving_label>
-
-asymptote:
-          Add a vertical or horizontal asymptote to the graph which will
-          be dynamically repositioned based on the specified function.
-
-          It is similar to the function in that it provides a JavaScript body function
-          string. This function will be used to calculate the position of the asymptote
-          relative to the axis specified by the "type" parameter.
-
-          Required parameters:
-              type:
-                    Which axis should the asymptote be plotted against. Available values
-                    are "x" and "y".
-
-          Optional parameters:
-              color:
-                    The color of the line. A valid CSS color string is expected.
-
-
-
-
-
-

Example

-
-

Plotting, sliders and inputs

-
<vertical>
-    <graphical_slider_tool>
-      <render>
-
-          <h2>Graphic slider tool: full example.</h2>
-            <p>
-                A simple equation
-                    \(
-                        y_1 = 10 \times b \times \frac{sin(a \times x) \times sin(b \times x)}{cos(b \times x) + 10}
-                    \)
-                can be plotted.
-            </p>
-
-            <!-- make text and input or slider at the same line -->
-            <div>
-              <p style="float:left;"> Currently \(a\) is</p>
-              <!-- readonly input for a -->
-              <span id="a_readonly" style="width:50px; float:left; margin-left:10px;"/>
-            </div>
-            <!-- clear:left will make next text to begin from new line -->
-            <p style="clear:left">   This one
-                  \(
-                      y_2 = sin(a \times x)
-                  \)
-              will be overlayed on top.
-            </p>
-            <div>
-              <p style="float:left;">Currently \(b\) is </p>
-              <textbox var="b" style="width:50px; float:left; margin-left:10px;"/>
-            </div>
-            <div style="clear:left;">
-              <p style="float:left;">To change \(a\) use:</p>
-              <slider var="a" style="width:400px;float:left;margin-left:10px;"/>
-            </div>
-            <div style="clear:left;">
-              <p style="float:left;">To change \(b\) use:</p>
-              <slider var="b" style="width:400px;float:left;margin-left:10px;"/>
-            </div>
-            <plot style='clear:left;width:600px;padding-top:15px;padding-bottom:20px;'/>
-            <div style="clear:left;height:50px;">
-             <p style="float:left;">Second input for b:</p>
-             <!-- editable input for b -->
-              <textbox var="b" style="color:red;width:60px;float:left;margin-left:10px;"/>
-            </div >
-      </render>
-
-      <configuration>
-
-        <parameters>
-            <param var="a" min="90" max="120" step="10" initial="100" />
-            <param var="b" min="120" max="200" step="2.3" initial="120" />
-        </parameters>
-
-        <functions>
-
-          <function color="#0000FF" line="false" dot="true" label="\(y_1\)">
-            return 10.0 * b * Math.sin(a * x) * Math.sin(b * x) / (Math.cos(b * x) + 10);
-          </function>
-          <function color="red" line="true" dot="false" label="\(y_2\)">
-            <!-- works w/o return, if function is single line -->
-            Math.sin(a * x);
-          </function>
-          <function color="#FFFF00" line="false" dot="false" label="unknown">
-            function helperFunc(c1) {
-              return c1 * c1 - a;
-            }
-
-            return helperFunc(x + 10 * a * b) + Math.sin(a - x);
-          </function>
-          <function output="element" el_id="a_readonly">a</function>
-        </functions>
-
-        <plot>
-
-          <xrange>
-              <min>return 0;</min>
-              <!-- works w/o return -->
-              <max>30</max>
-          </xrange>
-
-          <num_points>120</num_points>
-
-          <xticks>0, 3, 30</xticks>
-          <yticks>-1.5, 1.5, 13.5</yticks>
-
-          <xunits>\(cm\)</xunits>
-          <yunits>\(m\)</yunits>
-        </plot>
-      </configuration>
-    </graphical_slider_tool>
-</vertical>
-
-
-
-
-

Update of html elements, no plotting

-
<vertical>
-    <graphical_slider_tool>
-        <render>
-            <h2>Graphic slider tool: Output to DOM element.</h2>
-
-            <p>a + b = <span id="answer_span_1"></span></p>
-
-            <div style="clear:both">
-                <p style="float:left;margin-right:10px;">a</p>
-                <slider var='a' style="width:400px;float:left;"/>
-                <textbox var='a' style="width:50px;float:left;margin-left:15px;"/>
-            </div>
-
-            <div style="clear:both">
-                <p style="float:left;margin-right:10px;">b</p>
-                <slider var='b' style="width:400px;float:left;"/>
-                <textbox var='b' style="width:50px;float:left;margin-left:15px;"/>
-            </div>
-            <br/><br/><br/>
-            <plot/>
-        </render>
-        <configuration>
-            <parameters>
-                <param var="a" min="-10.0" max="10.0" step="0.1" initial="0" />
-                <param var="b" min="-10.0" max="10.0" step="0.1" initial="0" />
-            </parameters>
-
-            <functions>
-                <function output="element" el_id="answer_span_1">
-                    function add(a, b, precision) {
-                        var x = Math.pow(10, precision || 2);
-                        return (Math.round(a * x) + Math.round(b * x)) / x;
-                    }
-
-                    return add(a, b, 5);
-                </function>
-            </functions>
-        </configuration>
-    </graphical_slider_tool>
-</vertical>
-
-
-
-
-

Circle with dynamic radius

-
<vertical>
-    <graphical_slider_tool>
-      <render>
-        <h2>Graphic slider tool: Dynamic range and implicit functions.</h2>
-
-        <p>You can make x range (not ticks of x axis) of functions to depend on
-          parameter value. This can be useful when function domain depends
-          on parameter.</p>
-        <p>Also implicit functons like circle can be plotted as 2 separate
-            functions of same color.</p>
-         <div style="height:50px;">
-         <slider var='a' style="width:400px;float:left;"/>
-         <textbox var='a' style="float:left;width:60px;margin-left:15px;"/>
-       </div>
-        <plot style="margin-top:15px;margin-bottom:15px;"/>
-      </render>
-      <configuration>
-        <parameters>
-            <param var="a" min="5" max="25" step="0.5" initial="12.5" />
-        </parameters>
-        <functions>
-          <function color="red">Math.sqrt(a * a - x * x)</function>
-          <function color="red">-Math.sqrt(a * a - x * x)</function>
-        </functions>
-        <plot>
-          <xrange>
-            <!-- dynamic range -->
-              <min>-a</min>
-              <max>a</max>
-          </xrange>
-          <num_points>1000</num_points>
-          <xticks>-30, 6, 30</xticks>
-          <yticks>-30, 6, 30</yticks>
-        </plot>
-      </configuration>
-    </graphical_slider_tool>
-</vertical>
-
-
-
-
-

Example of a bar graph

-
<vertical>
-    <graphical_slider_tool>
-      <render>
-        <h2>Graphic slider tool: Bar graph example.</h2>
-
-        <p>We can request the API to plot us a bar graph.</p>
-        <div style="clear:both">
-          <p style="width:60px;float:left;">a</p>
-          <slider var='a' style="width:400px;float:left;"/>
-          <textbox var='a' style="width:50px;float:left;margin-left:15px;"/>
-          <br /><br /><br />
-          <p style="width:60px;float:left;">b</p>
-          <slider var='b' style="width:400px;float:left;"/>
-          <textbox var='b' style="width:50px;float:left;margin-left:15px;"/>
-        </div>
-          <plot style="clear:left;"/>
-      </render>
-      <configuration>
-        <parameters>
-            <param var="a" min="-100" max="100" step="5" initial="25" />
-            <param var="b" min="-100" max="100" step="5" initial="50" />
-        </parameters>
-        <functions>
-          <function bar="true" color="blue" label="Men">
-            <![CDATA[if (((x>0.9) && (x<1.1)) || ((x>4.9) && (x<5.1))) { return Math.sin(a * 0.01 * Math.PI + 2.952 * x); }
-            else {return undefined;}]]>
-          </function>
-          <function bar="true" color="red" label="Women">
-            <![CDATA[if (((x>1.9) && (x<2.1)) || ((x>3.9) && (x<4.1))) { return Math.cos(b * 0.01 * Math.PI + 3.432 * x); }
-            else {return undefined;}]]>
-          </function>
-          <function bar="true" color="green" label="Other 1">
-            <![CDATA[if (((x>1.9) && (x<2.1)) || ((x>3.9) && (x<4.1))) { return Math.cos((b - 10 * a) * 0.01 * Math.PI + 3.432 * x); }
-            else {return undefined;}]]>
-          </function>
-          <function bar="true" color="yellow" label="Other 2">
-            <![CDATA[if (((x>1.9) && (x<2.1)) || ((x>3.9) && (x<4.1))) { return Math.cos((b + 7 * a) * 0.01 * Math.PI + 3.432 * x); }
-            else {return undefined;}]]>
-          </function>
-        </functions>
-        <plot>
-          <xrange><min>1</min><max>5</max></xrange>
-          <num_points>5</num_points>
-          <xticks>0, 0.5, 6</xticks>
-          <yticks>-1.5, 0.1, 1.5</yticks>
-          <xticks_names>
-          <![CDATA[
-              {
-                  "1.5": "Single", "4.5": "Married"
-              }
-          ]]>
-          </xticks_names>
-          <yticks_names>
-          <![CDATA[
-              {
-                  "-1.0": "-100%", "-0.5": "-50%", "0.0": "0%", "0.5": "50%", "1.0": "100%"
-              }
-          ]]>
-          </yticks_names>
-          <bar_width>0.4</bar_width>
-        </plot>
-      </configuration>
-    </graphical_slider_tool>
-</vertical>
-
-
-
-
-

Example of moving labels of graph

-
<vertical>
- <graphical_slider_tool>
-      <render>
-        <h1>Graphic slider tool: Dynamic labels.</h1>
-        <p>There are two kinds of dynamic lables.
-        1) Dynamic changing values in graph legends.
-        2) Dynamic labels, which coordinates depend on parameters </p>
-         <p>a: <slider var="a"/></p>
-          <br/>
-          <p>b: <slider var="b"/></p>
-          <br/><br/>
-          <plot style="width:400px; height:400px;"/>
-      </render>
-
-      <configuration>
-        <parameters>
-            <param var="a" min="-10" max="10" step="1" initial="0" />
-            <param var="b" min="0" max="10" step="0.5" initial="5" />
-        </parameters>
-        <functions>
-          <function label="Value of a is: dyn_val_1">a * x + b</function>
-         <!-- dynamic values in legend -->
-         <function output="plot_label" el_id="dyn_val_1">a</function>
-        </functions>
-        <plot>
-          <xrange><min>0</min><max>30</max></xrange>
-          <num_points>10</num_points>
-          <xticks>0, 6, 30</xticks>
-          <yticks>-9, 1, 9</yticks>
-          <!-- custom labels with coordinates as any function of parameter -->
-          <moving_label text="Dynam_lbl 1" weight="bold">
-          <![CDATA[  {'x': 10, 'y': a};]]>
-          </moving_label>
-          <moving_label text="Dynam lbl 2" weight="bold">
-          <![CDATA[  {'x': -6, 'y': b};]]>
-          </moving_label>
-        </plot>
-      </configuration>
-    </graphical_slider_tool>
-</vertical>
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/poll_module/poll_module.html b/course_data_formats/poll_module/poll_module.html deleted file mode 100644 index 5dafd20f77..0000000000 --- a/course_data_formats/poll_module/poll_module.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - - - Xml format of poll module [xmodule] — edX Data 0.1 documentation - - - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

Previous topic

-

XML format of graphical slider tool [xmodule]

-

Next topic

-

Xml format of conditional module [xmodule]

-

This Page

- - - -
-
- -
-
-
-
- -
-

Xml format of poll module [xmodule]

-
-

Format description

-

The main tag of Poll module input is:

-
<poll_question> ... </poll_question>
-
-
-

poll_question can include any number of the following tags: -any xml and answer tag. All inner xml, except for answer tags, we call “question”.

-
-

poll_question tag

-

Xmodule for creating poll functionality - voting system. The following attributes can -be specified for this tag:

-
name - Name of xmodule.
-[display_name| AUTOGENERATE] - Display name of xmodule. When this attribute is not defined - display name autogenerate with some hash.
-[reset | False] - Can reset/revote many time (value = True/False)
-
-
-
-

answer tag

-

Define one of the possible answer for poll module. The following attributes can -be specified for this tag:

-
id - unique identifier (using to identify the different answers)
-
-

Inner text - Display text for answer choice.

-
-
-
-

Example

-
-

Examples of poll

-
<poll_question name="second_question" display_name="Second question">
-    <h3>Age</h3>
-    <p>How old are you?</p>
-    <answer id="less18">&lt; 18</answer>
-    <answer id="10_25">from 10 to 25</answer>
-    <answer id="more25">&gt; 25</answer>
-</poll_question>
-
-
-
-
-

Examples of poll with unable reset functionality

-
<poll_question name="first_question_with_reset" display_name="First question with reset"
-    reset="True">
-    <h3>Your gender</h3>
-    <p>You are man or woman?</p>
-    <answer id="man">Man</answer>
-    <answer id="woman">Woman</answer>
-</poll_question>
-
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/course_data_formats/symbolic_response.html b/course_data_formats/symbolic_response.html deleted file mode 100644 index 078f954690..0000000000 --- a/course_data_formats/symbolic_response.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - Symbolic Response — edX Data 0.1 documentation - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

This Page

- - - -
-
- -
-
-
-
- -
-

Symbolic Response

-

This document plans to document features that the current symbolic response -supports. In general it allows the input and validation of math expressions, -up to commutativity and some identities.

-
-

Features

-
-
This is a partial list of features, to be revised as we go along:
-
    -
  • sub and superscripts: an expression following the ^ character -indicates exponentiation. To use superscripts in variables, the syntax -is b_x__d for the variable b with subscript x and super -d.

    -

    An example of a problem:

    -
    <symbolicresponse expect="a_b^c + b_x__d" size="30">
    -
    -
    -
    -
    <textline math=”1”
    -

    preprocessorClassName=”SymbolicMathjaxPreprocessor” -preprocessorSrc=”/static/js/capa/symbolic_mathjax_preprocessor.js”/>

    -
    -
    -
    -

    </symbolicresponse>

    -

    It’s a bit of a pain to enter that.

    -
  • -
  • The script-style math variant. What would be outputted in latex if you -entered \mathcal{N}. This is used in some variables.

    -

    An example:

    -
    <symbolicresponse expect="scriptN_B + x" size="30">
    -  <textline math="1"/>
    -</symbolicresponse>
    -
    -

    There is no fancy preprocessing needed, but if you had superscripts or -something, you would need to include that part.

    -
  • -
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/genindex.html b/genindex.html deleted file mode 100644 index f87833ac25..0000000000 --- a/genindex.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - Index — edX Data 0.1 documentation - - - - - - - - - - - - - -
-
- - - - - -
-
- -
-
-
-
- - -

Index

- -
- C - | D - | P - | X - -
-

C

- - -
- -
conditional_module (module) -
- -
- -

D

- - -
- -
drag_and_drop_input (module) -
- -
- -

P

- - -
- -
poll_module (module) -
- -
- -

X

- - -
- -
xml_format_gst (module) -
- -
- - - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 1cb2eecff1..0000000000 --- a/index.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - edX Data Documentation — edX Data 0.1 documentation - - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

Next topic

-

Course XML Tutorial

-

This Page

- - - -
-
- -
-
-
-
- -
-

edX Data Documentation

-

The following documents are targetted at those who are working with various data formats consumed and produced by the edX platform – primarily course authors and those who are conducting research on data in our system. Developer oriented discussion of architecture and strictly internal APIs should be documented elsewhere.

- -
-

Internal Data Formats

-

These document describe how we store course structure, student state/progress, and events internally. Useful for developers or researchers who interact with our raw data exports.

- -
-
-
-

Indices and tables

- -
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/internal_data_formats/discussion_data.html b/internal_data_formats/discussion_data.html deleted file mode 100644 index 81792c8fa2..0000000000 --- a/internal_data_formats/discussion_data.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - Discussion Forums Data — edX Data 0.1 documentation - - - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

Previous topic

-

Student Info and Progress Data

-

Next topic

-

Tracking Logs

-

This Page

- - - -
-
- -
-
-
-
- -
-

Discussion Forums Data

-

Discussions in edX are stored in a MongoDB database as collections of JSON documents.

-

The primary collection holding all posts and comments written by users is contents. There are two types of objects stored here, though they share much of the same structure. A CommentThread represents a comment that opens a new thread – usually a student question of some sort. A Comment is a reply in the conversation started by a CommentThread.

-
-

Shared Attributes

-

The attributes that Comment and CommentThread objects share are listed below.

-
-

_id

-
-
The 12-byte MongoDB unique ID for this collection. Like all MongoDB IDs, they are monotonically increasing and the first four bytes are a timestamp.
-
-
-

_type

-
-
CommentThread or Comment depending on the type of object.
-
-
-

anonymous

-
-
If true, this Comment or CommentThread will show up as written by anonymous, even to those who have moderator privileges in the forums.
-
-
-

anonymous_to_peers

-
-
The idea behind this field was that anonymous_to_peers = true would make the the comment appear anonymous to your fellow students, but would allow the course staff to see who you were. However, that was never implemented in the UI, and only anonymous is actually used. The anonymous_to_peers field is always false.
-
-
-

at_position_list

-
-
No longer used. Child comments (replies) are just sorted by their created_at timestamp instead.
-
-
-

author_id

-
-
The user who wrote this. Corresponds to the user IDs we store in our MySQL database as auth_user.id
-
-
-

body

-
-
Text of the comment in Markdown. UTF-8 encoded.
-
-
-

course_id

-
-
The full course_id of the course that this comment was made in, including org and run. This value can be seen in the URL when browsing the courseware section. Example: BerkeleyX/Stat2.1x/2013_Spring
-
-
-

created_at

-
-
Timestamp in UTC. Example: ISODate(“2013-02-21T03:03:04.587Z”)
-
-
-

updated_at

-
-
Timestamp in UTC. Example: ISODate(“2013-02-21T03:03:04.587Z”)
-
-
-

votes

-
-
Both CommentThread and Comment objects support voting. Comment objects that are replies to other comments still have this attribute, even though there is no way to actually vote on them in the UI. This attribute is a dictionary that has the following inside:
-
    -
  • up = list of User IDs that up-voted this comment or thread.
  • -
  • down = list of User IDs that down-voted this comment or thread (no longer used).
  • -
  • up_count = total upvotes received.
  • -
  • down_count = total downvotes received (no longer used).
  • -
  • count = total votes cast.
  • -
  • point = net vote, now always equal to up_count.
  • -
-

A user only has one vote per Comment or CommentThread. Though it’s still written to the database, the UI no longer displays an option to downvote anything.

-
-
-
-

CommentThread

-

The following fields are specific to CommentThread objects. Each thread in the forums is represented by one CommentThread.

-
-

closed

-
-
If true, this thread was closed by a forum moderator/admin.
-
-
-

comment_count

-
-

The number of comment replies in this thread. This includes all replies to replies, but does not include the original comment that started the thread. So if we had:

-
CommentThread: "What's a good breakfast?"
-  * Comment: "Just eat cereal!"
-  * Comment: "Try a Loco Moco, it's amazing!"
-    * Comment: "A Loco Moco? Only if you want a heart attack!"
-    * Comment: "But it's worth it! Just get a spam musubi on the side."
-
-

In that exchange, the comment_count for the CommentThread is 4.

-
-
-
-

commentable_id

-
-
We can attach a discussion to any piece of content in the course, or to top level categories like “General” and “Troubleshooting”. When the commentable_id is a high level category, it’s specified in the course’s policy file. When it’s a specific content piece (e.g. 600x_l5_p8, meaning 6.00x, Lecture Sequence 5, Problem 8), it’s taken from a discussion module in the course.
-
-
-

last_activity_at

-
-
Timestamp in UTC indicating the last time there was activity in the thread (new posts, edits, etc). Closing the thread does not affect the value in this field.
-
-
-

tags_array

-
-
Meant to be a list of tags that were user definable, but no longer used.
-
-
-

title

-
-
Title of the thread, UTF-8 string.
-
-
-
-

Comment

-

The following fields are specific to Comment objects. A Comment is a reply to a CommentThread (so an answer to the question), or a reply to another Comment (a comment about somebody’s answer). It used to be the case that Comment replies could nest much more deeply, but we later capped it at just these three levels (question, answer, comment) much in the way that StackOverflow does.

-
-

endorsed

-
-
Boolean value, true if a forum moderator or instructor has marked that this Comment is a correct answer for whatever question the thread was asking. Exists for Comments that are replies to other Comments, but in that case endorsed is always false because there’s no way to endorse such comments through the UI.
-
-
-

comment_thread_id

-
-
What CommentThread are we a part of? All Comment objects have this.
-
-
-

parent_id

-
-
The parent_id is the _id of the Comment that this comment was made in reply to. Note that this only occurs in a Comment that is a reply to another Comment; it does not appear in a Comment that is a reply to a CommentThread.
-
-
-

parent_ids

-
-
The parent_ids attribute appears in all Comment objects, and contains the _id of all ancestor comments. Since the UI now prevents comments from being nested more than one layer deep, it will only ever have at most one element in it. If a Comment has no parent, it’s an empty list.
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/internal_data_formats/sql_schema.html b/internal_data_formats/sql_schema.html deleted file mode 100644 index 4a2d9087c1..0000000000 --- a/internal_data_formats/sql_schema.html +++ /dev/null @@ -1,959 +0,0 @@ - - - - - - - - - - Student Info and Progress Data — edX Data 0.1 documentation - - - - - - - - - - - - - - - - - -
-
-
-
- -
-

Student Info and Progress Data

-

The following sections detail how edX stores student state data internally, and is useful for developers and researchers who are examining database exports. This information includes demographic information collected at signup, course enrollment, course progress, and certificate status.

-

Conventions to keep in mind:

-
    -
  • We currently use MySQL 5.1 with InnoDB tables
  • -
  • All strings are stored as UTF-8.
  • -
  • All datetimes are stored as UTC.
  • -
  • Tables that are built into the Django framework are not documented here unless we use them in unconventional ways.
  • -
-

All of our tables will be described below, first in summary form with field types and constraints, and then with a detailed explanation of each field. For those not familiar with the MySQL schema terminology in the table summaries:

-
-
Type
-

This is the kind of data it is, along with the size of the field. When a numeric field has a length specified, it just means that’s how many digits we want displayed – it has no affect on the number of bytes used.

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueMeaning
int4 byte integer.
smallint2 byte integer, sometimes used for enumerated values.
tinyint1 byte integer, but usually just used to indicate a boolean field with 0 = False and 1 = True.
varcharString, typically short and indexable. The length is the number of chars, not bytes (so unicode friendly).
longtextA long block of text, usually not indexed.
dateDate
datetimeDatetime in UTC, precision in seconds.
-
-
-

Null

-
-
---- - - - - - - - - - - - - - -
ValueMeaning
YESNULL values are allowed
NONULL values are not allowed
-
-

Note

-

Django often just places blank strings instead of NULL when it wants to indicate a text value is optional. This is used more meaningful for numeric and date fields.

-
-
-
-
Key
-
---- - - - - - - - - - - - - - - - - -
ValueMeaning
PRIPrimary key for the table, usually named id, unique
UNIUnique
MULIndexed for fast lookup, but the same value can appear multiple times. A Unique index that allows NULL can also show up as MUL.
-
-
-
-

User Information

-
-

auth_user

-

The auth_user table is built into the Django web framework that we use. It holds generic information necessary for basic login and permissions information. It has the following fields:

-
+------------------------------+--------------+------+-----+
-| Field                        | Type         | Null | Key |
-+------------------------------+--------------+------+-----+
-| id                           | int(11)      | NO   | PRI |
-| username                     | varchar(30)  | NO   | UNI |
-| first_name                   | varchar(30)  | NO   |     | # Never used
-| last_name                    | varchar(30)  | NO   |     | # Never used
-| email                        | varchar(75)  | NO   | UNI |
-| password                     | varchar(128) | NO   |     |
-| is_staff                     | tinyint(1)   | NO   |     |
-| is_active                    | tinyint(1)   | NO   |     |
-| is_superuser                 | tinyint(1)   | NO   |     |
-| last_login                   | datetime     | NO   |     |
-| date_joined                  | datetime     | NO   |     |
-| status                       | varchar(2)   | NO   |     | # No longer used
-| email_key                    | varchar(32)  | YES  |     | # No longer used
-| avatar_type                  | varchar(1)   | NO   |     | # No longer used
-| country                      | varchar(2)   | NO   |     | # No longer used
-| show_country                 | tinyint(1)   | NO   |     | # No longer used
-| date_of_birth                | date         | YES  |     | # No longer used
-| interesting_tags             | longtext     | NO   |     | # No longer used
-| ignored_tags                 | longtext     | NO   |     | # No longer used
-| email_tag_filter_strategy    | smallint(6)  | NO   |     | # No longer used
-| display_tag_filter_strategy  | smallint(6)  | NO   |     | # No longer used
-| consecutive_days_visit_count | int(11)      | NO   |     | # No longer used
-+------------------------------+--------------+------+-----+
-
-
-

id

-
-
Primary key, and the value typically used in URLs that reference the user. A user has the same value for id here as they do in the MongoDB database’s users collection. Foreign keys referencing auth_user.id will often be named user_id, but are sometimes named student_id.
-
-
-

username

-
-
The unique username for a user in our system. It may contain alphanumeric, _, @, +, . and - characters. The username is the only information that the students give about themselves that we currently expose to other students. We have never allowed people to change their usernames so far, but that’s not something we guarantee going forward.
-
-
-

first_name

-
-
-

Note

-

Not used; we store a user’s full name in auth_userprofile.name instead.

-
-
-
-
-

last_name

-
-
-

Note

-

Not used; we store a user’s full name in auth_userprofile.name instead.

-
-
-
-
-

email

-
-
Their email address. While Django by default makes this optional, we make it required, since it’s the primary mechanism through which people log in. Must be unique to each user. Never shown to other users.
-
-
-

password

-
-
A hashed version of the user’s password. Depending on when the password was last set, this will either be a SHA1 hash or PBKDF2 with SHA256 (Django 1.3 uses the former and 1.4 the latter).
-
-
-

is_staff

-
-

This value is 1 if the user is a staff member of edX with corresponding elevated privileges that cut across courses. It does not indicate that the person is a member of the course staff for any given course. Generally, users with this flag set to 1 are either edX program managers responsible for course delivery, or edX developers who need access for testing and debugging purposes. People who have is_staff = 1 get instructor privileges on all courses, along with having additional debug information show up in the instructor tab.

-

Note that this designation has no bearing with a user’s role in the forums, and confers no elevated privileges there.

-

Most users have a 0 for this value.

-
-
-
-

is_active

-
-

This value is 1 if the user has clicked on the activation link that was sent to them when they created their account, and 0 otherwise. Users who have is_active = 0 generally cannot log into the system. However, when users first create their account, they are automatically logged in even though they are not active. This is to let them experience the site immediately without having to check their email. They just get a little banner at the top of their dashboard reminding them to check their email and activate their account when they have time. If they log out, they won’t be able to log back in again until they’ve activated. However, because our sessions last a long time, it is theoretically possible for someone to use the site as a student for days without being “active”.

-

Once is_active is set to 1, the only circumstance where it would be set back to 0 would be if we decide to ban the user (which is very rare, manual operation).

-
-
-
-

is_superuser

-
-
Value is 1 if the user has admin privileges. Only the earliest developers of the system have this set to 1, and it’s no longer really used in the codebase. Set to 0 for almost everybody.
-
-
-

last_login

-
-
A datetime of the user’s last login. Should not be used as a proxy for activity, since people can use the site all the time and go days between logging in and out.
-
-
-

date_joined

-
-
Date that the account was created (NOT when it was activated).
-
-
-

(obsolete fields)

-
-

All the following fields were added by an application called Askbot, a discussion forum package that is no longer part of the system:

-
    -
  • status
  • -
  • email_key
  • -
  • avatar_type
  • -
  • country
  • -
  • show_country
  • -
  • date_of_birth
  • -
  • interesting_tags
  • -
  • ignored_tags
  • -
  • email_tag_filter_strategy
  • -
  • display_tag_filter_strategy
  • -
  • consecutive_days_visit_count
  • -
-

Only users who were part of the prototype 6.002x course run in the Spring of 2012 would have any information in these fields. Even with those users, most of this information was never collected. Only the fields that are automatically generated have any values in them, such as tag settings.

-

These fields are completely unrelated to the discussion forums we currently use, and will eventually be dropped from this table.

-
-
-
-
-

auth_userprofile

-

The auth_userprofile table is mostly used to store user demographic information collected during the signup process. We also use it to store certain additional metadata relating to certificates. Every row in this table corresponds to one row in auth_user:

-
+--------------------+--------------+------+-----+
-| Field              | Type         | Null | Key |
-+--------------------+--------------+------+-----+
-| id                 | int(11)      | NO   | PRI |
-| user_id            | int(11)      | NO   | UNI |
-| name               | varchar(255) | NO   | MUL |
-| language           | varchar(255) | NO   | MUL | # Prototype course users only
-| location           | varchar(255) | NO   | MUL | # Prototype course users only
-| meta               | longtext     | NO   |     |
-| courseware         | varchar(255) | NO   |     | # No longer used
-| gender             | varchar(6)   | YES  | MUL | # Only users signed up after prototype
-| mailing_address    | longtext     | YES  |     | # Only users signed up after prototype
-| year_of_birth      | int(11)      | YES  | MUL | # Only users signed up after prototype
-| level_of_education | varchar(6)   | YES  | MUL | # Only users signed up after prototype
-| goals              | longtext     | YES  |     | # Only users signed up after prototype
-| allow_certificate  | tinyint(1)   | NO   |     |
-+--------------------+--------------+------+-----+
-
-

There is an important split in demographic data gathered for the students who signed up during the MITx prototype phase in the spring of 2012, and those that signed up afterwards.

-
-

id

-
-
Primary key, not referenced anywhere else.
-
-
-

user_id

-
-
A foreign key that maps to auth_user.id.
-
-
-

name

-
-

String for a user’s full name. We make no constraints on language or breakdown into first/last name. The names are never shown to other students. Foreign students usually enter a romanized version of their names, but not always.

-

It used to be our policy to require manual approval of name changes to guard the integrity of the certificates. Students would submit a name change request and someone from the team would approve or reject as appropriate. Later, we decided to allow the name changes to take place automatically, but to log previous names in the meta field.

-
-
-
-

language

-
-
User’s preferred language, asked during the sign up process for the 6.002x prototype course given in the Spring of 2012. This information stopped being collected after the transition from MITx to edX happened, but we never removed the values from our first group of students. Sometimes written in those languages.
-
-
-

location

-
-
User’s location, asked during the sign up process for the 6.002x prototype course given in the Spring of 2012. We weren’t specific, so people tended to put the city they were in, though some just specified their country and some got as specific as their street address. Again, sometimes romanized and sometimes written in their native language. Like language, we stopped collecting this field when we transitioned from MITx to edX, so it’s only available for our first batch of students.
-
-
-

meta

-
-

An optional, freeform text field that stores JSON data. This was a hack to allow us to associate arbitrary metadata with a user. An example of the JSON that can be stored here is:

-
{
-  "old_names" : [
- ["David Ormsbee", "I want to add my middle name as well.", "2012-11-15T17:28:12.658126"],
- ["Dave Ormsbee", "Dave's too informal for a certificate.", "2013-02-07T11:15:46.524331"]
-  ],
-  "old_emails" : [["dormsbee@mitx.mit.edu", "2012-10-18T15:21:41.916389"]],
-  "6002x_exit_response" : {
- "rating": ["6"],
- "teach_ee": ["I do not teach EE."],
- "improvement_textbook": ["I'd like to get the full PDF."],
- "future_offerings": ["true"],
- "university_comparison":
-   ["This course was <strong>on the same level</strong> as the university class."],
- "improvement_lectures": ["More PowerPoint!"],
- "highest_degree": ["Bachelor's degree."],
- "future_classes": ["true"],
- "future_updates": ["true"],
- "favorite_parts": ["Releases, bug fixes, and askbot."]
-  }
-}
-
-
-

The following are details about this metadata. Please note that the fields described below are found as JSON attributes inside the meta field, and are not separate database fields of their own.

-
-
old_names
-

A list of the previous names this user had, and the timestamps at which they submitted a request to change those names. These name change request submissions used to require a staff member to approve it before the name change took effect. This is no longer the case, though we still record their previous names.

-

Note that the value stored for each entry is the name they had, not the name they requested to get changed to. People often changed their names as the time for certificate generation approached, to replace nicknames with their actual names or correct spelling/punctuation errors.

-

The timestamps are UTC, like all datetimes stored in our system.

-
-
old_emails
-

A list of previous emails this user had, with timestamps of when they changed them, in a format similar to old_names. There was never an approval process for this.

-

The timestamps are UTC, like all datetimes stored in our system.

-
-
6002x_exit_response
-
Answers to a survey that was sent to students after the prototype 6.002x course in the Spring of 2012. The questions and number of questions were randomly selected to measure how much survey length affected response rate. Only students from this course have this field.
-
-
-
-
-

courseware

-
-
This can be ignored. At one point, it was part of a way to do A/B tests, but it has not been used for anything meaningful since the conclusion of the prototype course in the spring of 2012.
-
-
-

gender

-
-

Dropdown field collected during student signup. We only started collecting this information after the transition from MITx to edX, so prototype course students will have NULL for this field.

- ---- - - - - - - - - - - - - - - - - - - - - - - -
ValueMeaning
NULLThis student signed up before this information was collected
‘’ (blank)User did not specify gender
‘f’Female
‘m’Male
‘o’Other
-
-
-
-

mailing_address

-
-
Text field collected during student signup. We only started collecting this information after the transition from MITx to edX, so prototype course students will have NULL for this field. Students who elected not to enter anything will have a blank string.
-
-
-

year_of_birth

-
-
Dropdown field collected during student signup. We only started collecting this information after the transition from MITx to edX, so prototype course students will have NULL for this field. Students who decided not to fill this in will also have NULL.
-
-
-

level_of_education

-
-

Dropdown field collected during student signup. We only started collecting this information after the transition from MITx to edX, so prototype course students will have NULL for this field.

- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ValueMeaning
NULLThis student signed up before this information was collected
‘’ (blank)User did not specify level of education.
‘p’Doctorate
‘p_se’Doctorate in science or engineering (no longer used)
‘p_oth’Doctorate in another field (no longer used)
‘m’Master’s or professional degree
‘b’Bachelor’s degree
‘a’Associate’s degree
‘hs’Secondary/high school
‘jhs’Junior secondary/junior high/middle school
‘el’Elementary/primary school
‘none’None
‘other’Other
-
-
-
-

goals

-
-
Text field collected during student signup in response to the prompt, “Goals in signing up for edX”. We only started collecting this information after the transition from MITx to edX, so prototype course students will have NULL for this field. Students who elected not to enter anything will have a blank string.
-
-
-

allow_certificate

-
-
Set to 1 for most students. This field is set to 0 if log analysis has revealed that this student is accessing our site from a country that the US has an embargo against. At this time, we do not issue certificates to students from those countries.
-
-
-
-

student_courseenrollment

-

A row in this table represents a student’s enrollment for a particular course run. If they decide to unenroll in the course, we delete their entry in this table, but we still leave all their state in courseware_studentmodule untouched.

-
-

id

-
-
Primary key.
-
-
-

user_id

-
-
Student’s ID in auth_user.id
-
-
-

course_id

-
-
The ID of the course run they’re enrolling in (e.g. MITx/6.002x/2012_Fall). You can get this from the URL when you’re viewing courseware on your browser.
-
-
-

created

-
-
Datetime of enrollment, UTC.
-
-
-
-
-

Courseware Progress

-

Any piece of content in the courseware can store state and score in the courseware_studentmodule table. Grades and the user Progress page are generated by doing a walk of the course contents, searching for graded items, looking up a student’s entries for those items in courseware_studentmodule via (course_id, student_id, module_id), and then applying the grade weighting found in the course policy and grading policy files. Course policy files determine how much weight one problem has relative to another, and grading policy files determine how much categories of problems are weighted (e.g. HW=50%, Final=25%, etc.).

-
-

Warning

-

Modules might not be what you expect!

-

It’s important to understand what “modules” are in the context of our system, as the terminology can be confusing. For the conventions of this table and many parts of our code, a “module” is a content piece that appears in the courseware. This can be nearly anything that appears when users are in the courseware tab: a video, a piece of HTML, a problem, etc. Modules can also be collections of other modules, such as sequences, verticals (modules stacked together on the same page), weeks, chapters, etc. In fact, the course itself is a top level module that contains all the other contents of the course as children. You can imagine the entire course as a tree with modules at every node.

-

Modules can store state, but whether and how they do so is up to the implemenation for that particular kind of module. When a user loads page, we look up all the modules they need to render in order to display it, and then we ask the database to look up state for those modules for that user. If there is corresponding entry for that user for a given module, we create a new row and set the state to an empty JSON dictionary.

-
-
-

courseware_studentmodule

-

The courseware_studentmodule table holds all courseware state for a given user. Every student has a separate row for every piece of content in the course, making this by far our largest table:

-
+-------------+--------------+------+-----+
-| Field       | Type         | Null | Key |
-+-------------+--------------+------+-----+
-| id          | int(11)      | NO   | PRI |
-| module_type | varchar(32)  | NO   | MUL |
-| module_id   | varchar(255) | NO   | MUL |
-| student_id  | int(11)      | NO   | MUL |
-| state       | longtext     | YES  |     |
-| grade       | double       | YES  | MUL | # problem, selfassessment, and combinedopenended use this
-| created     | datetime     | NO   | MUL |
-| modified    | datetime     | NO   | MUL |
-| max_grade   | double       | YES  |     | # problem, selfassessment, and combinedopenended use this
-| done        | varchar(8)   | NO   | MUL | # ignore this
-| course_id   | varchar(255) | NO   | MUL |
-+-------------+--------------+------+-----+
-
-
-

id

-
-
Primary key. Rarely used though, since most lookups on this table are searches on the three tuple of (course_id, student_id, module_id).
-
-
-

module_type

-
-
---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
chapterThe top level categories for a course. Each of these is usually labeled as a Week in the courseware, but this is just convention.
combinedopenendedA new module type developed for grading open ended questions via self assessment, peer assessment, and machine learning.
conditionalA new module type recently developed for 8.02x, this allows you to prevent access to certain parts of the courseware if other parts have not been completed first.
courseThe top level course module of which all course content is descended.
problemA problem that the user can submit solutions for. We have many different varieties.
problemsetA collection of problems and supplementary materials, typically used for homeworks and rendered as a horizontal icon bar in the courseware. Use is inconsistent, and some courses use a sequential instead.
selfassessmentSelf assessment problems. An early test of the open ended grading system that is not in widespread use yet. Recently deprecated in favor of combinedopenended.
sequentialA collection of videos, problems, and other materials, rendered as a horizontal icon bar in the courseware.
timelimitA special module that records the time you start working on a piece of courseware and enforces time limits, used for Pearson exams. This hasn’t been completely generalized yet, so is not available for widespread use.
videosequenceA collection of videos, exercise problems, and other materials, rendered as a horizontal icon bar in the courseware. Use is inconsistent, and some courses use a sequential instead.
-

There’s been substantial muddling of our container types, particularly between sequentials, problemsets, and videosequences. In the beginning we only had sequentials, and these ended up being used primarily for two purposes: creating a sequence of lecture videos and exercises for instruction, and creating homework problem sets. The problemset and videosequence types were created with the hope that our system would have a better semantic understanding of what a sequence actually represented, and could at a later point choose to render them differently to the user if it was appropriate. Due to a variety of reasons, migration over to this has been spotty. They all render the same way at the moment.

-
-
-
-

module_id

-
-

Unique ID for a distinct piece of content in a course, these are recorded as URLs of the form i4x://{org}/{course_num}/{module_type}/{module_name}. Having URLs of this form allows us to give content a canonical representation even as we are in a state of transition between backend data stores.

- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Breakdown of example module_id: i4x://MITx/3.091x/problemset/Sample_Problems
PartExampleDefinition
i4x:// Just a convention we ran with. We had plans for the domain i4x.org at one point.
orgMITxThe organization part of the ID, indicating what organization created this piece of content.
course_num3.091xThe course number this content was created for. Note that there is no run information here, so you can’t know what runs of the course this content is being used for from the module_id alone; you have to look at the courseware_studentmodule.course_id field.
module_typeproblemsetThe module type, same value as what’s in the courseware_studentmodule.module_type field.
module_nameSample_ProblemsThe name given for this module by the content creators. If the module was not named, the system will generate a name based on the type and a hash of its contents (ex: selfassessment_03c483062389).
-
-
-
-

student_id

-
-
A reference to auth_user.id, this is the student that this module state row belongs to.
-
-
-

state

-
-

This is a JSON text field where different module types are free to store their state however they wish.

-
-
Container Modules: course, chapter, problemset, sequential, videosequence
-

The state for all of these is a JSON dictionary indicating the user’s last known position within this container. This is 1-indexed, not 0-indexed, mostly because it went out that way at one point and we didn’t want to later break saved navigation state for users.

-
-
Example: {“position” : 3}
-
When this user last interacted with this course/chapter/etc., they had clicked on the third child element. Note that the position is a simple index and not a module_id, so if you rearranged the order of the contents, it would not be smart enough to accomodate the changes and would point users to the wrong place.
-
-

The hierarchy goes: course > chapter > (problemset | sequential | videosequence)

-
-
combinedopenended
-
TODO: More details to come.
-
conditional
-
Conditionals don’t actually store any state, so this value is always an empty JSON dictionary (‘{}’). We should probably remove these entries altogether.
-
problem
-

There are many kinds of problems supported by the system, and they all have different state requirements. Note that one problem can have many different response fields. If a problem generates a random circuit and asks five questions about it, then all of that is stored in one row in courseware_studentmodule.

-

TODO: Write out different problem types and their state.

-
-
selfassessment
-
TODO: More details to come.
-
timelimit
-

This very uncommon type was only used in one Pearson exam for one course, and the format may change significantly in the future. It is currently a JSON dictionary with fields:

- ----- - - - - - - - - - - - - - - - - - - - - -
JSON fieldExampleDefinition
beginning_at1360590255.488154UTC time as measured in seconds since UNIX epoch representing when the exam was started.
ending_at1360596632.559758UTC time as measured in seconds since UNIX epoch representing the time the exam will close.
accomodation_codesDOUBLE

(optional) Sometimes students are given more time for accessibility reasons. Possible values are:

-
    -
  • NONE: no time accommodation
  • -
  • ADDHALFTIME: 1.5X normal time allowance
  • -
  • ADD30MIN: normal time allowance + 30 minutes
  • -
  • DOUBLE: 2X normal time allowance
  • -
  • TESTING: extra long period (for testing/debugging)
  • -
-
-
-
-
-
-
-

grade

-
-

Floating point value indicating the total unweighted grade for this problem that the student has scored. Basically how many responses they got right within the problem.

-

Only problem and selfassessment types use this field. All other modules set this to NULL. Due to a quirk in how rendering is done, grade can also be NULL for a tenth of a second or so the first time that a user loads a problem. The initial load will trigger two writes, the first of which will set the grade to NULL, and the second of which will set it to 0.

-
-
-
-

created

-
-
Datetime when this row was created (i.e. when the student first accessed this piece of content).
-
-
-

modified

-
-
Datetime when we last updated this row. Set to be equal to created at first. A change in modified implies that there was a state change, usually in response to a user action like saving or submitting a problem, or clicking on a navigational element that records its state. However it can also be triggered if the module writes multiple times on its first load, like problems do (see note in grade).
-
-
-

max_grade

-
-

Floating point value indicating the total possible unweighted grade for this problem, or basically the number of responses that are in this problem. Though in practice it’s the same for every entry with the same module_id, it is technically possible for it to be anything. The problems are dynamic enough where you could create a random number of responses if you wanted. This a bad idea and will probably cause grading errors, but it is possible.

-

Another way in which max_grade can differ between entries with the same module_id is if the problem was modified after the max_grade was written and the user never went back to the problem after it was updated. This might happen if a member of the course staff puts out a problem with five parts, realizes that the last part doesn’t make sense, and decides to remove it. People who saw and answered it when it had five parts and never came back to it after the changes had been made will have a max_grade of 5, while people who saw it later will have a max_grade of 4.

-

These complexities in our grading system are a high priority target for refactoring in the near future.

-

Only problem and selfassessment types use this field. All other modules set this to NULL.

-
-
-
-

done

-
-
Ignore this field. It was supposed to be an indication whether something was finished, but was never properly used and is just ‘na’ in every row.
-
-
-

course_id

-
-
The course that this row applies to, represented in the form org/course/run (ex: MITx/6.002x/2012_Fall). The same course content (same module_id) can be used in different courses, and a student’s state needs to be tracked separately for each course.
-
-
-
-
-

Certificates

-
-

certificates_generatedcertificate

-

The generatedcertificate table tracks certificate state for students who have been graded after a course completes. Currently the table is only populated when a course ends and a script is run to grade students who have completed the course:

-
+---------------+--------------+------+-----+---------+----------------+
-| Field         | Type         | Null | Key | Default | Extra          |
-+---------------+--------------+------+-----+---------+----------------+
-| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
-| user_id       | int(11)      | NO   | MUL | NULL    |                |
-| download_url  | varchar(128) | NO   |     | NULL    |                |
-| grade         | varchar(5)   | NO   |     | NULL    |                |
-| course_id     | varchar(255) | NO   | MUL | NULL    |                |
-| key           | varchar(32)  | NO   |     | NULL    |                |
-| distinction   | tinyint(1)   | NO   |     | NULL    |                |
-| status        | varchar(32)  | NO   |     | NULL    |                |
-| verify_uuid   | varchar(32)  | NO   |     | NULL    |                |
-| download_uuid | varchar(32)  | NO   |     | NULL    |                |
-| name          | varchar(255) | NO   |     | NULL    |                |
-| created_date  | datetime     | NO   |     | NULL    |                |
-| modified_date | datetime     | NO   |     | NULL    |                |
-| error_reason  | varchar(512) | NO   |     | NULL    |                |
-+---------------+--------------+------+-----+---------+----------------+
-
-
-

user_id, course_id

-
-
The table is indexed by user and course
-
-
-

status

-
-

Status may be one of these states:

-
    -
  • unavailable
  • -
  • generating
  • -
  • regenerating
  • -
  • deleting
  • -
  • deleted
  • -
  • downloadable
  • -
  • notpassing
  • -
  • restricted
  • -
  • error
  • -
-

After a course has been graded and certificates have been issued status will be one of:

-
    -
  • downloadable
  • -
  • notpassing
  • -
  • restricted
  • -
-

If the status is downloadable then the student passed the course and there will be a certificate available for download.

-
-
-
-

download_url

-
-
The download_uuid has the full URL to the certificate
-
-
-

download_uuid, verify_uuid

-
-
The two uuids are what uniquely identify the download url and the url used to download the certificate.
-
-
-

distinction

-
-
This was used for letters of distinction for 188.1x and is not being used for any current courses
-
-
-

name

-
-
This field records the name of the student that was set at the time the student was graded and the certificate was generated.
-
-
-

grade

-
-
The grade of the student recorded at the time the certificate was generated. This may be different than the current grade since grading is only done once for a course when it ends.
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/internal_data_formats/tracking_logs.html b/internal_data_formats/tracking_logs.html deleted file mode 100644 index 4dda8a8117..0000000000 --- a/internal_data_formats/tracking_logs.html +++ /dev/null @@ -1,563 +0,0 @@ - - - - - - - - - - Tracking Logs — edX Data 0.1 documentation - - - - - - - - - - - - - - -
-
-

Table Of Contents

- - -

Previous topic

-

Discussion Forums Data

-

This Page

- - - -
-
- -
-
-
-
- -
-

Tracking Logs

-
    -
  • Tracking logs are made available as separate tar files on S3 in the course-data bucket.
  • -
  • They are represented as JSON files that catalog all user interactions with the site.
  • -
  • To avoid filename collisions the tracking logs are organized by server name, where each directory corresponds to a server where they were stored.
  • -
-
-

Common Fields

-
-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fielddetailstypevalues/format
usernameusername of the user who triggered the event, empty string for anonymous events (not logged in)string 
sessionkey identifying the user’s session, may be undefinedstring32 digits key
timeGMT time the event was triggeredstringYYYY-MM-DDThh:mm:ss.xxxxxx
ipuser ip addressstring 
agentusers browser agent stringstring 
pagepage the user was visiting when the event was generatedstring$URL
event_sourceevent sourcestringbrowser, server
event_typetype of event triggered, values depends on event_sourcestringmore details listed below
eventspecifics of the event (dependenty of the event_type)string/jsonthe event string may encode a JSON record
-
-
-
-

Event Sources

-

The event_source field identifies whether the event originated in the browser (via javascript) or on the server (during the processing of a request).

-
-

Server Events

-
-
------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
event_typeevent fieldstypevalues/formatdetails
show_answerproblem_idstring id of the problem being shown. Ex: i4x://MITx/6.00x/problem/L15:L15_Problem_2
save_problem_checkproblem_idstring id of the problem being shown
 successstringcorrect, incorrectwhether the problem was correct
 attemptsintegernumber of attempts 
 correct_mapstring/json see details below
 statestring/json current problem state
 answersstring/json students answers
 reset_problemproblem_idstringid of the problem being shown
-
-
-

correct_map details

-
-
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
correct_map fieldstypevalues/formatnull allowed?
hintstring  
hintmodeboolean yes
correctnessstringcorrect, incorrect 
npointsinteger yes
msgstring  
queuestatestring/jsonkeys: key, time 
-
-
-
-
-

Browser Events

-
-
-------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
event_typefieldstypevalues/formatdetailsexample
booktypestringgotopage  
 oldinteger$PAGEfrom page number2
 newinteger$PAGEto page number25
booktypestringnextpage  
 newinteger$PAGEnext page number10
page_closeemptystring ‘page’ field indicates which page was being closed 
play_videoidstring edX id of the video being watchedi4x-HarvardX-PH207x-video-Simple_Random_Sample
 codestring youtube id of the video being watchedFU3fCJNs94Y
 currentTimefloat time the video was paused at, in seconds1.264
 speedstring0.75, 1.0, 1.25, 1.50video speed being played“1.0”
pause_videoidstring edX id of the video being watched 
 codestring youtube id of the video being watched 
 currentTimefloat time the video was paused at 
 speedstring0.75, 1.0, 1.25, 1.50video speed being played 
problem_checknonestring event field contains the values of all input fields from the problem being checked (in the style of GET parameters (key=value&key=value)) 
problem_showproblemstring id of the problem being checked 
seq_gotoidstring edX id of the sequence 
 oldinteger sequence element being jumped from3
 newinteger sequence element being jumped to5
seq_nextidstring edX id of the sequence 
 oldinteger sequence element being jumped from4
 newinteger sequence element being jumped to6
rubric_selectlocationstring location of the rubric’s problemi4x://MITx/6.00x/problem/L15:L15_Problem_2
 categoryinteger category number of the rubric selection 
 valueinteger value selected within the category 
(oe / peer_grading / staff_grading) -_show_problemlocationstring the location of the problem whose prompt we’re showing 
(oe / peer_grading / staff_grading) -_hide_problemlocationstring the location of the problem whose prompt we’re hiding 
oe_show_full_feedbackempty  the page where they’re showing full feedback is already recorded 
oe_show_respond_to_feedbackempty  the page where they’re showing the feedback response form is already recorded 
oe_feedback_response_selectedvalueinteger the value selected in the feedback response form 
-
-
-
-
- - -
-
-
-
-
- - - - \ No newline at end of file diff --git a/newindex.html b/newindex.html index 31b04efe4a..2065e9608e 100644 --- a/newindex.html +++ b/newindex.html @@ -62,9 +62,16 @@ @@ -72,34 +79,8 @@ - -
  • -

    Data

    - -
    -
    -
    -
    -
    -

    Not sure myself.

    -
    - -
    - - -
    - -
  • @@ -120,7 +101,36 @@ + + +
    +
    +
    +
    +
    +
    +

    edX docstrings.

    +
    + +
    + + diff --git a/objects.inv b/objects.inv deleted file mode 100644 index c4a441ac59..0000000000 --- a/objects.inv +++ /dev/null @@ -1,6 +0,0 @@ -# Sphinx inventory version 2 -# Project: edX Data -# Version: 0.1 -# The remainder of this file is compressed using zlib. -xڭQ۪!}NSp 8 [35EMk9FQEʸ!kԺz쳣8+'D7* -5i]H,Xn0QQa䠬C - - - - - - - Python Module Index — edX Data 0.1 documentation - - - - - - - - - - - - - - - - - - -
    -
    - - -
    -
    - -
    -
    -
    -
    - - -

    Python Module Index

    - -
    - c | - d | - p | - x -
    - - - - - - - - - - - - - - - - - - - - - - -
     
    - c
    - conditional_module -
     
    - d
    - drag_and_drop_input -
     
    - p
    - poll_module -
     
    - x
    - xml_format_gst -
    - - -
    -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/search.html b/search.html deleted file mode 100644 index 1b47b1cd84..0000000000 --- a/search.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - Search — edX Data 0.1 documentation - - - - - - - - - - - - - - - - - -
    -
    -
    -
    - -
    -
    -
    -
    - -

    Search

    -
    - -

    - Please activate JavaScript to enable the search - functionality. -

    -
    -

    - From here you can search these documents. Enter your search - words into the box below and click "search". Note that the search - function will automatically search for all of the words. Pages - containing fewer words won't appear in the result list. -

    -
    - - - -
    - -
    - -
    - -
    -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/searchindex.js b/searchindex.js deleted file mode 100644 index 3a20737186..0000000000 --- a/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({objects:{"":{poll_module:[10,0,1,""],conditional_module:[11,0,1,""],drag_and_drop_input:[9,0,1,""],xml_format_gst:[6,0,1,""]}},terms:{s_left:9,yellow:6,four:[8,9,3],num_point:6,whose:5,educ:2,under:7,preprocess:4,sha256:2,worth:[8,3],digit:[7,5,2],everi:[7,9,2,3],consecutive_days_visit_count:2,affect:[8,2],certificates_generatedcertif:2,school:2,math:[0,4,6],p_l:9,direct:3,second:[0,2,5,6,7,9,10],street:2,overall_messag:0,semest:7,chem:9,p_r:9,blue:[7,6],discussion_blackout:7,hide:[7,5],weren:2,target10:9,conduct:1,"new":[8,6,5,2,7],net:8,ever:8,metadata:[7,2],abov:[7,9,6,3],comment_thread_id:8,never:[8,7,2],here:[0,8,2,6,7,11],created_d:2,studio:[1,7],boron:9,untreated_men:6,path:9,enrol:[7,2],interpret:3,forum:[8,1,2,7],spotti:2,precis:[6,9,2],credit:7,permit:7,studi:[1,7],user_dragg:9,pdf_textbook:7,substr:6,unix:2,poll_answ:11,total:[8,1,2,3,6],unit:[7,6],dnd:9,describ:[1,9,2,7],would:[0,8,2,3,4,6,7],with_icon:9,date_join:2,call:[6,2,10,7],recommend:7,old_nam:2,type:[0,1,2,3,5,6,7,8,9],until:[7,2],show_calcul:7,relat:[7,2],award:3,warn:2,hold:[8,2],must:[0,2,3,6,7,9,11],htmlbook:7,join:7,"30t04":7,work:[1,9,2,6,7],"2012_fall":[7,2],conceptu:7,root:7,overrid:7,give:[7,2,3],gotopag:5,indic:[0,1,2,4,5,7,8],unavail:2,want:[8,2,3,6,7,9],david:2,end:[6,9,2,7],v_fb_2:9,how:[0,1,2,3,6,7,10],v_fb_1:9,answer:[0,8,2,5,7,9,10,11],widespread:2,ancestor:8,perspect:9,updat:[6,2],recogn:9,outsid:9,after:[6,9,2,7],lab:3,befor:[6,2,7],wrong:[9,2],sample_problem:2,averag:3,askbot:2,attempt:[7,5,9,11],third:[0,6,9,2,7],obsolet:[7,2],neglect:6,environ:7,enter:[0,4,2],order:[0,6,9,2,7],origin:[8,7,5],feedback:[0,5],bar_width:6,over:[6,9,2,7],fall:7,becaus:[8,6,9,2],privileg:[8,2],vari:7,textbox:6,smallint:2,uuid:2,img:[7,9],fix:[6,9,2],better:[7,2],wddi6qw:7,easier:7,descend:2,them:[8,6,2,7],anim:7,thei:[8,2,5,6,7,9],safe:6,rectangl:9,"break":[7,2],"1yk1a8":7,choic:10,oxygen:9,accommod:2,each:[0,8,2,3,5,6,7,9],debug:2,volcano:9,went:2,side:[8,7,9],bone:6,mean:[8,2,3,6,7,9],allow_certif:2,email_kei:2,vote:[8,10,11],p_right_3:9,p_right_2:9,coursewar:[8,1,2,7],goe:[0,6,2],content:[8,1,2,6,7],got:2,add_apples_and_orang:7,navig:[7,2],written:[8,1,2,3,6,7],free:2,standard:[7,6],table_of_cont:7,inok:6,untreat:6,fairli:7,unabl:10,confus:2,rang:6,render:[6,2,7],grade:[1,9,2,3,7],independ:6,restrict:2,instruct:2,alreadi:[7,5],primari:[8,2],cartesian:6,rewritten:7,problem_show:5,top:[8,6,9,2,7],sometim:[6,9,2],toi:7,master:2,too:[7,9,2],similarli:7,toc:7,namespac:7,tool:[1,6,7],took:2,cdata:[9,6],technic:[7,9,2],target:[1,9,2],warmup:7,provid:[0,7,9,6],tree:2,zero:7,matter:7,minut:[7,2],fashion:6,ran:2,modern:7,mind:2,raw:1,increment:9,seen:[8,7],lbl:6,latter:2,simple_random_sampl:5,course_survei:7,draggable_id:9,even:[8,6,9,2,7],though:[8,7,9,2],usernam:[5,2],object:[8,7,9,6],letter:[2,3],phase:[2,3],email_tag_filter_strategi:2,auto_cohort:7,dom:6,professor:3,flow:9,doe:[8,7,9,2,3],dummi:7,bracket:6,sum:0,dot:[7,6],random:[7,2],"_show_problem":5,radiu:6,syntax:[4,9,7],freeform:2,"0000ff":6,p_pi_1:9,p_pi_2:9,absolut:6,vnmrbpvwhu4:7,submit:2,explain:0,configur:[7,6],releas:2,peer_grad:5,folder:[7,9],selfassess:2,url_slug:7,intersect:9,label2:9,label3:9,target_id:9,report:9,recalcul:6,youtub:[7,5],earn:3,pearson:2,bar:[6,2,7],draggable_2:9,draggable_1:9,emb:7,"public":7,bad:2,ban:2,told:3,first_real_poll_seq_with_reset:11,l3_o:9,mandatori:6,result:[7,6],respons:[0,2,3,4,5,9],update_on:6,hash:[10,2],hammer:7,best:[7,9],awar:7,nytrogen:9,hopefulli:7,databas:[8,2],university_comparison:2,score:[2,3],"587z":8,drawn:[9,6],awai:[1,7],approach:2,attribut:[0,1,2,6,7,8,9,10,11],men:6,extend:9,xrang:6,condit:[1,2,11,7],is_attempt:11,carbon:9,easi:[7,6],cow:9,sumprob:7,howev:[8,6,2,7],against:[6,9,2],logic:[7,9],cow3_bad:9,login:2,browser:[6,5,9,2,7],com:7,height:[9,6],guid:7,assum:[7,3],modifi:2,three:[8,7,9,2],been:[6,2,3,7],computed_perc:3,much:[8,7,2],cereal:8,videodev:7,basic:[7,2],p_se:2,deeper:7,unordered_equ:9,xxx:7,uncommon:2,argument:0,"25x":7,child:[8,2,3],"catch":7,ant:9,ident:[4,9,7],explanatori:7,servic:7,properti:6,ffff00:6,calcium:9,calcul:6,dashboard:2,l15_problem_2:5,module_nam:2,sever:[0,6,3],mako:7,future_upd:2,incorrectli:0,receiv:8,suggest:7,make:[8,2,3,6,7,9],complex:[6,9,2],split:[6,2,3,7],complet:[7,2,3,11],fragil:7,sacramento:0,hand:7,codebas:2,unicorn:7,require_complet:7,thu:7,inherit:7,client:9,thi:[0,1,2,3,4,6,7,8,9,10,11],everyth:[7,6],left:[7,9,6],identifi:[7,5,9,2,10],gbw_wqe7rdc:7,just:[8,6,2,7],photo:7,ordin:9,grader:[7,9,3],human:9,yet:[7,2],languag:2,expos:[7,2],had:[8,4,2],els:[0,6,9,2,7],save:2,hat:7,applic:2,u_d:9,quirk:2,filesytem:7,capa:4,measur:2,specif:[8,1,2,5,6,7,9],arbitrari:[7,2],manual:2,remind:2,course_url_nam:7,www:7,right:[6,9,2,7],page_label:7,interv:7,excerpt:9,maxim:6,percentag:3,preprocessorclassnam:4,intern:[1,2,6,7],download_uuid:2,indirect:7,bottom:6,t10:9,"400px":6,foo:7,bold:6,plot:6,confer:2,repositori:7,peer:2,post:[8,7],"super":4,chapter:[7,2,3],hide_from_toc:7,surround:6,ddthh:5,produc:[1,7],aha:7,"float":[6,5,2,7],encod:[8,7,5],bound:9,down:[8,9,3],wrap:6,old:[7,5,10],a_readonli:6,wai:[0,8,2,6,7,9],rerandom:7,download_url:2,"class":2,avail:[6,5,2,3,7],width:[9,6],acknowledg:7,lowest:3,form:[0,2,5,6,7,9],altogeth:2,"true":[0,8,2,3,6,7,9,10,11],reset:[7,10],your_course_dir:7,maximum:9,tell:[9,6],"20px":6,unrel:2,featur:[4,9],choiceprob:7,textbook:[1,7],inputtyp:[1,9],exist:[8,7,9],subforum:7,label_bg_color:9,check:[0,7,5,9,2],readonli:6,tip:[1,7],refactor:2,role:2,test:[7,2],node:2,intend:7,consid:[9,3],helperfunc:6,femal:2,longer:[8,2],anywher:[9,2],sigma:9,tinyint:2,ignor:2,time:[8,2,5,6,7,9,10],backward:7,mathrm:6,chain:9,t5_c:9,is_act:2,row:2,hierarch:7,decid:[6,2,7],middl:[9,2],depend:[8,6,5,2,11],zone:7,graph:[7,6],readabl:9,yunit:6,lec27_q1:11,bar_align:6,sourc:[1,5,11],string:[0,8,2,5,6,7,9],asymptot:6,customrespons:[0,1,9],days_early_for_beta:7,exact:9,cohorted_discuss:7,orbital_singl:9,hour:7,p_sigma_star_nam:9,level:[8,7,9,2,3],did:[7,2],item:2,team:2,div:6,round:[6,3],dir:7,rubric:5,upper:9,improvement_lectur:2,sign:2,t2_h:9,run:[8,7,2],mydiscuss:7,ormsbe:2,appear:[8,7,9,2],repli:8,showansw:7,v_ub_2:9,v_ub_1:9,current:[2,3,4,5,6,7,9],ampersand:7,dropdown:2,autogener:10,gener:[0,8,2,3,4,5,6,7,11],satisfi:7,target8:9,target9:9,target6:9,target7:9,target4:9,target5:9,target2:9,target3:9,target1:9,male:2,queue:6,problemfoo:7,nextpag:5,extrem:6,t9_o:9,orient:1,semant:[7,2],elect:2,extra:[6,2,7],modul:[8,1,2,3,6,7,10,11],prefer:[7,9,2],video_resourc:7,visibl:[7,11],univers:2,visit:5,todai:7,everybodi:2,live:7,value2:7,msg:[0,5],prev:6,capit:0,peopl:[1,2,7],visual:[7,3],accept:0,examin:2,easiest:7,graphic:[1,6],tagsd:6,cap:8,uniqu:[8,2,6,7,9,10],descriptor:7,can:[0,8,2,3,6,7,9,10,11],purpos:[7,2],nearest:3,agent:5,topic:7,drawer:7,hydrogen:9,occur:[8,3],alwai:[8,7,2],multipl:[0,6,9,2,7],get:[8,2,3,5,6,7,9],write:[0,6,9,2],anyon:7,pure:7,familiar:2,xhtml:0,anyof:9,map:[6,9,2,11,7],max:6,dive:7,usabl:9,xtick:6,bear:2,date:[7,2],underscor:7,data:[8,1,5,2,6],man:[10,11],practic:2,"_hide_problem":5,up_and_down:9,inform:[1,2,7],"switch":7,combin:[7,3],modified_d:2,superscript:4,student_courseenrol:2,orbital_doubl:9,correct_dragg:9,approv:2,still:[8,7,2,3],pointer:7,dynam:[6,2],group:[7,9,2],v_fb_3:9,polici:[8,1,2,3,7],platform:[1,7],main:[7,9,6,11,10],non:7,tab_titl:7,profession:2,initi:[6,2],now:[8,7,9],discuss:[8,1,2,7],introduct:[1,7],term:7,name:[2,3,5,6,7,9,10],config:7,drop:[1,9,2,3],"600x_l5_p8":8,"21t03":8,separ:[6,5,2,11,7],url_name1:7,url_name2:7,domain:[6,2],pdfbook:7,replac:[6,2,7],individu:[0,7,9],group_0:9,significantli:2,"05t12":7,happen:2,shown:[2,3,5,6,7,9],accomplish:7,space:6,formula:[6,3],correct:[0,8,5,9,2],"50px":6,migrat:2,california:0,avi_resourc:11,org:[8,7,2],"byte":[8,2],reusabl:9,departur:7,refus:7,thing:[7,6],place:[6,9,2,7],loncapa:[0,9],nicknam:2,imposs:6,first:[0,8,2,3,6,7,9,10,11],oper:[9,2],directli:[7,6],onc:[7,2,3],arrai:7,harvardx:5,fast:2,oppos:7,open:[8,9,2,3],size:[4,9,2],given:[6,2,3,7],convent:[7,2],citi:2,necessarili:7,circl:6,hub:6,especi:7,copi:7,circumst:2,specifi:[8,1,2,3,6,7,9,10,11],mostli:2,than:[0,8,2,6,7,9],png:[7,9],wide:7,dormsbe:2,were:[8,7,5,2],posit:[6,9,2],supplementari:2,pxxx:7,correct_map:5,seri:7,pre:7,analysi:2,sai:7,pri:2,ani:[0,8,2,3,6,7,9,10,11],dash:9,breakfast:8,saw:2,el_id:6,mislead:3,engin:[6,2],squar:6,notpass:2,drag_and_drop_input:9,note:[8,2,3,6,7,9],ideal:7,selfassessment_03c483062389:2,take:[6,2,3],xxxxxx:5,green:[7,6],"15px":6,noth:[9,6],begin:[0,6,2,7],sure:[7,9],pain:4,normal:[6,9,2],track:[1,5,2,6,7],beta:7,pair:[7,9],problem_id:5,icon:[7,9,2],latex:4,course_nam:7,closet:7,later:[8,2],typeset:6,script:[0,1,2,4],axi:6,preambl:7,p001:7,show:[8,2,3,5,6,7,11],permiss:2,hack:2,threshold:3,corner:9,label:[6,9,2],drop_count:3,xml:[0,1,6,7,9,10,11],onli:[0,8,2,3,6,7,9],activ:[8,6,2],behind:8,dict:9,test_1:11,nearli:2,variou:[1,7],check_func:0,secondari:2,repo:7,cannot:2,min_count:3,requir:[6,9,2,11,7],reveal:2,p_left_1:9,p_left_3:9,p_left_2:9,s_sigma:9,where:[2,5,6,7,9,11],summari:2,wiki:7,unweight:2,is_staff:2,problemset:[7,2],infinit:7,powerpoint:2,enumer:2,"60px":6,forecast:3,answer_span_1:6,enough:[9,2],between:[6,2,3,7],"import":[0,6,2,3,7],"18t15":2,across:2,assumpt:7,parent:[8,7,9],come:[7,9,2],tue:7,ispubl:7,tutori:[1,7],mani:[6,9,2,10],check2:0,check3:0,check1:0,color:6,overview:7,period:[7,2],colon:7,course_id:[8,2],typic:[7,2],poll:[1,10,11],student_id:2,mark:[0,8],comment_count:8,"abstract":[1,7],bookindex:7,problem1:3,repres:[8,6,5,2,7],former:2,those:[8,1,2,3,6,7],"case":[8,1,2,3,6,7,9,11],cast:8,invok:6,graphical_slider_tool:6,margin:6,anytim:7,some_url_nam:7,canon:2,worri:3,blah:7,url_nam:7,fpbw:7,develop:[1,2,7],doctor:2,fu3fcjns94i:5,same:[8,2,3,6,7,9],epoch:2,html:[6,2,11,7],pad:6,document:[0,1,2,3,4,7,8],breakdown:[2,3],finish:2,nest:[8,7,9],someon:2,extern:7,appropri:[7,2],moder:[8,7],inconsist:2,disable_policy_graph:7,markup:[0,7],without:[6,9,2,3,7],model:7,symbolicrespons:4,first_question_with_reset:10,execut:0,when:[8,2,3,5,6,7,9,10],treated_men:6,speed:[7,5],display_nam:[7,9,10,3,11],hint:[0,5],currenttim:5,except:[7,6,3,10],param:6,pile:9,exercis:2,pow:6,earli:[7,2],around:9,read:7,world:7,integ:[7,5,2],server:[7,5],benefit:7,seq_next:5,either:[0,7,9,2,3],output:[4,6],manag:[7,2],yyyi:5,group_rul:9,module_id:2,definit:[6,2,3,7],achiev:6,exit:6,dynam_lbl:6,mathcal:4,refer:[6,2,7],event_typ:5,broken:7,found:[7,2,3],ph207x:5,discussion_categori:7,src:7,teach_e:2,meaning:[7,2],degre:2,commentthread:[8,1],bond:9,elementari:2,"75x":7,terminolog:2,s_sigma_star:9,strip:6,your:[0,8,2,6,7,10,11],unconvent:2,log:[1,5,2],target_outlin:9,area:6,graceperiod:7,start:[8,6,2,7],interfac:[1,9,7],submiss:[9,2],strictli:1,reset_problem:5,tupl:2,conclus:2,"29t04":7,notat:6,possibl:[6,2,3,10,7],"default":[6,9,2,3,7],bucket:5,queuestat:5,show_countri:2,pbkdf2:2,grass:9,connect:[9,6],texbox:6,creat:[0,2,6,7,9,10],certain:[7,2],deep:8,fellow:8,decreas:6,file:[8,1,2,3,5,7],lcao:9,rearrang:2,fill:[7,9,2],incorrect:[0,5,9],again:[0,9,2],googl:7,prepend:6,field:[8,1,2,5,6,7],valid:[0,4,6,7],collis:5,p_right_1:9,you:[0,1,2,4,6,7,8,9,10,11],"1bk":7,architectur:1,"_type":8,sequenc:[8,7,5,2,3],symbol:[4,7],oe_feedback_response_select:5,philosoph:7,directori:[7,5],descript:[7,9,6,11,10],potenti:3,represent:[7,2],all:[0,8,2,3,5,6,7,9,10],illustr:7,abil:7,follow:[0,1,2,3,4,7,8,9,10,11],children:[6,2],disable_auto_return:6,program:[7,2],present:[7,6],woman:10,fals:[0,8,2,6,7,9,10,11],ytick:6,mechan:[7,2],attr1:7,veri:[6,2,7],longtext:2,list:[0,8,2,4,5,6,7,9],last_nam:2,small:9,dimens:9,customtag:7,tex:6,rate:2,design:[9,2],pass:[6,2,11,7],excit:7,what:[0,8,2,4,6,7,9],sub:[4,3,7],z1y4vdycy0izkopeihtpcldxmby1ogdk:7,section:[8,1,2,3,6,7,9],abl:[7,2],brief:7,delet:2,version:[7,9,2],last_login:2,succinct:7,deepli:[8,7],method:[7,11],hasn:2,full:[8,2,5,6,7,9],themselv:[9,2],week_0:7,behaviour:9,grading_polici:[7,3],less18:10,inher:7,strong:2,"17t12":7,legend:6,valu:[0,8,2,3,5,6,7,9,10,11],search:[1,2,7],prior:7,amount:6,action:2,via:[7,5,2],berkeleyx:8,transit:2,deprec:[7,2],href:7,select:[7,5,2],up_count:8,"02t04":7,distinct:[7,2],two:[0,8,2,3,6,7,9],user_answ:9,taken:8,homework:[2,3],max_grad:[2,3],more:[8,2,5,7,9,11],desir:[7,9],tester:7,datetim:2,line:[0,7,9,6],flag:[7,2],particular:[0,7,2],known:2,l10_o:9,none:[6,5,2,7],valuabl:7,hous:7,outlin:9,"6002x_fall_2012_overview":7,histori:7,remain:6,learn:2,edx4edx:7,def:0,"002x_fall_2012_overview":7,prompt:[5,2],necesari:6,share:[8,1,7],templat:7,minimum:6,poni:7,cours:[8,1,2,3,5,7,9],goal:[1,2,7],first_nam:2,rather:[0,7],anoth:[8,6,9,2,7],reject:2,simpl:[6,9,2,3,7],css:[7,6],regener:2,t10_h:9,resourc:7,referenc:[6,2,7],variant:4,reflect:6,catalog:5,cow3:9,"600px":6,associ:2,preprocessorsrc:4,"short":[9,2],onto:9,created_at:8,author:[1,7],django:2,caus:[2,11],ending_at:2,beginning_at:2,answer_given:0,help:[7,3],soon:7,mathjax_for_prevalence_calc:6,through:[8,2],error_reason:2,hierarchi:[7,2],paramet:[7,5,6],p2q6brnhdh8:7,style:[4,5,6,7],videosequ:[7,2],brows:8,might:[7,2,3],good:[0,7,8],"return":[0,7,9,6],timestamp:[8,2],framework:2,somebodi:8,dnew:6,complain:7,eventu:2,troubleshoot:8,easili:[7,9],name_with_icon:9,innodb:2,truthi:7,fulli:7,unicod:2,week:[7,2],weight:[1,2,3,6],monoton:8,idea:[8,7,2],realli:[7,2],functon:6,expect:[0,2,3,4,6,7],energi:9,todo:[7,2],event:[1,5,6],research:[1,2],occurr:6,end_of_course_survey_url:7,proxi:2,guess:7,labl:6,reason:[7,2],base:[6,9,2,7],put:[0,6,2,7],teach:2,earliest:2,prefac:7,thread:8,my_custom_tag:7,omit:[7,6],circuit:2,assign:[7,9,6,3],cfn:0,prevent:[8,6,2],exchang:8,number:[8,2,3,5,6,7,9,10,11],numericalrespons:3,scriptn_b:4,done:[6,2,7],construct:9,blank:2,stabl:7,miss:[6,3],fanci:4,differ:[6,9,2,10,7],l8_c:9,exponenti:4,interact:[0,1,5,2],least:[6,3],commentable_id:8,statement:6,molecular:7,store:[8,1,5,2,7],schema:2,option:[8,6,9,2,7],relationship:6,part:[8,4,2,7],pars:[7,9,6],kind:[6,2,7],remot:7,remov:2,horizont:[6,2,7],jqueri:6,reus:9,toward:7,randomli:2,highest_degre:2,comput:[7,3],packag:[7,2],group_dragg:9,"null":[5,2],imagin:2,built:2,images_list:9,correct_answ:9,also:[6,9,2,3,7],build:7,p_oth:2,brace:7,signup:2,courseware_studentmodul:2,previou:2,reach:[7,3],most:[8,7,9,2],plai:5,plan:[4,2],amaz:8,last_activity_at:8,bug:2,clear:6,cohort_config:7,clean:9,draggables_1:9,i4x:[5,2,11],alphanumer:[7,2],session:[5,2],particularli:2,homework1:3,fine:6,find:[7,3],copyright:7,l1_c:9,solut:[7,2],future_off:2,factor:[6,3],tartget1:9,embargo:2,express:[4,7],nativ:2,wrinkl:7,banner:2,p_pi_star_2:9,p_pi_star_1:9,oe_show_respond_to_feedback:5,rounded_perc:3,timelimit:2,sigma_:9,common:[1,5,3,7],wrote:8,certif:[1,2,3,7],set:[0,2,3,6,7,9,11],art:7,creator:2,see:[8,2,5,6,7,9,11],bare:6,close:[8,6,5,2,7],analog:7,someth:[4,2,6,7],html_textbook:7,page_clos:5,won:2,subscript:4,experi:2,altern:6,isod:8,numer:[6,2],javascript:[5,6],short_label:3,succeed:0,solv:7,popul:[6,9,2],both:[8,7,6],anonymous_to_p:8,last:[0,8,2,6,7,9],alon:2,foreign:2,textlin:[0,4],roman:2,context:[0,2],pdf:[7,2],author_id:8,whole:6,load:[7,2],markdown:8,simpli:[7,6],point:[8,6,2,3,7],address:[5,2],"000x":11,littl:[7,2],mistak:7,can_reus:9,along:[4,2,6],backend:2,vertic:[6,2,3,7],user_id:2,due:[7,2],empti:[8,5,9,2],sinc:[8,7,2],s_sigma_star_nam:9,endnot:7,imag:[7,9],coordin:[9,6],understand:[7,9,2,3],ignored_tag:2,instructor:[8,6,2,7],convers:8,look:[7,2],s_right:9,straight:7,batch:2,"while":[7,2],smart:2,behavior:[7,9],error:[7,2],anonym:[8,5],display_tag_filter_strategi:2,subsect:7,improvement_textbook:2,readi:7,key2:7,jpg:[7,9],itself:[6,9,2,7],pset:[7,3],"00x":[8,5],dedic:7,downvot:8,shirt:7,minim:6,belong:[7,2],lenient:7,your_m_utx_yss:6,conflict:7,higher:7,book_url:7,moment:2,course_fold:9,user:[0,1,2,5,6,7,8,9],stack:2,recent:2,sha1:2,gst:6,older:7,entri:[7,2],p_sigma_nam:9,one_per_target:9,person:[9,2],picki:[0,7],elev:2,self:2,explan:2,cous:7,course_set:7,staff_grad:[7,5],mysql:[8,2],regardless:3,thees:9,cut:2,theoret:2,rgb:9,mailing_address:2,input:[0,1,4,5,6,9,10,11],varchar:2,format:[0,1,2,3,5,6,7,9,10,11],molecul:9,a_b:4,bit:[4,7],formal:7,implemen:2,signal:7,collect:[8,2],"boolean":[8,7,5,2],xunit:6,group_id:9,"10_25":10,sketch:7,subhead:7,often:[7,2],spring:[7,2],some:[8,1,2,3,4,6,7,9,10,11],back:[9,2],global:0,sampl:7,toy_video:7,rubric_select:5,l15:5,per:[8,7,9],draggagg:9,mathemat:6,larg:[7,9,6],slash:7,machin:[7,2],patient:6,step:[9,6],prerequisit:7,meantim:7,symbolic_mathjax_preprocessor:4,p_pi_star_nam:9,constraint:[9,2],auth_userprofil:2,materi:[7,9,2],upvot:8,problem_check:5,countri:2,block:2,cutoff:3,level_of_educ:2,real:7,primarili:[1,2,7],irrit:7,within:[0,2,3,5,6,7,9],xticks_nam:6,span:6,spam:8,question:[0,8,2,3,7,10,11],"long":[7,9,2],custom:[7,6],includ:[8,2,3,4,6,7,9,10,11],forward:[7,2],accomodation_cod:2,myfunc:6,properli:[6,2,7],drummond_combin:6,link:[1,2,11,6,7],translat:6,atom:9,don:[6,9,2,7],yticks_nam:6,junior:2,info:[1,2,7],utc:[8,7,2],utf:[8,2],consist:[7,3],your_f_utx_yss:6,seq_goto:5,similar:[6,2,7],impl:7,constant:6,problem3:7,problem2:[7,3],doesn:[7,2],lectur:[8,7,2],"char":2,flot:6,course_run:7,titl:[8,7],sequenti:[7,2],declar:[6,3],librari:6,moco:8,nice:6,mongodb:[8,2],drag:[1,9],xqa_kei:7,unaffect:7,orbit:9,notion:3,depth:7,play_video:5,came:2,far:2,scroll:7,prototyp:2,code:[0,6,5,2,7],partial:4,onreset:7,future_class:2,edu:2,edx:[8,1,5,2,7],your_f_tx_yss:6,event_sourc:5,elsewher:[1,7],friendli:[7,2],sens:[7,2],draggabl:9,sent:2,at_position_list:8,electron:9,stackoverflow:8,untouch:2,relev:6,gender:[10,2],button:7,"try":[0,7,8],thiscours:7,require_attempt:7,chap2:7,chap1:7,second_quest:10,marri:6,pleas:[0,7,9,2,3],impli:2,smaller:9,natur:6,jump:[7,5],video:[7,5,2,11],accomod:2,download:[7,2],click:[9,2],append:7,compat:7,index:[7,2],compar:9,access:[6,2,7],secret_pag:7,mathjax:6,whatev:8,xmodul:[1,6,11,10],chose:6,"7ae_tkgabwa":7,bachelor:2,let:[7,2],course_num:2,becom:[7,9,11],implicit:6,convert:6,survei:[7,2],b_x__d:4,chang:[6,9,2,3,7],control:6,heart:8,appli:[0,6,9,2],combinedopenend:2,api:[1,6],revot:10,avatar_typ:2,cloud:9,from:[8,2,5,6,7,9,10],commun:7,doubl:[7,2],next:[7,5,9,6],commut:4,sort:8,course_info:7,trail:7,name4:9,rare:2,iii:7,women:6,save_problem_check:5,account:2,retriev:3,unenrol:2,obvious:7,verify_uuid:2,numericalrepons:3,malform:7,t6_c:9,tar:5,process:[6,5,2,3,7],"002x":[7,2],loco:8,high:[8,2],tag:[0,1,2,6,7,8,9,10,11],tab:[1,2,7],t4_h:9,img1:9,subdirectori:7,instead:[8,6,2,7],sin:6,frac:6,stop:2,year_of_birth:2,add30min:2,essenti:[9,6],correspond:[8,2,3,5,6,7],element:[8,2,5,6,7,9],issu:2,allow:[0,8,2,4,5,6,7,9],elig:3,move:[7,9,6],comma:[7,6],"6002x_exit_respons":2,t3_h:9,textbook_1:7,"02x":2,textbook_2:7,date_of_birth:2,external_link:7,therefor:6,advertised_start:7,generatedcertif:2,handl:[7,9,6],overal:0,show_answ:5,handi:7,anyth:[8,7,2],edit:[8,7,6],plot_label:6,slide:[7,6],t8_h:9,"10px":6,beneath:0,consum:1,meta:2,"static":[1,7,9,6,4],our:[8,1,2,7],tenth:2,special:[6,2,7],out:[7,9,2],variabl:[0,4,11,7],s_r:9,oe_show_full_feedback:5,categori:[8,7,5,2],module_typ:2,rel:[6,9,2,3],s_l:9,red:6,clarifi:7,p_pi_nam:9,insid:[8,6,9,2,7],book1:7,book2:7,dictionari:[0,7,8,2],tempt:6,enrollment_end:7,afterward:2,t1_o:9,indent:0,could:[8,7,2,3],ask:[8,2],keep:[7,2],aren:7,length:[7,9,2],enforc:2,t7_h:9,organiz:7,endors:8,"2013_spring":[8,7],mai:[0,2,5,6,7,9],prioriti:2,secret_video:7,unknown:[0,6],system:[1,2,3,6,7,10],messag:[0,11],attach:[8,9,6],attack:8,"final":[1,2,3],slider:[1,9,6],exactli:3,haven:7,structur:[8,1,7],charact:[4,2,6,7],reposit:6,deliveri:2,auto_incr:2,fail:3,have:[0,8,2,3,6,7,9],tabl:[1,2,7],need:[4,9,2,6,7],interesting_tag:2,"07t11":2,min:6,mix:6,group_target:9,which:[2,5,6,7,9,11],mit:2,singl:[7,9,6,3,11],unless:2,who:[8,1,2,3,5,6,9],why:7,url:[8,7,5,9,2],gather:2,request:[6,5,2],absurd:9,determin:[6,2],"_id":8,fact:[7,2],platon:7,text:[8,2,6,7,9,10],addhalftim:2,watch:5,input_list:0,bedroom:7,staff:[8,7,2],inlin:[7,6],locat:[1,5,2,11,7],enrollment_start:7,should:[1,9,2,6,7],suppos:[9,2],local:7,hope:2,meant:[8,6],dependenti:5,per_stud:7,chapter5:7,chapter4:7,chapter7:7,chapter6:7,chapter1:7,chapter3:7,chapter2:7,mul:2,increas:[8,6],htmlchapter:7,enabl:7,organ:[7,5,2],down_count:8,y_2:6,y_1:6,grai:9,integr:[7,2],contain:[0,8,2,3,5,6,7,9,11],your_m_tx_yss:6,view:[7,2],symbolicmathjaxpreprocessor:4,knowledg:7,custom_tag:7,statu:2,correctli:0,pattern:7,tend:2,favor:2,state:[1,5,2,7],progress:[1,2,3,7],email:2,exam:[7,2,3],kei:[7,5,9,2],dynamic_mathjax:6,static_tab:7,moving_label:6,pdfchapter:7,job:0,entir:[0,2],s_sigma_nam:9,out_text:6,addit:[7,2],stat2:8,admin:[8,7,2],accordion:7,equal:[0,8,9,2,3],etc:[8,2,3,6,7,9,11],no_label:9,instanc:[7,9,6,11],grain:6,equat:6,comment:[8,1,6],walk:2,respect:3,is_superus:2,compos:6,json:[8,2,3,5,6,7],treat:6,immedi:2,muddl:2,"091x":2,togeth:[7,2],auth_us:[8,2],"15t17":2,"15t12":7,align:6,rectangular:9,defin:[8,3,6,7,9,10],yss:6,is_complet:11,layer:8,old_email:2,almost:2,demo:9,site:[5,2],substanti:2,revis:4,scienc:[7,2],cohort:7,welcom:7,sqrt:6,member:2,python:[0,1,9],largest:2,s15v14_response_to_impulse_limit_cas:7,spell:2,http:7,effect:[6,2],dai:[7,2],name_label_icon3:9,student:[0,1,2,3,5,7,8,9],uni:2,expand:7,center:[9,6],abtest:7,well:[0,7,2],exampl:[0,8,2,3,4,5,6,7,9,10,11],dyn_val_1:6,choos:2,undefin:[5,6],favorite_part:2,tags_arrai:8,usual:[8,6,2],lest:[9,6],paus:[7,5],obtain:9,distant:7,methan:9,simultan:7,demograph:2,web:[7,2],wed:7,parent_id:8,add:[6,2,7],other:[0,1,2,3,6,7,8,9],match:[7,6,3],gmt:5,orbital_tripl:9,draganddrop:9,varieti:2,piec:[8,7,2],punctuat:2,realiz:2,five:2,know:[7,2],press:7,password:2,insert:6,resid:9,like:[8,6,9,2,7],success:5,unord:9,necessari:[6,9,2,7],page:[1,5,2,3,7],npoint:5,didn:[7,2],gradebook:3,"export":[1,2],pause_video:5,wonderwiki:7,proper:[7,9],guarante:2,mainli:6,lead:[7,6],avoid:5,overlap:9,leav:[7,2,3],overlai:6,p_sigma_star:9,mitx:[5,2,11],usag:9,symlink:11,host:7,offset:9,slug:7,panel:7,about:[0,1,8,2,7],actual:[8,6,9,2,7],disabl:[7,6],own:[6,2,7],automat:[6,9,2,3,7],assess:[7,2],guard:2,xyz987293487293847:7,ethglycol:9,merg:7,support:[8,4,2,3,7],trigger:[5,2],inner:[9,10],"var":6,"function":[0,7,6,3,10],"03t04":7,subsum:7,bodi:[8,6],ear:9,eat:8,count:[8,7],made:[8,7,5,2],whether:[0,2,3,5,7,9],wish:2,displai:[0,1,2,3,7,8,10],record:[5,2],below:[8,2,5,6,7,9],limit:[9,2],otherwis:[9,2],problem:[0,1,2,3,4,5,7,8,9,11],"int":[0,2],dure:[7,5,2],filenam:[7,5],updated_at:8,implement:[8,6],poll_quest:[10,11],probabl:[7,2],tick:6,musubi:8,percent:6,detail:[7,5,2],book:[7,5],lookup:2,futur:[7,2],rememb:6,pi_:9,more25:10,star:9,p_sigma:9,preform:6,stai:7,dave:2,rule:9,hintmod:5,auto_cohort_group:7,invari:7,textbook_icon:7},objtypes:{"0":"py:module"},titles:["CustomResponse XML and Python Script","edX Data Documentation","Student Info and Progress Data","Course Grading","Symbolic Response","Tracking Logs","XML format of graphical slider tool [xmodule]","Course XML Tutorial","Discussion Forums Data","XML format of drag and drop input [inputtypes]","Xml format of poll module [xmodule]","Xml format of conditional module [xmodule]"],objnames:{"0":["py","module","Python module"]},filenames:["course_data_formats/custom_response","index","internal_data_formats/sql_schema","course_data_formats/grading","course_data_formats/symbolic_response","internal_data_formats/tracking_logs","course_data_formats/graphical_slider_tool/graphical_slider_tool","course_data_formats/course_xml","internal_data_formats/discussion_data","course_data_formats/drag_and_drop/drag_and_drop_input","course_data_formats/poll_module/poll_module","course_data_formats/conditional_module/conditional_module"]}) \ No newline at end of file