Structure

Courses, units, and modules

Making with Code (MWC) is organized into courses, units, and modules. A course contains the curricular content a teacher and students would use for one or two semesters. Courses contain one or more units; each unit is a cluster of content organized around essential questions, providing materials to guide student learning for 1-2 months. Units start with a sequence of labs which introduce students to new ideas and skills, leading to an open-ended project in which students use those ideas to build personally-meaningful projects. Sometimes units also contain problem sets, which are designed for students to complete independently. We refer to labs, problem sets, and projects as modules.

The structure of the MWC website mirrors this pedagogical structure: courses are sections under site/content/courses, units are sections with a course, and modules are sections within a unit. Each section may also contain additional pages and assets such as images. The site's file tree looks like this:

site/content/courses
├── _index.md
├── mwc1
│   ├── _index.md
│   ├── unit1
│   │   ├── _index.md
│   │   ├── lab_turtle
│   │   │   ├── _index.md
│   │   │   └── compare_terminal_finder.png
│   │   ├── project_drawing
│   │   │   └── _index.md
│   ├── unit2
│   │   ├── _index.md
│   │   ├── lab_pipes
│   │   │   └── _index.md
│   │   ├── lab_weather
│   │   │   ├── _index.md
│   │   │   └── weather_functions.png

Metadata

In Zola, each section or page has front matter specifying metadata. In the MWC site, each course, unit, and module has some required metadata.

Course

+++
title = "Making With Code I"
[extra]
course = true
slug = "mwc1"
git_backend = "mwc"
+++

Unit

+++
title = "Unit 1: Drawing"
[extra]
unit = true
slug = "unit1"
+++

Module

+++
title = "Turtle"
template = "module.html"
[extra]
slug = "lab_turtle"
repo_url = "https://git.makingwithcode.org/mwc/lab_turtle.git"
+++

Standards

MWC modules can be aligned to various state- and national-level standards for K12 computer science education. Currently, MWC has only been aligned with New York's Computer Science and Digital Fluency Standards.

Showing the standards

You can render a table of standards, with the alignment of MWC modules, with the standards.html template. (For example, here is the alignment of MWC1 with New York's CS&DF standards.)

Aligning modules with standards

MWC modules are aligned with standards in their metadata. Individual module pages should have extra.standards[standards] assigned to a list of identifiers. For example, if a module is aligned with the first standard in New York's CS&DF standards, the module's metadata could look like:

extra.standards.nycsdf = ["9-12.IC.1"]

A module can be aligned with multiple standards.

Schedule

You can display a course schedule or calendar using the schedule.html template. The schedule orders units and modules according to their weight; the number of lessons allocated to each module can be assigned using extra.duration, defaulting to 1.