Перейти к содержимому

Тепловая карта класса

22 ученика × 8 навыков. Жми «Прогнать урок» — каждый ученик решает по 2 задачи на каждый навык, и BKT обновляет состояние в реальном времени. Наводи на ячейки — видно P(L)P(L) и P(solve)P(\text{solve}).

низковысоко
скобкизнакипереносдробьраспредподобнпроверкаделениесредн
Ivan.71.83.56.50.65.80.87.830.72
Maria.52.64.54.27.50.52.64.530.52
Jüri.88.98.89.77.91.97.98.980.92
Anna.81.87.69.71.76.61.86.810.77
Mikk.64.87.73.50.81.67.72.770.71
Liisa.73.76.57.48.74.74.64.660.66
Karl.84.77.76.71.66.70.88.950.78
Eva.73.77.81.66.55.68.66.700.69
Mart.66.76.70.57.84.74.73.710.71
Linda.62.81.53.43.53.71.84.830.66
Janek.77.75.86.51.64.74.75.720.72
Helen.75.75.65.39.74.56.62.840.66
Toomas.81.84.90.63.82.71.76.740.78
Kadi.74.88.71.59.81.69.81.730.75
Rauno.64.89.61.55.64.74.78.720.69
Triin.70.55.48.45.47.57.62.740.57
Henri.84.70.85.60.82.78.75.740.76
Kristiina.62.71.78.66.67.61.83.850.72
Oskar.72.83.66.43.64.78.70.840.70
Pille.73.72.67.41.55.79.70.800.67
Indrek.46.57.77.38.77.72.61.690.62
Heli.64.84.62.40.58.51.60.610.60
↓ слабых1/220/221/2210/222/220/220/220/22
Наведи на ячейку — детали по ученику и навыку.

Heatmap — это матрица 22×822 \times 8:

  • по строкам — ученики класса (Ivan, Maria, Jüri, …);
  • по столбцам — микро-навыки темы (скобки, знаки, перенос, …);
  • ячейка i,ji, jP(L)P(L) ученика ii по навыку jj;
  • цвет — от красного (0) через жёлтый (0.5) до зелёного (1).

Учитель за две секунды видит:

  • где общая дыра в классе (вертикальная красная полоса);
  • кто отстаёт от всех (горизонтальная красная полоса);
  • кто уникально хорош (одинокая зелёная клетка).

Это самый наглядный артефакт для демо: его обычно просят показать первым, чтобы за секунды увидеть «дыры» класса и отдельных учеников.

[скобки][знаки][перенос][дробь][распред][подобн][проверка][деление]
Ivan 0.42 0.83 0.66 0.30 0.55 0.71 0.40 0.78
Maria 0.31 0.40 0.55 0.20 0.45 0.60 0.30 0.62
Jüri 0.78 0.85 0.81 0.70 0.80 0.85 0.75 0.88
Anna 0.55 0.62 0.71 0.40 0.60 0.68 0.50 0.74
...

Что видит учитель:

  • столбец «дробь» — везде красно (у всех проблема);
  • строка Maria — везде слабо (отстающая);
  • строка Jüri — везде сильно (передовик).

Что делает учитель: «Завтра — лист на дроби. Maria — лист на повторение базы. Jüri — что-то посложнее.»

const heatmap = students.map(student => ({
name: student.name,
cells: microskills.map(skill => ({
skill: skill.id,
pL: student.mastery[skill.id] ?? params.pInit,
}))
}));

То есть это просто проекция state’ов всех учеников. Никакой дополнительной модели — heatmap живёт напрямую на BKT-карте.

Сейчас в плане использовать стандартную «red-yellow-green» (RdYlGn) из matplotlib:

function color(pL: number): string {
if (pL < 0.3) return '#dc2626'; // red
if (pL < 0.5) return '#f59e0b'; // amber
if (pL < 0.7) return '#eab308'; // yellow
if (pL < 0.85) return '#84cc16'; // lime
return '#16a34a'; // green
}

Альтернатива — непрерывный градиент через CSS hsl(120 * pL, 70%, 50%), но дискретные ступени читаются легче.

Когда у нас будет интерактивный компонент (см. главу про виджеты — фаза 3 в плане):

  1. Hover на ячейке → tooltip с точным P(L)P(L), навыком и учеником.
  2. Click на ячейке → переход на «карту ученика» с подробной историей.
  3. Click на колонке → группировка задач, тренирующих этот навык, отсортированных для нужного ученика.
  4. Click на строке → план для этого ученика на завтра.
  5. «Прогнать урок» → симулирует, как изменилась бы карта после следующего набора задач (using BKT update).

Над heatmap можно показать сводку:

У 18 из 22 учеников P(дробь) < 0.5
У 14 из 22 P(скобки) < 0.5
В среднем класс силен в "проверка решения" (mean P = 0.78)
→ Кнопка: «Собрать листок на завтра, фокус — слабые места класса»

Это закрывает явный сценарий: учитель открывает MATx, пять секунд смотрит, понимает что делать. Время на план — ноль.

Короткая формулировка для ответа про heatmap

Заголовок раздела «Короткая формулировка для ответа про heatmap»

«Карта класса — прямая визуализация BKT-состояния. У учителя теперь то, чего раньше не было: картина класса целиком. До MATx единственный способ это иметь — проверить 22 теста вручную и посчитать ошибки по типам. Это часы работы. У нас — секунды.»