Context ======= This section explains how the MWC CLI interacts with other systems in a *Making With Code* course taught at a school. One of the goals of the *Making with Code* project is to provide the technical infrastructure needed to support open-ended, project-based computer science. Schools these days already have quite a bit of digital infrastructure, so this section describes what *Making with Code* provides and how it interacts with your other systems. *Making with Code* has four components, each described below. .. image:: making_with_code_context.png :alt: Diagram showing how components of *Making With Code* interact with other systems. MWC curriculum ~~~~~~~~~~~~~~ The curriculum is a static website with student-facing materials such as labs, projects, and problem sets, as well as resources for teachers. Each lab, project, and problem set comes with a repository of supporting Python code which students work with on their own computers. The `standard curriculum `_ is ready-to-use, or you can fully customize it for your context, and serve it from your own domain if you like. The MWC curriclum is written in markdown, built using `Zola `__, a static site generator, and distributed as a git repository. Materials for each module are distributed as individual git repositories. If you’re interested in collaborating on the curriculum or editing it for your own purposes, please see the section on `development `__. MWC command-line interface (CLI) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The command-line interface is a Terminal program installed on student and teacher computers. For students, the CLI takes care of setting up the development environment, fetching the materials needed for labs and projects, and allows students to submit their work. Teachers use the CLI to administer courses, see summaries of student progress, read students' reflections, and fetch student work for feedback and assessment. Each curriculum module also has a corresponding git repo providing starter code and tests. The CLI checks the MWC curriculum site to see which modules are available. When a student starts working on a curriculum module, the CLI creates a new repo for that student, so that they can save their work and share it with the teacher by pushing it back to the the server. MWC git server ~~~~~~~~~~~~~~ The MWC git server is an open-source alternative to GitHub which works in almost the same way. The git server hosts student and teacher projects securely and for free. MWC accounts server ~~~~~~~~~~~~~~~~~~~ The accounts server manages student and teacher accounts, including making sure that only students and their teachers have access to student work. School infrastructure ~~~~~~~~~~~~~~~~~~~~~ Student computers ----------------- *Making With Code* is fundamentally about helping students learn to use computers as partners in cognition, and to make personally-meaningful projects with code. *MWC* is very hands-on, so students need a general-purpose computer they can use to write and run programs. Any computer running Windows, MacOS, or Linux (including Ubuntu and Raspberry Pi) should work fine. MWC is not compatible with Chromebooks or iPads. Learning management systems ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Most schools today have a learning management system (LMS) which coordinates curriculum, assignments, grades, and communication with students and parents. *Making With Code* was designed to flexibly interact with your LMS. *Making With Code* does not currently offer LTI 1.3 integration, but this is a feature we are considering in the future.