momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

O nouă carte de programare, asupra orarelor școlare

limbajul R | orar şcolar
2024 jan

[1] Problema orarului școlar echilibrat și limbajul R

[2] V. Bazon - Orare școlare echilibrate și limbajul R https://books.google.ro/books?id=aWrDEAAAQBAJ

[3] V.Bazon - De la seturi de date și limbajul R, la orare școlare //books.google.ro/books?id=stfwEAAAQBAJ

Am creat [3], plecând de la seria de 10 articole [1] — dar ilustrând pe trei orare școlare (foarte diferite între ele) și revizuind lucrurile și programele.

Ca de obicei, am editat în gedit (și am lucrat în R); am folosit LaTeX (TeX Live 2022), mapând în PDF (prin compilatorul xelatex) pe familiile de fonturi OTF Libertinus și SourceCodePro.
Am redat secvențele de program prin pachetul Python Pygments, angrenat prin pachetul propriu pygjust.sty (v. Asupra pigmentarii programelor).

În pagina de titlu am vrut să spunem câte ceva despre conținut și am produs (prin pachetul igraph) o imagine care redă circuitele Kempe ale grafului lecțiilor prof|cls din orele 2 și 3 ale unei zile (care ne-au condus la funcția move_cls() — pentru a muta o clasă din prima coloană în a doua, păstrând unicitatea pe coloană a fiecărei clase):

Și am spus apoi mai mult, în Prefață:

Preluăm critic orarele unor școli (cu un singur schimb, pe orele 1:7) cu număr mare de clase (și profesori); extragem datele de încadrare prof|obj|cls, le analizăm și le structurăm — pregătindu-le pentru a genera noi orare, echilibrate pe zile, clase și profesori, cu număr redus de ferestre.

Care sunt datele? Nu numai profesorii (codificați convenabil), disciplinele (principale și eventual, unele secundare) și clasele pe care sunt încadrați aceștia -- dar și cuplajele instituite între unii profesori pe anumite clase.
Când se va putea, vom înlocui unele cuplaje „pe grupe” ale unei aceleiași clase, prin tuplaje; un "tuplaj" implică doi sau trei profesori și două sau trei clase, ale căror elevi sunt eventual regrupați în două sau trei „noi” clase, la care intră simultan câte unul dintre profesorii respectivi.

În general, orarele întâlnite pe site-urile școlilor sunt dezechilibrate în privința numărului de ore pe zi (ținând cont mai degrabă de interese, decât de principii): într-o zi se fac 180 de lecții, vinerea se fac doar 150; o clasă are 7 ore într-o zi și numai 4 într-o alta, un profesor are 2 ore într-o zi și 7 într-o alta; deasemenea, la unele clase cele 3 sau 4 ore pe un obiect de învățământ se expediază în două zile; iar unele clase au "liber" prima oră a zilei.
Noi urmărim consecvent principiul care pare a fi cel mai favorabil pentru procesul de învățare: distribuim lecțiile în mod echilibrat pe zile, clase și profesori; la fiecare clasă, lecțiile pe un același obiect sunt repartizate câte una pe zi; toate clasele își încep programul zilnic la o aceeași oră a zilei; în cazul cuplajelor, grupele sunt prezente simultan.

Orarul este în fond un set de date, încât putem beneficia de limbajul R (cu „dialectul” tidyverse) pentru a-l structura, explora și analiza — ba chiar, și pentru a-l genera, plecând de la datele de încadrare (ba chiar… învățăm astfel și limbajul R).

Datele sunt fie fixate din start (profesori, obiecte de învățământ, clase, cuplaje și tuplaje), fie urmează a le determina, alegând într-un mod sau altul (treptat) valori potrivite (ziua desfășurării fiecărei lecții, apoi și orele); în funcție de alegerile făcute (și de principiile care le-au ghidat), obținem în final un orar sau altul — pe care apoi, aplicăm o procedură de reducere a numărului total de ferestre.

Redăm și Cuprins-ul cărții (reflectând secțiunile principale):

Subliniem că scopul nostru nu a fost „să facem orarul” unei școli (sau un site pentru orarul acesteia) — ci să dezvoltăm în mod coerent procedurile necesare (plecând de la ideea că orarul este un „set de date”), explorând și folosind limbajul R (și pachetul tidyverse), cu diverse exemplificări și ilustrări pe câteva cazuri concrete (din realitate, nu simple); am evidențiat astfel că R poate servi și altfel, decât în scopul pentru care a fost creat, ”for statistical computing and graphics”…

Obs.
Este greu de încadrat exact, [3]… Am încadrat-o și eu în categoria generică "Computers/ Computer Science" (dintre enorm de multe categorisiri pe enorm de multe domenii, prevăzute la Google Play); dar marea majoritate a cărților apărute în "Computers/..." sunt manuale (pentru "începători", pentru "avansați", pentru un limbaj de programare sau altul) sau sunt compilațiuni uzuale… [3] nu este un manual obișnuit (de R) și nici o compilațiune (decât eventual, față de lucrări anterioare ale mele, de exemplu [2]).
Cărțile „de programare” sunt rare (și nu prea au „categorisire”); ele nu prezintă un limbaj sau altul, un algoritm sau altul, pentru începători sau avansați — ci dezvoltă efectiv o cale proprie pentru a aborda și soluționa o anumită chestiune complicată, într-un context real suficient de important. Primul model de „carte de programare” (dar ideal, fără pereche!) ar fi "The TeXbook", în care D. E. Knuth arată, pe o anumită gamă de adânciri, cum a creat sistemul său de tipografie digitală (înființând totuși categoria "COMPUTERS & TYPESETTING").

vezi Cărţile mele (de programare)

docerpro | Prev | Next