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.
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
Created get_cumulative_session() function that combines all sessions from Session 1 up to the selected session.
File: src/cw_academy_training.rs
- Added new function
get_cumulative_session()that:- Takes the selected session number
- Loops through all sessions from 1 to the selected session
- Combines all characters, words, abbreviations, numbers, callsigns, and phrases
- Removes duplicates
- Returns a complete cumulative training session
File: src/main.rs
- Replaced all
get_session()calls withget_cumulative_session() - Updated 5 locations where training items are generated
Characters: A, E, N, T Numbers: None Total Pool: A, E, N, T
Cumulative Characters: A, E, N, T, S, I, O Cumulative Numbers: 1, 4 Total Pool: A, E, N, T, S, I, O, 1, 4
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
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
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
Cumulative Characters: All previous + F, Y, G, P, Q Cumulative Numbers: All previous + 7, 9 Total Pool: Full character set through Session 7
Cumulative Characters: All 26 letters + special characters Cumulative Numbers: 0-9 (all digits) Total Pool: Complete Morse code alphabet and numbers
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
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
Before: Only Session 4 words After: All words from Session 1-4 combined
Before: Only Session 4 number sequences After: All number sequences from Session 1-4
All practice types now work cumulatively!
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.
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
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
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!)
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!)
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!
To verify cumulative behavior:
- Open Training Window
- Select Session 4
- Choose "Characters + Numbers" practice type
- Start Training Session
- 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!
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
}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!- ✅ 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
- ❌ 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.
- Correct Pedagogical Approach: Follows CW Academy's progressive, cumulative curriculum
- Maintains Proficiency: Continuous practice of all learned characters
- Realistic Training: Mix of characters matches real QSO conditions
- No Knowledge Gaps: All sessions build properly on previous ones
- Better Retention: Regular reinforcement prevents forgetting
- Proper Difficulty Curve: Gradual addition of new characters to growing pool
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!