{
  "id": "competency:msc-programme--change",
  "code": "CDU-BUS-PCM-900",
  "level": "MSc",
  "name": "MSc Programme & Change",
  "faculty": "Faculty of Commerce, Law and Management",
  "lineage": [
    {
      "institution": "Conquest Designer University",
      "year": 2026,
      "note": "authored from the brief and the PMI/AXELOS standards; no prior institution is claimed"
    }
  ],
  "researchProject": "Knowing where a programme stands: earned value, schedule risk, risk reserves and the price of time",
  "description": "The control numbers of a programme: earned-value variances, indices and estimates at completion; three-point PERT estimates and the probability of meeting a deadline along a path; the expected monetary value of a risk register and the reserve it implies; and the cost slope of crashing an activity.",
  "syllabus": [
    "Cost and schedule control: PV, EV, AC, CV, SV, CPI, SPI, EAC, ETC, VAC, TCPI (PMI EVM Standard)",
    "Estimating: three-point (beta/PERT) estimates, path variance, probability of completion",
    "Risk: probability and impact, expected monetary value, threats and opportunities, contingency reserve",
    "Schedule compression: crashing, the cost slope, crashing the cheapest critical activity first"
  ],
  "reference": {
    "Earned value": "CV = EV − AC; SV = EV − PV; CPI = EV ÷ AC; SPI = EV ÷ PV; EAC = BAC ÷ CPI; TCPI = (BAC − EV) ÷ (BAC − AC)",
    "PERT": "te = (o + 4m + p) ÷ 6; σ = (p − o) ÷ 6; P(T ≤ D) = Φ((D − Σte) ÷ √Σσ²)",
    "EMV": "Σ probability × impact (threats negative, opportunities positive)",
    "Crash cost slope": "(crash cost − normal cost) ÷ (normal time − crash time)"
  },
  "role": "You are a programme director reporting to the programme board. Say where the programme stands against plan, show the numbers, and name the decision the board must take now.",
  "feeUsd": 1,
  "version": "1.0.0",
  "qualification": {
    "award": "MSc",
    "nqfLevel": 9,
    "qualificationType": "Master's Degree (HEQSF qualification type 9a)",
    "totalCredits": 180,
    "minCreditsAtExitLevel": 120,
    "iscedFields": [
      "041"
    ],
    "standards": [
      "Project Management Institute, A Guide to the Project Management Body of Knowledge (PMBOK® Guide)",
      "Project Management Institute (2019) The Standard for Earned Value Management",
      "AXELOS, Managing Successful Programmes (MSP®)",
      "Malcolm, D. G., Roseboom, J. H., Clark, C. E. & Fazar, W. (1959) Application of a technique for R&D program evaluation, Operations Research 7(5) — PERT"
    ],
    "registration": "not registered"
  },
  "modules": [
    {
      "code": "CDU-BUS-PCM-900-901",
      "title": "Coursework — the executable units",
      "nqfLevel": 9,
      "credits": 60,
      "prerequisites": [],
      "coRequisites": [],
      "outcomes": [
        "answer every unit of the qualification against its published reference, with the working shown"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "every unit passed once through the seeded assessment (the seeded assessment room)",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [
        "earned_value",
        "pert_estimate",
        "risk_emv",
        "crash_cost_slope"
      ],
      "notionalHours": 600
    },
    {
      "code": "CDU-BUS-PCM-900-902",
      "title": "Research report",
      "nqfLevel": 9,
      "credits": 120,
      "prerequisites": [
        "CDU-BUS-PCM-900-901"
      ],
      "coRequisites": [],
      "outcomes": [
        "Knowing where a programme stands: earned value, schedule risk, risk reserves and the price of time"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "the research report, assessed against the qualification’s published reference block",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [],
      "notionalHours": 1200
    }
  ],
  "units": [
    {
      "id": "earned_value",
      "name": "Earned-value performance and forecast",
      "answers": "Is the work over or under budget and ahead or behind schedule, and what will it cost at completion at this efficiency?",
      "example": {
        "bac": 1000000,
        "plannedValue": 400000,
        "earnedValue": 350000,
        "actualCost": 420000
      },
      "reference": "PMI (2019) The Standard for Earned Value Management; PMBOK® Guide — cost control, EAC = BAC/CPI (typical variance)",
      "signature": {
        "input": {
          "bac": {
            "type": "number",
            "describe": "Budget at completion",
            "min": 0.01
          },
          "plannedValue": {
            "type": "number",
            "describe": "Planned value to date",
            "min": 0.01
          },
          "earnedValue": {
            "type": "number",
            "describe": "Earned value to date",
            "min": 0
          },
          "actualCost": {
            "type": "number",
            "describe": "Actual cost to date",
            "min": 0.01
          }
        },
        "output": {
          "costVariance": {
            "type": "number",
            "describe": "EV − AC"
          },
          "scheduleVariance": {
            "type": "number",
            "describe": "EV − PV"
          },
          "cpi": {
            "type": "number",
            "describe": "EV ÷ AC"
          },
          "spi": {
            "type": "number",
            "describe": "EV ÷ PV"
          },
          "eac": {
            "type": "number",
            "describe": "BAC ÷ CPI"
          },
          "etc": {
            "type": "number",
            "describe": "EAC − AC"
          },
          "vac": {
            "type": "number",
            "describe": "BAC − EAC"
          },
          "tcpi": {
            "type": "number",
            "describe": "(BAC − EV) ÷ (BAC − AC); null once AC ≥ BAC"
          }
        }
      }
    },
    {
      "id": "pert_estimate",
      "name": "PERT path estimate and deadline probability",
      "answers": "What is the expected duration of this path, its uncertainty, and the chance of finishing by the deadline?",
      "example": {
        "optimistic": [
          4,
          6,
          3
        ],
        "mostLikely": [
          6,
          8,
          5
        ],
        "pessimistic": [
          10,
          14,
          9
        ],
        "deadline": 22
      },
      "reference": "Malcolm et al. (1959) PERT: beta-approximated three-point estimates; PMBOK® Guide three-point estimating; normal approximation for the path (central limit theorem)",
      "signature": {
        "input": {
          "optimistic": {
            "type": "number[]",
            "describe": "Optimistic duration of each activity on the path"
          },
          "mostLikely": {
            "type": "number[]",
            "describe": "Most likely durations"
          },
          "pessimistic": {
            "type": "number[]",
            "describe": "Pessimistic durations"
          },
          "deadline": {
            "type": "number",
            "describe": "Target duration for the path",
            "min": 0
          }
        },
        "output": {
          "expectedDurations": {
            "type": "number[]",
            "describe": "te per activity (4 dp)"
          },
          "pathExpected": {
            "type": "number",
            "describe": "Σ te"
          },
          "pathSd": {
            "type": "number",
            "describe": "√Σσ²"
          },
          "probabilityByDeadline": {
            "type": "number",
            "describe": "Φ((deadline − Σte) ÷ σ)"
          }
        }
      }
    },
    {
      "id": "risk_emv",
      "name": "Expected monetary value of a risk register",
      "answers": "What is the probability-weighted exposure of these risks, threats and opportunities separately, and net?",
      "example": {
        "probabilities": [
          0.3,
          0.1,
          0.5,
          0.2
        ],
        "impacts": [
          -50000,
          -200000,
          -20000,
          30000
        ]
      },
      "reference": "PMBOK® Guide — quantitative risk analysis: expected monetary value; threats negative, opportunities positive",
      "signature": {
        "input": {
          "probabilities": {
            "type": "number[]",
            "describe": "Probability of each risk, 0–1"
          },
          "impacts": {
            "type": "number[]",
            "describe": "Monetary impact of each (negative = threat, positive = opportunity)"
          }
        },
        "output": {
          "emvs": {
            "type": "number[]",
            "describe": "Probability × impact per risk (2 dp)"
          },
          "threatEmv": {
            "type": "number",
            "describe": "Σ EMV of threats"
          },
          "opportunityEmv": {
            "type": "number",
            "describe": "Σ EMV of opportunities"
          },
          "netEmv": {
            "type": "number",
            "describe": "Σ EMV"
          }
        }
      }
    },
    {
      "id": "crash_cost_slope",
      "name": "Crash cost slope",
      "answers": "What does each day saved on this activity cost, and what would saving this many days cost?",
      "example": {
        "normalTime": 20,
        "crashTime": 14,
        "normalCost": 50000,
        "crashCost": 68000,
        "daysToSave": 4
      },
      "reference": "PMBOK® Guide — schedule compression by crashing; cost slope = (crash cost − normal cost) ÷ (normal time − crash time), linear",
      "signature": {
        "input": {
          "normalTime": {
            "type": "number",
            "describe": "Normal duration",
            "min": 0.01
          },
          "crashTime": {
            "type": "number",
            "describe": "Shortest possible duration",
            "min": 0
          },
          "normalCost": {
            "type": "number",
            "describe": "Cost at normal duration",
            "min": 0
          },
          "crashCost": {
            "type": "number",
            "describe": "Cost at crash duration",
            "min": 0
          },
          "daysToSave": {
            "type": "number",
            "describe": "Days the schedule needs back",
            "min": 0
          }
        },
        "output": {
          "costSlope": {
            "type": "number",
            "describe": "Cost per day saved"
          },
          "maxDaysSaved": {
            "type": "number",
            "describe": "Normal − crash time"
          },
          "costToSave": {
            "type": "number",
            "describe": "Slope × days (capped at the maximum)"
          }
        }
      }
    }
  ]
}