Status: Early-stage instructional module developed through an initial longitudinal pilot.
Evidence boundary: KET v0.1 has not been validated as an effective intervention across learners or settings.
KET (Knowledge-to-Engineering Transfer) is an early-stage framework for examining and supporting whether a novice programmer can independently retrieve and use previously learned knowledge in changed or unfamiliar code.
The central question is not simply:
Did the learner eventually get the answer right?
KET instead asks:
Can the learner recognize what knowledge is relevant, make a prediction, apply that knowledge without unnecessary prompting, and verify the result with evidence?
Module 1 focuses narrowly on function relationships and execution reasoning in small C++ programs.
A learner may be able to define a concept or complete a familiar exercise without being able to use that knowledge when the surface form changes.
KET therefore separates three things that are often collapsed:
- Knowledge — can the learner explain or recognize the concept?
- Transfer — can the learner retrieve and apply it in changed code?
- Independence — how much help was required?
A correct answer after substantial help is useful learning progress, but it is not the same evidence as an independently correct delayed-transfer response.
Learn
↓
First Attempt
↓
Diagnose Error
↓
Targeted Repair
↓
Scaffold Fading
↓
Delay
↓
Changed Task
↓
Predict → Verify
↓
Independent Transfer?
The instructional sequence used in M1 is:
Baseline → Diagnose → Explain → Targeted Correction → Scaffold Fading → Delay → Blind Transfer → Score correctness + hint cost
Correction and transfer are deliberately separated. Performance during a teaching exercise is not treated as sufficient evidence that transfer has occurred.
Start with 01-baseline-assessment.md.
- Do not show the learner the correction materials first.
- Preserve the learner's first response rather than replacing it after feedback.
- Diagnose the specific relationship error.
- Use only the correction material needed for that error.
- Fade the scaffold rather than repeatedly drilling the same item.
- After correction, use a delay—M1 suggests 48–72 hours.
- Administer
05-delayed-blind-transfer.mdwith changed code. - Record both correctness and the highest hint level used.
Read instructor-guide.md before adapting the tasks or increasing difficulty.
These files are designed to be administered in sequence. Reading the correction and scoring files before taking the baseline or delayed-transfer assessment can contaminate the evidence. If possible, have another person administer the module.
Want to try it yourself?
- Open the Assessment file only.
- Complete the assessment within 90 minutes without AI assistance.
- Preserve your first answers.
- After finishing, compare your reasoning with the First Response and Error Analysis.
- Do not treat the provided response as an answer key; it is one learner's first attempt and contains errors.
M1 targets a bounded set of foundational relationships:
- Caller vs. callee — who directly invokes whom?
- Argument vs. parameter — what is supplied at a call site and what receives it at the function boundary?
- Function Map — what direct user-defined call relationships exist in the code?
- Execution Path — what actually happens for one particular run/input?
- Call Stack — which calls are active and unfinished at a particular moment?
- Prediction vs. evidence — does the learner form a model before execution and then compare it with runtime/debugger evidence?
M1 intentionally does not try to measure all of C++ or all of software engineering.
KET records both correctness and hint cost (H0–H4).
| Hint level | Meaning |
|---|---|
| H0 | No hint or outside help |
| H1 | Directional hint; target concept not named |
| H2 | Relevant concept named or explained |
| H3 | Local answer, code location, or key relationship supplied |
| H4 | Solution essentially provided |
For M1, H0 delayed transfer means that the learner applies the target relationship correctly in changed code after a delay without hints.
It does not mean that the learner has achieved general C++ proficiency or engineering independence.
The module also preserves:
First response → First prediction → Hint level → Tool evidence → First divergence → Self-correction → Outcome
This matters because eventually correct ≠ independently transferred.
See 06-scoring-rubric-and-hint-levels.md for the operational rubric.
This release should not be interpreted as evidence that:
- KET is a validated pedagogy;
- KET improves learning across populations or settings;
- completing M1 demonstrates general C++ proficiency;
- completing M1 demonstrates repository-level engineering independence;
- an H0 result in one bounded task automatically generalizes to real software projects.
The current release was developed and iterated through an initial longitudinal pilot. The public materials are redesigned instructional artifacts rather than a published experimental dataset.
Future validation would require additional learners, predefined procedures, systematic comparison, and appropriate research methods.
module-01-function-relationships/
├── README.md
├── 01-baseline-assessment.md
├── 02-error-explanation.md
├── 03-targeted-correction.md
├── 04-focused-correction-scaffold-fading.md
├── 05-delayed-blind-transfer.md
├── 06-scoring-rubric-and-hint-levels.md
├── instructor-guide.md
└── LICENSE
| File | Purpose |
|---|---|
01-baseline-assessment.md |
Expose the learner's initial mental model without teaching |
02-error-explanation.md |
Explain only relationship distinctions implicated by observed errors |
03-targeted-correction.md |
Provide controlled repair practice |
04-focused-correction-scaffold-fading.md |
Test repaired relationships while reducing prompts |
05-delayed-blind-transfer.md |
Test retrieval and application in changed code after a delay |
06-scoring-rubric-and-hint-levels.md |
Record errors, transfer level, and assistance cost |
instructor-guide.md |
Explain administration, adaptation, difficulty control, and evidence boundaries |
Preserve the first reasoning attempt and identify the first meaningful divergence before correction.
Correct performance while definitions, examples, or prompts are visible is not sufficient transfer evidence. M1 therefore uses changed code and delayed assessment.
When runtime or debugger evidence is used:
Prediction → Evidence → First divergence → Revised model
The original prediction should remain visible.
Task difficulty can increase through several dimensions:
Code size × File distance × Concept novelty × Navigation freedom × Tool burden × Task openness
After a passed task, a clean transfer assessment should normally add only one major new complexity dimension.
Real GitHub code is not automatically a better assessment if it introduces several unlearned mechanisms at once.
Function Relationships and Execution Reasoning
Current status: public pilot module.
Later modules may address:
- data and state flow;
- debugging as verification;
- unfamiliar-code reading;
- progressively more authentic engineering tasks.
Modules should be added only when prerequisite knowledge and evidence chains are sufficiently developed. The roadmap is therefore capability-gated rather than calendar-gated.
Instructors may adapt the surface details of tasks, but should preserve the evidence logic:
- do not teach before the baseline;
- preserve first responses;
- record assistance;
- separate correction from transfer;
- change the surface form of transfer tasks;
- avoid introducing multiple unlearned prerequisites at once.
The public repository contains redesigned teaching materials only. Identifiable learner responses and private longitudinal performance records should remain outside the public repository.
MIT License. See LICENSE.
Version: v0.1
Release stage: Early pilot / instructional prototype
Last updated: September 2026
Use the materials in this order:
- Open the Exercise file only and complete it independently.
- Preserve your first answers, including mistakes.
- After finishing, compare your work with the Original Response and Error Analysis.
- Identify what you understood independently, what you corrected, and what remains unclear.
- Use different code for the next test rather than repeating the same exercise.
For each target concept, use one of these labels:
- Independent — correct and I can explain why without help.
- Correct but Unstable — correct, but my explanation is incomplete or uncertain.
- Corrected — initially wrong, but I can identify and explain the error.
- Not Yet Stable — I still confuse the concept.
- Not Tested — this exercise did not provide enough evidence.
A correct answer does not automatically show that the knowledge will transfer.
The next question is not:
Can I do the same exercise correctly now?
It is:
Can I use the corrected knowledge when the code and support change?