Structure
Structure
Making with Code is organized into courses, units, and modules. Courses are the highest-level container for content. They contain one or more units. Units are clusters of content organized around essential questions, providing materials to orchestrate student learning for 1-2 months. The general structure of a unit is a sequence of labs which introduce students to new ideas and skills, and then an open-ended project in which students use those ideas to build personally-meaningful projects. Modules are chunks of content related to a unit, including labs, reference documents, projects, and potentially other kinds of content.
Making with Code does not model lessons (what should be done within a single class meeting); there's just too much uncertainty around how long something will take, or whether a particular section of a class doesn't meet on a particular day. Furthermore, lessons are usually modeled by a school's learning management system, so modeling them in Making with Code is a duplication of effort.
Content types
The following content types are implemented. For each, ensure that type: contenttype
is in the page's front matter.
course
: Introduces a course.unit
: Introduces a unit.module
: A chunk of content. The following are module subtypes:lab
: A guide for students through a hands on exploration of a particular topic.check-up
: An at-home activity to review past content and prepare for future lessons.resource
: A chunk of content such as a handout, a homework question, a mini-lesson, or a set of slides.
teaching
: A pedagogical overview, introducing the content to a teacher preparing to use it. Each course, unit, lesson, and module may haveteaching
content.notes
: Pedagogical details related to a specific implementation of the content.
Courses
Courses should have a git_backend
param specified in their front matter (under the extra
section), indicating which backend git service the course will use.
This affects the behavior of the MWC CLI. The only currently-supported option is github
;
github_org
(student repos created under a GitHub organization) will be developed next.
This feature leaves the system extensible to avoid vendor lock-in.
Modules
Subdirectories containing modules (checkups
, labs
, and resources
in the example below)
should have the following front matter, specifying that their contents should be included
in the JSON export and that there should be no section page.
+++
title = "Labs"
weight = 10
render = false
sort_by = "weight"
[extra]
type = "modules"
+++
Modules may have params repo_url
and init_action
(clone
, create_from_template
, mkdir
).
If included, these will be used by the MWC CLI to initialize student repos corresponding
to each module.
File structure
Here is an example file structure showing the various content types.
content/
├── _index.md
└── courses
├── _index.md
└── mwc1
├── _index.md
├── notes_hk_19_20.md
├── teaching.md
└── unit00
├── _index.md
├── mini-lessons
│ ├── _index.md (type = "modules")
│ ├── loops
│ │ └── _index.md
├── labs
│ ├── _index.md
│ ├── lab1_terminal
│ │ └── _index.md
├── notes.md
├── resources
│ └── _index.md
└── teaching.md
JSON Manifest
A JSON representation of the site's courses, units, and modules is available at
/index.json
. Because Zola does not support building the json
file type, the manifest is built at /manifest.html
. A post-processing
step renames this file /index.json
.