Toate informațiile despre testul practic din anul universitar 2023-2024 sunt comunicate pe Teams. Detaliile de mai jos pot fi utile pentru pregătirea pentru test, dar informațiile specifice din anii anteriori despre structura test, durata etc. nu mai sunt valabile.
Testul practic va avea loc online sâmbătă, 14 mai 2022, în săptămâna a 10-a de facultate.
Activitatea dureaza 3h 10min (09:50 - 13:00)
Testul practic va conţine 2 probleme uşoare, 2 probleme ușoare-medii și 2 probleme medii-grele. Va trebui să rezolvaţi la alegere câte o problemă din fiecare categorie.
Problemele se vor baza pe urmatoarele capitole studiate în cadrul cursului de PA:
Testul este open-book. Aveti acces la slide-urile de curs, laboratoare (ocw.cs.pub.ro/pa), internet. Puteti sa folositi cod pus la dispozitie de echipa de PA sau scris de voi inainte de testul practic, dar NU aveti voie sa preluati cod de pe internet.
NU aveţi voie să folosiţi internetul ca mijloc de comunicare, aceasta insemnand ca nu este permis sa puneti intrebari pe site-uri precum stackoverflow sau sa intrati pe Hangouts, Facebook Messenger, Google Docs, mail etc. Orice abatere de la aceasta regula, observata in timpul testului, va duce la anularea testului pentru persoana in cauza.
NU este acceptata preluarea de cod care rezolva, chiar si partial, probleme similare cu cele propuse.
Exemple de surse externe neacceptabile pentru cod: internet, codul altor colegi.
Exemple de surse externe acceptabile: cautarea de idei si algoritmi, preluare de cod pentru folosirea API-ului din limbajul dorit, cod propriu sau oferit de echipa de PA inainte de test.
Ne rezervăm dreptul de a penaliza orice nerespectare a acestor reguli. Toate solutiile trimise vor fi testate impotriva copierii.
Testul practic valorează 1.5 puncte din nota finală.
Evaluarea şi notarea se vor face în mod automat folosind platforma HackerRank.
Nerespectarea acestui reguli duce la anularea punctajului pe test intrucat copierea punctajelor in catalog se va face automat pe baza adresei voastre de email (aceeasi cu utilizatorul de Moodle).
Dacă nu aveţi cont pe HackerRank, vă sugerăm să vă înregistraţi până la data susținerii testului.
Problemele au punctaj intre 0p si 50p si fiecare problema are un numar de teste X precizat in enunt. Astfel, fiecare test valoreaza 50 / X puncte (de ex. daca X = 10, fiecare test valoreaza 5p). Toate testele sunt private.
Se vor puncta: o singura problema usoara, una medie si una grea. Punctajul pe fiecare tip de problema nu se aduna, ci va fi cel maxim pe acel tip (de ex: daca faceti ambele probleme usoare, una de 30p iar cealalta de 40p, punctajul pe problemele usoare va fi 40p). De asemenea, daca v-ati apucat de o problema usoara, de exemplu, si nu reusiti sa obtineti punctaj maxim pe aceasta, puteti incerca sa o rezolvati pe cealalta si veti obtine maximul punctajelor celor 2 probleme.
De asemenea, din cauza restricției de 16 caractere pentru numele contului, acesta trebuie să aibă următorul format: primele 8 litere din numele de familie (doar prima literă cu majusculă), inițialele primelor 2 prenume cu majusculă, apoi grupa.
Daca aveți deja cont pe HackerRank vă sfătuim să vă faceți unul nou care respectă constrângerile de nume cerute, altfel puteți să modificați numele public al contului existent.
Problemele pot fi rezolvate direct in browser, pe platforma HackerRank. De asemenea, puteti lucra in IDE-ul dorit si sa copiati codul scris in browser la finalizarea problemei pentru a o testa sau sa uploadati fisierul cu codul.
Puteti da Run pentru a va verifica solutia voastra pe exemplu (un test mic). De asemenea exista optiunea de a testa pe un custom testcase dat de voi. Pentru testele rulate se va arata si output-ul pentru a va putea depana codul mai usor. Output-ul pe testele mari este trunchiat.
In cazul in care un test pica, puteti face hover peste rezultat pentru a vedea cauza (wrong answer, time limit exceeded etc).
In enunt se va preciza cate teste are problema curenta si cate puncte valoreaza fiecare test. La Run All Tests platforma va marca toate testele cu passed / failed (verde / rosu), astfel incat puteti vedea daca ati trecut toate testele la o problema. Platforma nu afiseaza explicit punctajul acordat, dar il puteti deduce astfel:
De asemenea, puteti face submisii si in testul de anul trecut, cu acelasi scop (acomodarea cu platforma) - https://hr.gs/practice-pa-2020-unofficial.
Pentru studentii care vor sa rezolve problemele in C++:
Pentru studentii care vor sa rezolve problemele in Java: am pus la dispozitie in starter code o clasa - MyScanner - pe care recomandam sa o folositi in locul clasei Scanner pentru citirea de la stdin. Aceasta este bazata pe BufferedReader, care este mai rapid. Daca folositi Scanner-ul clasic, veti lua TLE (time limit exceeded) la unele teste. Interfata utila pentru test a clasei Scanner apare si in interfata clasei MyScanner. Pentru citirea în Java, vă recomandăm să folosiți BufferedReader cu InputStreamReader. O clasă care face asta și pe care o puteți folosi în timpul testului practic găsiți aici, folosită pentru a citi un vector de intregi de la stdin. Clasa oferă o interfață similară cu Scanner, dar este de aproximativ 2 ori mai rapidă decât Scanner. Nu este nevoie să o salvați pentru testul practic, o sa găsiți clasa în scheletul de pe HackerRank, aferent problemelor de la test.
Limbajele puse la dispozitie pentru rezolvarea testului sunt C, C++11 / C++14 si Java 7 / 8. Nu aveti schelet de cod pentru citire, cu exceptia clasei MyScanner pentru Java si a liniei din C++. Nu conteaza coding-style-ul (astfel ca puteti folosi variabile globale de exemplu). Nu e nevoie de comentarii in surse. Folositi timpul avut la dispozitie doar pentru rezolvarea problemelor.
Unele precizări utile legate de submisii se află aici, iar un exemplu de soluție acceptată pentru Hello World puteți găsi aici.
Pentru pregătire vă sfătuim sa rezolvați cât mai multe probleme de infoarena, hackerrank, leetcode si alte platforme cu probleme de algoritmică.
Asigurați-vă ca știți să folosiți structuri de date uzuale puse la dispoziție de limbajul în care veți coda, cum ar fi map, set, lista, etc.
De asemenea vă recomandăm laboratoarele și paginile de pe wiki:
Link-uri teste practice anii anteriori: