====== Examen PP (sesiunea 2021) ====== Examenul la PP se va desfasura online, si va consta intr-o **proba de programare** ce va contine: * **(L/P)** o intrebare legata de Calcul Lambda //sau// un exercitiu de programare din Prolog * **(E1)** un exercitiu de programare functionala scurt * **(E2,E3)** doua exercitii de programare functionala elaborate Mentiuni: * tematica subiectului **(L/P)** nu va fi la alegere ci va fi stabilita aleator. * intrebarile nu se vor modifica in timpul examenului. * exista posibilitatea ca, pe langa cele 4 intrebari, studentii sa primeasca alte intrebari din **solutia lor la proiect**, sau din **laboratoarele rezolvate** pe parcursul semestrului. * examenul va fi **open-book**. Puteti consulta resurse online si folosi functii din biblioteca. Daca vor exista restrictii in acest sens, acestea vor fi mentionate explicit in timpul examenului. * examenul se rezolva **individual**, prin toate mijloacele ce tin **exclusiv** de studentul examinat. Orice suspiciune vizavi de asistenta externa in timpul examenului poate prelungi durata acestuia, precum si numarul de intrebari. Punctaje si promovare: * Subiectele **(L/P)** si **(E1)** vor valora fiecare cate **1p**, si vor fi punctate **binar** (1-rezolvat, 0-nerezolvat). * Subiectele **(E2)** si **(E3)** vor valora fiecare cate **2p**, si vor fi punctate: 0(nerezolvat), 1(partial), 2(complet). * La examen se pot obtine maxim **6p** ce reprezinta echivalentul a 40% din nota finala la PP. Sunt necesare minim **3p** pentru promovare (50% din valoarea examenului). Organizare si durata: * Examenul se va desfasura pe durata a trei zile (6,7,8 iunie). * In fiecare zi, examinarea va incepe la ora 10:00. * Studentii vor putea stabili **ziua** in care doresc sa participe la examen, in limita locurilor disponibile, pe principiul "primul-venit, primul-servit", folosind un spreadsheet care va fi publicat ulterior. * Un examen va dura **20min** (durata fixa!) si se va desfasura intr-un slot de 25 min. * Programarea studentilor din fiecare zi, pe sloturi, va fi afisata cu **24h** inaintea examenului din ziua respectiva. ====== Exemplu de examen ====== (L/P) Ilustrati pasii de evaluare normala pentru expresia $math[(\lambda x.(x\;x)\;(\lambda y.y\;\lambda z.z))] (E1) Scrieti o functie care primeste o lista de string-uri si transforma in uppercase **ultimul** caracter din **fiecare** string. (E2) Definiti tipul de date abstract polimorfic ''Stack'', precum si operatiile ''push'' si ''pop''. Inrolati tipul in clasa ''Show''. Scrieti o functie care primeste doua stive sortate si intoarce **interclasarea** lor. (E3) Definiti lista infinita a aproximarilor lui $math[e^x], folosind relatia: $math[e^x = \displaystyle\sum_{n = 0}^\infty \frac{x^n}{n!}]