Anul universitar 2023 - 2024
Anul I, Semestrul I
Cursul introduce studenţilor principalele noţiuni, tehnici şi unelte necesare realizării programelor pe calculator, de la cele mai simple, la aplicaţiile complexe, într-o prezentare axată pe limbajul C. Materialul principal al cursului este reprezentat de cartea lui Brian Kernighan şi Dennis Ritchie - “The ANSI C Programming Language”.
În urma parcurgerii tuturor activităţilor oferite de cursul Programare, studenţii vor fi capabili să:
Pentru a putea urmări, înţelege şi aplica cunoştinţele dobândite în cadrul cursului de programare, studentului îi sunt recomandate cunoştinţe anterioare legate de operarea unui PC şi utilizarea de bază a unui sistem de operare (de preferinţă Linux). Aceste cunoştinţe sunt introduse şi aprofundate şi separat în cadrul cursului de Utilizarea Sistemelor de Operare, astfel că pe parcursul semestrului, studentul va deveni mai familiar cu mediul de lucru. Cunoştinţele anterioare legate de programare (în special limbajul C), dobândite în liceu sau prin studiu individual, vor uşura învăţarea şi munca de rezolvare a problemelor, însă conţinutul cursului nu va presupune cunoscută în prealabil nici o noţiune din acest domeniu, oferind şanse egale tuturor studenţilor.
Fiecare componentă a materiei corespunde unei anumite ponderi din nota finală, astfel:
Pentru a promova, trebuie îndeplinite simultan condiţiile:
În continuare sunt prezentate detalii despre fiecare activitate în parte.
Examenul parţial se va susţine scris. Nu o să dureze mai mult de 50 de minute şi o să fie alcătuit din 2 părţi:
Data parţialului este:
Materia pentru parţial cuprinde toate cursurile pana la cel de alocare dinamica inclusiv.
Examenul parţial nu se poate reface, iar materia care intră la parţial o să o regăsiţi şi la examenul final.
Examenul final se va susţine scris. Data examenului se va stabili de către studenţi de comun acord cu titularul de curs.
Temele de casă sunt în număr de 4 şi fiecare este notată cu câte 100 de puncte ce se vor scala corespunzător în echivlentul punctajului din nota finală. Enunţurile acestora vor fi publicate pe site-ul de curs. De asemenea, fiecare temă va avea deadline-ul precizat în enunț.
În cazul întârzierii trimiterii temelor de casă, se aplică următoarea regulă: pentru fiecare zi (24 de ore) întârziere, se vor scădea 10 puncte din nota acordată. Fiecare tema o sa mentioneze numarul de zile de intarziere permise.
Temele se vor trimite prin upload, pe Moodle, unde o sa se gasească câte un assignment corespunzator fiecărei teme.
Pentru detalii, citiţi secţiunea legată de politica de colaborare, din cadrul acestui document.
Pentru mai multe detalii legate de modul de rezolvare şi trimitere a temelor de casă, consultaţi secţiunea dedicată acestui aspect din cadrul acestui document.
Programul general al laboratorului este cel publicat pe pagina principală a cursului, pe săptămâni. Laboratorul este obligatoriu, întrucât la fiecare şedinţă va fi acordată câte o notă, bazată pe activitate.
Un laborator nu se poate recupera decât în săptămâna în care a fost pierdut, cu anunţarea asistentului de la grupă şi cu aprobarea asistentului la care se face recuperare. În cazul în care din această cauză numărul de studenţi depăşeşte capacitatea laboratorului, prioritate vor avea studenţii din semigrupa care are atunci laboratorul în orar.
Conţinutul laboratoarelor va fi publicat pe site la începutul semestrului.
Comunicarea joacă un rol important în informarea şi pregătirea fiecăruia, şi echipa cursului de Programare este conştientă de acest lucru. Din acest motiv, site-ul cursului pune la dispoziţia studenţilor un forum în care aceştia pot discuta şi pune întrebari legate de temele de casă date spre rezolvare şi a subiectelor de programare ce se pot dezvolta în jurul acestora.
Asistenţii vor sta la dispoziţia studenţilor pentru a le răspunde la nelămuriri legate de enunţul temelor şi laboratoarelor.
În acelaşi timp, cursul promovează reuşitele personale şi vor fi sancţionate, în concordanţă cu regulamentul facultăţii, orice acţiuni de fraudare sau plagiat. Astfel:
Î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:
Î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.
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 în toate formele sale. Vă rugăm să le folosiți cu încredere; credem că o abordare onestă la realizarea temelor va însemna și un câștig de cunoștințe și abilități pentru voi.
Criteriile luate în calcul la notarea temei sunt:
README
care însoţeşte tema de casă.README
Pentru a evita problemele legate de diversele configuraţii de testare a temelor, pentru corectarea şi evaluarea lor se va pune la dispoziţie o maşină virtuală în care se vor corecta temele.
Tema trebuie trimisă sub forma unei arhive .zip
(NU .rar, .ace, .arj, .exe sau alte formate) şi trebuie să conţină:
README
în rădăcina arhivei. La începutul fişierului trebuie să apară numele şi grupa celui care a trimis tema.makefile
, care trebuie sa conțină reguli pentru build
și clean
.Arhiva trebuie să conţină doar sursele, fişierul makefile, README şi eventuale fişiere de test. Arhiva NU va conţine fişiere executabile sau obiect.
Numele arhivei va fi de forma Grupa_Nume_Prenume.zip. Exemplu: 311CA_Popescu_Ion.zip
Dacă arhiva nu respectă specificaţiile de mai sus nu va fi acceptată şi astfel tema nu va fi luată în considerare.
Pentru trimiterea si corectarea temelor vom folosi platforma vmchecker.
How to:
Observaţii:
Dacă aţi trimis deja o temă şi doriţi din diverse motive să o trimiteţi din nou, puteţi face acest lucru respectând întocmai protocolul de mai sus.
Ultima versiune ajunsă pe site va fi cea luată în considerare la corectare şi condiţiile de punctare vor fi cele din ziua în care aceasta a fost uploadată.
Temele sunt individuale. Copierea integrală sau parţială a unei teme duce la anularea punctajului pentru TOATE temele atât pentru sursă cât şi pentru destinaţie (pentru detalii vezi secţiunea referitoare la politica de colaborare).
Laboratorul de Programare se va desfăşura la nivel de semigrupă. Din raţiuni de spaţiu şi calculatoare disponibile, şi pentru a asigura confortul necesar fiecărui student, fiecare grupă va fi împărţită în două semigrupe, cât mai bine balansate.
Deşi alcătuirea semigrupelor va fi aproximativ aceeaşi pentru toate laboratoarele desfăşurate în acest semestru, nu sunt excluse unele variaţii. Astfel, la cererea studenţilor implicaţi, se pot face schimburi între semigrupe, la nivelul acestui laborator, dar fără a afecta numărul de studenţi din fiecare semigrupă, sau componenţa semigrupelor din celelalte laboratoare. Toate aceste modificări trebuie efectuate în decurs de o săptămână de la începerea semestrului. Orice altă modificare dupa această perioadă va fi acceptată numai în condiţii speciale şi cu titlu temporar.
Laboratorul durează 2 ore şi are loc în fiecare săptămână. Prezenţa este obligatorie, întrucât la fiecare şedinţă va fi acordată câte o notă (a se vedea secţiunea următoare), şi prezenţa va fi implicit făcută pe baza acestei note.
Activitatea de laborator constă din prezentarea pe scurt, de către asistent, a noţiunilor teoretice şi apoi din rezolvarea pe calculator a o parte sau a întregului set de probleme propuse.
Rezolvarea problemelor se va face realizând programe în C, compilate cu GCC.
La sfârşitul fiecărui laborator, asistentul va acorda câte o notă de la 0 la 10 fiecărui student, bazată pe activitatea acestuia din cadrul laboratorului. Criteriile de notare vor avea la bază:
Astfel este încurajată o atitudine cât mai activă în timpul laboratoarelor; o atitudine pur pasivă nu va fi punctată şi echivalează cu o absenţă. Este de asemenea încurajată interacţiunea cu asistenţii atât la laborator cât şi pe forum.
Nota primită la sfârşitul semestrului pe activitatea de laborator va fi media aritmetică a notelor primite în cadrul fiecărei şedinţe de laborator. În cazul unor laboratoare, punctajul total este posibil să depăşească 10 puncte. Punctele acumulate în plus pot compensa punctajele de la alte laboratoare. În timpul semestrului situaţia la laborator va putea fi consultată la această adresă. Asistenţii vor actualiza pe cât posibil în timp real situaţia pentru a permite evidenţa clară a prezenţelor şi pentru a preîntâmpina orice probleme de natură administrativă.
Studenții care repetă materia pot opta pentru păstrarea punctajului pe parcurs sau a punctajului la examen (dupa caz) din anul universitar anterior. Păstrarea punctajului se face doar cu acordul titularului de curs. Studenții vor solicita păstrarea punctajului prin completarea unui formular online care va fi disponibil în primele 8 săptămâni de facultate și va fi anunțat pe Moodle.
Atenție! Păstrarea punctajului pe parcurs nu permite modificarea lui prin acumularea unor puncte suplimentare în activități pe parcurs din anul universitar curent, dar permite anularea lui dacă se încalcă politica de colaborare.
În speranţa că veţi urma acest curs cu aceeaşi plăcere şi entuziasm cu care a fost realizat, echipa cursului de Programare vă urează mult succes! :)