Další notes končí

Tento můj text je další ze série „Na cestě k učebně pro konec XX. století“, viz program-podium

Ano, další můj papírový notes končí, nahrazen programem a hejnem souborů. A že to byl macek! Kroužkový vazač velikosti A5, obsahující prezenci a prospěch mých učebních skupin pro předmět PRG. Plus nabídku, organizaci a hodnocení profilových maturitních prací – to v letech, kdy mezi mými studenty byli maturanti.

Dokud ty učební skupiny byly čtyři, já a notes jsme fungovali tak nějak na hranici lidských a papírových možností. Bylo jasné, že je to dlouhodobě neudržitelné, ale pobízen mou leností jsem přechod na efektivnější zpracování údajů odkládal. A odkládal a odkládal. Ale jakmile ke čtyřem skupinám přibyly další dvě, bylo jasné, že změna je nevyhnutelná.

Jak se mi tehdy jevil ten problém

Notes obsahoval stránky. Každá stránka obsahovala údaje pro jednu učební skupinu, a to za tři dvouhodinovky výuky a za všechny studenty té skupiny, za příslušné tři dvouhodinovky.   Data studentů byla na řádcích, data dvouhodinovek představovala sloupce, a to sloupce cca 3 cm široké.  V notesu byly zařazeny stránky aktuální, právě zapisované, i stránky historické, přičemž hloubka historie je nezbytně alespoň „na čtvrtletí“, a velice užitečná je hloubka „na pololetí“.  

I stalo se, že údaje o prospěchu studentů se tak rozrostly, že třícentimetrový úsek na jednu dvouhodinovku přestal stačit. Co teď? Úspornější zápis? Bohužel mě žádný takový nenepadnul. Méně dvouhodinovek na jednu stránku? Čím širší sloupce, a tedy čím méně dvouhodinovek na jedné stránce, tím více musí být stránek. To narazí na fyzickou kapacitu notesu. A vyplývá z toho ještě druhý zádrhel – více „režijních“ údajů (identifikace studentů) a více listování.

Informace, co student dělal (či nedělal) minulý a předminulý týden, je zajímavá a užitečná – zejména je-li viditelná na první pohled. Musím-li listovat, informace se ztrácí v mlze.

Dalo se očekávat, že program „rovnou“ vyřeší některé z těchto nesnází. Třeba hloubku zaznamenaných historických dat.  A také „režijní“ údaje.

Další očekávaný přínos programu je rychlost záznamu údajů. Při záznamu do papírového notesu stojí proti sobě na jedné straně požadavek stručnosti při záznamu (to kvůli rychlosti) a  na druhé straně požadavek obšírnosti a podrobnosti při výpisu (to kvůli orientaci v údajích). Ručně psaným textem se to vyřešit nedá, počítačovým záznamem (uživatel nic nepíše, jenom volí, která tlačítka stiskne) se to vyřeší.  Triviální příklad je údaj o času zaznamenání známky. Program samozřejmě v libovolném okamžiku přesně ví, kolik je hodin, a může čas zaznamenat s přesností na milisekundy. Pro moje potřeby postačí s přesností na týden. Každopádně uživatel nepíše vůbec nic, a v tomto případě ani nemusí stisknout žádné další tlačítko. Prostě jenom zvolí známku.

Prozření

Psal jsem a průběžně zkoušel na „ostrých“ datech ten kýžený program, ale pořád to „nebylo ono“.  Data se zaznamenávala, vyhodnocovala a zobrazovala, ale stále jsem měl nejasné tušení, že by to ten program měl dokázat výrazně lépe. Až mě to jednoho dne napadlo. Uvědomil jsem si, že program zpracovává dva odlišné typy dat, a že je musí zobrazovat odděleně. Jaké dva typy dat to jsou? Zjednodušeně řečeno, data o úsilí studentů, a data o výsledcích.

Jak vypadá standardní „programovací“ (na rozdíl od výkladové či testovací) dvouhodinovka PRG? Studenti mají v prohlížeči otevřené zadání úlohy, kterou mají zpracovávat, a otevřené vývojové prostředí, kde se snaží úlohu naprogramovat. Všichni studenti (kromě studentů s individuálním plánem) řeší stejnou úlohu. Úloha má cca 5 „měřitelných“ etap, kde student odevzdává vyhodnotitelný výsledek (zpravidla odesílá učiteli soubor, což je někdy datový soubor a někdy kopie některého zdrojového modulu). Vyřešit úlohu do konce trvá několik týdnů, a existují úlohy, kde neočekávám, že by ji většina studentů dořešila do konce. Naopak první etapa úlohy bývá snadná a vyžadující málo činnosti (ale více rozhledu a pochopení), takže šikovnější studenti ji „vyřeší“ a výsledek odevzdají po pár minutách.

Moje zkušenost říká, že hbitější a pomalejší studenti se „rozejdou“ co do řešené etapy úlohy již během první dvouhodinovky. V tomto ohledu tedy činnost studentů probíhá asynchronně.

Ale pak je tu synchronní část dvouhodinovky PRG, kterou musí provádět jak ti hbitější, tak i ti pomalejší studenti. Během dvouhodinovky musí každý student odeslat hlášení o postupu své činnosti. Hlášení je přísně formalizované. Studenti „odjakživa“ věděli, že v budoucnosti jejich hlášení bude vyhodnocovat program, a tato budoucnost právě nastala. Program samozřejmě oznámkuje hlášení neexistující, samozřejmě ohlídá syntaktické přehmaty, a upozorní i na některé významné okolnosti obsahové. Program má k dispozici „historická“ data, takže upozorní na studenta, který od minulé dvouhodinovky nepokročil v řešení úlohy kupředu. (Všechny tyto zdánlivé drobnosti mi připadají jako obrovský pokrok proti době, kdy jsem je musel vyhodnocovat vlastníma očima a vlastní hlavou!)

Jakmile jsem si uvědomil tuto dualitu údajů, a jakmile jsem zobrazil zvlášť údaje asynchronní (výsledky studentů, vyřešené etapy úlohy)  a údaje synchronní (úsilí studentů, pravidelná týdenní hlášení), program získal žádoucí tvar a od té doby probíhají jenom vylepšení funkčnosti.

Je mi jistou útěchou, že i kdybych byl chytřejší a kdybych si tento principiální fígl uvědomil dříve – tedy v době používání papírového notesu – nebylo by mi to nic platné. Notes by nedovolil nezbytné zdvojení všech stránek.

Výsledný program

Musím připomenout, že fungování tohoto programu (stejně jako většiny mých dalších programů pro podporu vyučování) je umožněno důmyslným systémem serverových disků, který vymyslela, implementovala a udržuje (v mých dřívějších textech již zmíněná) síťová víla (a dnes již i serverová víla) – moje mladá a mimořádně schopná a pracovitá kolegyně.

Program class čte hlášení studentů, vyhodnocuje je a výsledky zaznamenává. Dále čte a zaznamenává vstup učitele. Veškerá data dané učební skupiny program ukládá do jediného XML souboru, ze kterého si je příští týden zase přečte. Maximální kapacita jednoho takového XML souboru je 6 dvouhodinovek, což v praxi odpovídá přibližně dvěma měsícům. Dále program může kdykoli vygenerovat 2 HTML soubory, z nichž jeden zobrazuje asynchronní údaje (výsledky řešení úlohy) a druhý zobrazuje synchronní údaje (úsilí studentů, aktivitu na hodinách, týdenní hlášení).  Pro ilustraci: když jednu takovou HTML stránku vytisknete na papír A4, bude ten papír zcela zaplněný a nahuštěný tisk drobným písmem tak akorát čitelný.

Okno programu je sloupec, který na výšku zabírá celou obrazovku (ale jde hlavně o projekční plochu) shora dolů, a na šířku  přibližně čtvrtinu obrazovky. Samozřejmě, žádný trvale běžící program nesmí zabrat celou obrazovku. Ve sloupci se zobrazují identifikátory všech studentů dané učební skupiny a k tomu jeden další údaj, přičemž volit lze z několika desítek druhů údajů.

Výsledkové soubory studentů, stejně jako týdenní hlášení studentů, se vyvíjejí v čase. Student odešle výsledkový soubor nebo hlášení, já se podívám na výsledkový soubor a můj program se podívá na hlášení, a nalezneme-li chyby, sdělíme to studentovi. Pilnější studenti reagují tak, že se pokusí chyby odstranit a opravený soubor nebo hlášení odešlou znovu, samozřejmě s vyšší verzí. Platný je vždy soubor s nejvyšší verzí. Mám-li nalézt soubor s nejvyšší verzí, občas se spletu. Můj program se splést nemůže.

Mezi údaji, které program zobrazuje, jsou i známky. Program by samozřejmě dokázal vygenerovat soubor s těmito známkami v libovolném formátu. Avšak informační systém Bakaláři, do kterého je třeba tyto známky zaznamenat, dosud nemá žádné použitelné datové rozhraní. I nezbývá, nežli ty známky do Bakalářů nadatlovat.  Cože?! Ručně přepisovat již existující a na obrazovce zobrazené údaje?! Na začátku třetího tisícíletí?! Ano …