Lesson map
Lesson 34 published. Map, example, EX100.
flowchart TD
N0["Learning outcomes"]
N1["34.1 The options"]
N2["Lab — Weighted comparison with sensitivity check"]
N3["34.2 Weighted scoring"]
N4["34.3 Sensitivity"]
N5["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Worked example"]
EX --> Q["Exercise EX100"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["34.1 The options"]
N2["Lab — Weighted comparison with sensitivity check"]
N3["34.2 Weighted scoring"]
N4["34.3 Sensitivity"]
N5["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX100"]
[Learning outcomes]
|
v
[34.1 The options]
|
v
[Lab — Weighted comparison with sensitivity check]
|
v
[34.2 Weighted scoring]
|
v
[34.3 Sensitivity]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX100]
Learning outcomes
You will (1) compare two architectural options for Fernway's staff access; (2) use weighted criteria; (3) test sensitivity of the choice.
34.1 The options
Fernway must choose how store staff sign in to the stock app on shared tablets. Option A is individual passwords with a short session timeout. Option B is badge tap plus a short PIN, with badges linked to the identity provider. Lucas compares them as his comparative project. He defines criteria with Hannah and store managers: security against shared-credential misuse, speed at the till, cost, ease of leaver removal and accessibility for staff with disabilities. Defining criteria before scoring prevents the favoured option from shaping the criteria.
Lab — Weighted comparison with sensitivity check
# Weighted comparison of two sign-in options with a sensitivity check (synthetic).
crit = ["security", "speed", "cost", "leavers", "access"]
w = {"security": 0.30, "speed": 0.25, "cost": 0.15, "leavers": 0.15, "access": 0.15}
score = {"A": {"security": 3, "speed": 2, "cost": 5, "leavers": 3, "access": 3},
"B": {"security": 4, "speed": 5, "cost": 2, "leavers": 5, "access": 4}}
def totals(wt):
s = sum(wt.values()); return {o: sum(wt[c] * score[o][c] for c in crit) / s for o in score}
print("base:", {o: f"{v:.2f}" for o, v in totals(w).items()})
w2 = dict(w, cost=0.30); print("cost weight doubled:", {o: f"{v:.2f}" for o, v in totals(w2).items()})
Run with python3 lab_weighted.py. Verified output:
base: {'A': '3.05', 'B': '4.10'}
cost weight doubled: {'A': '3.30', 'B': '3.83'}
34.2 Weighted scoring
Each criterion receives a weight agreed by the group, and each option is scored from one to five on each criterion. The lab computes weighted totals: Option B scores higher, mainly on speed and leaver removal, while Option A is cheaper. Lucas records who scored what and why, so the scores can be challenged. He notes that scoring hides uncertainty, so a narrow gap would not justify a strong recommendation without further evidence, such as a pilot in one store.
34.3 Sensitivity
Lucas checks whether the choice changes if weights shift. The lab doubles the cost weight and finds Option B still wins, though by less. Only if cost is weighted more heavily than security and speed together does Option A win. Because no one at Fernway believes cost matters that much here, the recommendation is robust. He presents the result with the sensitivity check, which persuades the finance manager more than the totals alone. A pilot in one store confirms that badge sign-in takes about four seconds.
Worked example
Lucas compares two shared-tablet sign-in options with five weighted criteria, checks sensitivity to the cost weight and confirms with a pilot.
Synthetic case. Options, weights and scores are synthetic.
Errors and limits
Weights reflect opinions. Scores from a small group may share bias.
Exercises
- EX100 — Criteria first. Why define criteria before scoring?
Show marking criteria
Rubric: 3 = so the favoured option cannot shape them;; 2 = bias;; 1 = vague;; 0 = none. - EX101 — Totals. What were the weighted totals in the lab?
Show marking criteria
Rubric: 3 = A 3.05, B 4.10;; 2 = B higher;; 1 = A higher;; 0 = none. - EX102 — Sensitivity result. What happened when the cost weight doubled?
Show marking criteria
Rubric: 3 = B still won, 3.83 to 3.30;; 2 = B wins;; 1 = A wins;; 0 = none.
Synthesis
Weighted comparison with a sensitivity check gives a robust, challengeable recommendation.
Continue studying — chapter 34 of 40
← Chapter 33 (draft) · Course chapter index · Chapter 35 (draft) →