<commit_before># Content Organization

Workshop exercise content falls in three categories:

- Language exercise: an exercise based on a specific programming language, like Ruby, JavaScript, or Clojure.
- Repo exercise: an exercise based on a framework or markup language, like HTML, CSS, Rails, or Angular.

The content for the different exercise types is tracked in the following locations:

- Language exercises are tracked in the [`/courses`](https://github.com/Bloc/workshop-curriculum/tree/master/courses) directory of this repository
- Repo exercises are tracked in standalone repositories, which are automatically cloned when users start these courses.
    > For example, the Introduction to HTML and CSS Workshop course is tracked in the [`workshop-html-css`](https://github.com/Bloc/workshop-html-css) repository.

All exercises are deployed to the [Workshop app](https://workshop.bloc.io) and the code for Workshop can be found in the [`Workshop`](https://github.com/Bloc/workshop) application repository.

# Language Exercises

Language exercises are comprised of five files:
- `body.md` (required): this is where the exercise objectives and examples are written. There should be two headers for each `body.md` file: ([see complete example](https://github.com/Bloc/curriculum/blob/master/workshop-curriculum/courses/ruby-primer/03-level-conditionals/01-if/body.md)
    - `### Objectives`: state the learning objectives for the exercise using [Bloom's Taxonomy](https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/) and our [approved action words](https://docs.google.com/spreadsheets/d/1yy7IwVvNZoPNb-u-HTYwg4tIStg4z6oSmhRMsHWTerc/edit#gid=350932233).
    - `### Example`: provide context and examples that will help the student complete the exercise. Do not give away the answer.
- `instructions.md` (required): this is where the exercise instructions are written. Instructions should be numbered, brief, and explicit. See the [Exercise Instructions](https://github.com/Bloc/workshop-curriculum/blob/master/CONTRIBUTING.md#exercise-instructions) section for a detailed example.
- `solution.rb` (required, file extension depends on the language): this is where the canonical solution (as deemed by the exercise's author) is written. The solution must pass all of the specs for the exercise.
- `spec.rb` (required, file extension depends on the language): this is where the specs for the exercise are written. The specs should cover every case for the exercise, and when passed, should ensure a working solution.
- `starting_code.rb` (optional, file extension depends on the language): this is used for providing students with default code to start the exercise.

# Repo Exercises

Standalone repositories contain exercises, specs, and other content for Repo Exercises. [Snoop](https://github.com/Bloc/snoop) automatically clones these repos when a student starts one of these courses.

Repo courses require the following:

- An open-source repository created under the Bloc GitHub account.
    > Ask [Mike](mailto:<EMAIL>) to create a new repository if you want to start a new course.
- A [`/body`](https://github.com/Bloc/workshop-html-css/tree/master/body) directory which tracks Markdown files. A Markdown file represents one exercise.
    - A Markdown file in the `/body` directory should have the following:
        - `### Objectives`: state the learning objectives for the exercise using [Bloom's Taxonomy](https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/) and our [approved action words](https://docs.google.com/spreadsheets/d/1yy7IwVvNZoPNb-u-HTYwg4tIStg4z6oSmhRMsHWTerc/edit#gid=350932233).
        - `### Example`: provide context and examples that will help the student complete the exercise. Do not give away the answer.
        - `### Exercise`: this is where the exercise instructions are written. Instructions should be numbered, brief, and explicit. See the [Exercise Instructions](https://github.com/Bloc/workshop-curriculum/blob/master/CONTRIBUTING.md#exercise-instructions) section below for a detailed example.
- A [`/spec`](https://github.com/Bloc/workshop-html-css/tree/master/spec) directory which tracks spec files. A spec file cooresponds to a specific exercise.
- A [Docker file](https://github.com/Bloc/workshop-html-css/blob/master/Dockerfile) which builds a container for the user.
- A [`LICENSE`](https://github.com/Bloc/workshop-html-css/blob/master/LICENSE.md). A framework course repository should have an MIT license.
- A [`README`](https://github.com/Bloc/workshop-html-css/blob/master/README.md) which provides a brief description of the course and where to find it in the Workshop platform.
- A [`workshop.json`](https://github.com/Bloc/workshop-html-css/blob/master/workshop.json) file which specifies the directories that a user should _not_ see in their file navigator in the Workshop platform.

# Exercise Instructions

The following structure should be used for Exercise Instructions ([see example](https://github.com/Bloc/curriculum/blob/master/workshop-curriculum/courses/ruby-primer/03-level-conditionals/01-if/body.md#exercise):

1. State the method / function to be defined
2. State the arguments the method should take
3. State what the method / function should return
4. Add details for the method's / function's implementation, as necessary<commit_msg>Replace last instance of 'framework' with 'repo'<commit_after># Content Organization

Workshop exercise content falls in three categories:

- Language exercise: an exercise based on a specific programming language, like Ruby, JavaScript, or Clojure.
- Repo exercise: an exercise based on a framework or markup language, like HTML, CSS, Rails, or Angular.

The content for the different exercise types is tracked in the following locations:

- Language exercises are tracked in the [`/courses`](https://github.com/Bloc/workshop-curriculum/tree/master/courses) directory of this repository
- Repo exercises are tracked in standalone repositories, which are automatically cloned when users start these courses.
    > For example, the Introduction to HTML and CSS Workshop course is tracked in the [`workshop-html-css`](https://github.com/Bloc/workshop-html-css) repository.

All exercises are deployed to the [Workshop app](https://workshop.bloc.io) and the code for Workshop can be found in the [`Workshop`](https://github.com/Bloc/workshop) application repository.

# Language Exercises

Language exercises are comprised of five files:
- `body.md` (required): this is where the exercise objectives and examples are written. There should be two headers for each `body.md` file: ([see complete example](https://github.com/Bloc/curriculum/blob/master/workshop-curriculum/courses/ruby-primer/03-level-conditionals/01-if/body.md)
    - `### Objectives`: state the learning objectives for the exercise using [Bloom's Taxonomy](https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/) and our [approved action words](https://docs.google.com/spreadsheets/d/1yy7IwVvNZoPNb-u-HTYwg4tIStg4z6oSmhRMsHWTerc/edit#gid=350932233).
    - `### Example`: provide context and examples that will help the student complete the exercise. Do not give away the answer.
- `instructions.md` (required): this is where the exercise instructions are written. Instructions should be numbered, brief, and explicit. See the [Exercise Instructions](https://github.com/Bloc/workshop-curriculum/blob/master/CONTRIBUTING.md#exercise-instructions) section for a detailed example.
- `solution.rb` (required, file extension depends on the language): this is where the canonical solution (as deemed by the exercise's author) is written. The solution must pass all of the specs for the exercise.
- `spec.rb` (required, file extension depends on the language): this is where the specs for the exercise are written. The specs should cover every case for the exercise, and when passed, should ensure a working solution.
- `starting_code.rb` (optional, file extension depends on the language): this is used for providing students with default code to start the exercise.

# Repo Exercises

Standalone repositories contain exercises, specs, and other content for Repo Exercises. [Snoop](https://github.com/Bloc/snoop) automatically clones these repos when a student starts one of these courses.

Repo courses require the following:

- An open-source repository created under the Bloc GitHub account.
    > Ask [Mike](mailto:<EMAIL>) to create a new repository if you want to start a new course.
- A [`/body`](https://github.com/Bloc/workshop-html-css/tree/master/body) directory which tracks Markdown files. A Markdown file represents one exercise.
    - A Markdown file in the `/body` directory should have the following:
        - `### Objectives`: state the learning objectives for the exercise using [Bloom's Taxonomy](https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/) and our [approved action words](https://docs.google.com/spreadsheets/d/1yy7IwVvNZoPNb-u-HTYwg4tIStg4z6oSmhRMsHWTerc/edit#gid=350932233).
        - `### Example`: provide context and examples that will help the student complete the exercise. Do not give away the answer.
        - `### Exercise`: this is where the exercise instructions are written. Instructions should be numbered, brief, and explicit. See the [Exercise Instructions](https://github.com/Bloc/workshop-curriculum/blob/master/CONTRIBUTING.md#exercise-instructions) section below for a detailed example.
- A [`/spec`](https://github.com/Bloc/workshop-html-css/tree/master/spec) directory which tracks spec files. A spec file cooresponds to a specific exercise.
- A [Docker file](https://github.com/Bloc/workshop-html-css/blob/master/Dockerfile) which builds a container for the user.
- A [`LICENSE`](https://github.com/Bloc/workshop-html-css/blob/master/LICENSE.md). A repo course repository should have an MIT license.
- A [`README`](https://github.com/Bloc/workshop-html-css/blob/master/README.md) which provides a brief description of the course and where to find it in the Workshop platform.
- A [`workshop.json`](https://github.com/Bloc/workshop-html-css/blob/master/workshop.json) file which specifies the directories that a user should _not_ see in their file navigator in the Workshop platform.

# Exercise Instructions

The following structure should be used for Exercise Instructions ([see example](https://github.com/Bloc/curriculum/blob/master/workshop-curriculum/courses/ruby-primer/03-level-conditionals/01-if/body.md#exercise):

1. State the method / function to be defined
2. State the arguments the method should take
3. State what the method / function should return
4. Add details for the method's / function's implementation, as necessary
{'fraction_non_alphanumeric': 0.09459712095718827, 'fraction_numerical': 0.007478033277248084, 'mean_word_length': 4.736729222520108, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 9, 'https://': 38, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5850939', 'n_tokens_mistral': 3039, 'n_tokens_neox': 2894, 'n_words': 1135}