Skip to content

Practice Mode for Programming Exercises #11323

@ekayandan

Description

@ekayandan

Feature Proposal

Spec Version 0.2.0

Context

While practicing, build status(spinner and the remaining time) of the practice submission is not visible to students.

Problem

  • No visible progress/ETA during practice runs.
  • Students wait in silence, often refreshing or re-submitting.
  • Current design hides status to protect graded results, but this also blocks practice feedback.

Motivation

  • Provide real-time feedback for practice runs (spinner, ETA, results).
  • Reduce frustration and redundant requests.
  • Keep graded runs fully isolated from practice runs.

Requirements Engineering

Existing (Problematic) Solution / System

User (student) can only see their practice grade after the grading is complete. This leaves user with a page without any feedback for seconds to minutes. Ideally user should see an indicator about the progress of their build job.

Proposed System

"Practice" button on the exercise detail page now toggles the Practice Mode.
While in practice mode, students will be able to see their practice (ungraded) points just like the ui before deadline.

Requirements

  1. FR: Practice Mode Toggle: The system shall allow students to enable/disable Practice Mode via a toggle on the exercise detail page.
  2. FR: Distinct UI Styling: The system shall visually indicate Practice Mode through a banner, color scheme, and badges etc. so students clearly know they are practicing.
  3. FR: Practice Endpoints: The system shall retrieve practice grades using existing endpoints with extra filters or with new created endpoints (TBD) .
  4. FR: Live Build Status and ETA: The system shall display real-time build status (queued, running, evaluating) with a spinner and remaining time updates using WebSocket or polling fallback.
  5. FR: Practice Results Display: The system shall show practice results (ungraded points and test details) upon completion, clearly labeled as “Practice” and excluded from gradebook data.

Analysis

Analysis Object Model

What are the involved Analysis Objects?

Dynamic Behavior

Include dynamic models (Activity Diagram, State Chart Diagram, Communication Diagram) here to outline the dynamic nature of the PROBLEM

System Architecture

Subsystem Decomposition

Show the involved subsystems and their interfaces. Make sure to describe the APIs that you add/change in detail. Model the DTOs you intend to (re)use or change!

Other Design Decisions

Potential topics to discuss here include: WebSockets, testing strategies.

UI/UX Design

Recording is just for a brief idea of the feature. UI needs to be improved by a lot.

Improvement ideas on UI

  1. A bigger indicator should be added for practice mode. (Adding big "practice mode" texts to a couple places or a different color scheme)
  2. Components/information to be shown in the practice mode should be determined
Screen.Recording.2025-07-29.at.17.29.11.mov

Metadata

Metadata

Assignees

No one assigned

    Labels

    assessmentPull requests that affect the corresponding modulebuildagentPull requests that affect the corresponding modulecommunicationPull requests that affect the corresponding modulecorePull requests that affect the corresponding moduleexercisePull requests that affect the corresponding modulefeature-proposalThis issue is a feature proposallecturePull requests that affect the corresponding modulemodelingPull requests that affect the corresponding moduleprogrammingPull requests that affect the corresponding moduletextPull requests that affect the corresponding module

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions