or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Blog post on Jupyter, Markdown, MyST and ALeA
During a fun and productive visit of Nicolas Thiéry at Michael Kohlhase's Kwarc group at FAU Erlangen in May 2023, and a joint stay at HIM in 2024, we continued our exploration of the following problematic: could lightweight semantic annotations on Jupyter/Markdown based teaching material enrich the experience for authors and learners?
Let's make it concrete on an simple example: if the definitions of concepts in the course material are explicitly annotated with adequate markup:
then flashcards can be automatically generated to help students memorize the definitions of the course, using spaced repetition. Or of some subset, like the definitions of all concepts that are required to define what a cat is.
This blog post reports on ideas, progress and first prototypes.
Context
[Vision paper](TODO: add link)
TODO: Nicolas: describe the direction in Orsay
One long term line of work of the Kwarc group is to explore how knowledge can enrich computer systems, touching on domains such as semantic AI and semantic web and using tools such as ontologies or knowledge graphs. Our previous collaboration revolved around computation: can we improve the interoperability between computational software by exploiting or adding semantic information into the systems.
Nowadays the Kwarc group is conducting that exploration on education (work funded by the German Ministry of Research and Education (BMBF): VoLL-KI project 2021-2025), as part of the global movement for assisted learning based on learning analytics.
They are building a system, ALeA for Adaptive Learning Assistant, that takes as input course material split in small annotated units (currently authored in LaTeX), and produces an interactive web site for learners to explore that material. The system is continuously experimented with on a corpus of ongoing large courses, including a 1000 student AI course. You can browse the courses – or even create an account to actually play with them – here:
https://courses.voll-ki.fau.de/ (alias: https://alea.education )
Current features
A task can have two components attached to it:
Distinction between Drill vs Revise to be clarified.
How does this work
TODO Dennis / Jonas
The course material is written as a collection of (small) annotated LaTeX files; each of these files typically contain a few (beamer) slides. We will from now on refer to them as the stex files (s for semantically annotated).
A special implementation of TeX, called RusTeX takes as input the stex files and generates as many html files, where the annotations have been encoded (which we will refer to as the sHTML files). RusTeX also has the property of producing sHTML which is visually identical to the pdf that would be produced by the usual toolchain (pdflatex).
sHTML plays the role of an AST (abstract syntax tree) from which to pivot. There are also sHTML importers from word, powerpoint, and markdown.
The sHTML files are imported into the ALeA system. They are processed by MMT to extract the semantic and reason on them: resolve cross-references and references to the domain model. The outcome (processed html files + ???) are then uploaded on the course web server.
When the learner logs into the service, a javascript library running in the learner's browser combines all the bits to pilot the user navigation: displaying slides, navigating among them, querying and updating the learner's model service, displaying flash cards, resolving guided tours, etc.
Currently, the values in the learner models are essentially estimated from:
Caveat: these self-assessments tend to be heavy-handed: they use up energy and meta-cognition; they also require a good understanding of the learning process. In somes courses, the students are first introduced to this chunk of the BLOOM terminology.
Aims and design principles
VoLL-KI aims at disseminating widely its outcomes, fostering best practices (semantic annotations of course material; pedagogical and ethical exploitation thereof), and reuse of the tools they are developing.
To this end, the following design principles aim at reducing the entry barriers.
Annotating one's course material should be:
About MyST
MyST (markdownly Structured Text) is both an extension of Markdown and a (mostly javascript based) ecosystem of tools to support scientific authoring. Of particular interest for this project are:
Due to these qualities, MyST is getting traction, e.g. in AGU's project Notebook Now for a Jupyter+MyST scientific publishing plateform, or overleaf's analog for Markdown curvenote. And for teaching!
The brainstorms and sprints
Our main target for the brainstorms and sprints was to explore collaboration opportunities between Alea and the Jupyter / Markdown ecosystem:
Bottom-up collaboration opportunities
TODO: link to section below; link to sHTML syntax
Top-down collaboration opportunities
Target: Standardizing annotations accross authoring syntax
Brief reminder of MyST's syntax for roles and directives
Simple directives:
Directives with simple metadata:
Directives with YAML metadata header:
Annotations in sTeX
Discussion about markdown syntax for stex: https://github.com/slatex/sTeX-React/issues/281
some sTeX documentation for learning objects
Annotations in the sTeX syntax:
Didactict annotations for tasks are inserted in the task block:
Being able to use a single
\objective{understand,apply}
could be nicer. Prerequisites are deduced implicitly from the symrefs.Open questions:
Tentative MyST syntax for annotations
The label could be presumably be made implicit from the definiendums. Particularly handy when there are several definiendums.
Didactict annotations for activities:
Comments:
a-zA-Z -_
strings.Milestone: ALeA as a service
Proof of concept: importing Nicolas's Info111 courses in ALeA
Dennis and Nicolas had a sprint in 2023, with sHTML export with JupyterBook and roles / directives implemented in Python. This "worked".
The web page still has the sHTML annotations. See for example this page (login: Enseignant, password: Enseignant).
In the meantime Nicolas has annotated all definitions (with definition/definiendum, and sometimes symrefs) in the course (so flashcards should work) with many symbols being partially aligned (at the occasion of a sprint with Michael in July 2024) in a central file.
Sources for the course; Annotation example
Instructions for Jupyter-Book:
extensions
subdirectory of your jupyter book directory._config.yml
:Javascript Plugin for MySTmd and Mystmd configuration file
Other courses
These three courses share the exact same technological stack as Info111
Hence a test bed for how to make multilingual courses (here: fr/de/en)
Course led by another instructor (with Nicolas's help); hence a test bed for aided adoption by others.
Other tasks
make web
. Output will be in _build/html. Alternatively, your continuous integration on GitLab may just work.Partially done; current blocker: MyST seems to be doing some sanitizing on the produced html, and the
<span>
arguments are striped.Milestone: ALeA as WebCompontents and MicroServices
Deliverable: ALeA integration in Jupyter
Note: some misc data currently stored in the ALeA application that do not appear in the current diagram:
Tasks and dependencies:
Other potentially related use cases
Mathswitch / mathdatahub
Looks similar to intersphinx crossreferences, with knowls on top. Would that be a myst feature? Or be implemented by hijiking a chunk of the mystjs library? There seems to be some wikimedia api for this; so it might just be a question of following that api, both as producer and consumer.
Cost network
Potential partners: