Is anyone using Discourse in higher ed for courses?

Hi there. I work for a university in IT. We’d like to create private discourse categories (which would map to courses), where only members of the course and the instructors would have access.

Wondering if anyone else is doing this currently and could share their experiences. Thanks!


@pfaffman is your man…


Given the quality of the forums included in the LMSes I’ve had the misfortune to be exposed to over the years, Discourse would be an intergalactic leap forward in user experience.

We’ve got plenty of educational institutions amongst our hosted customer base, although I don’t see any obviously listed on our customers page. I’d be surprised if some of them weren’t using Discourse as a course discussion system. Hopefully one or more admins from those sites hang around here and can add their thoughts.


We’re currently doing this for multiple courses.

We have two approaches that both seem to work out:

For a mathematics preparatory course, we have one permanent Discourse instance that we re-use every year. This makes sense for us, because the course is organized by a team of volunteers, and there is both a large overlap between two consecutive years’ teams, and often a bit to discuss between courses. We archive and tag all topics before the preparations for a new course start. You can read a bit about my journey to do this here:

For other courses, we use one Discourse instance for each iteration. So far, we’ve been simply shutting them down in the end, but in the future, I want to use multisite so I can keep the old instances running without causing significant additional load.

We use a custom course management system that manages submissions, grades, exams and so on. This CMS has a built-in phpBB-based forum, but also supports Discourse SSO – so in the courses where we use Discourse, the “Forum” link in the CMS simply triggers an SSO login to the (login required) Discourse instance for this course. The Discourse instance has a site customization which adds a navigation bar on top, allowing you to get back to the CMS.

I’m sure one large Discourse instance with subcategories could work too, but we’ve made a really good experience with our one-instance-per-course approach.

I’d be happy to answer any questions you have :slight_smile:


Hi, Jeff. I was once an instructional technology professor in colleges of education. In my last gig, I taught my classes with Discourse (which is part of why I now make my living with Discourse).

I organized assignments (or quests) in read-only categories and instructed students to reply-as-linked-topic (now on the link icon below a post) and put their post into the category for their class with a particular tag for that assignment. This made it easy for students to comment on each others work and for me to see whether students had done the work. I would :heart: their topic if they had completed the assignment, and wrote a script that would see that students had done the assignment and gave different grades if I had liked it and if other students had. It’s probably not helpful, but you can have it.

Having the assignments in their own categories made it easy to re-run a course and to use an assignment in multiple courses. The other cool thing is that when it was obvious that an assignment was badly worded or otherwise needed changing, I could change it immediately, making life better for the slackers who did the work late, and meaning that all those changes to assignments that I might otherwise have intended to do before next semester were, in fact, done.

You can see a syllabus for the last class I taught and this one too. This also worked really well, since the assignments were separate from the course, there wasn’t the copy-the-old-course-to-the-new-one at the start of each semester. All that was needed was to copy the syllabus and change the dates on it.

My courses were all (and remain) public. Changing that is just a matter of changing the permissions on the categories, though. I think that I just put a link to the course in the school’s LMS to get people to sign up. You could use groups to invite students to the course and control access.


Thank, all, for the info! Very helpful.

Still getting our feet wet with the tool, but leaning toward making each course a private category (or maybe sub-category?), with permissions granted to a group that contains the students, instructors, and TAs for that course.

We could be running hundreds of courses each semester, which means we’d end up with loads of (private) categories. That could eventually be a problem for us, as it looks like there could be issues with having much more than 1000 categories (?), based on what I’m seeing in this topic:

So perhaps we’d need to archive these off at some point…but we’re not going to hit that limit overnight. :slight_smile:

We’d definitely need to bump up the default character limit for group names to accommodate unique names for courses/sections, and it looks like this is doable. Hurray!

@pfaffman thanks for sending along your examples! We’ll give those a closer look and let you know what questions come up. And thanks, @fefrei for sharing how you’re approaching this at your institution. Plenty to think about!

1 Like

Totally agree with you, @mpalmer!

We’d eventually like to look at creating an LTI integration:

…but one step at a time. :slight_smile:


Hi Jay, I attempted to view these links but unfortunately got a “This Connection Is Not Private” message. Is it still possible to see how you arranged your course? I’m exploring whether I can host course curriculum on Discourse similar to platforms like Thinkific.


Yeah, I let that site die and now I think there are some better ways to do what I did then.

Still, I think that having sets of topics with whatever you call “assignments” in a read only category so that people create a topic with their “answer” on some category with a tag indicating the assignment is workable, perhaps with a theme to smooth the ux.

There are also some tricks to create links to start a new topic that could help, for example.


My biggest struggle is that I can’t order the topics in a category. There’s something really satisfying about going through a course in order and then checking each element of the course off visually. I’m wondering if it is possible to do that. I’m also thinking a theme component that can show that you liked a topic on the topic list page because that may be the easiest way to use existing features to have that at-a-glance satisfaction of having finished a top. Or, could a sidebar be added? Would love ideas.

Here’s a screenshot of Thinkific’s UX.

Image Description

Two-column UX
Top left

  • Fundraising Accelerator
  • 93% Complete
    Bottom left
  • Search by lesson title search box
  • Getting Started title, green checkmark on the left, 4/4 indicator on the right, expand arrow
  • Module One: Jeffersonian Dinners title, green checkmark on the left, 7/7 indicator or the right, hide arrow
    Nested below Module One: Jeffersonian Dinners title and in smaller font
  • Introduction title
  • What is a Jeffersonian Dinners? title, highlighted to indicate that’s the topic we are on
  • Why Jeffersonian Dinners?
  • How to arrange a Jeffersonian Dinner

Right column

  • What is a Jeffersonian Dinner? Contains video lesson showing a portrait of Thomas Jefferson

There’s a discussion here about how to keep topics in order but it just seems like a less than ideal workaround.


I also thought about this, what I ended up doing was having a topic serve as the course home instead of a category, that way I can use a table of content to structure it as I like.


Yeah, I was thinking about this too. Did you do anything special to keep that one topic findable/visible? Any ideas? My current ideas are

Idea #1: Structure the course home topic as a checklist. Use the Discourse-reply-template-component so students can create their own checklist. Teach them to bookmark or assign that topic to themselves so they can more easily find it. In this way their personal course topic can also serve as a learning journal where they reply with reflections, etc.

Idea #2: Add a link to the course home topic in the category description and use one of the many category banner theme components, like Category Banners 📜 - Themes - Pavilion, to make it easy to click on the course home topic. This is missing the checklist component but has the benefit of making it easy to update the course home and have it be reflected for everyone. This topic can also serve as an announcements thread.

Idea #3: Create a course home topic and then use a sidebar component like Discourse Category Sidebars or code something up via Custom Layouts Plugin but what about if someone is accessing the course on mobile? None of these sidebar components seem to make it easy for them to be viewed on mobile.

This is helping me think through the functions I think courses could need.

  • Easy to find Course Home
  • Checklist
  • Announcements
  • Course Updates
  • Personal Learning Journals

Mine isn’t that fancy, I just did a list and used the checklist to mark tasks and the reply component for onboarding. You can see my own here: Start here business growth thinkers! - Business Thinking - Growth Clinic.

I like the idea of making the category read-only, but I’d like to see how people interact with the courses first as they are public and self-guided.


I LOVE examples. Thank you for sharing!

I notice that within each topic you’ve also broken the content down in post replies.

I like the idea of having people be able to reply to topics, but perhaps not write their own.


Yes, I did that to break down the content into consumable bits, kinda like one would have in a slide.


What I did was use a topic as a syllabus as suggested. Since in my course students followed the same a schedule, I’d compress/expand stuff so that the current week’s information was easier to find.

I also used custom badges to track what they’d done. Each assignment (or “challenge” in my course parlance) had a tag associated with it, so when they posted with the tag (and, I think, I “liked” the topic) then they’d get the badge and I could use that to track what assignments they’d done. I had a script that would find the badge and update a cell in a spreadsheet which I could then upload directly to the LMS gradebook.


Whoa! Was this automated?


Well, “automated” in a sense. I think I did something like download some file from the LMS, then called a script that checked if the badge (or topic?) was there and entered a “full credit” if they’d done it, and I could then upload that file back to the LMS. It wasn’t a system that I’d expect anyone else to use, at least as it was. But that was a long time ago and the API and my skills are quite different now. :wink:

Oh, but the badge part was automated. It wasn’t too hard to write the SQL to grant the badges (you’d need to be self-hosted or on a plan that lets you create custom badge SQL). But the automation interface might be another way in to some of that, perhaps.