# OBE Course Manager — Release Notes

## OBE Standards Alignment — September 2026

See `docs/OBE_STANDARDS_REVIEW.md` for the full comparison with accreditation practice.

- **Two calculation methods per course** (Course Overview → Attainment Thresholds):
  - **CO Score Basis.** *Assessment-weighted* (standard) makes each assessment count with its declared weight (%). Before this, raw marks were added up and the weight was ignored, so a 10-mark quiz worth 20% counted less than a 100-mark final worth 60%, whatever the grading scheme said. *Raw marks* keeps the old behaviour.
  - **CO → PO Weighting.** *CO–PO strength* (standard) gives PO = Σ(strength × CO) ÷ Σ strength. *Normalised per CO* keeps the original OBE Calculation Aid formula, in which a CO mapped to many POs had less say in each of them.
  - New courses start with the Setup page defaults, which are the standard methods. Existing courses keep the legacy methods, so their numbers and saved profiles do not change until someone switches them.
  - If an assessment with CO-mapped questions has no weight, the course falls back to raw marks. The Attainment tab and the completion advisories then name the assessment.
  - The Attainment tab and the printed Attainment Report state the method used.
- **Student Profile radar:**
  - Every program PO now has an axis, in a fixed order, so radars can be compared between students.
  - A PO with no evidence shows as "n/a" (a gap, never 0). A PO assessed by only one course has a hollow point and is reported as provisional.
  - The PDF and Excel exports list every PO, including those not yet assessed, with an Evidence column. The findings gain an "Evidence coverage" paragraph.
- **Bloom levels:** Affective COs can now choose A1–A5 (Krathwohl) and Psychomotor COs P1–P7 (Simpson). Before this, only C1–C6 was offered whatever the domain. The server accepts only these codes.
- **Tests:** three new hand-checked fixture cases (120 checks in both engines). The random parity test now also covers assessment weights and both methods.

## Student Outcome Profile — September 2026

- **New page (Outcomes → Student Profile):** search a student ID to see a PO radar with the same-course average and pass line, a course × PO heatmap, and a cumulative curve by term.
- **Scores saved on completion:** completing a course saves every student's PO scores to `student_po_scores` (migration 010). Reopening a course removes them; deleting a course removes them too.
- **One engine for browser and server:**
  - The attainment rules now live in one engine, `attainment-engine.js`, with an identical PHP port, `AttainmentService.php`. Both are checked against the same fixture.
  - The legacy counting rules R1–R5 apply again: a blank mandatory item counts as 0, and choice questions follow "answer k of n".
- **Threshold fix:** CO/PO attainment uses Target Pass Marks (strictly above 40) as documented, instead of KPI marks.
- **Student PO scores:** the Attainment tab now shows each student's CO and PO scores. A student's PO score is their CO-PO weighted average, matching the original OBE Calculation Aid.
- **Attainment tab:**
  - The CO and PO tables now show "Above KPI marks" and "Class Avg". The KPI marks setting was calculated before but shown nowhere.
  - The PO table also shows which COs feed each PO (with their CO-PO strength) and passed / evaluated counts.
  - Both charts draw the Target KPI as a dashed line and give outcomes without marks no bar.
- **Marks above a question's maximum block completion:** this can happen when a maximum is lowered after marking.
  - The completion checklist and the server both refuse to complete such a course.
  - Lowering a maximum below marks already entered now warns immediately.
  - Attainment still caps such marks at the maximum.
- **Tied scores:** when several POs share the lowest score, the profile page and PDF name all of them instead of picking one.
- **Clearer labels:** the same-course average is labelled "incl. this student". The completion warning about blank questions now states the actual rule: a blank mandatory question counts as 0, a blank optional one is skipped.
- **Full precision:** saved profile scores keep full precision, so values ending in .x5 round the same on every page.
- **Student Profile export:**
  - **Download PDF** produces a printable report (A4, about 230 KB) with the radar, written findings, PO summary, colour-coded course × PO table, per-PO progress charts and course list.
  - **Download Excel** puts the same figures in six sheets.
- **Always the latest version:** the page loads its scripts and styles with a version stamp, so browsers pick up updates instead of running an old cached copy. An old cached copy had shown stale "0 students" counts on the Student Profile page.
- **CO exit survey (indirect measurement):** a new course tab takes how many students gave each rating from 1 to 5, per CO.
  - Indirect % = responses rated at or above the pass rating (default 4) ÷ all responses.
  - Combined attainment = the Direct/Indirect weights (default 80/20) applied to direct and indirect.
  - The Attainment tab and the printed Attainment Report now show direct, indirect and combined for COs and POs.
- **Setup → Attainment Defaults:** the pass mark, KPI marks, cohort benchmark, survey pass rating and direct weight for new courses. These values were stored before but could not be edited. The server now validates them.
- **Settings fix:** opening an older course no longer resets its Direct/Indirect split to 80/20. A setting of 0 is no longer replaced by the default.
- **New methodology document:** `docs/OBEsoft_Attainment_Methodology.docx` covers this application; the v2.19 document remains for the standalone edition.
- **Choice questions in the Assessments tab:** questions can be marked **Optional** and given a **Group**, and an assessment can set **Answer any k**.
- **Unassessed outcomes:** COs and POs with no marks show "No marks yet" instead of a 0% failure.
- **Automatic backfill:** completed courses without saved scores (courses completed before upgrading, or restored backups) are filled in automatically.
- **FastAPI runtime retired:** moved to `legacy/fastapi-runtime/`, because it could no longer load the application. PHP is the only runtime.
- **All Courses without login:** when authentication is off, the page now lists every course instead of showing an error.
- **Command-line tools:**
  - `bin/rebuild-student-outcomes.php` recomputes the saved scores of every completed course.
  - `bin/import-legacy-reports.php` imports the old Colab `Report *.xlsx` files.

## Repository architecture update — September 2026

- Added a private `public/` document root and moved runtime data outside web access.
- Added versioned SQLite migrations and a verified WAL-safe backup/restore workflow.
- Added the server-side Admin, Manager, and Teacher RBAC foundation, secure sessions, CSRF protection, course assignments, and auditing.
- Enabled the complete account system by default: first-admin setup, login, Teacher registration, email verification, password recovery, optional Google sign-in, and administrator user/assignment management.
- Preserved the standalone edition and all historical artifacts under `legacy/` and `docs/`.
- Added PHP and FastAPI compatibility smoke tests plus database and file-preservation regression tests.

---

**Version:** v2.19 · **First release:** July 13, 2026
**Live at:** https://mazhar17.github.io/ocm/
**License:** © 2026 Prof. Mazharul Islam ([mazhar17.github.io/MI](https://mazhar17.github.io/MI)) · Creative Commons Attribution (CC BY) 4.0 International

---

## Highlights

**OBE Course Manager** is a free tool for managing a course from the Outcome-Based Education (OBE) perspective, in line with the requirements of the **Board of Accreditation for Engineering and Technical Education (BAETE)** under the Washington Accord framework. It takes a course teacher through the complete OBE cycle — from writing Course Outcomes to printing signed accreditation evidence — and closes the Continuous Quality Improvement (CQI) loop between semesters.

The underlying OBE implementation framework was developed at **Ahsanullah University of Science and Technology (AUST) in early 2018 by Prof. Mazharul Islam along with his team from AUST**, and has since been refined through OBE implementation across the six engineering programs of AUST, international OBE symposiums, and workshops conducted for the University Grants Commission of Bangladesh and universities across the country. This tool packages that framework into software that any faculty member can use.

**The entire application is a single, self-contained HTML file that runs in any modern browser** — no installation, no account, no server. All data stays on the user's own device, with the option of working directly on a file for cloud-backed safety.

## Key Features

- **Course setup** — course information (including cohort), Course Outcomes with Bloom's taxonomy levels (cognitive, affective, psychomotor), and a click-to-set CO–PO mapping matrix against the 12 Washington Accord Program Outcomes. A per-course **OBE Framework** selector offers **Version 2.2** (the 12 POs without indicators — the default) or **Version 3** (the updated 12-PO set with the official 46 **PO Indicators**, PO1a…PO12b; documentary, printed on the Outline and Specifications).
- **T&L Activities recommender (CQI-aware)** — a pool of 36 evidence-based teaching-learning activities, matched to each CO's Bloom's level, boosted by the previous semester's CQI recommendations and ranked down when marked ineffective; one-click adoption into the constructive-alignment table. The pool is extensible.
- **Assessment planning** — quizzes, exams, labs and projects broken into items, each tagged with a CO and maximum marks; the tagging drives all attainment calculations. **Class Performance** assessments need no questions: set a total, tick the COs, and the marks split equally across them (one CP column per course part).
- **Marks management** — spreadsheet-style entry with frozen headers, decimals and fractions (1 2/3), bulk student paste from Excel, and a CSV workflow (Empty Template → Import → Export).
- **Learning resources register** — the materials shared with students recorded as links (Type-filtered suggestions from a curated pool), CO-tagged so they flow into the topic-wise plan and print as Course Outline 17.3.
- **Sections, sub-sections & guidance** — the app is organised as Sections, each opening with a collapsed "What to do in this Section" card (concrete instructions, the traps to avoid, and a what-comes-in / what-you-do / what-comes-out diagram — never printed). Long Sections split into sub-section pill bars; the CQI Section stays one page with a sticky Jump-to bar and collapsible step cards carrying live progress statuses — an idiom shared by the per-assessment and per-CO cards, which collapse to one-line status summaries.
- **Direct measurement of COs & POs** — identical to the AUST Direct CO-PO Calculations method: per-student CO scores, % of students above the Target Pass Marks and KPI thresholds, and marks-weighted PO scores, with charts.
- **Indirect measurement** — a printable CO Exit Survey with editable item wording and custom open-ended questions, one-click **Google Form generation** (a downloadable Apps Script builds the whole survey in your account; responses import straight back), and Likert-based indirect attainment per CO and PO.
- **Combined attainment** — direct and indirect results combined with user-editable weights (default 80/20).
- **CQI tab (BAETE Criteria 3.8 & 5.4.3)** — teaching-learning and assessment narratives, a six-step CQI-loop status board, low-attainment analysis (filter weak students per CO, item-wise diagnostics, analyses w.r.t. T&L activities and assessment techniques), a stakeholder feedback register, and an Annexure H evidence checklist — all two-way linked with the Course Specifications and Course Report.
- **"Duplicate for New Semester"** — carries CQI action plans from the Course Report into the next offering's Course Specifications automatically, closing the loop.
- **Data safety** — work directly on a `.json` file with auto-save (Chrome/Edge), keep it in a cloud-synced folder, exchange it with colleagues; JSON export/import for backups and sharing.

## Documents Produced

All auto-filled from the course data, editable in place, and printable to PDF:

1. **Course Outline** — with CO–PO/Bloom's mapping, Knowledge Profile / Complex Problem / Complex Activities mapping, assessment percentages, and the 14-week plan
2. **Course Specifications** — SLT, constructive alignment, planned contact hours, assessment blueprint, CQI measures
3. **Final Examination Vetting Form** — CO–question matrix auto-filled for moderation
4. **Direct Measurements of COs & POs** — the attainment report, computed automatically
5. **CO Exit Survey** — the indirect-measurement instrument
6. **Course Report** — attainment results, grade distribution, resources and TLA analysis, CQI action plans
7. **CQI Report** — consolidated BAETE 3.8 / 5.4.3 evidence for Annexure H

## Getting Started

Open **https://mazhar17.github.io/ocm/** in Chrome or Edge, click *Load Sample Course* on the Dashboard to explore, then add your own course. A detailed Faculty User Manual accompanies this release; see `change_log_v1.83.txt` for the version history.
