Programare 2
Public syllabus for 2025-2026
Academic overview
Teaching team
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
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
Evaluation and delivery
| Activity | Criteria | Methods | Percentage |
|---|---|---|---|
| C |
|
|
|
| C |
|
|
|
| S |
|
|
|
| S |
|
|
|
| S |
|
|
|
| S |
|
|
|
| S |
|
|
|
| S |
|
|
|
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)