Dataset and Input Factory
Goal
Produce synthetic, realistic, and pedagogically appropriate input data for a computing assignment, TP, exam, or benchmark. Data must be varied enough to test student code thoroughly, and must never expose real personal or sensitive information.
Inputs
mission.json — level, domain, constraints, evaluation_mode
statement.md — the assignment subject; data must be consistent with what is described
rubric.md — grading criteria; each data category should exercise at least one criterion
Output contract
Place all generated data under data/ or tests/cases/ as appropriate.
| File |
Description |
data/README.md |
Describes each dataset: format, generation method, known properties, intended test coverage |
data/<name>.<ext> |
One or more synthetic input files (CSV, JSON, log, binary, etc.) |
data/generate.py (or .sh) |
Reproducible generation script so data can be regenerated with a fixed seed |
data/edge-cases/ |
Subdirectory with adversarial or boundary inputs |
Dataset categories to produce
For each assignment, generate at minimum:
- Nominal case — realistic, well-formed input that exercises the happy path
- Large case — input at or near the stated size limit to test performance
- Empty / minimal case — empty file, zero elements, or minimum valid input
- Malformed case — syntactically invalid input to test error handling
- Edge case — boundary values (max int, unicode characters, trailing newlines, binary data mixed with text)
Domain-specific guidance
| Domain |
Typical data formats |
Notes |
| Systems / C |
Log files, named pipes, binary streams |
Use ASCII-safe content; avoid locale-specific characters unless stated |
| Python data |
CSV, JSON, plain text |
Use random.seed(42) for reproducibility |
| SQL |
SQL dump or CSV for import |
Include NULL values and duplicate keys |
| Networking |
PCAP excerpts or HTTP request logs |
Use RFC-example addresses (192.0.2.x) |
| Embedded / real-time |
Sensor traces, CAN frames |
Include timing jitter and out-of-order packets |
Rules
- All data must be synthetic — never use real user data, real logs, or scraped datasets.
- The generation script must be deterministic given a fixed seed.
- Document the statistical properties of each dataset (size, value range, class distribution).
- Data must be consistent with the domain scenario described in
statement.md.
- Do not generate data that would require students to install additional tools to process (e.g. proprietary binary formats).
1---2name: dataset-and-input-factory3description: Generates realistic synthetic datasets, input files, traces, logs, images, CSV files, graphs, and edge-case inputs for computing labs, projects, and exams. Use when pedagogical artifacts need representative inputs or benchmark data.4---56# Dataset and Input Factory78## Goal910Produce synthetic, realistic, and pedagogically appropriate input data for a computing assignment, TP, exam, or benchmark. Data must be varied enough to test student code thoroughly, and must never expose real personal or sensitive information.1112## Inputs1314- `mission.json` — level, domain, constraints, evaluation_mode15- `statement.md` — the assignment subject; data must be consistent with what is described16- `rubric.md` — grading criteria; each data category should exercise at least one criterion1718## Output contract1920Place all generated data under `data/` or `tests/cases/` as appropriate.2122| File | Description |23|---|---|24| `data/README.md` | Describes each dataset: format, generation method, known properties, intended test coverage |25| `data/<name>.<ext>` | One or more synthetic input files (CSV, JSON, log, binary, etc.) |26| `data/generate.py` (or `.sh`) | Reproducible generation script so data can be regenerated with a fixed seed |27| `data/edge-cases/` | Subdirectory with adversarial or boundary inputs |2829### Dataset categories to produce3031For each assignment, generate at minimum:321. **Nominal case** — realistic, well-formed input that exercises the happy path332. **Large case** — input at or near the stated size limit to test performance343. **Empty / minimal case** — empty file, zero elements, or minimum valid input354. **Malformed case** — syntactically invalid input to test error handling365. **Edge case** — boundary values (max int, unicode characters, trailing newlines, binary data mixed with text)3738## Domain-specific guidance3940| Domain | Typical data formats | Notes |41|---|---|---|42| Systems / C | Log files, named pipes, binary streams | Use ASCII-safe content; avoid locale-specific characters unless stated |43| Python data | CSV, JSON, plain text | Use `random.seed(42)` for reproducibility |44| SQL | SQL dump or CSV for import | Include NULL values and duplicate keys |45| Networking | PCAP excerpts or HTTP request logs | Use RFC-example addresses (192.0.2.x) |46| Embedded / real-time | Sensor traces, CAN frames | Include timing jitter and out-of-order packets |4748## Rules4950- All data must be synthetic — never use real user data, real logs, or scraped datasets.51- The generation script must be deterministic given a fixed seed.52- Document the statistical properties of each dataset (size, value range, class distribution).53- Data must be consistent with the domain scenario described in `statement.md`.54- Do not generate data that would require students to install additional tools to process (e.g. proprietary binary formats).