Skip to content

Interactive tutorials for learning digital logic #348

@darktorres

Description

@darktorres

Description

Build a guided tutorial system that teaches digital logic concepts step by step. Students follow instructions to build circuits, with automatic validation at each step.

Tutorial Scope

  • Basic gates (AND, OR, NOT)
  • Combinational circuits (MUX, decoder, adder)
  • Sequential logic (flip-flops, latches, counters)

Acceptance Criteria

  • Tutorial system works for all defined scopes
  • Smooth navigation between steps (next/previous/skip)
  • Automatic validation of circuit correctness at each step
  • Progress is saved per user

Implementation Guide

1. Tutorial format

  • Define tutorials as JSON/YAML files with steps
  • Each step: { instruction, hint, validationRule, requiredElements, expectedConnections }
  • Bundle tutorials as Qt resources under App/Resources/Tutorials/

2. Tutorial engine

  • Create TutorialEngine class that loads a tutorial file and manages step progression
  • Validation: compare current scene elements/connections against expected state
  • Partial match: highlight what's correct and what's missing

3. Tutorial overlay UI

  • Semi-transparent overlay panel on the canvas with:
    • Current step instruction text
    • Step progress indicator (3/10)
    • Next/Previous/Hint buttons
  • Highlight relevant areas of the canvas (e.g., "connect this port to that port")

4. Progress persistence

  • Store completed tutorials and current step in QSettings
  • Show completion status in a tutorial browser dialog

Key files

  • App/Scene/Scene.h/.cpp — element/connection queries for validation
  • App/UI/MainWindow.cpp — tutorial menu and overlay hosting
  • New files: App/Tutorial/TutorialEngine.h/.cpp, App/Tutorial/TutorialOverlay.h/.cpp
  • New resources: App/Resources/Tutorials/*.json

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions