Правилото за днешния час
Миналия час избрахте тема, роли и започнахте данните или правилата. Днес в края на часа трябва да имате работеща слаба версия и първо измерено число. Не хубава версия — работеща.
Най-малката работеща версия
Веригата от вход до изход, минала през всички стъпки — дори с 10 примера, 4 правила и лош резултат. Оттам нататък всяко подобрение е измеримо: пускате същите тестове и сравнявате.
Как се работи в час
- 0–10 мин — сглобяване. Програмистът пуска скелета от урок 7, 18 или 25 (или нов файл с
Main); този с данните/правилата зарежда първите 10 реда; третият пише двата първи теста от заданието. - Чекпойнт 1 (10 мин). Въпросът е един: минава ли веригата от вход до изход? Компилира се, приема вход, дава някакъв изход. Ако не — всички върху това.
- 10–25 мин — първо измерване. Пускате мярката за успех от заданието върху тестовите примери и записвате числото.
- Чекпойнт 2 (25 мин). Има ли първо число? Кои са трите най-груби грешки?
- 25–38 мин — едно подобрение. Само едно: повече правила, повече примери, по-малка стъпка, обработка на грешен вход. Измервате пак със същите тестове.
- Чекпойнт 3 (38 мин). Дневникът е попълнен, а задачите за вкъщи — разпределени.
Контролен списък за напредък
Път А — правила и търсене
- Правилата или дървото са данни в програмата (масив, списък), а не верига от if-ове. Добавяне на правило = добавяне на ред.
- Програмата стига от първия въпрос до извод поне за един вход.
- Изводът идва с обосновка: кое правило или кой път го е дал.
- Има поведение за непокрит случай: „не мога да реша“, а не грешен отговор или срив.
- За минимакс и търсене: има условие за край на играта или на търсенето и то е проверено с ръчен пример от урок 8 или 9.
Път Б — данни и обучен модел
- Тестовите примери са отделени ПРЕДИ обучението и програмата не ги вижда, докато се учи.
- Записан е броят примери на клас — балансирани ли са.
- Има първа точност върху тестовите примери, записана с датата и настройките (стъпка, епохи).
- Прегледани са поне 3 сгрешени примера и има хипотеза защо.
- За Teachable Machine: моделът е изпробван с поне 5 нови снимки или записа, направени не от тези, които са го обучавали.
Типични засечки и как се излиза от тях
| Симптом | Обикновено значи | Какво да направите |
|---|---|---|
| Моделът не се учи — точността не мърда или скача нагоре-надолу | твърде много признаци за малкото примери или твърде голяма стъпка на обучение | по-малко признаци (2–3), повече примери, по-малка стъпка (урок 17) |
| Всичко попада в един клас | силно небалансирани данни | изравнете броя примери на клас |
| Точността е 100% още от първия опит | тест върху обучаващите примери | проверете разделянето на обучаващи и тестови |
| Правилата се бият — две правила дават различен извод за същия вход | правилата не са наредени или на едното му липсва условие | по-конкретното правило първо; първото, което съвпадне, печели; добавете липсващото условие |
| Програмата стига до извод, но грешен | липсва правило или въпросите са в грешен ред | проследете пътя на лист (както в урок 6) и сравнете с програмата |
| Минимаксът мисли твърде дълго | дървото на играта е твърде голямо | по-малка дъска или ограничение на дълбочината; за морски шах 3×3 не бива да е проблем |
| Търсенето не свършва | едно и също състояние се обхожда отново и отново | пазете списък на посетените състояния (урок 8) |
| Компилира се, но пада при вход | неочакван вход: букви вместо число, празен ред | int.TryParse и проверка преди употреба — това е и готов граничен тест |
| Teachable Machine познава в час, но не и вкъщи | друг фон, друго осветление, друга камера | добавете примери при различни условия; ако не стига — запишете го като ограничение |
Кога се пита учителят или асистентът
Редът е важен, защото на защитата ще ви питат как сте решили проблема — а „попитахме асистента“ не е решение, ако не можете да обясните отговора.
- Пет минути сами. Прочетете грешката, отпечатайте междинните стойности с
Console.WriteLine, проверете входа на лист. - Съотборник. Обяснете му какво очаквате и какво се случва. Често отговорът идва, докато го обяснявате.
- AI асистент — с точното съобщение за грешка и парчето код, както в урок 29. Полученото се проверява с тест, както в урок 30, и се записва в декларацията.
- Учителят — когато сте заседнали повече от 10 минути или когато решението е за обхвата: „да сменим ли на резервния вариант?“. Това не са въпроси за асистент.
Дневникът
Документацията в час 35 се пише лесно, ако сте водили бележки. Три реда след всяка промяна: какво променихме, какво очаквахме, какво стана. Плюс кой го е направил — това е доказателството за „принос на всеки“.
14:12 Мария Добавихме 6 правила за случая „навън = не“.
Очаквахме: тест 4 и 5 да минат. Стана: 4 мина, 5 дава „не мога да реша“.
14:20 Петър Смених стъпката от 0.5 на 0.1.
Очаквахме: точността да се стабилизира. Стана: 3/5 → 4/5, вече не скача.
14:31 Ива Добавих проверка int.TryParse за входа.
Очаквахме: „abc“ да не срива програмата. Стана: работи, печата „въведете число“.- Пазете първото число — то е базата, спрямо която мерите напредъка.
- Пазете и неуспешните опити; те влизат в документацията наравно с успешните.
- Правете екранни снимки на изхода веднага; на защитата може да ви потрябват.
Какво трябва да запомниш
- Първо най-малката работеща версия — цялата верига от вход до изход — после подобрения.
- Три чекпойнта: на 10-ата минута веригата минава, на 25-ата има първо число, на 38-ата има план за вкъщи.
- Една промяна, едно измерване, един ред в дневника.
- „Моделът не се учи“ → по-малко признаци, повече примери, по-малка стъпка. „Правилата се бият“ → ред на правилата, липсващо условие.
- Ред на питане: сами, съотборник, асистент с точната грешка, учител при засядане или въпрос за обхвата.
- Дневникът с „какво, очаквахме, стана, кой“ е суровината за документацията и за защитата.