Școala Româno-Britanică
Modulul 4 Clasa a X-a | C++

Proiectul Modulului 4

Tema proiectului: Aplicație C++ care rezolvă o problemă de optimizare reală folosind metoda Greedy și verifică soluția cu metoda Divide et impera

Rezultat practic: Un program C++ complet, documentat și susținut oral, care demonstrează stăpânirea ambelor metode ale modulului pe o problemă reală aleasă de tine (Competențele 3.3, 4.3, 5.3 și 6.3).

Competențele 3.3 - 6.3 Săptămânile 24 - 27
SPECIFICAȚIA PROIECTULUI MODULULUI 4

Ce trebuie să realizezi?

Proiectul modulului este o aplicație C++ originală, construită și explicată integral de tine, care rezolvă o problemă reală de optimizare folosind metoda Greedy și verifică soluția cu metoda Divide et impera. Proiectul se susține oral în fața profesorului.

Tema proiectului și exemple de probleme reale
Cerințe pe niveluri de notă
Criteriile de evaluare
Termenul de predare

Tema proiectului

Tema: „Aplicație C++ care rezolvă o problemă de optimizare reală folosind metoda Greedy și verifică soluția cu metoda Divide et impera".

Exemple de probleme reale potrivite

  • Planificarea livrărilor: un curier are o listă de comenzi cu termene; alege cât mai multe comenzi compatibile (Greedy: sortare după termen), iar o funcție D&I verifică că planul respectă ordinea termenelor.
  • Încărcarea unui vehicul: obiecte cu valoare și greutate, capacitate limitată; umple greedy după eficiență (Greedy), iar o funcție D&I verifică că încărcătura totală respectă capacitatea pe segmente.
  • Alocarea resurselor într-o bibliotecă: cărți cu intervale de împrumut dorite de cititori; număr maxim de cititori serviți (Greedy), verificare prin interclasare sau căutare binară (D&I).
  • Gestionarea unui bufet: porții cu preț și timp de pregătire, buget și timp limitate; alegere greedy după raportul preț / timp (Greedy), verificarea încadrării prin funcții recursive pe intervale (D&I).

Poți alege orice altă problemă reală, cu condiția să folosești explicit ambele metode: Greedy pentru construirea soluției și D&I pentru verificarea ei sau pentru pregătirea datelor.

Recomandare: alege o problemă cu date reale, măsurabile (greutăți, ore, prețuri, termene) și descrie contextul în 5-10 rânduri, ca un mic studiu de caz. Originalitatea temei și calitatea contextului real se punctează distinct.

Cerințe pe niveluri de notă

Nivel Cerințe minime
Nota 5 - 6
  • O metodă funcțională: programul rezolvă problema cu Greedy și produce rezultate corecte pe cel puțin 3 exemple test
  • Cod C++ care compilează, cu funcțiile înainte de main() și tablouri globale
  • Descrierea pe scurt a problemei alese și a criteriului greedy folosit
Nota 7 - 8
  • Ambele metode: Greedy construiește soluția, iar D&I o verifică (sau pregătește datele)
  • Validări ale datelor de intrare: n în limite, valori pozitive, verificarea coerenței datelor
  • Testarea pe cazuri limită: n = 1, capacitate zero, listă goală, valori egale
  • Justificarea scrisă a corectitudinii Greedy (substructură optimală sau argument de schimb)
Nota 9 - 10
  • Modularizare: funcții cu rol unic, nume sugestive, program organizat pe etape
  • Eficiență: sortare prin interclasare sau alt algoritm O(n log n) acolo unde n este mare
  • Comparație experimentală: timpi de rulare măsurați pentru n = 1000, 10000, 100000, prezentate într-un mic tabel
  • Documentație: enunțul problemei, datele de intrare/ieșire, pseudocodul ambelor metode, exemple test, concluzii

Cum citești tabelul: cerințele se cumulează: nota 9-10 presupune și cerințele de la nota 5-6 și 7-8. Nu poți sări peste niveluri.

Criterii de evaluare și termen

Criteriile de evaluare

  • Corectitudinea programului (40%): rezultate corecte pe exemplele date și pe cazurile limită; ambele metode utilizate corect.
  • Calitatea codului (20%): modularizare, denumiri sugestive, comentarii pe pași logici, respectarea stilului BAC.
  • Documentația (20%): enunț, pseudocod, exemple test, tabel de comparație experimentală (unde se cere), concluzii.
  • Susținerea orală (20%): explicația codului linie cu linie, răspunsurile la întrebările profesorului, înțelegerea demonstrabilă a ambelor metode.

Termenul de predare

  • Predarea fișierelor: cu cel puțin două săptămâni înainte de încheierea modulului, pe platforma clasei, într-o arhivă care conține: codul sursă (.cpp), documentația (.docx sau .pdf) și fișierele de test folosite.
  • Susținerea orală: în ultima săptămână a modulului, în timpul orelor de informatică, conform programării afișate de profesor.
  • Întârzierea: proiectele predate după termen se evaluează cu nota maximă posibilă 8, cu excepția situațiilor justificate medical.
  • Lucrul în echipă: proiectul este individual; se acceptă discuții și consultații între colegi, dar fiecare elev predă un proiect propriu, scris de el.

Regula anti-AI - citește cu atenție

Nota se acordă DOAR în urma susținerii orale în fața profesorului, unde elevul explică codul linie cu linie și răspunde la întrebări despre funcționarea programului.

  • Programul trebuie să fie înțeles integral de autor: orice funcție, orice variabilă, orice decizie de algoritm trebuie explicată la susținere.
  • Un program generat automat și nedobândit este identificabil la susținere: dacă nu poți explica o linie sau nu poți modifica programul pe loc, nota se acordă pentru nivelul de înțelegere demonstrat, nu pentru textul predat.
  • La susținere, profesorul poate cere modificarea programului în timp real (de exemplu, schimbarea criteriului de sortare sau adăugarea unei validări) pentru a verifica înțelegerea.
  • Respectați regulamentul școlar privind folosirea instrumentelor digitale: acestea pot fi folosite ca ajutor la învățare, dar predarea presupune cunoașterea dovedită a fiecărei linii de cod.