Skip to content

Programare 2

Public syllabus for 2025-2026

Academic overview

Programme
IR
Period
Year 1, Semester 2
Credits
5
Weeks
14

Curriculum placement

Appears in study plans

Teaching team

Course coordinator
Seminar coordinators
Elena Flondor, Todor Ivașcu, Grigorie Smarandache

Learning time distribution

Total
Curriculum Lecture Practice Total Weekly Lecture Practice
70 28 42 5 2 3
Exam hours
8
Individual Study Bibliography study Field study Homework Tutoring Others
47 19 9 19 0 0
Overall
125

Learning outcomes

Knowledge

  • (6a03a0922355ae3a04d2f214) Identifică, explică și argumentează concepte fundamentale de structuri de date, algoritmi și paradigme de programare, precum și a arhitecturii calculatoarelor;
  • (6a03a0922355ae3a04d2f218) Alege, descrie și explică paradigmele moderne de programare, inclusiv programarea funcțională, orientată pe obiect și paralelă, utilizând limbaje și framework-uri actuale;
  • (C9) Descrie principiile fundamentale ale programării orientate obiect
  • (C19) Explică cum interacționează obiectele și metodele într-un program orientat pe obiecte
  • (C21) Recunoaște structura unui program de modelare obiect pentru a determina relația dintre clase și interfețe
  • (C17) Recunoaște definițiile claselor, obiectelor, metodelor și interfețelor în cadrul programării orientate pe obiecte
  • Acest curs oferă cunoștințe fundamentale pentru cursurile de Programare III - Java, Algoritmi si structuri de date II, Inginerie Software

Skills

  • (6a03a0932355ae3a04d2f236) Elaborează, dezvoltă și demonstrează soluții software complexe utilizând algoritmi eficienți și paradigme diverse de programare;
  • (A19) Transpune o serie de cerințe într-un concept de software clar și organizat
  • (A20) Creează și documentează structura produselor software, inclusiv componentele, cuplarea și interfețele. Asigură fezabilitatea, funcționalitatea și compatibilitatea cu platformele existente
  • Abilități specifice:
  • Abilitatea de a implementa programe modulare C/C++ folosind funcții, structuri și clase
  • Abilitatea de a gestiona memoria dinamică în siguranță și corect
  • Abilitatea de a proiecta și implementa soluții simple orientate pe obiecte în C++

Responsibility

  • (6a03a0942355ae3a04d2f2db) Dezvoltă un mediu colaborativ și își asumă responsabilitatea pentru succesul livrării proiectelor la timp și conform cerințelor;

Online platform

elearning.e-uvt.ro

Course content

Content Methods Obs
Curs 1-2: (2h) Elemente de programare structurată. Programare procedurala. Introducere în C. Date. Modalități de reprezentare a datelor. Tipuri de date. Variabile: declarare, clasa de memorare, domeniu, vizibilitate, durata de viață. Funcții de intrare/ieșire standard – scanf, printf. Operatori și expresii. Clase de operatori. Precedenta operatorilor și ordinea de evaluare a expresiilor. Conversii implicite de tip. Instrucțiunea decizionale – if, switch. Instrucțiuni de ciclare – while, for, do while. Instrucțiuni de control a execuției ciclurilor – continue, break. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [1] capitolele 2, și 3
Curs 2: (2h) Instrucțiunea de revenire din apel de funcție – return. Funcții. Structura programelor. Declararea funcțiilor. Convenția de apel C. Contextul de apel. Comunicarea între funcții. Funcții recursive. Directive de preprocesare. Macrodefiniții. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [1] capitolul 4
Curs 3: Tablouri. Pointeri. Șiruri de caractere. Alocarea memoriei Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [1] capitolul 5
Curs 4: (2h) Structuri. Declarare. Operații cu structuri. Accesul la membri. Tablouri de structuri. Pointeri la structuri. Declarații de tip (typedef). Uniuni. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [1] capitolul 6
Curs 5-6: (4h) Tipuri de date. Îmbunătățiri aduse de C++. Clase. Concepte fundamentale: clasa și obiectul. Declararea claselor. Instanțierea obiectelor. Membrii unei clase. Controlul accesului la membrii unei clase. Constructorii clasei. Destructorul clasei. Membrii statici ai unei clase. Cuvântul cheie this. Funcții membre constante. Funcții și clase prietene (friends). Funcții membre inline. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolele 2, 10 si 14
Curs 7: (2h) Redefinirea operatorilor. Operatori unari și binari. Redefinirea operatorului de asignare (=). Constructori și conversii de tip. Tratarea excepțiilor. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolul 11
Curs 8: (2h) Funcții șablon. Particularizarea funcțiilor template. Rezolvarea numelui în cazul funcțiilor șablon. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolul 13
Curs 9: (2h) Biblioteca STL (Standard Template Library). Organizarea bibliotecii. Containere standard. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolul 16
Curs 10: (2h) Biblioteca STL (Standard Template Library). Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.uvt.ro, [3] capitolele 17 si 20
Curs 11: (2h) Clase derivate. Moștenirea. Concepte și clase. Clase derivate. Controlul accesului. Supraîncărcarea funcțiilor membre. Constructorii și destructorul clasei derivate. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolul 12
Curs 12: (2h) Ierarhii de clase. Polimorfism. Funcții virtuale. Funcții virtuale pure. Clase abstracte. Moștenire multiplă. Clase virtuale. Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolul 15
Curs 13: (2h) Concepte de programare OO. Principiile SOLID, GRASP Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro,
Curs 14: (2h) Streamuri. Smart pointers Prelegere, conversație, exemplificare Referințe: Materiale disponibile pe platforma elearning.e-uvt.ro, [3] capitolele 23 si 24

Course bibliography

[1] B. Kernighan and D. Ritchie - The C Programming Language (2nd edition), Prentice-Hall, 1988. [2] B. Kernighan și D. Ritchie - Limbajul C, Editura Teora, 2000. [3] Bjarne Stroustrup - The C++ Programming Language (3rd edition), Addison Wesley, 1997. [4] Bjarne Stroustrup - Limbajul de programare C++, Editura Teora, 2003. [5] L. Negrescu – Limbajele C și C++ pentru începători, vol. 1, Ed. Albastră, Cluj-Napoca, 2001. [6] I. Muşlea - C++ pentru avansati, Ed. MicroInformatica, 1994. [7] I. Muşlea - Introducere in C++, Ed. MicroInformatica, 1994.

Seminar content

Content Methods Obs
L1. (2h-fizic) Prezentarea mediului de lucru. Etapele de compilare, linkeditare și execuție. Folosirea operatorilor în aplicații simple. Aplicații cu instrucțiuni condiționale, repetitive. Utilizarea funcțiilor în aplicații. Funcții recursive. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Studenții au acces la sinteza aferentă tematicii de laborator și la enunțurile problemelor disponibile pe platforma elearning.e-uvt.ro. Cadrul didactic oferă detalii suplimentare, răspunde întrebărilor studenților și verifică / evaluează modul în care studenții au rezolvat problemele.
L2. (2h-fizic) Tablouri. Aplicații cu șiruri de caractere. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L3. (2h-fizic) Pointeri. Alocare dinamică. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L4. (2h-fizic) Structuri de date și uniuni. Test de laborator cu durata de 1 oră (problemele se vor evalua automat și manual). Evaluare. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Testul nu se poate reda în nici una din sesiunile de examinare. Testul va fi planificat în afara orelor de laborator la o oră și sală anunțată.
L5. (2h-fizic) Îmbunătățiri aduse limbajului C (nelegate de concepte orientate obiect). Familiarizarea cu sintaxa de C++. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L6. (2h-fizic) Clase. Constructori. Destructori. Crearea de tipuri abstracte de date și manipularea lor. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L7. (2h-fizic) Supraîncărcarea operatorilor. Adăugarea de comportament claselor prin supraîncărcarea operatorilor. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L8. (2h-fizic). Relații de asociere între clase. Evaluare. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L9. (2h-fizic) Template-uri custom Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L10. (2h-fizic) Folosirea funcțiilor și structurilor de date din STL pentru tipuri abstracte de date create de utilizator. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L11. (2h-fizic) Moștenire simplă. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L12. (2h-fizic) Moștenire multiplă. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L13. (2h-fizic) Recapitulare Test de laborator cu durata de 1 oră (problemele se vor evalua automat și manual). Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Testul nu se poate reda în nici una din sesiunile de examinare. Testul va fi planificat în afara orelor de laborator la o oră și sală anunțată.
L14. (2h-fizic) Streams Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Idem
L1 (2h-online) Prezentarea mediului de lucru. Prezentare github-classroom. Enunțarea și distribuirea proiectului individual în limbajul C (Proiect 1 - individual). Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Evaluare intermediară. Se prezinta un exemplu de meniu textual. Se prezintă standarde documentare a metodelor. Studentul alege proiectul I.
L2 (2h-online) Lucrul cu fișiere. Clean code. Prezentarea și analiza livrabilelor proiectului individual. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Evaluare intermediară. Se prezintă modul de citire/scriere a datelor în fișier Studentul prezintă meniul textual pentru proiectul ales
L3 (2h-online) Structuri de date. Prezentarea și analiza livrabilelor proiectului individual. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Evaluare intermediară. Studentul prezintă modul de grupare a datelor gestionate în proiect și cel puțin 3 funcționalități implementate pentru proiectul ales
L4 (2h-online) Prezentarea și analiza proiectului individual. Evaluare pe parcurs Studentul prezintă proiectul finalizat
L5 (2h-online) Enunțarea și distribuirea proiectului în echipă în limbajul C++ (Proiect 2 - echipa). Preluarea argumentelor din linia de comandă. Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Evaluare intermediară. Se prezintă modul de preluare al argumentelor de pe linia de comandă Se formează echipe de 2 studenți, se alege proiectul II.
L6 (2h-online) Prezentarea și analiza livrabilelor proiectului în echipă Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Evaluare intermediară. Se prezinta structurile de date care vor fi utilizate în cadrul proiectului
L7 (2h-online) Prezentarea și analiza livrabilelor proiectului în echipă Problematizare, dialog, învățare prin colaborare, învățare prin descoperire. Evaluare intermediară. Se prezintă meniul (se vor utiliza argumente in linia de comandă pentru a activa diferite funcționalități) și cel puțin 3 funcționalități implementate pentru proiectul ales

Seminar bibliography

Idem cu cea de la curs & https://developer.lsst.io/cpp/api-docs.html

Corroboration

Conținutul este în concordanță cu structura cursurilor similare de la alte universități și acoperă aspectele fundamentale necesare familiarizării cu problematica programării orientate obiect. Abilitatea de a identifica, proiecta, implementa și analiza probleme care se pot rezolva folosind principii orientate obiect este esențială pentru orice activitate din domeniul informaticii. Competențele oferite de această disciplină sunt necesare unui specialist IT pentru a identifica soluții de rezolvare a unor probleme concrete, indiferent de domeniul specific de activitate.

AI tools guidance

Studenții pot utiliza instrumente de inteligență artificială generativă doar ca suport teoretic (explicații, exemple simple de sintaxă). Generarea de cod sursă pentru teme, laboratoare sau evaluări nu este permisă, identificare utilizării genAI pentru generarea codului sursă duce la anularea sarcinii. Orice cod prezentat trebuie să fie rezultatul muncii individuale a studentului. Copierea codului de la AI poate bloca formarea competențelor fundamentale.

Evaluation and delivery

Activity Criteria Methods Percentage
C
  • Se evaluează:
  • Corectitudinea și coerența răspunsurilor la întrebările teoretice;
  • Înțelegerea conceptelor fundamentale de programare procedurală și orientată obiect;
  • Capacitatea de a analiza fragmente de cod C/C++ și de a explica comportamentul acestora;
  • Rezolvarea corectă a problemelor de programare, respectând cerințele și sintaxa limbajelor C/C++
  • Examenul se poate promova doar dacă nota de la această probă este cel puțin 4.
  • Examen scris în sesiunea de examene - obligatoriu
  • 30.0%
C
  • Se evaluează:
  • Corectitudinea răspunsurilor;
  • Înțelegerea conceptelor de bază din programare C/C++;
  • Interpretarea corectă a fragmentelor de cod
  • Răspunsuri la teste scurte în timpul semestrului
  • 1.0%
S
  • Evaluare abilitatea de a rezolva o problema în limbajul C:
  • declararea și utilizarea corectă a tablourilor și pointerilor;
  • evitarea erorilor frecvente (acces în afara limitelor, dereferențiere invalidă);
  • gestionarea corectă a memoriei dinamice;
  • structurarea clară a codului și utilizarea funcțiilor;
  • obținerea rezultatelor corecte pentru datele de intrare furnizate.
  • Test practic pe parcursul semestrului (saptamâna 5/6). Testul nu se poate reda în nici una din sesiunile de examinare.
  • 15.0%
S
  • Evaluare abilitatea de a rezolva o problema în limbajul C++ respectând conceptele specifice programării OO:
  • Proiectarea și implementarea corectă a claselor;
  • Utilizarea adecvată a tipurilor STL și a algoritmilor asociați;
  • Gestionarea corectă a resurselor și a memoriei;
  • Claritatea și lizibilitatea codului;
  • Corectitudinea rezultatelor obținute.
  • Test practic pe parcursul semestrului (saptamâna 13). Testul nu se poate reda în nici una din sesiunile de examinare.
  • 15.0%
S
  • Evaluare abilitatea de a rezolva o probleme în limbajele C și C++ pe baza paradigmelor de programare procedurală și orientată obiect
  • Punctajul obținut prin rezolvarea problemelor de pe platforma elearning.e-uvt.ro,
  • aferentă fiecărui laborator
  • 10.0%
  • 25.0%
  • 8.0%
S
  • Evaluare abilitatea de colaborare cu cadrele didactice care desfășoară laboratorul
  • Activitate laborator. Se va puncta implicarea în desfășurarea laboratorului (ex. promptitudinea răspunsurilor la sarcinile enunțate de cadrul didactic de la laborator)
  • 1.0%
S
  • Proiect I (proiect individual) - C
  • Termen de predare Laborator 4 online
  • 10% evaluare intermediară în săpt. 3-4:(L2);
  • 10% evaluare intermediară în săpt. 5-6 (L3); și
  • 30% evaluare finală proiect în săpt. 7-8 (L4).
  • 14.0%
S
  • Proiect II (proiect echipă) - C++
  • Termen de predare - sesiunea de examen
  • 10% evaluare intermediară în săpt. 11-12 (L6);
  • 10% evaluare intermediară în săpt. 13-14 (L7); și
  • 30% evaluare finală proiect în sesiunea de examene.
  • Fiecare membru al echipei va încărca la fiecare laborator modificările pe github-classroom.
  • 14.0%

Performance standards

Pentru nota 9-10 la curs: noțiunile de teorie acoperă toate detaliile discutate în cursuri, sunt oferite exemple relevante, problemele sunt abordate prin respectarea principiilor programării procedurale și orientate obiect. Pentru nota 9-10 la testele de laborator: testele automate rulează integral, codul respectă principiile programării procedurale, respectiv orientate obiect (ex. încapsularea datelor, realizarea cerințelor în metode separate). Nota finală se calculează ca medie ponderată a notelor acordate pentru componentele specificate la 10.4 și 10.5. Examenul se consideră promovat dacă media este cel puțin 5 si nota la partea scrisă este mai mare de 4 (nu e necesar ca fiecare notă să fie mai mare de 5). La fiecare dintre sesiunile de examen (inclusiv cele de restanță și măriri) nota se calculează după aceeași regulă. În sesiunea de restanțe/măriri se poate reda doar examenul scris. Regulile referitoare la prezență sunt cele din regulamentele UVT privind frecventarea activitatii de laborator. Dacă disciplina nu este promovată în cele 2 sesiuni, în anul II se va recontracta.

Additional info

(none)