Observable in Discourse

Discourse is open source forum software. You might think of it like a Math StackExchange that you can build and host yourself. This post lives in my personally hosted Discourse instance.

Observable is an online notebook platform for computational data exploration and visualization. You might think of it like an instantaneously reactive version of Jupyter that uses Javascript to make your demonstrations easily deployable to the web. The animation below was generated on Observable and embedded into this forum.

Discourse and Observable are both easy for students to use and can be integrated to powerful effect. Students can learn quite a few basic skills in the process including

  • Use of Markdown to set up a Discourse post or Observable notebook that’s nicely laid out with sections, images, and/or tables.
  • Use of LateX snippets to incorporate mathematical notation.

They both have their own strengths. Discourse provides a gentle introduction to online communities where you (the instructor) have some control. Observable is more of a programming tool that you can use to liven up your forum.

Here’s an example of an assignment that I designed for my course in Discrete Mathematics in both fall of 2022 and spring of 2023. Like a lot of assignments that I place on our course forums, the problem is individualized. Each student gets a similar question but customized slightly for them. They get their version of the problem from a drop down list.


(10 pts)

In this problem, you’re going to modified the code in this Observable notebook to compute the number ways non-attacking kings can be placed on an m×n board. To get your precise problem statement, choose your name from the following list:

This next post shows a solution as written by one of the students in the class. The forum from last year is archived, though, so I’ve copied their answer and placed it here. The code that you see was written and executed in this Observable notebook.


(by @gavin)

I was asked to find the number of 6×9 boards. So I computed as follows:

board_cnt = math.multiply(
  math.ones(89),
  math.pow(math.matrix(kings_matrix(9)), 5),
  math.ones(89)
)

Thant works out to be 61643709.

Here’s another example of an assignment that I created on the forum, this time for my Chaos and Fractals students. The drop down menu provides one of a collection of problems individualized for for each student. That drop down menu is generated on Observable. The students are asked to generate a specific type of plot called a cobweb plot. Of course, they can generate cobweb plots on Observable. :slight_smile:


In this problem you’re going to find all the period orbits of a specific logistic function. To find your specific problem, choose your name from the following list: