Ultimul curs de semestrul trecut, și cel cu titlul cel mai derutant.

Când mă gândesc gândeam la  cursul ăsta (după ce citisem descrierea lui de pe portalul cu cursuri), îmi imaginam că o să își respecte partea de „embedded” din titlu. Dar să o luăm încetișor.

La cursul ăsta am avut 3 (!) profesori. Principal, un român din Cluj pe la 30 de ani. Un tip super deschis, de viață și care își știe foarte bine felia pe care o predă. Anume sisteme de timp real, în special în contextul aplicațiilor „critice” (de care depinde integritatea sau supraviețuirea utilizatorului, mediului sau a sistemului în sine). De altfel, conduce departamentul care se ocupă cu cercetarea în domeniu. Deci a predat un curs de sisteme de timp real de la un capăt la altul, de la conceptele fundamentale până la algoritmi de planificare a sarcinilor într-un sistem (ex: procesele într-un sistem de operare). Toate bune și frumoase, dar noțiunile nu se aplică doar în sisteme integrate.

Al doilea profesor se ocupa cu aplicațiile multi-core, cu algoritmi de mapare a sarcinilor pe procesoare, cu scopul de a limita costul comunicațiilor inter-procesoare. Alt tip super deștept, însă cu abilități limitate de profesor. Genul de om care supraexplică un concept, în loc să lase studentului măcar un mic loc pentru propria imaginație. Însă OK. Al treilea era pe felie cu aplicațiile distribuite; din nou, modelare, provocări, discuții. Alt fenomen de cunoștințe, însă cam prea tipicar pentru gustul meu. Plus că avea o față cam nefericită, dar de, nu pot să fie toți și deștepți, și frumoși, și devreme acasă.

După cum se poate observa, cursul nu a avut un titlu foarte la obiect. nu știu cum i-aș fi spus eu, dar probabil că nu așa. Culmea e că informațiile de aici nu se repetă la cursul de sisteme de timp real și la cel de sisteme distribuite de semestru ăsta. Mai multe despre asta zilele următoare.

Așa, notarea…  Din nou, totul a fost pe baza unui proiect. Proiect care era format din 3 teme. 2 mici și una mai consistentă. Temele mici erau impuse, și anume realizarea în Java (de, embedded…) a unui simulator pentru un algoritm de planificare la alegere și unul pentru analiza responsivității sistemului. Asta a fost relativ floare la ureche, mai mult, temele nu au fost notate la jumătatea semestrului când le-am predat, ci la final. Înainte de final am primit sugestii de îmbunătățire pentru referatul (deja clasicul referat) pe care l-am predat pentru primele două teme.

Așa că tema cea consistentă a fost baza. Și noi (echipă de doi, eu și un român) am ales să facem un proiect cu o aplicație distribuită. Dar de asta am mai vorbit. A fost un dezastru. Și asta pentru că am fost coleg cu un dobitoc (nu, încă am puterea să cred că nu este un dobitoc, ci în acea situație particulară s-a comportat ca un dobitoc), mai rău, un stresat. El săracul e băiat bun, dar a derapat fix când mi-era lumea mai dragă.

Revenind, aplicația era un algoritm de prelucrare a imaginii numit demozaicizare,  algoritm necesar în orice cameră digitală standard. El s-a ocupat cu portarea unei aplicații paralelizate pentru sisteme multi-core (deci rulând pe același procesor, dar core-uri diferite) într-o aplicație distribuită (deci rulând pe calculatoare diferite, legate prin rețea). Într-un final (a se vedea primul link), eu am implementat aplicația pe un cluster de calculatoare al facultății (aparent sunt mai multe) și am scris (încă la fel de clasicul) referat (gigantic fără număr) pe care, din nou, m-am străduit să fie inatacabil (și ar fi fost, dacă nu s-ar fi strecurat la fel de clasicele erori de calcul prin partea de modelare teoretică a sistemului).  Însă proporțiile erau corecte cu sau fără erori de calcul, deci să zicem că treaba a mers (sau nimeni nu s-a obosit să verifice calculele).

Iar chestia superbă cu cluster-ul ăsta e că prin aplicații ca ThinLinc te poți loga direct la una din mașinile cu OpenSolaris din cluster și experiența este identică cu a te afla în fața calculatorului (minus evidenta latență suplimentară). Dacă vrei ca treaba să meargă lin (și nu ții la interfața grafică), poți să te loghezi prin ssh (ca și prin ThinLinc, cu userul și parola de student).  Și e foarte tare că, în loc să îmi fac o mașină virtuală cu Linux pe ea, dacă am nevoie să dau 2-3 comenzi în Linux, pot oricând să mă loghez la mașinile astea. O facilitate bine-venită.

Ca să închei odată, examenul a mers excelent, chiar dacă am senzația că referatul fără număr nu a fost citit el prea cu atenție înainte, prezentarea finală fiind baza notării. Dar a fost un curs bun, din care am învățat multe și care m-a lăsat cu destul material la care să mă întorc la nevoie. Și, spre bucuria mea, nu a ucis cursurile de sisteme de timp real și sisteme distribuite de pe semestrul următor.

Anunțuri