Metadata-Version: 2.4
Name: sickittit-learno
Version: 4.3.0
Summary: Exam-ready AI practicals P1-P11 and Jira Cloud learning guides (J0-J20)
Author: John Doe
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Dynamic: author
Dynamic: description
Dynamic: description-content-type
Dynamic: requires-python
Dynamic: summary

# sickittit-learno 4.3.0

AI practicals **P1–P11** in the style of the AI Practical Book,
plus Jira Cloud learning guides **J0–J20**, in one installable
package.

**The rule for 4.3.0:** where a practical matches the book, the
code in the file is the book's code, not a rewrite. Where the
book does not have that exact practical, the code is written in
the same book style — short, top-level, familiar variable names,
no `main()` wrapper, no long headers, no viva notes inside the
file. Aim, explanation and viva material live here in the README,
not inside the practical files, so a student opening a file sees
only the code, exactly as in the book.

```bash
pip install sickittit-learno
sickittit-learno list
sickittit-learno show 2
sickittit-learno run 2
sickittit-learno download 5
sickittit-learno data student_marks.csv
```

```python
from sickittit_learno import list_practicals, show_practical, download_practical, run_practical, get_data
list_practicals()
show_practical("p02")
download_practical("2")
run_practical("5")   # runs P5 with the bundled CSV, whatever your folder is
get_data("student_marks.csv")
```

Old commands still work: `list_all()`, `show()`, `download()`,
`list_extras()`, `show_extra("x02")` — extras x01–x05 now map to
P1, P2, P8, P9, P10.

## AI Practicals P1–P11 — book match

| P | File | Book source | What it does |
|---|---|---|---|
| P1 | `p01_dfs_waterjug.py` | Book Practical 3, fixed to 4L/3L → 2L | Book DFS, with j1=4, j2=3, goal=2 instead of keyboard input. Path ends at (4, 2) in 6 steps. Then, in the same simple style: gcd rule, 6L/4L → 3L (no solution), 5L/3L → 4L (solved). |
| P2 | `p02_ucs_arad_bucharest.py` | Book Practical 4 (UCS) + Book Practical 7 (Romania graph) | Book UCS function, Romania graph, Arad → Bucharest. **418 km** via Sibiu → Rimnicu Vilcea → Pitesti. Not A*. |
| P3 | `p03_greedy_8puzzle.py` | Book Practical 5, **exactly** | Greedy Best-First, Manhattan, 8-puzzle. Prints states step by step to the goal (Step 23 is the goal). Greedy is not guaranteed shortest. |
| P4 | `p04_astar_8puzzle.py` | Book Practical 6, **exactly** | A*, Manhattan, 8-puzzle. **19 moves**, shortest path. |
| P5 | `p05_dtree_regression.py` | Book Practical 12-F, **exactly** | Decision Tree regression, student_marks.csv, Hours → Marks, 11 hours → **87.0 marks**. Note: the book prints the score as "Training/Testing Accuracy" — that number is the regression score (R² × 100), not classification accuracy. The code is kept exactly as in the book; this note is the correction, not a code change. |
| P6 | `p06_knn_iris.py` | Book Practical 12-G, **exactly** | KNN (k=3), Iris. Training 95.24%, Testing 97.78% (book split, no stratify), Predicted Class printed as a number, as in the book (0=setosa, 1=versicolor, 2=virginica). |
| P7 | `p07_multiclass_dtree_iris.py` | Book Practical 12-H, **exactly** | Multiclass Decision Tree, Iris. Training 100%, Testing 95.56% (book split), Predicted Class as a number, as in the book. |
| P8 | `p08_iris_bias_analysis.py` | Book Practical 13, **exactly** | Iris audit only, no model: first 5 records, class counts 50/50/50, 0 missing values, "Dataset is balanced." |
| P9 | `p09_iris_dtree_bias.py` | Book Practical 12-E + Book Practical 13, joined | First the Decision Tree classifier (book 12-E), then the bias audit (book 13) in the same file, plus a short note at the end: balanced counts do not prove "no bias", and species confusion would be a model error, not an imbalance effect. |
| P10 | `p10_peas_vacuum_agent.py` | Book Practical 1 style, extended to PEAS | Simple prints for PEAS and environment classification, a small rooms dict, a lookup table, and a short loop. Cleans both rooms in **3 steps**. No classes, no NoOp, no long comments. The loop stops when both rooms are clean — the agent itself only saw its current room each step. |
| P11 | `p11_bfs_8puzzle.py` | Book Practical 2, **exactly** | BFS, 8-puzzle, shortest sequence in **2 moves**. |

Verified outputs (2026-10-25, see TEST_REPORT.md for 4.3.0):
P1 ends (4, 2), then "No solution found" for 6L/4L → 3L;
P2 418 km; P3 goal at Step 23; P4 19 moves; P5 87.0 marks;
P6 97.78% test; P7 95.56% test; P8/P9 "Dataset is balanced.";
P10 3 steps, both Clean; P11 2 moves.

### Dependencies — install only what you need
```bash
pip install pandas scikit-learn   # only for P5–P9
```
P1–P4, P10 and P11 need nothing but Python 3.9+. This package
itself declares no dependencies.

### Running a practical
- Downloaded file: `python p02_ucs_arad_bucharest.py`
- From the installed package, any folder:
  `sickittit-learno run 2` (also `run p05` — P5's CSV is copied
  alongside it automatically, so it works even if your current
  folder has no CSV).
- For P5 by hand: download the CSV first
  (`sickittit-learno data student_marks.csv`) and run the file
  from the same folder as the CSV, as in the book.

## What changed from 4.2.0 to 4.3.0, and why it is a new version
4.2.0 rewrote the practicals with headers, `main()` guards,
solvability checks, stratified splits, species names, confusion
matrices and MAE/RMSE/R². That was more correct in places, but
it was **not** the book's code, and it was harder for a student
to copy by hand. 4.3.0 removes all of that from the files and
goes back to book code where it matches, and book style where
it does not. The corrections that 4.2.0 made inside the code
are now notes in this README instead (P5's "Accuracy" label,
P6/P7's class numbers, Greedy not being optimal), so the files
stay simple and the student still gets the correct explanation.

**Version note:** 4.2.0 is already published on PyPI and cannot
be overwritten there, so this simplification is released as
**4.3.0, not published yet**. Do not try to upload these files
as 4.2.0 — PyPI will reject them as "file already exists".

## Jira guides J0–J20 (separate from P1–P11)
Unchanged in style from 4.2.0: Jira is not Python, so these are
step-by-step Markdown guides, not `.py` files: an overview (J0)
plus one guide per question (J1–J20). Running example: project
**Campus App**, key **CAMP**, teammates Asha and Rahul.

```bash
sickittit-learno jira
sickittit-learno jira show 12
sickittit-learno jira download 15
```

Every guide has aim, prerequisites, numbered steps,
Verification, Troubleshooting, expected result, Result and
learning points, Evidence for submission, viva questions, and
common mistakes. See CHANGELOG.md for the Jira verification
list and the honest limit: guides were checked against official
Atlassian docs on 2026-10-25, but **not tested on a live Jira
site**, and permission schemes are **not available on Free
Jira sites** (Guide 11 states this, with a labelled fallback).

## Data files
`student.csv` and `student_marks.csv`, via `get_data()`.
Only P5 needs `student_marks.csv`; `student.csv` is retained
for compatibility.

## Troubleshooting
- `ModuleNotFoundError: No module named 'sklearn'` — install
  scikit-learn: `pip install scikit-learn` (needed for P5–P9 only).
- P5 says the CSV is missing — run
  `sickittit-learno data student_marks.csv` first, or use
  `sickittit-learno run 5`, which copies the CSV for you.
- On Windows, use PowerShell and `py -m pip install ...` if
  `pip` alone is not on PATH; the commands above are otherwise
  identical.
