| 09:00–09:05 | Readiness and engineering judgement | Welcome and define the campus-energy decision |
| 09:05–09:10 | Readiness and engineering judgement | Ask what Python each learner has used |
| 09:10–09:15 | Readiness and engineering judgement | Pair students and appoint driver/navigator |
| 09:15–09:20 | Readiness and engineering judgement | Open workspace and downloaded notebook pack |
| 09:20–09:25 | Readiness and engineering judgement | Run import check; route failed machines to pairs |
| 09:25–09:30 | Readiness and engineering judgement | Ask two students to distinguish prediction from action |
| 09:30–09:35 | ML workflow | Contrast rules, learned model and generative AI |
| 09:35–09:40 | ML workflow | Ask whether the target is a number or a category |
| 09:40–09:45 | ML workflow | Show the four input columns and prediction time |
| 09:45–09:50 | ML workflow | Draw training/validation/test roles |
| 09:50–09:55 | ML workflow | Explain the independent synthetic-scenario assumption |
| 09:55–10:00 | ML workflow | Get each pair to name one forbidden future input |
| 10:00–10:05 | Lab 01 data | Open notebook01 and read the data card |
| 10:05–10:10 | Lab 01 data | Run setup; confirm 360/120/120 |
| 10:10–10:15 | Lab 01 data | Inspect the training head and units |
| 10:15–10:20 | Lab 01 data | Count missing values on training |
| 10:20–10:25 | Lab 01 data | Ask why zero and unknown differ |
| 10:25–10:30 | Lab 01 data | Run training-median imputation |
| 10:30–10:35 | Lab 01 data | Audit excluded target/ID columns |
| 10:35–10:40 | Lab 01 data | Swap drivers; write the input table |
| 10:40–10:45 | Lab 01 data | Checkpoint: every pair explains one preprocessing choice |
| 10:45–10:50 | Morning break | Save notebooks and step away |
| 10:50–10:55 | Morning break | Check two stuck machines privately |
| 10:55–11:00 | Morning break | Announce five-minute return reminder |
| 11:00–11:05 | Lab 02 regression | Explain numerical prediction and baseline |
| 11:05–11:10 | Lab 02 regression | Open notebook02 in a fresh kernel |
| 11:10–11:15 | Lab 02 regression | Run setup and training-mean baseline |
| 11:15–11:20 | Lab 02 regression | Predict whether four features will help |
| 11:20–11:25 | Lab 02 regression | Fit linear regression |
| 11:25–11:30 | Lab 02 regression | Read validation MAE in kWh |
| 11:30–11:35 | Lab 02 regression | Inspect observed/predicted plot |
| 11:35–11:40 | Lab 02 regression | Compute three-error MAE by hand |
| 11:40–11:45 | Lab 02 regression | Switch to occupancy-only input as extension |
| 11:45–11:50 | Lab 02 regression | Compare the same validation rows |
| 11:50–11:55 | Lab 02 regression | Swap drivers and write conclusion |
| 11:55–12:00 | Lab 02 regression | Checkpoint: model and baseline with units |
| 12:00–12:05 | Lab 03 classification | Explain observed high-demand label |
| 12:05–12:10 | Lab 03 classification | Contrast label threshold and probability threshold |
| 12:10–12:15 | Lab 03 classification | Run logistic pipeline |
| 12:15–12:20 | Lab 03 classification | Inspect predicted probabilities |
| 12:20–12:25 | Lab 03 classification | Convert probabilities at 0.5 |
| 12:25–12:30 | Lab 03 classification | Compare majority baseline |
| 12:30–12:35 | Lab 03 classification | Find a false positive |
| 12:35–12:40 | Lab 03 classification | Find a false negative; swap drivers |
| 12:40–12:45 | Lab 03 classification | Checkpoint: explain an actual classification error |
| 12:45–12:50 | Lunch | Save work and announce return time |
| 12:50–12:55 | Lunch | Save work and announce return time |
| 12:55–13:00 | Lunch | Save work and announce return time |
| 13:00–13:05 | Lunch | Save work and announce return time |
| 13:05–13:10 | Lunch | Save work and announce return time |
| 13:10–13:15 | Lunch | Save work and announce return time |
| 13:15–13:20 | Lunch | Save work and announce return time |
| 13:20–13:25 | Lunch | Save work and announce return time |
| 13:25–13:30 | Lunch | Save work and announce return time |
| 13:30–13:35 | Lab 04 evaluation | Reconstruct the four confusion counts |
| 13:35–13:40 | Lab 04 evaluation | Calculate accuracy by hand |
| 13:40–13:45 | Lab 04 evaluation | Calculate precision and recall |
| 13:45–13:50 | Lab 04 evaluation | Run threshold sweep on validation |
| 13:50–13:55 | Lab 04 evaluation | Introduce classroom cost 5 FN + 1 FP |
| 13:55–14:00 | Lab 04 evaluation | Choose smallest cost with documented tie-break |
| 14:00–14:05 | Lab 04 evaluation | Try cost 2 FN + 1 FP if ready |
| 14:05–14:10 | Lab 04 evaluation | Write why test data cannot choose threshold |
| 14:10–14:15 | Lab 04 evaluation | Checkpoint: explain the chosen threshold and assumption |
| 14:15–14:20 | Lab 05 trees | Explain tree question and leaf prediction |
| 14:20–14:25 | Lab 05 trees | Run depth1 and depth2 |
| 14:25–14:30 | Lab 05 trees | Run depth3 and depth5 |
| 14:30–14:35 | Lab 05 trees | Compare unrestricted depth |
| 14:35–14:40 | Lab 05 trees | Read training and validation F1 together |
| 14:40–14:45 | Lab 05 trees | Discuss overfitting and sample uncertainty |
| 14:45–14:50 | Lab 05 trees | Sketch first two rules or use export_text |
| 14:50–14:55 | Lab 05 trees | Choose a defensible depth |
| 14:55–15:00 | Lab 05 trees | Checkpoint: evidence instead of maximum training score |
| 15:00–15:05 | Afternoon break | Save all results |
| 15:05–15:10 | Afternoon break | Check challenge readiness |
| 15:10–15:15 | Afternoon break | Call learners back for investigation |
| 15:15–15:20 | Lab 06 leakage and final test | Introduce suspicious meter feature |
| 15:20–15:25 | Lab 06 leakage and final test | Ask pairs to predict score before running |
| 15:25–15:30 | Lab 06 leakage and final test | Run deliberately invalid regression |
| 15:30–15:35 | Lab 06 leakage and final test | Audit feature availability at decision time |
| 15:35–15:40 | Lab 06 leakage and final test | Remove meter and name correct inputs |
| 15:40–15:45 | Lab 06 leakage and final test | Rebuild safe training-only preprocessing |
| 15:45–15:50 | Lab 06 leakage and final test | Select logistic threshold on validation |
| 15:50–15:55 | Lab 06 leakage and final test | Write frozen selection.json |
| 15:55–16:00 | Lab 06 leakage and final test | Open held-out test once |
| 16:00–16:05 | Lab 06 leakage and final test | Record confusion counts and regression MAE |
| 16:05–16:10 | Lab 06 leakage and final test | Complete model card and limitations |
| 16:10–16:15 | Lab 06 leakage and final test | Checkpoint: preserve disappointing results honestly |
| 16:15–16:20 | Evidence review | Choose three pairs with different errors |
| 16:20–16:25 | Evidence review | First pair: decision and baseline |
| 16:25–16:30 | Evidence review | Second pair: threshold and confusion matrix |
| 16:30–16:35 | Evidence review | Third pair: leakage diagnosis |
| 16:35–16:40 | Evidence review | Each student writes their individual contribution |
| 16:40–16:45 | Exit and next steps | Hand out five exit questions |
| 16:45–16:50 | Exit and next steps | Quiet individual response |
| 16:50–16:55 | Exit and next steps | Explain seven-day extension and feedback |
| 16:55–17:00 | Exit and next steps | Verify attendance and participation process; close |