Adam Grudziński

Algebra i Spółka ·

Zadania, karta wzorów i rysunki, które nie chciały się zgadzać

Dwie inaczej zapisane odpowiedzi mogą oznaczać tę samą liczbę, a ładny rysunek może przeczyć treści zadania. Przy budowaniu banku zadań uczyłem się wychwytywać właśnie takie błędy i sprawdzać matematykę, nie tylko działanie strony.

Przejdź do tekstu

Kalendarz, płatności i serwery miały swoje trudne tygodnie, ale każdy z tych kłopotów w końcu się zamknął. Z zadaniami jest inaczej, bo zajmują mnie od pierwszych dni stycznia do dziś. Zadanie z matematyki to nie tylko tekst, ale też wzory, które muszą wyglądać jak w podręczniku, odpowiedzi, które muszą się zgadzać, i rysunki, które muszą pokazywać dokładnie to, o czym mówi treść. Każda z tych trzech rzeczy psuła się na swój sposób.

Karta wzorów

Jedną z pierwszych rzeczy w panelu ucznia była karta wzorów, czyli odpowiednik tablic matematycznych, z których korzysta się na maturze. Na zwykłym ekranie wyglądała dobrze. Wystarczyło jednak powiększyć stronę, żeby tekst urósł, a wzory i wykresy zostały w tym samym rozmiarze, bo ich wielkość była ustawiona na sztywno.

Poprawiałem to dwa razy tego samego dnia. Najpierw rysunki nauczyły się rosnąć razem z resztą karty, a potem karta sama przejęła powiększanie kółkiem myszy z wciśniętym Ctrl, tak żeby skalowała się cała naraz. Dwa dni później okno karty dało się już rozciągać i zniknął z niego podwójny pasek przewijania, a na początku lutego wykresy zaczęły otwierać się w osobnym oknie, w którym można je obejrzeć w dużym rozmiarze.

Jak zadania trafiły na stronę

W tym samym czasie do bazy trafiły pierwsze zadania maturalne, razem z 408 obrazkami. Każde miało treść, odpowiedzi i rozwiązanie, a wzory były zapisane specjalnym kodem, z którego dopiero program na stronie składa ułamki i pierwiastki takie jak w podręczniku. Szybko wyszło, że przy zadaniach dociąganych już po otwarciu strony ten program nie wiedział, że ma zajrzeć do nich jeszcze raz, więc uczeń zamiast wzoru widział surowy kod pełen ukośników.

Pod koniec lutego zadań było już ponad cztery tysiące, zebranych z różnych źródeł, i trzeba je było uporządkować: przypisać do działów, ocenić jakość i odsiać te, w których czegoś brakowało. Zrobiłem do tego kilka programów opartych na AI, a każdy odpowiadał za jeden krok: przydział do działu, wycinanie rysunków, kontrolę jakości albo poprawianie treści. Wszystkie cztery tysiące zadań dostały dział, ale na tym porządki dopiero się zaczęły.

Tysiąc rysunków i ich kolejne wersje

Na początku marca na serwer trafiło ponad tysiąc rysunków do zadań. Część z nich była zepsuta już wtedy, więc na szybko ukryłem te, które się nie wczytywały, żeby uczeń nie oglądał pustych ramek. Miało to być rozwiązanie na chwilę, a zostało na kilka miesięcy.

W czerwcu zabrałem się do porządków na poważnie. Z 1078 starych plików zostawiłem tylko 34, które były naprawdę poprawne, ale jeszcze tego samego dnia wyszło, że sprzątanie poszło za daleko: zniknęło też 467 rysunków, z których korzystały zadania widoczne dla uczniów, więc trzeba je było przywrócić. Przy okazji wyłączyłem 394 zadania z wyborem odpowiedzi, w których rysunek albo odpowiedzi nie pasowały do treści. Pod koniec lipca bank zadań był domknięty: 3709 zadań nadawało się do użytku, a 1642 trwale zepsute poszły do kosza.

To była lekcja pokory. Każde sprzątanie na dużą skalę potrafi usunąć coś, co działa, a zauważa się to dopiero wtedy, gdy ktoś otwiera zadanie z pustym miejscem zamiast rysunku.

Odpowiedzi, które wyglądały na różne

Latem do zadań z egzaminów doszła pula zadań układanych według schematu: program losuje liczby, a wynik liczy się sam. Pula urosła do 6608 zadań w dwudziestu jeden działach, a każde z nich drugi, niezależny program przelicza jeszcze raz, wyłącznie na podstawie treści. Mimo to w jednym schemacie trafił się błąd, który dobrze pokazuje, jak podstępna potrafi być matematyka w rękach komputera.

W zadaniu o promieniu okręgu opisanego na trójkącie równobocznym o boku a poprawną odpowiedzią było a√3/3, a jedną z błędnych a/√3, którą program opisywał jako wynik kogoś, kto zapomniał usunąć pierwiastek z mianownika. Tyle że to ta sama liczba, tylko inaczej zapisana. Uczeń, który wybrał „złą” odpowiedź, miał rację, a program mu jej nie uznawał. Kontrola tego nie wyłapała, bo porównywała odpowiedzi znak po znaku, jak zwykły tekst, a cztery różnie zapisane odpowiedzi wyglądały dla niej na cztery różne. Takich zadań było 52. Dziś kontrola porównuje wartości, a nie zapis.

Rysunki prosto z tablicy

Od końca lipca na Algebrze są arkusze egzaminacyjne, które rozwiązują się same, krok po kroku. Potrzebowały rysunków dokładnie takich jak w arkuszach CKE, czyli Centralnej Komisji Egzaminacyjnej. Na początku września odtworzyłem 34 takie rysunki, ale każdy przygotowany osobno był kolejnym źródłem błędów, a do tego wyglądał inaczej niż to, co uczeń widział na lekcji.

Rozwiązanie leżało w tablicy, na której prowadzę lekcje. Figury, bryły i wykresy wylicza ona sama, prosto z geometrii, zamiast korzystać z gotowych programów w rodzaju GeoGebry, więc punkt na okręgu leży na nim z definicji, a nie dlatego, że ktoś go tam ostrożnie postawił. Pod koniec września tym samym mechanizmem wygenerowałem wszystkie rysunki do arkuszy, w sumie 560 w 99 arkuszach, bo w pozostałych rysunków po prostu nie ma. Kąt prosty zaznaczam na nich po szkolnemu, łukiem z kropką w środku.

Tego samego dnia porównałem jeszcze wszystkie zadania z oryginalnymi arkuszami CKE w PDF-ach. Wyszło trzynaście rozbieżności w treściach i danych, które od razu poprawiłem i opublikowałem.

Arkusz maturalny na Algebrze i Spółce z rozwiązaniem krok po kroku
Arkusz, który rozwiązuje się sam. Rysunki do niego powstają tym samym mechanizmem co tablica.

Co z tego wynika

Z całej historii zadań wyciągnąłem jeden wniosek, który wydaje się oczywisty dopiero po fakcie. Rysunek, wzór i odpowiedź trzeba traktować tak samo jak resztę treści, czyli tworzyć z jednego źródła i sprawdzać automatycznie. Obrazek przygotowany ręcznie wygląda dobrze do pierwszej zmiany, a rysunek wyliczony z geometrii poprawia się w jednym miejscu i poprawka trafia od razu do wszystkich arkuszy.

Cała seria

To ostatnia część serii o tym, jak powstawała Algebra i Spółka:

  1. Pierwsza Algebra: Flask, szablony i PHP, z którego szybko zrezygnowałem
  2. Rezerwacje, które znikały po każdym wdrożeniu
  3. Algebra od nowa: z szablonów Flaska na Reacta i TypeScript
  4. Cennik w pliku, Premium i pierwsza bramka płatności
  5. Zadania, karta wzorów i rysunki, które nie chciały się zgadzać

Jak całość wygląda dzisiaj, opisuję we wpisie Algebra i Spółka od środka.