Using Discourse for courses in a university program

As a follow-up, here’s how I imagine best meeting your needs with out of the box features of Discourse. It may not be exactly what you have in mind, but I think it’s worth considering as a starting point for discussion.

First, I’m making some assumptions, which may or may not be valid. Please let me know where I’m getting it wrong:

  1. There will be many courses (10s, possibly 100s)
  2. Setting up courses will happen periodically, in sizable batches, at the beginning of each term (2-4 times a year)
  3. Courses will have an end of life
  4. People managing courses need to have some ability to set them up on their own
  5. People managing courses will have limited or no experience with managing a Discourse site.
  6. People managing courses only really need to see their own. They may want to see others occasionally as examples, but don’t need ongoing participation in them.
  7. ^ ditto for people taking courses
  8. There is a very small team managing the system as a whole
  9. Courses don’t really need subcategories; using tags to organize content within courses would be sufficient

Given those are close, here’s what I’d suggest, first at a high level:

  1. Create a small number of top level categories: one for “Current Courses”, one for “Past Courses”, one for “Upcoming Courses” and one or more for more general things about the overall system itself (e.g. how to use the site)
  2. Set the home page style to be “boxes with categories” so these are prominently displayed
  3. Use subcategories for each course
  4. Create them in “Upcoming Courses”
  5. Move them to “Current Courses” when the term begins
  6. When a course concludes, move it from “Current Courses” to “Past Courses”
  7. Control access to Courses using Groups (more details below)

Access control:

  1. For each course, create a set of following groups, for example: foo_interested, foo_enrolled, foo_admin
  2. Create two additional groups: “browse_courses” and “browse_past_courses”
  3. Set categories in “Upcoming Courses” and “Current Courses” to only be accessible to people in the groups for the specific course and people in the “browse_courses” group.
  4. Set categories in “Past Courses” to only be accessible to people in the groups for the specific course and people in the “browse_past_courses” group.

User experience for groups and courses

  1. Have a pinned topic in the top level category for “Upcoming Courses” that explains how to browse courses, with an easy affordance for people to join the “browse_courses” group.
  2. ^ ditto for “Current Courses”
  3. ^ ditto for “Past Courses”

For individual courses, have a pinned topic in the category explaining how to join the Course:

  1. Join the “foo_interested” and/or “foo_enrolled” group
  2. Add course to your sidebar

Administration will be a bit labor intensive at first, as for each new course someone will appropriate privileges will need to:

  1. Create the category
  2. Create the groups
  3. Create the pinned topic
  4. Add the people to the _admins group
  5. Provide them the docs they need to manage their own course

Some of that could be automated with some lightweight tools. Depending on who the main admin team is, it may make sense to start with sometime out of band that just hits the API. Or maybe you need something more UI based that is built into Discourse as a theme component or plugin. But I’d suggest starting lean here, and focusing first on defining a process that works, then design the tools around that.

Category scaling is a possible concern here. Discourse does have some performance and UX rough edges when the category count gets too large (high hundreds or thousands). Users with access to more categories will feel the impact of this, while those with limited access will not. That is part of the motivation for limiting access to categories as I’ve outlined.

Very interested to hear any and all feedback or questions you have on the above.

1 Like