Single Sourcing Syllabi

Using a docs-as-code approach for course materials makes it relatively straightforward to take a single-source approach to syllabi. This means that a single source file can be used to generate printed syllabi as well as Canvas pages. Similarly, "boilerplate" and other recycled content can live in a single location. So for example, if your attendance policy is the same in all of your face-to-face classes, you can keep one file in a shared folder that covers this topic and then use it the syllabi for various courses. This explanation covers the basic concepts behind this approach, and how they work in the Canvas Docs as Code Project.

Topic-Based Authoring

Topic-based authoring is a way of thinking about documentation in terms of the individual topics that might make up a document, instead of thinking about the finished documents themselves. Syllabi present a great example of topic-based authoring, since so much of their content is topical and re-used across multiple courses.

The following table outlines a few possible topics for a syllabus, as well as whether each topic might be thought of as shared across multiple courses or unique to a specific course. (Naturally, whether a topic is unique will depend on a variety of factors. For example, if I'm teaching multiple sections of the same course, then Course Outcomes might be shared. If not, then they'll probably be unique.)

Topic Shared or Unique
Course Name Unique
Meeting Place and Time Unique
Instructor Name and Contact Info Shared
Course Outcomes Unique
Attendance Policy Shared
Grading Policy Shared
Drafts and Revisions Shared
Reading Calendar Unique

Hopefully this small set of examples makes it clear how beneficial it can be think of syllabi in terms of topics. If I decide to make a change to my attendance policy, I can do that once and let that topic be used to generate consistent syllabi for all of my relevant classes.

The syllabus is created by using pandoc and a default file written in yaml.

Single Source, Multiple Outputs

Another thing we can do with syllabus topics is to push some or all of them to individual Canvas pages. For example, I use the same approach to drafts and revisions in all of my classes, and I like to have that information in a "Getting Started" module on Canvas. I can use the course.yaml file to grab whichever topics I choose from my syllabus folders and put them in that module.

The extra columns in the table below suggests a possible set of outputs for our hypothetical syllabus topics:

Topic Shared or Unique Send to Syllabus Send to Canvas
Course Name Unique Yes Yes
Meeting Place and Time Unique Yes Yes
Instructor Name and Contact Info Shared Yes No
Course Outcomes Unique Yes Yes
Attendance Policy Shared Yes Yes
Grading Policy Shared Yes No
Drafts and Revisions Shared Yes Yes
Reading Calendar Unique Yes Yes

Topics are added to the modules page by putting them in the course.yaml file in the course root folder.

Topic Locations

The default structure of the Canvas Docs as Code Project assumes the following locations for syllabus and Canvas topics:

  • Shared topics: canvas-docs-as-code/_shared/syllabus/topics
  • Course-specific topics: [course root folder]/Pages/Syllabus_topics

If you want to store topics in other locations, you will need to update your course.yaml file and perhaps make adjustments to the sync_pages.py script.

Conclusion

Clearly this will require more organization and set up time than it would take to just write a syllabus in Word. But once the organizational structure has been worked out, it will be much easier to keep syllabi consistent and up to date across courses.