Show a desktop notification when the AI TA finishes replying
Notify me when classmates post messages in the forum
Play an alert sound whenever there is a new notification
Explain how Uedu's Forum automatically calculates Students' discussion participation grades through a weighted points system, Emoji bonuses and penalties, BERT quality assessment, AI originality detection, and linear grade mapping.
Uedu's discussion forum scoring system automatically calculates Students' participation grades in the Course Forum through a weighted points system. The system takes into account post type (topic post, comment, reply), Emoji feedback from instructors and AI, and BERT semantic quality evaluation, and finally produces grade scores through linear mapping.
Instructors can customise the scoring parameters for each Course (point weighting, thresholds, maximum score), and can also use the emoji mechanism to express approval or penalty for individual posts in real time. The entire marking process is automatically recalculated every hour by a scheduled task (Cron Job) to ensure marks are updated in real time.
A Student's base points (total_points) are accumulated from three posting behaviours, each with a configurable point value:
| Behaviour | Parameter name | Default value | Description |
|---|---|---|---|
| Start a topic | pts_thread | 3 | Create a new discussion topic in the Forum |
| Comments | pts_comment | 2 | Post a comment under someone else's topic |
| Reply | pts_reply | 1 | Reply to other people's comments |
Basic integration formula:
total_points = (threads × pts_thread) + (comments × pts_comment) + (replies × pts_reply) + emoji_bonus
Users with the following identities are not counted in the assessment:
The Emoji behaviour of these privileged users affects Student points (see Section 3), but their own posts do not count towards scoring.
Instructors can choose which discussion boards (boards) to include in the marking scope; posts on boards not selected will not count towards points. This setting is course-based.
Privileged users (instructors, TAs, AI) can award bonus points by reacting with Emoji on student posts:
| Emoji | Name | User enabled | Effect |
|---|---|---|---|
| 👍 | thumbsup | Teacher, TA, AI | Bonus (each time +1 bonus) |
| 🎊 | confetti | Teacher, TA | Bonus (each time +1 bonus) |
| 🚀 | rocket | Teacher, TA | Bonus (each time +1 bonus) |
Each Student's total Emoji bonus is capped by bonus_max (default 10); any bonus above the cap will no longer accumulate.
| Emoji | Name | User enabled | Effect |
|---|---|---|---|
| 😴 | zzz | Teacher, TA, AI | Set this post's points to zero (0 points) |
When a post is marked with the zzz emoji, the base points and all bonus Emojis for that post are excluded, and the entire post is scored as 0.
To avoid Emoji bonuses from becoming excessively inflated, the system provides a bonus_max parameter (configurable by the Instructor). The total Emoji bonus a Student receives across the entire Course will not exceed this cap.
When AI automatically reacts to student posts with Emojis (such as 👍 or 😴), the Instructor may disagree with AI's judgement. The system provides the Eyes (👀) Emoji as an Instructor review mechanism:
e.g. AI reacted 😴 (reset to zero) to a superficial reply, but the Instructor considers that reply valuable. The Instructor only needs to click one 👀, and AI's 😴 will be ignored, and the post will return to normal scoring.
Students can proactively apply to the Instructor for review, with two use cases:
When a Student’s post is judged by AI to be of insufficient quality and reduced to zero, the Student can click the “Request Instructor Review” button. After review, the Instructor may choose:
Even if a post is not marked by AI 😴, Students can still click “Request Instructor attention for this post”. Please pay special attention to the quality of this post’s content; after review, the Instructor may award extra Emoji points (e.g. 👍, 🎉, 🚀).
After a student submits a review request, the instructor and TA receive notifications in three ways:
The review function appears only when discussion board grading is enabled for the Course. Courses without grading enabled will not show the review request button.
The system integrates BERT semantic quality assessment, using an external API (https://aptel-api.uedu.tw/webhook) to carry out automated quality analysis of Students' posts.
BERT evaluates the semantic quality of posts, mainly considering depth, relevance and originality. The evaluation results serve as the basis for AI automatic Emoji assignment, but the final points are still determined by the Emoji mechanism.
To encourage students to participate in discussions in their own words, the system adds typing speed analysis and LLM originality detection in addition to BERT quality assessment, to determine whether a post has been generated by AI and then pasted. Detection results are visible only to instructors and TAs; students cannot see them at all.
The front end records the time from when a Student opens the editor to when they submit the post, and calculates the number of characters per minute (chars/min):
| Condition | Determination |
|---|---|
| Word count > 100 and words per minute > 150 | paste_suspected |
| Other | Normal input |
Average Chinese typing speed is about 30–60 characters per minute (including thinking); 150 characters per minute is far beyond normal hand typing and is almost certainly from external copy and paste.
For posts with a word count of ≥ 80, the system calls the LLM (GPT-5.4 mini) to analyse five language-feature dimensions:
| Dimension | Description |
|---|---|
| Vocabulary diversity | AI text is usually rich in vocabulary but lacks colloquial expressions or typos |
| Structural regularity | AI tends to use full paragraph structures and transitional words such as first, secondly, and finally |
| Tone consistency | AI text remains consistently toned, unlike humans whose tone varies with the content and mood |
| Fillers density | Humans often use spoken fillers such as “um”, “then”, and “you know”; AI uses them less often |
| Specificity | AI tends to give general descriptions, while humans are more likely to mention personal experiences or classroom details |
The LLM combines five dimensions to produce ai_likelihood (0.0–1.0), representing the likelihood that the content was generated by AI.
Based on typing speed and LLM detection results, the system adopts a dual-threshold system to determine the final Emoji:
| Word count | Typing speed | LLM results | Emoji | Scoring effect |
|---|---|---|---|---|
| < 80 | Normal | Do not run | By BERT | Normal scoring |
| 80–100 | Normal | ai ≥ 0.7 | 😴 zzz | Not scored |
| 80–100 | Normal | ai < 0.7 | By BERT | Normal scoring |
| > 100 | Suspected paste | ai ≥ 0.5 | 😴 zzz | Not scored |
| > 100 | Suspected paste | ai < 0.5 | Do not grant | Raw score points (neither rewarded nor penalised) |
| > 100 | Normal speed | ai ≥ 0.7 | 😴 zzz | Not scored |
| > 100 | Normal speed | ai < 0.7 | By BERT | Normal scoring |
The threshold for suspected paste is ai ≥ 0.5 (stricter), because there is already abnormal typing speed as supporting evidence, so a slight suspicion from the LLM is enough to judge it. For normal typing speed, the threshold is ai ≥ 0.7 (more lenient), because the LLM is the only signal and a higher level of confidence is needed to judge it.
In the thread details page, Instructors and TAs can see the detection label (shown next to the author name):
Students on the Student side cannot see any detection markers. The Instructor can override the detection result through the 👀 review mechanism.
The Student's final grade is converted from total points (total_points) into a grade score using a linear mapping. The Instructor can set two key parameters:
| Parameter | Description | Default value |
|---|---|---|
threshold | Minimum points required to achieve a perfect score | 20 |
full_score_value | Maximum score | 100 |
Formula:
score = (total_points ≥ threshold) ? full_score_value : (total_points / threshold) × full_score_value
total_points ≥ threshold, score = full_score_value (full marks)total_points < threshold, score = total_points / threshold × full_score_value (linear increase)Assume threshold = 20, full_score_value = 100:
| Student | Topic | Comment | Replies | Emoji bonus | total_points | Grade |
|---|---|---|---|---|---|---|
| A | 3 | 5 | 4 | 5 | 28 | 100 (full marks) |
| B | 1 | 3 | 2 | 2 | 13 | 65 |
| C | 0 | 1 | 1 | 0 | 3 | 15 |
Forum scores are automatically recalculated by a scheduled task (cron_forum_scoring.py) every hour:
This batch mechanism ensures that even if an instructor modifies the Emoji or adjusts the parameters in a non-real-time setting, the grade will be automatically reflected in the next hour.
Student discussion forum participation grades are calculated automatically by the Forum Scoring module on the Uedu platform. The system uses a weighted points scheme, assigning different point weights according to post type (topic post, comment, reply). Instructor, TA and AI can give feedback on individual posts via the Emoji mechanism (👍 + points, 🎊 / 🚀 + points, 😴 penalty reset to zero), and the total bonus points are capped by bonus_max. AI Emoji feedback is based on BERT semantic quality evaluation (aptel-api.uedu.tw). In addition, the system integrates an AI originality detection mechanism, using front-end typing speed analysis and LLM language-feature evaluation (five dimensions: lexical diversity, structural regularity, tone consistency, filler-word density, and specificity) to determine whether a post was generated by AI, and applies a dual-threshold scheme (suspected pasted content ai ≥ 0.5, normal typing speed ai ≥ 0.7) to decide the scoring outcome automatically. Instructor can review all AI judgements via the 👀 Emoji. Final grades are calculated by linear mapping: when total points reach the threshold (threshold) it is a full score; if not, the score is converted proportionally. Grades are automatically recalculated every hour by a scheduled task. All scoring parameters (point weights, threshold, full-score value, bonus cap) can be customised per Course. See https://uedu.tw/doc/forum-scoring for a detailed methodology explanation.
It is recommended to provide the following: