Skip to content

Latest commit

 

History

History
239 lines (186 loc) · 7.23 KB

File metadata and controls

239 lines (186 loc) · 7.23 KB

Cumulative Session Training - All Characters from Session 1 to Selected Session

Problem Fixed

Previously, when you selected Session 4, the training only used characters and numbers taught specifically in Session 4 (C, U). This was incorrect because CW training is cumulative - you should be practicing all characters learned from Session 1 through Session 4.

The Issue

Before Fix:

  • Select Session 4 → Only get: C, U, 1, 4
  • Missing: A, E, N, T, S, I, O, D, H, L, R, 2, 5

Expected Behavior:

  • Select Session 4 → Should get: A, E, N, T, S, I, O, 1, 4, D, H, L, R, 2, 5, C, U

The Solution

Created get_cumulative_session() function that combines all sessions from Session 1 up to the selected session.

Changes Made

File: src/cw_academy_training.rs

  • Added new function get_cumulative_session() that:
    1. Takes the selected session number
    2. Loops through all sessions from 1 to the selected session
    3. Combines all characters, words, abbreviations, numbers, callsigns, and phrases
    4. Removes duplicates
    5. Returns a complete cumulative training session

File: src/main.rs

  • Replaced all get_session() calls with get_cumulative_session()
  • Updated 5 locations where training items are generated

How It Works Now

Session 1

Characters: A, E, N, T Numbers: None Total Pool: A, E, N, T

Session 2

Cumulative Characters: A, E, N, T, S, I, O Cumulative Numbers: 1, 4 Total Pool: A, E, N, T, S, I, O, 1, 4

Session 3

Cumulative Characters: A, E, N, T, S, I, O, D, H, L, R Cumulative Numbers: 1, 4, 2, 5 Total Pool: A, E, N, T, S, I, O, D, H, L, R, 1, 4, 2, 5

Session 4

Cumulative Characters: A, E, N, T, S, I, O, D, H, L, R, C, U Cumulative Numbers: 1, 4, 2, 5 Total Pool: A, E, N, T, S, I, O, D, H, L, R, C, U, 1, 4, 2, 5

Session 5

Cumulative Characters: A, E, N, T, S, I, O, D, H, L, R, C, U, M, W Cumulative Numbers: 1, 4, 2, 5, 3, 6 Total Pool: All letters + all numbers from Session 1-5

Session 7

Cumulative Characters: All previous + F, Y, G, P, Q Cumulative Numbers: All previous + 7, 9 Total Pool: Full character set through Session 7

Session 10

Cumulative Characters: All 26 letters + special characters Cumulative Numbers: 0-9 (all digits) Total Pool: Complete Morse code alphabet and numbers

Impact on Training Modes

1. Characters Practice Type

Before: Only Session 4 characters → C, U After: All characters Session 1-4 → A, E, N, T, S, I, O, D, H, L, R, C, U

2. Characters + Numbers Practice Type

Before: Only Session 4 characters + numbers → C, U, 1, 4 After: All characters + numbers Session 1-4 → A, E, N, T, S, I, O, D, H, L, R, C, U, 1, 4, 2, 5

3. Words Practice Type

Before: Only Session 4 words After: All words from Session 1-4 combined

4. Numbers Practice Type

Before: Only Session 4 number sequences After: All number sequences from Session 1-4

5. All Other Practice Types

All practice types now work cumulatively!

Why This Is Correct

CW Academy Curriculum Design

The CW Academy curriculum is progressive and cumulative:

  • Session 1: Introduces A, E, N, T (4 letters)
  • Session 2: Adds S, I, O, 1, 4 (builds on Session 1)
  • Session 3: Adds D, H, L, R, 2, 5 (builds on Session 1-2)
  • Session 4: Adds C, U (builds on Session 1-3)

Students are expected to maintain proficiency in all previously learned characters while learning new ones.

Real-World Usage

In actual QSOs, you'll encounter:

  • Mix of old and new characters
  • Previously learned letters alongside new ones
  • All digits learned so far, not just the newest ones

Training Effectiveness

Practicing only new characters would:

  • ❌ Let earlier characters get rusty
  • ❌ Create gaps in knowledge
  • ❌ Not prepare for real QSOs
  • ❌ Violate progressive learning principles

Cumulative practice ensures:

  • ✅ Continuous reinforcement of earlier characters
  • ✅ Smooth progression without knowledge gaps
  • ✅ Realistic practice conditions
  • ✅ Proper progressive learning

Examples

Selecting Session 4, Characters Practice

Previous (Wrong):

Random characters: C, U, C, C, U, U, C, U
(Only 2 characters - very limited!)

Now (Correct):

Random characters: A, T, H, C, E, L, U, S, O, N, D, R, I
(13 characters - proper variety!)

Selecting Session 4, Characters + Numbers

Previous (Wrong):

Random mix: C, 1, U, 4, C, 1, U, 4
(Only 4 items total)

Now (Correct):

Random mix: A, 2, T, H, 5, C, 1, E, L, 4, U, S, O, N, 2, D
(17 items - includes all learned characters and numbers!)

Selecting Session 7, Words Practice

Previous (Wrong):

Only Session 7 words: PAGE, PAPER, PEPPER, GLAD, GEORGE

Now (Correct):

All words from Sessions 1-7:
TEA, NEAT, TEN, TAN, NOISE, STONE, HALL, DEAL, CHAT, REACH,
WAIT, WATER, WISH, PAGE, PAPER, GLAD, and many more!

Verification

To verify cumulative behavior:

  1. Open Training Window
  2. Select Session 4
  3. Choose "Characters + Numbers" practice type
  4. Start Training Session
  5. Click "Next Item" 20+ times

You should see a good variety of:

  • Letters: A, E, N, T, S, I, O, D, H, L, R, C, U
  • Numbers: 1, 2, 4, 5

NOT just C, U, 1, 4!

Technical Implementation

Cumulative Session Function

pub fn get_cumulative_session(session: SessionNumber) -> TrainingSession {
    // Loop from Session 1 to selected session
    for i in 1..=session_num {
        let sess = get_session(session_number);
        // Combine all practice materials
        combined_chars.extend(sess.characters);
        combined_words.extend(sess.words);
        // ... etc for all types
    }
    // Remove duplicates and return combined session
}

Usage in Training

All training generation now uses:

let session = get_cumulative_session(state.current_session);
session.get_random_item(state.current_practice_type)

Instead of:

let session = get_session(state.current_session); // Wrong!

Applies To

  • ✅ Characters practice
  • ✅ Characters + Numbers practice
  • ✅ Words practice
  • ✅ CW Abbreviations practice
  • ✅ Numbers practice
  • ✅ Callsigns practice
  • ✅ Phrases practice
  • ✅ Sending practice mode
  • ✅ Listening practice mode
  • ✅ Manual session selection
  • ✅ Configuration changes during active session

Does NOT Apply To

  • ❌ Random Blocks Mode (already has separate session range selection)

Random Blocks Mode has its own "From Session" and "To Session" selectors, which already provide cumulative behavior by design.

Benefits

  1. Correct Pedagogical Approach: Follows CW Academy's progressive, cumulative curriculum
  2. Maintains Proficiency: Continuous practice of all learned characters
  3. Realistic Training: Mix of characters matches real QSO conditions
  4. No Knowledge Gaps: All sessions build properly on previous ones
  5. Better Retention: Regular reinforcement prevents forgetting
  6. Proper Difficulty Curve: Gradual addition of new characters to growing pool

Summary

Before: Selecting a session only used that session's specific new characters After: Selecting a session uses ALL characters from Session 1 through that session

This is the correct behavior for cumulative learning in CW training!