{
"course_id": "python-ai-data",
"title": "Python for AI and Data",
"version": "2026-10-14.3",
"content_status": "draft_for_integration",
"public_source_url": "https://aabhaai.com/courses/python-ai-data/",
"publication_performed": false,
"lab_url": "https://lab.aabhaai.com/",
"audience": "beginner",
"planned_effort_hours": "24\u201332",
"modules": [
{
"order": 0,
"slug": "first-run",
"title": "0 \u00b7 Run, change, explain",
"lesson_file": "lessons/00_first_run.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 40,
"exercise_file": "exercises/00_first_run.py",
"solution_file": "solutions/00_first_run.py",
"prerequisite_orders": [],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 1,
"slug": "values",
"title": "1 \u00b7 Values, names and types",
"lesson_file": "lessons/01_values.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 105,
"exercise_file": "exercises/01_values.py",
"solution_file": "solutions/01_values.py",
"prerequisite_orders": [
0
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 2,
"slug": "control-flow",
"title": "2 \u00b7 Decisions and repetition",
"lesson_file": "lessons/02_control_flow.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 120,
"exercise_file": "exercises/02_control_flow.py",
"solution_file": "solutions/02_control_flow.py",
"prerequisite_orders": [
1
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 3,
"slug": "collections",
"title": "3 \u00b7 Collections and records",
"lesson_file": "lessons/03_collections.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 120,
"exercise_file": "exercises/03_collections.py",
"solution_file": "solutions/03_collections.py",
"prerequisite_orders": [
2
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 4,
"slug": "functions",
"title": "4 \u00b7 Functions and modules",
"lesson_file": "lessons/04_functions.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 150,
"exercise_file": "exercises/04_functions.py",
"solution_file": "solutions/04_functions.py",
"prerequisite_orders": [
3
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 5,
"slug": "files-errors",
"title": "5 \u00b7 Files, CSV and errors",
"lesson_file": "lessons/05_files_errors.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 150,
"exercise_file": "exercises/05_files_errors.py",
"solution_file": "solutions/05_files_errors.py",
"prerequisite_orders": [
4
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 6,
"slug": "debug-tests",
"title": "6 \u00b7 Debugging and tests",
"lesson_file": "lessons/06_debug_tests.md",
"lab_profile": "python",
"additional_profile": null,
"estimated_minutes": 150,
"exercise_file": "exercises/06_debug_tests.py",
"solution_file": "solutions/06_debug_tests.py",
"prerequisite_orders": [
5
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 7,
"slug": "numpy",
"title": "7 \u00b7 NumPy arrays",
"lesson_file": "lessons/07_numpy.md",
"lab_profile": "data",
"additional_profile": null,
"estimated_minutes": 150,
"exercise_file": "exercises/07_numpy.py",
"solution_file": "solutions/07_numpy.py",
"prerequisite_orders": [
6
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 8,
"slug": "pandas",
"title": "8 \u00b7 pandas tables",
"lesson_file": "lessons/08_pandas.md",
"lab_profile": "data",
"additional_profile": null,
"estimated_minutes": 180,
"exercise_file": "exercises/08_pandas.py",
"solution_file": "solutions/08_pandas.py",
"prerequisite_orders": [
7
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 9,
"slug": "charts",
"title": "9 \u00b7 Charts that answer a question",
"lesson_file": "lessons/09_charts.md",
"lab_profile": "plot",
"additional_profile": null,
"estimated_minutes": 150,
"exercise_file": "exercises/09_charts.py",
"solution_file": "solutions/09_charts.py",
"prerequisite_orders": [
8
],
"assessment": "three practice tasks, transfer checkpoints and exit check"
},
{
"order": 10,
"slug": "capstone",
"title": "10 \u00b7 Capstone: workshop-order audit",
"lesson_file": "lessons/10_capstone.md",
"lab_profile": "data",
"additional_profile": "plot",
"estimated_minutes": 360,
"exercise_file": "exercises/10_capstone.py",
"solution_file": "solutions/capstone.py",
"prerequisite_orders": [
9
],
"assessment": "guided bridge checkpoints, public learner-code checks, anchored rubric and changed-input demonstration"
}
],
"assets": [
"assets/aliasing.svg",
"assets/control-flow.svg",
"assets/data-pipeline.svg",
"assets/numpy-axes.svg",
"assets/practice-loop.svg"
],
"datasets": [
"datasets/study_sessions.csv",
"datasets/workshop_orders.csv",
"datasets/stage_checkpoint.csv"
],
"test_command": "python -m unittest discover -s tests -v",
"readiness_command": "python check_readiness.py",
"learner_capstone_command": "python check_capstone.py",
"bridge_answer_file": "BRIDGE_SOLUTIONS.md",
"solution_visibility": "separate file or collapsed answer reveal after attempt; do not preload as exercise answer",
"route_policy": "Map to existing website architecture during integration; no new route is asserted live.",
"release_gates": [
"Integrate and verify actual site routes/downloads",
"Verify keyboard and small-screen reading in final site",
"Run content checks in deployed lab profiles",
"Conduct beginner usability pilot before claiming teaching validation",
"Confirm live enrolment/completion copy matches actual product state"
]
}