This is an old revision of the document!


Reguli și notare

În cadrul cursului de Introducere în organizarea calculatoarelor și limbaje de asamblare (IOCLA) sunt două componente: partea de laborator (parcurs) și partea de curs. Partea de curs acoperă cursurile, lucrările de curs și examenul final în vreme ce partea de laborator acoperă activitatea de laborator și temele.

Mai jos sunt detaliate modurile de desfășurare a cursurilor și laboratoarelor, sistemul de notare, reguli și recomandări.

Distincții

Pe parcursul anului academic 2019-2020 vor fi acordate distincții clasificate în următoarele categorii:

  • Examen: 1 distincție pentru fiecare interval de examen acordat celui care termina cel mai rapid examenul (cu punctaj maxim).
  • Activitate la curs: 12 distincții în total, 3 per serie.
  • CTF de la finalul semestrului: 5 distincții pentru participanții clasați pe primele locuri ale clasamentului.
  • Teme: se vor acorda distincții doar în cazuri exceptionale. Exemple: coding style excepțional, o rezolvare extrem de originală, o temă foarte bine optimizată.

Fiecare student va putea primi maximum o distincție. Dacă un student va fi nominalizat pentru mai multe categorii, i se va acorda distincție doar pentru o categorie, iar celelalte vor fi cedate altor studenți din coadă.

Notare

Anumite componente ale materiei (teme, laborator, examen final, lucrări de curs) dispun de punctaje bonus sau suplimentare. Acestea pot fi folosite pentru a suplimenta punctaje mai mici în cadrul aceeași componente. Dacă nota pe componentă trece de nota maximă aferentă, atunci această notă se trunchiază. Nu puteți transfera punctaje bonus între componente.

Pentru absolvirea materiei trebuie să obțineți cel puțin 50% din punctajul de curs (lucrări de curs și examen final) și cel puțin 50% din punctajul de laborator (laborator și teme) și 50% din punctajul cumulat.

Dacă nu ați obținut 50% din punctajul de laborator nu veți putea participa la examenul final și va trebui să refaceți disciplina anul universitar următor.

Sumar notare

  • 1 punct: Activitate de laborator (12 laboratoare)
  • 3 puncte: Teme (3 teme)
  • 2 puncte: Lucrări de curs (4 lucrări în timpul semestrului)
  • 4 puncte: Examen final (în sesiune)

Notare detaliat

Activitate de laborator

Laboratorul valorează 1 punct.

Vor fi 12 laboratoare pe parcursul semestrului. Fiecare laborator poate avea puncte bonus care sunt folosite pentru a compensa eventuale puncte pierdute in cadrul altor laboratoare.

Nota pe laborator se obține împărțind punctajul la 12. În situațiile în care punctajul depaseste 1 punct, nota se va trunchia; cu alte cuvinte, nu există posibilitatea transferării surplusului către o altă componentă a materiei.

Teme

Temele valorează 3 puncte.

Există 3 teme, fiecare valorând 1 punct.

Submisia temelor se face folosind interfața vmchecker. Termenul limită de submisie de teme pe interfața vmchecker este miercuri, 15 ianuarie 2020, ora 23:55.

După expirarea termenului de rezolvare, o temă este depunctată cu 2 puncte pe zi (din 10) timp de 5 zile. După 5 zile de întârzieri nu se mai pot trimite teme. Nu se pot trimite teme pe perioada verii.

În realizarea temelor țineți cont de regulile și recomandările din secțiunea Realizarea temelor si Reguli de realizare a temelor.

Perioada de vacanță (14 decembrie 2019 - 5 ianuarie 2020) nu este contorizată ca întârziere.

Lucrări de curs

Există 4 lucrări de curs. Fiecare lucrare de curs este notată cu maxim 0.6 puncte (0.5 puncte bază și 0.1 puncte bonus) pentru un punctaj total (pe lucrările de curs) de 2 puncte. În situațiile în care punctajul depaseste 2 puncte, nota se va trunchia; cu alte cuvinte, nu există posibilitatea transferării surplusului către o altă componentă a materiei.

O lucrare de curs va dura 20 de minute.

O lucrare conține 6 întrebări punctate egal (0.1 puncte de întrebare). O întrebare este bonus. La fiecare întrebare veți răspunde complet, corect și concis. Fiecare întrebare este punctată cu 0 sau 1 (nu există punctaj parțial). Obținerea a 0.6 puncte de lucrare înseamnă obținerea punctajului maxim aferent lucrării.

Lucrarea de curs o veți da la seria din care faceți parte. Dacă, din motive argumentate și obiective, nu puteți ajunge la seria voastră, trimiteți un e-mail Alexandrei cu subiectul [IOCLA][Lucrare 2] Transfer: NUME Prenume - grupă, de exemplu [IOCLA][Lucrare 2] Transfer: POPESCU Andreea - 322CB. Cererile de transfer se trimit până cel târziu cu o zi înainte de perioada în care se desfășoară fiecare lucrare.

La lucrarea de curs nu aveți voie cu nici un fel de material. Aveți nevoie doar de un instrument de scris. Foaia cu subiectele o veți primi de la noi. Tot pe acea foaie veți răspunde la întrebări. Tentativele de copiere sau fraudare prin orice mijloc se penalizează cu anularea lucrării de curs. În caz de recidivă va rezulta în referat la decanatul facultății.

După desfășurarea și corectarea unei lucrări de curs, dacă sunteți de părere că nota nu este în conformitate cu răspunsurile voastre, puteți solicita recorectarea lucrării de curs pe un thread deschis specific pe forumul cursului pe acs.curs.pub.ro. Acest thread este deschis o dată ce toate notele aferente unei lucrări (la toate seriile) au fost publicate în catalog. Puteți solicita doar recorectare, nu validarea unor răspunsuri, sau indicație dacă răspunsurile au fost sau nu corecte. Veți primi răspuns că nota nu s-a schimbat sau, dacă în urma recorectării a fost schimbată, în ce notă a fost schimbată.

Lucrările de curs se desfășoară în prima parte a unui curs și acoperă materia din cursurile anterioare. Desfășurătorul lucrărior de curs este descris mai jos, așa cum este indicat și în Calendar.

Lucrarea de curs 1 va avea loc în perioada marți, 15 octombrie 2019 - luni, 21 octombrie 2019, astfel:

  • marți, 15 octombrie 2019, 08:05 - 08:25, sala AN030, seria CD, la cursul 6
  • marți, 15 octombrie 2019, 12:05 - 12:25, sala A02Leu, seria CA, la cursul 6
  • miercuri, 16 octombrie 2019, 14:05 - 14:25, sala EC004, seria CB, la cursul 6
  • vineri, 18 octombrie 2019, 12:05 - 12:25, sala EC101, seria CC, la cursul 6

Lucrarea de curs 1 va conține 6 întrebări din cursurile 1, 2, 3, 4 și 5 (cursuri, nu capitole).

Lucrarea de curs 2 va avea loc în perioada marți, 5 noiembrie 2019 - luni, 11 noiembrie 2019.

  • marți, 5 noiembrie 2019, 08:05 - 08:25, sala AN030, seria CD, la cursul 10
  • marți, 5 noiembrie 2019, 12:05 - 12:25, sala A02Leu, seria CA, la cursul 10
  • miercuri, 6 noiembrie 2019, 14:05 - 14:25, sala EC004, seria CB, la cursul 10
  • joi, 7 noiembrie 2019, 16:05 - 16:25, sala AN030, seria CC, la cursul 10

Lucrarea de curs 2 va conține 6 întrebări din cursurile 6, 7, 8 și 9 (cursuri, nu capitole).

Lucrarea de curs 3 va avea loc în perioada marți, 3 decembrie 2019 - luni, 9 decembrie 2019.

  • marți, 3 decembrie 2019, 08:05 - 08:25, sala AN030, seria CD, la cursul 16
  • marți, 3 decembrie 2019, 12:05 - 12:25, sala A02Leu, seria CA, la cursul 16
  • miercuri, 4 decembrie 2019, 14:05 - 14:25, sala EC004, seria CB, la cursul 16
  • joi, 5 decembrie 2019, 16:05 - 16:25, sala AN030, seria CC, la cursul 16

Lucrarea de curs 3 va conține 6 întrebări din cursurile 9(a doua parte), 10, 11, 12 (cursuri, nu capitole).

Lucrarea de curs 4 va avea loc în perioada luni, 13 ianuarie 2020 - vineri, 17 ianuarie 2020.

  • marți, 14 ianuarie 2020, 08:05 - 08:25, sala AN030, seria CD, la cursul 21
  • marți, 14 ianuarie 2020, 12:05 - 12:25, sala A02Leu, seria CA, la cursul 21
  • miercuri, 15 ianuarie 2020, 14:05 - 14:25, sala EC004, seria CB, la cursul 21
  • vineri, 17 ianuarie 2020, 12:05 - 12:25, sala EC101, seria CC, la cursul 21

Lucrarea de curs 4 va conține 6 întrebări din cursurile 16, 17, 18 și 19 (cursuri, nu capitole).

Exemple subiecte

Lucrare 1 - varianta 1

1. Care este legătura între registrul CH și registrul CL?

2. Care este valoarea în binar a numărului hexazecimal 0xe5?

3. Cum este stocat în memorie numărul 0x55667788 (întreg pe 32 de biți)? Sistemul este little endian. Indicați adresele și conținuturile octeților.

4. Ce valoare zecimală corespunde numărului 0xcd într-o reprezentare fără semn?

5. Ce efect are, din punct de vedere aritmetic/matematic, shiftarea la stânga cu 3 a unui registru?

6. De ce este utilă folosirea unui pipeline de instrucțiuni în procesor?

Lucrare 1 - varianta 2

1. Care este un avantaj al unui limbaj de nivel înalt față de limbajul de asamblare?

2. Care este valoarea în binar a numărului hexazecimal 0xa7?

3. Cum este stocat în memorie vectorul short a[2] = {0x1122, 0x3344}? Sistemul este little endian. Indicați adresele și conținuturile octeților.

4. Ce valoare zecimală corespunde numărului 0xab într-o reprezentare fără semn?

5. Fie masca 00001111. Ce semnificație are pentru un număr N oarecare pe 8 biți: N & masca? (bitwise AND)

6. Dați exemplu de operație care activează CF (Carry Flag) dar nu SF (Sign Flag).

Lucrare 2 - varianta 1

1. Ce efect are instrucțiunea mov EAX, [EBX+12]?

2. După operația shr AX, 3 avem în AX valoarea 0x10. Care era inițial valoarea lui AX (în hexazecimal)?

3. Pentru a executa un apel de sistem de scriere pe Linux x86, folosim int 0x80. Ce trebuie să punem înainte în registrul EAX?

4. De ce instrucțiunea sub 100, [array+ESI] va genera eroare la asamblare în NASM?

5. Fie declarația: array db 10, 4, 5, 42. Ce valori va conține vectorul array după execuția instrucțiunii mov word [array + 2], 500?

6. Dați exemplu concret de operație cu două numere care activează CF (Carry Flag) fără a activa SF (Sign Flag).

Lucrare 2 - varianta 2

1. Cu ce diferă adc EAX, 100 de add EAX, 100?

2. Dupa operația ror AX, 3 avem în AX valoarea 0xAF. Care era valoarea inițială a lui AX (în hexazecimal)?

3. Cum arată construcția assembly prin care definim și inițializăm o variablă la șirul “I love IOCLA”?

4. De ce instrucțiunea mov AL, EBX va genera eroare la asamblare?

5. Fie declarația: array dd 10,12,3,4,1,6,9,8. Ce valoare va reține AX după execuția instrucțiunilor de mai jos?

mov ECX, 3
mov EAX, [array + 4*ECX]

6. În ce registre se stochează rezultatul înmulțirii folosind instrucțiunea mul EBX?

Lucrare 3 - varianta 1

1. Ce instrucțiune de lucru pe șiruri este folosită pentru a crea un șir care să conțină doar caracterul A? Indicați orientativ cum este folosită.

2. Indicați un avantaj și un dezavantaj al folosirii funcțiilor.

3. Ce se găsește în vârful stivei în momentul ieșirii din funcție (imediat după apelul ret)?

4. Traduceți construcția *a = f(b); în secvență de cod limbaj de asamblare (în apelant/caller). a și b sunt variabile globale deja definite.

5. Care este un echivalent C pentru secvența în limbaj de asamblare de mai jos?

...
mov eax, dword [ebp+12]
mov eax, [eax]
add eax, 4
leave
ret

6. Scrieți secvența de cod în limbaj de asamblare prin care afișăm ultimul parametru al funcției unui program (adică șirul argv[argc-1] folosind apelul puts).

Lucrare 3 - varianta 2

1. Ce registre modifică instrucțiunea movsb?

2. O funcție compute() este definită în limbaj de asamblare. Dorim să o apelăm în C. Ce trebuie să facem?

3. Cu ce este echivalentă instrucțiunea leave?

4. Fie construcția de mai jos:

int f(int b)
{
    int buf[32];
    buf[10] = b;
    ...

Traduceți construcția în secvență de cod în limbaj de asamblare.

5. Care este un echivalent C pentru secvența în limbaj de asamblare de mai jos?

push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [ebp+8]
mov [ebp-8], eax
mov eax, dword [eax]
mov [ebp-4], eax
...

6. O funcție are signatura void set(int *a, int i, int v). Traduceți în secvență de cod în limbaj de asamblare construcția C:

a[i] = v;

Lucrare 4 - varianta 1

1. Dați un exemplu de construcție C care este echivalentă construcției în limbaj de asamblare de mai jos.

sub esp, 128

2. Dați un exemplu în limbaj de asamblare de situație de tipul “out of bounds” (OOB) în lucrul cu buffere.

3. Indicați un utilitar de analiză statică și argumentați de ce este utilitar de analiză statică.

4. Care este principalul dezavantaj al analizei dinamice față de cea statică?

5. Un program are un buffer overflow. Cum arată payload-ul care exploatează vulnerabilitatea apelând funcția local(), știind că buffer-ul este plasat la adresa ebp-48?

6. Ce semnificație are payload-ul 48 * “A” + p32(my_func) + 4 * “B” + p32(100)? p32() este o construcție care convertește o valoare/adresă într-un șir de 4 octeți într-un payload; my_func reprezintă adresa unei funcții.

Lucrare 4 - varianta 2

1. Indicați construcția care alocă, în limbaj de asamblare, un buffer de 128 de octeți pe stivă.

2. Ce legătură este între “out of bounds” și adresa de retur?

3. De ce spunem că objdump este un utilitar de analiză statică?

4. Fie următoarea secvență de cod, în care presupunem că nu se face reordonare și compilatorul nu plasează spații libere între variabile:

{ // suntem intr-o functie 
int v1 = 0xabcdef01;
int v2 = 0x12345678;
int buf[32];
printf(“0x%08x 0x%08x\n”, buf[33], buf[34]);

Ce va afișa secvența de cod de mai sus?

5. Ce condiție trebuie să îndeplinească o funcție recursivă pentru a fi recursivă pe coadă (tail recursive)?

6. O funcție are signatura int read_from_index(int *base, int *table, int i). Traduceți în limbaj de asamblare construcția:

return base[table[i]];

Lucrările de curs nu se refac în sesiunea de examen sau în sesiunea de restanțe.

Examen final

Examenul final valorează 4 puncte. Examenul final are loc în sesiune. Examenul durează 120 de minute.

Puteți participa la un singur examen pe parcursul unei sesiuni.

Examenul final este examen practic. Veți primi subiecte de rezolvat în fața calculatorului.

Găsiți două modele de subiect de examen final (practic) aici. Scheletul și resursele pentru fiecare sunt aici.

Examenul se dă în săli de laborator cu SASM și tool-urile folosite în laboratoare de IOCLA (inclusiv IDA Free).

Examenul va dura 120 de minute (2 ore), nu 90 de minute cum este indicat în modele.

Veți participa la examen la data aferentă seriei voastre. Puteți cere mutarea în altă dată de examen cu motive obiective temeinice. Motivul “nu am învățat suficient” nu este acceptat. Vom fi mai deschiși cererilor de mutare pentru studenții care refac materia și care au și alte examene în sesiune și posibile suprapuneri. Dacă aveți motive temeinice obiective de mutare trimiteți un e-mail lui Răzvan Nițu cu subiectul [IOCLA] Schimbare examen - NUME Prenume, Grupa, de exemplu [IOCLA] Schimbare examen - POPESCU Adrian, 322CB.

Vor fi două tranșe per examen. Fiecare tranșă va avea 2 h + 30 de minute de organizare și corectare etc. Rezultatele vor fi date după 30 de minute de la încheierea celei de-a doua tranșe. Vor fi afișate în catalogul online.

Pe parcursul examenului, veți avea acces la foaia cu subiecte, o foaie albă, documentație tipărită proprie și un instrument de scris. Foaia cu subiecte și foaia albă vor fi predate la finalul examenului. Veți folosi doar sistemele de calcul din sala de laborator. Nu aveți voie cu alte dispozitive: laptop-uri, tablete, telefoane.

Pe parcursul examenului, aveți voie la Internet și la orice formă de documentație necolaborativă. Aveți voie cu acces la soluții de laboratoare, dar NU cu soluții la modele de subiecte, subiecte din alți ani sau altele. Orice încercare de a folosi forme de documentație colaborativă (messenger, Google Docs, pus întrebări pe Internet) sau a rezolvărilor de la modele sau de la subiecte din alți ani este considerată copiere.

Telefoanele și orice dispozitive electronice vor fi inaccesibile pe durata examenului.

Pentru participarea la examen este nevoie de act cu poză, ideal carnetul de student.

Vom face corectare live. Când un student încheie un subpunct, i se va marca pe foaie. La sfârșit, de față cu studenții se vor face calculele și trecerea punctajului final.

Pentru a fi punctat trebuie să explicați cum ați făcut; nu punctăm brute force sau nimereală. Fiți eficienți în explicații ca să nu consumați din timpul de examen.

Punctaje se dau doar pe fiecare subpunct, nu mai granular. Punctajele vor însuma 45 pentru un maxim de 40. Ce este peste 40 este bonus și se trunchiază. Pentru absolvirea disciplinei este nevoie de obținerea a 50% din punctajul de curs (lucrări de curs și examen final).

Veți sta în sala de laborator până la finalul examenului.

Orice tentativă de copiere se penalizaează:

  1. prima încercare cu avertisment
  2. a doua încercare eliminarea din examen și referat la decanat

Orice încercare de exfiltrare a subiectelor de examen va înseamnă repetarea disciplinei anul viitor și referat la decanat pentru tentativă de fraudare.

Reguli și recomandări

Desfășurarea laboratorului

Vom desfășura laboratorul pe semigrupe. Fiecare grupă se va împărți în jumătate (câte două semigrupe egale ca dimensiune, sau diferență de cel mult un student). Nu permitem schimbarea semigrupelor pe parcursul semestrului. Un student poate participa la o singură semigrupă a grupei din care face parte.

Studenții care au restanță și cei de la alte facultăți pot participa la orice laborator cât timp există locuri disponibile.

Pentru a asigura buna desfășurare a laboratorului, limita de studenți în cadrul unui laborator este 15 persoane.

Puteți recupera laboratoare de maxim două ori, doar cu acordul ambilor asistenți (acordat înainte). Recuperarea se poate face doar în timpul săptămânii normale de desfășurare a laboratorului; nu se poate recupera un laborator în mod retroactiv, în afara săptămânii normal de desfășurare a acestuia.

În timpul laboratorului permitem doar activități aferente acelui laborator.

Realizarea temelor

Echipa cursului de IOCLA își rezervă dreptul de a nu publica soluții ori rezolvări parțiale pentru teme nici după expirarea termenului de predare. Acest lucru este valabil pentru toate celelalte componente ale materiei.

Echipa cursului de IOCLA poate să solicite prezentarea uneia sau mai multor teme de casă cu notificare în prealabil.

Trimiterea temelor se va realiza prin intermediul interfeței vmchecker.

Pentru realizarea temelor veți folosi SASM (NASM + gcc) sau alte utilitare specificate în enunțul temei.

Pentru testarea temelor puteți folosi mașinile virtuale create special pentru cursul de IOCLA, descrisă în secțiunea aferentă. Aceaste mașini virtuale sunt configurate și pentru testarea pe vmchecker.

Reguli de realizare a temelor

Temele la IOCLA sunt individuale; cu excepția cazurilor în care se precizează explicit că o temă se poate rezolva în echipă. Asta pentru că temele au ca principal obiectiv ca voi să dobândiți sau să vă aprofundați abilitățile practice. În măsura în care nivelul de colaborare este prea ridicat sau atunci când cereți soluții pe Internet, acest obiectiv nu va fi îndeplinit. Fiecare temă este realizată de un student fără a consulta codul sursă al colegilor săi.

Știm că lucrul în echipă este important, dar nu avem mediul pentru a realiza proiecte de echipă la cursul de IOCLA. Încurajăm colaborarea în timpul orelor de laborator, interactivitate în timpul orelor de curs și implicarea în activități extracurriculare ce presupun lucru în echipă.

Dacă întâmpinați orice fel de probleme în rezolvarea temei, folosiți forumurile pe cs.curs.pub.ro sau întrebați asistenții la laborator sau titularii la curs. Rolul nostru este să vă ajutăm în rezolvarea acestora. Apelați cu încredere la echipa de IOCLA.

Să evitați, vă rugăm, discuțiile private (e-mail, Facebook, face-to-face) legate de teme și aspecte organizatori ale materiei. În aceste situații să folosiți forumurile pe cs.curs.pub.ro ca să putem oferi răspunsuri publice.

Puteți discuta între voi în limitele bunului simț; adică nu trebuie să-i dictați cuiva rezolvarea, dar puteți să-i oferiți ideea generală. Dacă sunteți cel care este întrebat și oferă explicații, să aveți în vedere redirectarea către forumurile pe cs.curs.pub.ro sau echipa de IOCLA.

Nu este permis să solicitați rezolvarea unei teme pe un site de tip StackExchange, Rent a coder sau altele. Puteți pune întrebări mai generice, dar nu solicitați rezolvarea temei.

Temele vor fi realizate direct în limbaj de asamblare. Nu este permis să scrieți temele în limbaje de nivel înalt (precum C sau C++) pe care apoi să le compilați în limbaj de asamblare.

Puteți folosi fără probleme cod din laborator, schelete puse la dispoziție de noi. Puteți folosi resurse externe (GitHub, cod open source sau altele), atâta vreme cât acestea nu reprezintă rezolvări evidente ale temei, puse public cu sau fără intenție. Vedeți și paragraful următor.

Nu este permis să publicați soluțiile temelor (nici după încheierea materiei). Dacă găsiți pe GitHub sau în altă parte rezolvări publice de teme, raportați-le pe forumurile de pe cs.curs.pub.ro sau privat asistentului de laborator sau titularului de curs. Reiterăm că dacă doriți clarificări pe care le-ați adresa colegilor de ani mai mari, sau pe alte forumuri, StackExchange sau alte surse, folosiți forumurile pe cs.curs.pub.ro și echipa de IOCLA. E cea mai sigură și onestă cale de a rezolva problemele.

Nu este permis să faceți transfer de fișiere între voi. În general, recomandăm să nu urmăriți ecranul unui alt coleg, sau pentru inspirație sau pentru a îl/o ajuta la rezolvare. Evitați testarea unei teme pe un sistem al unui coleg. Pot exista excepții, puteți ajuta pe cineva la troubleshooting, dar să aveți în vedere să nu treacă de la “hai să dăm de cap problemei” la “hai să-ți rezolv tema”. Dar vă recomandăm să folosiți forumurile pe cs.curs.pub.ro sau echipa de IOCLA pentru a afla răspunsuri la întrebările voastre.

Depunctari teme

Codul vostru trebuie nu numai să “meargă”, ci și să respecte anumite standarde. Aveți mai jos o listă de potențiale erori de care trebuie să țineți cont în momentul realizării unei teme. Nerespectarea indicațiilor poate atrage dupa sine depunctări proporționale cu gravitatea erorii.

  • Label-uri și variabile numite nesemnificativ (x1, x2, a, b, c). Pentru denumirea unei variabile ce itereaza printr-un vector se pot folosi denumirile uzuale i, j, k însă denumiri de genul label1, label2, introduc ambiguitate
  • Comentarii in cod care pot fi ambigue, insuficinete sau lipsa comentariilor
  • Cod duplicat
  • Hardcodări pentru a trece teste. Natura testelor este orientativă și menite să va ajute în realizarea temei, implementarea vostră este partea pe care o vom nota. Apelați la forum daca nu sunteți siguri daca ceva constituie hardcodare
  • Încărcarea unui README în alt format decât fisier text (să nu fie .docx, .pdf)
  • Secvente de instructiuni care nu ajuta la rezolvarea efectiva a temei. Ex:
mov eax , 500
inc eax
xor eax, eax
  • Utilizarea secvențelor 'sub esp, 4; mov [esp], eax' în locul 'push eax' sau 'mov eax, [esp]; add esp, 4' în locul 'pop eax'
  • Temele care nu trec de procesul de asamblare (build) nu vor fi luate în considerare.

Penalizare pentru teme copiate

În general, considerăm că măsurile punitive sunt ultimele de luat în considerare. În măsura în care tema este realizată individual, fără aport de cod sursă problematic din exterior, atunci nu este temă copiată.

Noțiunea de temă copiată se referă, fără a fi limitată, la situații precum:

  • două teme care seamănă suficient de mult pentru a putea trage această concluzie;
  • folosirea de cod sursă de pe Internet care este evident soluția la temă;
  • folosirea unor bucăți din codul altui coleg;
  • accesul la codul altui coleg pe durata desfășurării temei;
  • modificarea unei teme existente;
  • urmărirea codului altui coleg;
  • ajutor direct în realizarea temei (altcineva a scris cod sau a dictat codul);
  • altcineva a scris tema (de bună voie, cu plată sau alte beneficii).

În cazul în care două teme sunt considerate copiate, atât sursa cât și destinația se vor depuncta identic, fără discuții relative la cine a copiat de la cine și a cui e vina. Excepția face situația în care destinația a obținut acces fără permisiune la sursă, iar sursa nu a avut intenția de a oferi tema (sau bucăți din temă) spre copiere.

Primul caz de temă copiată duce la scăderea punctajului temei din punctajul aferent materiei (adică nu primiți punctajul pe temă și, suplimentar, vi se scade și punctajul pe temă). Recidiva (încă o temă copiată) duce la anularea punctajului și repetarea materiei în cadrul anului universitar următor.

Reiterăm faptul că obiectivul nostru nu este și nu va fi penalizarea pentru copiere. Considerăm copierea ca fiind un act neonest care va fi pedepsit dacă are loc. Obiectivul nostru este însă să prevenim copierea; pentru aceasta oferim suportul și resursele echipei atât pe forumurile pe cs.curs.pub.ro cât și în discuții față în față. Vă rugăm să le folosiți cu încredere; o abordare onestă la realizarea temelor va însemna și un câștig de cunoștințe și abilități pentru voi.

Restanță/mărire

Sesiunea de restanță/mărire se desfășoară în septembrie. În cadrul sesiunii de restanță/mărire se va reface doar examenul final.

Dacă și după sesiunea de restanță/mărire din septembrie nu obțineți punctaj suficient, veți repeta materia în anul universitar viitor.

Refacerea materiei

Pentru studenții care refac materia în cadrul anului universitar curent, în mod implicit, punctajele se resetează la începutul semestrului.

Catalogul de anul trecut (2018-2019) este disponibil pe wiki.

Dacă se dorește, studenții care refac materia pot păstra punctajul de laborator din anul universitar anterior în următoarele variante:

  • pot păstra nota pe activitatea de laborator
  • pot păstra nota pe teme
  • pot păstra nota atât pe activitatea de laborator cât și pe teme

Se păstrează nota de anul trecut, nu punctajul. Nota din catalogul de anul trecut pentru activitatea dorită (laborator sau teme) este trecută în poziția aferentă din catalogul de anul acesta; se aplică pe nota astfel trecută ponderile din acest an.

Cei care doresc păstrarea notei de laborator și/sau teme vor trebui să posteze un mesaj pe acest thread până cel târziu vineri, 25 octombrie 2019.

Mesajul trebuie sa aibă următorul conținut:

NUME Prenume, grupa actuala, grupa veche
Doresc păstrarea notei la activitatea de TODO.

În loc de TODO, folosiți una dintre opțiunile:

  • laborator
  • teme
  • laborator și teme

Un exemplu de mesaj este:

IONESCU Adrian, 334CC, 323CB
Doresc păstrarea notei la activitatea de laborator și teme.

Vom publica modificările în catalog și în sheetul de Echivalari.

Studenții care refac materia pot participa la laborator cu o singură grupă, în limita locurilor disponibile (au prioritate studenții din semigrupa afișată la orar).

iocla/reguli-notare.1578095585.txt.gz · Last modified: 2020/01/04 01:53 by gabriel_danut.matei
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0