A markdown subset for quickly making multiple-choice questions.
Project description
quizdown
Markdown, but for creating multiple-choice quizzes. Especially helpful if you routinely want syntax-highlighting in your question, answers, or distractors.
Try a live version (beta) on my website.
Off-line Quick-Start
Install (from PyPI)
Maybe in a virtualenv? This may need to be pip3
.
pip install quizdown
Preview a Markdown file in the browser.
python -m quizdown 01_syllabus.md --output 01_syllabus.html --browser
Export to Moodle:
# Use the .moodle extension
python -m quizdown 01_syllabus.md --output 01_syllabus.moodle
# If you'd rather .xml:
python -m quizdown 01_syllabus.md --format=moodle --output 01_syllabus.xml
More options:
python -m quizdown --help
usage: quizdown MARKDOWN_FILE --output (out.moodle|preview.html)
positional arguments:
INPUT_FILE Markdown file containing quiz questions.
optional arguments:
-h, --help show this help message and exit
--output OUTPUT_FILE Where to save the processed output: a .moodle or .html
extension.
--format {HtmlSnippet,HtmlFull,MoodleXml}
Output format, if we cannot figure out from file
extension.
--name QUIZ_NAME This is the name of the quiz or question category upon
import. INPUT_FILE if not defined.
--theme SYNTAX_THEME Syntax highlighting-theme; default=InspiredGitHub
{'Solarized (dark)', 'base16-ocean.light',
'base16-ocean.dark', 'base16-eighties.dark',
'Solarized (light)', 'InspiredGitHub',
'base16-mocha.dark'} available.
--lang LANG Language string to assume for syntax-highlighting of
un-marked code blocks; default='text'; try 'python' or
'java'.
--browser Directly open a preview in the default web-browser.
What is quizdown
?
This is a tool for quickly specifying 5-20 multiple choice questions in a markdown subset. Right now you can export to both MoodleXML and HTML.
Why would I use this over Moodle's built-in editor?
- Less clicks! Make as many questions as you want with just your keyboard. Then import them in bulk to a "Question Bank" and then from there to a new "Quiz".
- You teach CS/Data Science/STEM and you want or NEED some good syntax highlighting for your class.
- Sane defaults: all questions are "select as many as apply", with no partial credit.
Limitations
- ONLY Multiple choice questions are supported.
- Any partial credit must be done post-export via Moodle.
- No way to upload images. You could theoretically embed SVG and base64 images but I haven't looked into it.
- Error messages are limited (I just figured out how to get position information from the markdown library; need to sprinkle it through). For now, treat it like LaTeX: binary search for your errors ;p
Roadmap
- Other question types, e.g., Essay questions? #1
- Better error messages. (No line/col or question # information right now) #2
- QTI/Blackboard export support. #3
- File an issue: https://github.com/jjfiv/quizdown/issues
How to write a bunch of questions (in words):
- Use headings (whatever level you want; be consistent) to separate questions.
- Questions end with a github-style task list -- if you want moodle to shuffle, use unordered lists, otherwise make them ordered.
- Tasks marked as "complete" are correct answers.
- We're building on pulldown_cmark; a CommonMark-compatible markdown implementation with the "github tables" "github task lists" and "strikethrough" extensions.
Example
Source Question
Let's imagine we're teaching Python and want to make sure students (A) understand list-append, and (B) remember that lists should never be used as default arguments.
### A. Python Lists
```python
xs = [1,2,3]
xs.append(7)
print(sum(xs))
```
What gets printed?
1. [ ] It's impossible to know.
1. [x] 13
1. [ ] Something else.
### B. Python Lists and Default Arguments
```python
def take_default_list(xs = []):
xs.append(7)
return sum(xs)
```
What is the output of ``take_default_list([1,2,3])``?
1. [x] It's impossible to know.
1. [ ] 13
1. [ ] Something else.
Example (rendered)
I have a private github repo for each class, with files labeled by lecture number and topic, e.g., 05_Lists.md
-- Any old Markdown renderer is close enough for 99% of questions.
Here's someone's README.md rendering of the above example questions.
A. Python Lists
xs = [1,2,3]
xs.append(7)
print(sum(xs))
What gets printed?
- It's impossible to know.
- 13
- Something else.
B. Python Lists and Default Arguments
def take_default_list(xs = []):
xs.append(7)
return sum(xs)
What is the output of take_default_list([1,2,3])
?
- It's impossible to know.
- 13
- Something else.
Why'd you write this in Rust?
Because my first version (in Python w/BeautifulSoup) was a bit of a disaster, maintenance-wise. Also, I wanted to have the ability to host an editor online. So this one compiles to WASM.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for quizdown-0.3.2-cp36-abi3-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 376b26d2b45c479df47f50171b9eb2f383a619bc1d790f50a936d59cecf2bb82 |
|
MD5 | 3e840dced1fe1da0847c24dee9a35d3f |
|
BLAKE2b-256 | 017f509fe094f16bb859400dacd1557c532e1818c3a2ad408bb81966a2096cef |
Hashes for quizdown-0.3.2-cp36-abi3-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 411940f76728296c34ab4cc4cfa6dc7607fe979291a59faf673a2f44f05775da |
|
MD5 | 727d31f267e7cd30feb15ef88732ad37 |
|
BLAKE2b-256 | b43d187ef8b6c4492c0c0d603f5f045d90cca13c77518efa04aebe94b9261039 |
Hashes for quizdown-0.3.2-cp36-abi3-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f81fb61a225e80d87b3af9b62770b2c1f6d4363f7723fc0b3e98c9f83e0e58ef |
|
MD5 | 2064334815a2d82bac2b296d85514adb |
|
BLAKE2b-256 | 1e1b95fb07c7e797bd8a5d6aa3d78333b179c989775ed923bd3a23e53832171e |