Skip to content

Repository files navigation

Study Session Planner

Time-box: 60–75 minutes
Milestone: turn a validated list of task dictionaries into useful topic, tag, duration, and fitted-session views without changing the original plan.

Companion learning path: Python From First Principles. If Python or Git is not ready yet, use the free installation guide.

Start your own copy

On GitHub, select Use this templateCreate a new repository, then clone your new repository and work in that copy. The starting red checks are intentional; your goal is to turn them green and complete the two human-review gates in MASTERY.md.

Data shape

Every task has four fields:

{
    "topic": "Functions",
    "minutes": 30,
    "done": False,
    "tags": ["core", "practice"],
}

The plan is a list because task order matters. A task is a dictionary because its fields have names. Unique tags are a set because duplicates do not matter.

Start here

python3 -B -I tests/run_tests.py

The untouched starter has exactly four intentional test_todo_... failures. Its data validation tests should already pass. Complete these functions in study_planner.py:

  • unfinished_topics(tasks);
  • unique_tags(tasks);
  • total_minutes(tasks, include_done=False);
  • fit_session(tasks, available_minutes).

fit_session visits unfinished tasks in their existing order. It includes a task if it fits the minutes still available, and skips one that does not. Return copied task records so editing a result cannot edit the source plan by accident.

Acceptance checks

  • Unfinished topic names stay in plan order.
  • Tags are stripped, case-folded, and unique.
  • The default total excludes completed tasks; include_done=True includes them.
  • A zero-minute session returns an empty list.
  • Fitting a session never mutates or aliases the original task records or tag lists.
  • Invalid records and time limits fail with messages naming the bad field.
  • python3 -B -I tests/run_tests.py exits successfully.

Then finish MASTERY.md.

Get your automatic project grade

  1. Create your own copy from this template.

  2. Read MASTERY.md, then create an attempt branch:

    git switch -c attempt/my-project
  3. Build the project and run the same check GitHub uses:

    python3 -B -I tests/run_tests.py
  4. Commit and push the attempt branch:

    git add .
    git commit -m "Complete project attempt"
    git push -u origin attempt/my-project

GitHub Actions grades every pushed attempt automatically. PASS — NAILED IT means every required check passed. REVISE — KEEP BUILDING means the run shows what to fix before you push again. You do not need the KODE Ń VIBE owner to review or start anything; the template's main branch stays quiet on purpose.

The free grading guide explains the result and its limits.

About

Build and verify a Python study planner with purposeful collections.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages