Thank you for contributing to this repository.
- Keep content beginner-friendly and technically correct.
- Prefer simple, readable examples over clever implementations.
- Use clear English for all text, comments, and instructions.
- Maintain cross-platform compatibility (Windows MSYS2 + Linux).
- Keep Node-based tooling simple and explicit when touching the TypeScript track.
- Fork the repository and create a branch for your change.
- Make focused updates (one topic per pull request when possible).
- Run the full repository check first:
./scripts/verify-repo.ps1bash ./scripts/verify-repo.shFor a faster loop while you are iterating, use a narrower command on the area you changed:
- Links:
./scripts/check-links.ps1orbash ./scripts/check-links.sh - Module README structure:
./scripts/check-readme-structure.ps1orbash ./scripts/check-readme-structure.sh - Module completeness:
./scripts/check-module-completeness.ps1orbash ./scripts/check-module-completeness.sh - Checkpoint completeness:
./scripts/check-checkpoint-completeness.ps1orbash ./scripts/check-checkpoint-completeness.sh - Cross-language parity:
./scripts/check-cross-language-parity.ps1orbash ./scripts/check-cross-language-parity.sh - Exercise parity:
./scripts/check-exercise-parity.ps1orbash ./scripts/check-exercise-parity.sh - Example output contracts:
./scripts/check-example-output-contracts.ps1orbash ./scripts/check-example-output-contracts.sh - Exercise output contracts:
./scripts/check-exercise-output-contracts.ps1orbash ./scripts/check-exercise-output-contracts.sh - Education audit:
./scripts/audit-education-quality.ps1orbash ./scripts/audit-education-quality.sh - Lint:
./scripts/lint.ps1orbash ./scripts/lint.sh - Smoke checks:
./scripts/smoke-languages.ps1orbash ./scripts/smoke-languages.sh - Compiled-language builds:
./scripts/build-all.ps1orbash ./scripts/build-all.sh
If you are changing one C++ file and want a local spot check before the full pass, you can still compile it directly with:
g++ -std=c++17 -Wall -Wextra -pedantic <file>.cpp -o <output>For large changes, you can run one language at a time before the full check:
python scripts/automation.py check-exercise-output-contracts --language pythonpython scripts/automation.py check-exercise-output-contracts --language gopython scripts/automation.py check-exercise-output-contracts --language typescriptpython scripts/automation.py check-exercise-output-contracts --language cpppython scripts/automation.py check-exercise-output-contracts --language csharp
These smoke checks also compile standalone C# exercises by generating temporary validation projects during the check.
TypeScript checks restore Node dependencies from package-lock.json, compile with tsc, and execute the emitted JavaScript with node.
The public PowerShell and Bash scripts are thin wrappers over the shared Python automation core in scripts/automation.py. Curriculum validation and smoke target metadata live in scripts/automation_manifest.json.
Use EDUCATIONAL_EXAMPLE_REVIEW_RUBRIC.md when reviewing example/main.* files for teaching clarity and parity.
- Update related README files when behavior or structure changes.
- Open a pull request with a clear description of what changed and why.
- New concept modules should follow the existing folder layout.
- Every concept README in implemented levels should include:
- required
## Learning Metadatabefore## Quick RunwithDifficulty,Estimated Time,Prerequisites, andCross-Language Lens - recommended
## Cross-Language Notesafter## Common Pitfallsand before## Exercise Focus ## Quick Run## Topics Covered## Common Pitfalls## Exercise Focus### Exercise Specs## Checkpoint
- required
- Every project or assessment checkpoint should include:
README.md- runnable entrypoint (
main.cs+.csproj,main.go,main.py, ormain.ts) - the same learner goal, input/output shape, and acceptance expectations as the corresponding C++ checkpoint
- required
## Learning Metadatabefore## Quick RunwithDifficulty,Estimated Time,Prerequisites, andLearning Focus - recommended
## Cross-Language Notesbefore## What To Check
- Every implemented level README should include required
## Learning Metadatabefore## Module OrderwithDifficulty,Estimated Time,Prerequisites, andStudy Strategy. - Checkpoint README structure should mirror the matching C++ checkpoint style, not the module README contract.
- Every hand-written code file under
example/should include intent-first comments:- a short file header comment that explains what the example teaches
- comments before program flow, validation, core transformation, branching, or output blocks when those blocks are non-trivial
- language-specific notes when the example is an adaptation rather than a direct translation of the C++ concept
- no empty scaffolding comments such as
Intent:and no line-by-line narration of obvious syntax
- Every exercise file must contain complete, runnable content.
- Avoid external dependencies and test frameworks for C++ modules.
- Avoid external dependencies and test frameworks for non-C++ checkpoints.
- Keep the TypeScript track on plain Node console programs; do not introduce browser, DOM, or framework dependencies.
- Keep examples aligned with C++17.
- Keep documentation in English and keep path names consistent with folder names.
- Keep parity planning updated in
LANGUAGE_PARITY_MATRIX.mdwhen adding modules or checkpoints to non-C++ tracks. - Keep root and language README status sections aligned with project and assessment coverage when those directories change.
- Keep CONCEPT_INDEX.md aligned with any new or renamed module/checkpoint paths.
Use short, descriptive commit messages that explain intent.
By participating, you agree to follow CODE_OF_CONDUCT.md.