Skip to content

Exercise Documentation

Liz Howard edited this page Jun 18, 2018 · 15 revisions

Overview

  1. "What is an Exercise?"
  2. YAML Metadata
    1. Author - m
    2. Type - m
    3. Standards - m
      1. Points - m
    4. Answer
    5. Link - m
    6. Link Type - m
    7. Links - m
  3. Markdown Content
    1. Title - m
    2. Instructions - m
  4. Example
Headers including an [M] are Mandatory and must be included in an exercise.

What is an Exercise?

An exercise is an assessment of standards previously covered by Insights. Exercises often link out to an external resource, such as CodeWars, SQLFiddle, or Glitch. They can link anywhere, and users will turn in evidence that they completed the exercise, with an optional auto-graded "answer" section that can test whether or not users performed the exercise without human intervention.

Exercises are broken down into two sections: YAML and Markdown

YAML

The YAML section of an exercise is contained between two breaks (---) at the top of the document. This contains the definitions needed for our system to link the user to the exercise and process it.

Author [M]

This field should specify the username of the user creating the exercise.

The author is specified by the following line:

    author: catalin

Type [M]

For exercises, this field should be set to exercise.

This field should look like:

    type: exercise

Standards [M]

A Topic's standards represent major concepts within the topic that the user should understand. These standards are broken down into more granular ideas as Objectives (See Standards Repo for a comprehensive list of standards). All content should have an associated standard.

Standards are defined with the following syntax:

<topic>.<standard>.<objective #>: <points value>

This exercises, Double and single quotes, is associated with the 2nd objective of the javascript-syntax standard in the js topic, so it will list js.javascript-syntax.2 as one of its standards.

Exercises should generally be given point values in the 1000+ range, as they represent more verifiable evidence that the user is able to perform against the given objective.

Points [M]

Points are a great way to weight content within a standard.

As a general rule, Exercises and other authentic coding assessments are worth 1000 points.

Answer

Include an answer property if the user is expected to validate that they performed the exercise via text. Very useful for checking whether or not the user performed a query, or found an average. Answers should always be strings, and can be JavaScript-flavored RegEx, if enclosed in /es.

Example:

answer: 42

Regex Example:

answer: /(console)?\.log/

Link [M]

Not to be confused with links, an Exercise's link designates where a user should be sent to in order to assess their skills (ex. SQLFiddle, Codewars, Nodeschool). Link must always be a hyperlink.

An exercise's link will look like this:

link: https://www.codewars.com/kata/58113a64e10b53ec36000293

Link Type [M]

linkType specifies the source of the link property. Link Type is a plaintext property that should be all lowercase with no spaces.

Example

linkType: codewars

Valid LinkTypes include:

  • codewars - Code wars links can be automatically checked if users provide their codewars API key. Do not specify an answer if Code Wars is used.
  • sqlfiddle - SQLFiddle links generate a URL when users modify and run them that we can check is unique
  • codepen - Codepen links generate a new URL when users modify and run them, that we can check is unique
  • glitch - Glitch links generate a new URL when users fork them, that we can check is unique
  • circle - Public Github repositories can include a circle.yml file that will allow us to check whether a test suite has passed remotely.
  • website - Catch-all, for exercises that don't have a particular check mechanism. (eg, pgexercises.com)

Links

The Links field is where you can put additional resources. You must include at least one. These links should include:

  • When possible, link to canonical documentation
  • Link to a walkthrough or overview article that goes into depth
  • Link to a free course or book that covers the information in the insight

To attach links, the following format must be used:

    links:

      - '[facebook.github.io](https://facebook.github.io/react/tips/false-in-jsx.html){website}'

    //  - >-
    //   [short-name](full-url){resource-type}

The following options are available for resource-type

key resource-type emoji
website Catch-all for any resource not otherwise specified 🌎
video Video resource exploring the topic πŸŽ₯
documentation Official docs, including MDN πŸ“š
article An article that discusses the application of a subject (i.e. tutorial) πŸ“„
discussion An online thread related to the subject (StackOverflow) πŸ’¬

Markdown-based data

Title [M]

Titles are Mandatory.

The title should indicate to the user what the Article and Questions cover. It must be between 4 and 120 characters long. The title can use code blocks inside it.

Title must be placed after the YAML section,preceeded by a #.

Instructions [M]

Instructions are what will be served to the user on platforms such as Slack. With these instructions in hand, the user will open the given link to the platform.

Note: Instructions on how to operate a 3rd party platform such as CodeWars or SQLFiddle should be given sparingly. Only do so in the first few exercises a user will see. Exercises will be served with a broad overview on how to operate a 3rd party, as a presentation concern. Designing exercises to work on a single service (i.e. Slack) is also ill-advised, as it will only cost us as we branch out to different services.

Example:

---
author: SebaRaba

levels:
  - beginner
  - basic

tags:
  - introduction
  - workout

type: exercise

linkType: sqlfiddle

link: http://sqlfiddle.com/#!9/315b7c/1

answer: 100

standards:
  sql.read-single-table.0: 1000
  sql.read-single-table.1: 1000

links:
  - '[MySQL SELECT documentation](https://dev.mysql.com/doc/mysql-tutorial-excerpt/5.6/en/selecting-rows.html){documentation}'
  - '[blog post tutorial on SELECT](http://www.dofactory.com/sql/select){website}'
  - '[video tutorial on MySQL SELECT](https://www.youtube.com/watch?v=BgK88mlgA6I){video}'

---

# SQL Practice Select

---        
## Exercise

Click *Launch Exercise* to open SQLFiddle. Run *Build Schema*. This creates and populates the Pokemon database.

In the right-hand window, write a SQL query that answers the following question:

What is the `accuracy` of the move having `id` equal to 10?
Clone this wiki locally