Sesiune Septembrie 2020
Urmatorii studenti, care au semnalat probleme tehnice, pot participa la sesiunea de reexaminare din Septembrie 2020: 2R SMOC M.A. FLORINA-ELENA 2E MANOLACHE V. GABRIEL-IONUŢ Informatii reexaminare: Sala: C309 Ora: 09h Timp de lucru: 2h Este necesar sa aveti pix albastru si foi albe A4 de hartie. Orice alte foi (e.g., dictando, A5) conduc la nepromovarea examenului. Puteti avea in format listat sau scris de mana materialele pe care le-ati studiat (e.g., notele de curs, rezolvari la seminar). Sunt interzise mijloacele electronice de comunicare (telefon, laptop, tableta, casca bluetooth etc.) Toate procedurile sanitare trebuie respectate cu strictete. In particular: 1. Veti purta pe tot parcursul examenului o masca care sa acopere cat mai ermetic gura si nasul si care sa fie pozitionata corect pe fata, iar inainte de intrarea in sala va veti spala pe maini cu apa si sapun sau veti folosi un dezinfectant. 2. Fiecare student se va aseza in propria banca, la distanta semnificativa. 3. Geamurile din sala vor ramane deschise inainte si pe tot parcursul examenului, pentru a aerisi incaperea. 4. Veti respecta toate celelalte reguli din cladire. Nerespectarea procedurilor sanitare conduce la nepromovarea examenului si reprogramarea acestuia pentru celalalt participant.
Desfășurare cursuri și laboratoare la distanță
- Curs
- Laborator Ștefan Ciobâcă (miercuri, 18h00 - 20h00)
- Laboratoare Andrei Arusoaie (miercuri, 08h00 - 12h00)
- Laborator Rodica Condurache (marți, 08h00 - 10h00)
Cursul de Programare Funcțională de miercuri, între orele 16h00 - 18h00, se va desfășura online, sub forma unui "Live" pe grupul de Facebook PF 2019-2020. Toți studenții înscriși la PF sunt invitați să se alăture grupului. Vă rog să trimiteți orice observații sau sugestii pe adresa stefan.ciobaca@gmail.com.
Laboratorul se va desfășura prin Skype, iar studenții sunt invitați să participe de acasă. Studenții sunt rugați să adauge profesorul (ID Skype: stefan.ciobaca) în lista de contacte.
Laboratorul se va desfășura prin Skype, iar studenții sunt invitați să participe de acasă. Studenții sunt rugați să adauge profesorul (ID Skype: andrei.arusoaie) în lista de contacte.
Laboratorul se va desfășura prin Skype, iar studenții sunt invitați să participe de acasă. Studenții sunt rugați să adauge profesorul (ID Skype: Rodica.bozianu) în lista de contacte.
Programare Funcțională 2019-2020 (semestrul de vară)
Posibile proiecte
- Notare
- Examen Parțial (50p, înlocuit de un proiect în contextul crizei sanitare) + Examen Final (50p) + Activitate Seminar (bonus 10p) = 110p.
- Pentru promovare sunt necesare cel puțin 45p.
- Nota se calculează în funcție de distribuția statistică a punctajelor.
- Contact
- Curs: Ștefan Ciobâcă - stefan.ciobaca@gmail.com
- Laborator: Andrei Arusoaie - arusoaie.andrei@info.uaic.ro
- Laborator: Rodica Condurache - rodica.condurache@info.uaic.ro
Procedură examen online (a se citi cu atenție)
Necesar software și hardware pentru studenți
- Hardware minim necesar: calculator conectat la internet (desktop, laptop, tabletă sau smartphone) și cameră foto (camera smartphone-ului sau tabletei, webcamul calculatorului/laptopului);
- Hardware recomandat, suplimentar față de hardware-ul minim necesar: imprimantă și scanner;
- Hardware de backup, dacă nu funcționează internetul: telefon mobil conectat la rețea;
- Software minim necesar:
- browser pentru descărcarea fișierului comprimat și criptat .zip care conține cerințele (e.g., Mozilla Firefox) și pentru vizualizarea paginii cursului.
- utilitar pentru dezarhivare și decriptare de fișiere .zip (e.g., WinZip pentru Windows, zip/unzip pentru Linux/MacOSX).
- utilitar pentru scanare/pozare și transformare în
fișier PDF:
- Android: aplicația Google Drive.
- IPhone/IPad: aplicația Notes.
- Software de backup: utilitar pentru calculul hasului SHA1 (Linux: sha1sum, Windows: sha1sum.exe).
- Altele: cont Google pentru a putea completa formularul Google Forms cu upload de fișier.
Recomandări pentru studenți
- Să se asigure că au o conexiune bună la internet.
- Să se asigure că au la dispoziție o conexiune de backup de acces la internet (date mobile) în cazul în care conexiunea principală eșuează.
- Să se asigure că atât laptopul, cât și telefonul mobil sunt încărcate 100% în ziua examenului, pentru a evita eventualele sincope cauzate de pene de curent.
- Să își instaleze software-ul necesar din timp și să învețe să îl folosească (unzip, sha1, scan).
- Să se asigure că pe parcursul examenului au la dispoziție un spațiu adecvat, în care pot lucra în liniște, precum și materialele necesare: pix/stilou, suficiente foi A4, inclusiv ciorne.
- Să se asigure că își lasă suficient timp pentru a trimite soluțiile (sunt 20 de minute prevăzute).
- Înainte să scaneze/încarce soluțiile, să verifice că trimit versiunea finală de rezolvare, să trimită rezolvările complete și să nu încurce fișierele între ele.
- Să participe la simulare, pentru familiarizare cu procedura de scanare/fotografiere/încărcare.
Procedură test scris
- Cu cel puțin 24 de ore înaintea examenului, profesorii alcătuiesc aproximativ teste în format .PDF, câte unul pentru fiecare student. Testul aferent studentului Ion-George Ionescu, grupa A1, anul I se generează în fișierul testpa-2019-2020-sesiune-IonGeorgeIonescu-IA1.pdf (simulare/restanta in loc de sesiune). Fișierul conține în antet și datele de identificare ale studentului pentru care este valabil testul în cauză.
- Cu 24 de ore înainte de examen, profesorii încarcă testele pe site-ul web al Facultății, la adresa http://profs.info.uaic.ro/~stefan.ciobaca/testpf20192020/. Fiecare test este comprimat într-un fișier .zip cu o parola generată aleatoriu.
- Cu 0-24 ore de înainte de examen, când are acces la internet, fiecare student downloadează propriul test (varianta criptată).
- La ora începerii examenului, profesorul publică pe pagina cursului parola aferentă testului.
- În cazul excepțional în care un student nu are acces la internet la ora începerii examenului, trebuie sa trimită un sms profesorului la 0754 237 044, iar profesorul îi trimite parola prin sms.
- Studenții decriptează documentul și îl vizualizează pe monitor sau îl listează, dacă au acces la imprimantă.
- Rezolvarea se redactează pe foi A4 curate, folosind pix/stilou de culoare închisă (e.g., albastru, negru). Nu sunt permise altfel de foi decât A4 (e.g., nu sunt permise foi rupte dintr-un caiet de tip dictando sau matematică).
- Examenul se redactează de mână și sunt permise maxim 2 pagini A4 de rezolvare, numerotate de la 1 la 2, inclusiv declarația de onestitate.
- Timpul alocat testului este de 1h30, iar studenții au la dispoziție încă 20 de minute (1h50 în total) pentru a trimite rezolvarea folosind formularul Google.
- Cele maxim 2 pagini A4 se pot scana folosind un scanner, camera foto a telefonului sau, eventual, camera web a calculatorului/laptopului și trebuie să fie compuse într-un singur fișier .PDF.
- Scanarea rezolvării trebuie să aibă maxim 2MB.
- În cazul excepțional în care se întrerupe accesul la internet în jumătatea de oră destinată trimiterii soluției, studentul calculează hash-ul SHA1 pentru fișierul .PDF și trimite profesorului un SMS la adresa 0754 237 044 care conține numele studentului, valoarea hash calculată, precum și motivul pentru care nu a reușit încărcarea rezolvării, urmând să încarce fișierul cât mai curând, cel târziu în 24 de ore.
Declarația de onestitate (se scrie la începutul rezolvării)
Subsemnatul, …, student al Facultății de Informatică, Universitatea Alexandru Ioan Cuza, declar că rezolvarea care urmează îmi aparține în integralitate și că cunosc regulamentul universității referitor la sancțiunile posibile (inclusiv nepromovarea disciplinei, exmatriculare) aplicate în caz de fraudă sau tentativă de fraudă.
Recomandare scanare folosind Google Drive (Android)
Tutorial video: https://www.youtube.com/watch?v=Ph8uRw6EBSg
Recomandare scanare folosind Notes (iPhone)
Tutorial video: https://www.youtube.com/watch?v=yEQRKnu4yLo
Recomandare scanare folosind CamScanner (iPhone)
Tutorial video (iPhone): https://www.youtube.com/watch?v=Btu1ACLLa_A
Recomandare scanare folosind CamScanner (Android)
Tutorial video (Android): https://www.youtube.com/watch?v=LUQDCUl1L4g
Referințe Bibliografice
Plan de Lucru
-
Săptămâna 1
Curs: Introducere în programarea funcțională. Limbajul Haskell. Funcții recursive)
Note de curs: PDF
Laborator: Introducere in implementarea Haskell GHC (ghci, comenzi, expresii și tipuri, definitii functii, tipuri pentru functii, incarcare din fisier, functii recursive cu tipuri explicite). Fișa de exerciții: PDF.
Săptămâna 2
Curs: Tipuri de date algebrice.
Fișa de exerciții pentru laborator: PDF.
Săptămâna 3
Curs: Funcții de ordin superior. discutie limbaj C, Script Haskell
Săptămâna 4
Curs: Clase de tipuri. Property-based Testing. Script Haskell, Interactiune GHCI
Fișa de exerciții pentru laborator: (PDF).
Săptămâna 5
Curs: Module. Evaluarea leneșă. Monada IO și programe executabile (directorul cu sursele de la curs)
Fișa de exerciții pentru laborator: (PDF).
Săptămâna 6
Curs: Proiectarea unei aplicații cap-coadă în Haskell.Script Haskell, Interactiune GHCI
Fișa de exerciții pentru laborator: (PDF).
Săptămâna 7
Curs: Lambda-calcul netipizat (note de curs).
Fișa de exerciții pentru laborator: (PDF).
Săptămâna 8
Curs: precendetul.
Fișa de exerciții pentru laborator: precedenta.
Săptămâna 9
Curs: Strategii de evaluare (note de curs, caiet de lucru, playlist Youtube).
Fișa de exerciții pentru laborator: precedenta.
Săptămâna 10
Curs: Programare în lambda-calcul -- codări Church și recursivitate (caiet de lucru, playlist Youtube).
Fișa de exerciții pentru laborator (strategii): (PDF).
Săptămâna 11
Curs: Lambda-calcul simplu tipizat. Extensii ale STLC (PDF).
Fișa de exerciții pentru laborator: continuarea fișei de la lambda-calcul: PDF. Implementați codările Church pentru true, false, and, or, not, xor, 0, 1, 2, 3, 4, 5, succ, add, mult, exp, pair, fst, snd, pred, subtract, Y-combinator, factorial.
Săptămâna 12
Curs: Inferența de tipuri pentru STLC (PDF).
Fișa de exerciții pentru laborator: PDF.
Săptămâna 13
Curs: Recapitulare.
Fișa de exerciții pentru laborator: PDF.
Săptămâna 14
Curs: Simulare examen (16h00 - 17h30 + 20 minute pentru scanarea și trimiterea soluțiilor). Subiectele (criptate) pot fi descărcate de la adresa https://profs.info.uaic.ro/~stefan.ciobaca/simulare-2020-05-27/. Parola pentru decriptare va fi publicată mâine la ora 16h00.
Parola pentru accesarea subiectelor este SYxpB7ph.
Trimiteți soluția scanată într-un singur PDF de maxim 2 mb aici.
Laborator: lucru la proiect și prezentări.
Feedback simulare
Sesiune
Parola pentru subiecte: dRHrhqXADAratdh97PXqDaES.
Link la care se încarcă rezolvarea: formular încărcare rezolvare.
Recomandări:
- Lăsați suficient timp pentru scanare; verificați că scanul este de calitate și că ați scanat ce trebuie.
- Folosiți o ciornă și asigurați-vă că va încadrați în 2 pagini.
- Pregătiți din timp opțiunea de lucru offline: sha1sum și o aplicație care scanează offline (e.g., CamScanner), pentru cazul în care rămâneți fără conexiune la Internet.
Rezultate examen sesiune: pdf. În cazul în care există greșeli, vă rog să ma contactați. Atenție! Cei care au "-1" au lipsit de la examen și este absolut necesar să se prezinte în restanță pentru a obține o notă în acest semestru.
Selecție Proiecte Studenți
Smaranda Perju - Joc Câinele și Vulpea (github)
Mihaela-Diana Pascariu - Algoritmul Rabin-Karp (github)
Ștefan Iacob - Algoritmul Boyer-Moore (github)
(distinguished project) Cecilia Mariciuc - Joc Gomoku (five-in-a-row) (github)
Andrei Răileanu - Algoritmi Genetici (github)
Emanuel Tabără - Simulated Annealing (github)
Octavian-Paul Ungureanu - Interpretor Brainfuck (github)
(distinguished project) Ioana Măniga - Purely Functional Lists (github)
Răzvan Andrei Bejenariu - Arbori Roșu-Negru (github)
(distinguished project) Cristi Rusu - Regex matcher folosind derivative Brzozowski (github)
Radu Placintă - Sokoban (github)
Alexandru Crăciun - Snake (github)
Gabriela Neagu - KMP (github)
Cătălin Sumănaru - Joc Claim (github)
Ioan-Valentin Cernovschi - Joc Război (github)
Georgiana Vasilica - CNF (github)
Ovidiu Mariciuc - Joc Bridg-It (github)
Mutu Gheorghita - Brick Breaker github.
Iacobescu Tudor - 15 Puzzle CLI github.
Crainiciuc Stefan Calin - Asistent pentru gasirea formei reduse a unui BDD github.
Nastasă Petru-Alexandru - Asistent deductia naturala pentru logica propozitionala github.
Stoica George - Aducerea unei formula din logica de ordin 1 in FNSC github.
Tiperciuc Stefan - Blackjack multiplayer github.
Teodora Trincă - Joc Impas (github)
Rezultate Finale Sesiune
Observațiile privind punctajele trebuie trimise până duminică la adresa stefan.ciobaca@gmail.com.
Rezultate: PDF.
Reexaminare (18 iunie 2020)
Subiectele pentru reexaminare vor fi publicate (parolat) în această seară. Parola va fi publicată la începutul examenului. Procedura de susținere rămâne aceeași.- Subiecte (parolate): folder cu subiecte
- Parola: D84a6XZ35G6HP7TD7gP8XXRs. (atentie! nu copiati punctul final)
- Link pentru upload rezolvari: formular incarecare rezolvare.
- New! Rezultate reexaminare: fisier PDF. Observațiile privind punctajele trebuie trimise până duminică la ora 18h00 la adresa andrei.arusoaie@gmail.com.
Atentie! La ora 12h00 (fix) se inchide formularul pentru incarcarea solutiei.
Atentie! Nerespectarea procedurii de examinare = 0 puncte.
Barem Reexaminare
Q1. Forma normala a unui termen cu beta-reduceri marcate: 10 puncte Se acorda punctaj partial proportional cu numarul de beta-reduceri corecte; Q2. Se acorda punctaj ca mai jos doar dacă beta-reducerile sunt marcate corect (a) 2.5 pct (b) 2.5 pct (c) 2.5 pct (d) 2.5 pct Dacă nu se mai poate continua cu reducerile atunci punctajul va fi ajustat corespunzator. Pentru raspunsul explicit (i.e., nu se mai poate continua cu strategia X) punctajul va fi intreg. Pentru raspunsuri in care strategiile sunt aplicate gresit (adica strategia nu se mai poate aplica, reducerea se face in alta parte, etc.) se vor puncta cu 1 pct. doar acei pasi facuti corect pana la prima greseala. Q3. Gasirea lui t: 2 pct Rationament: 8 pct Q4: - Cate 2 pct pt CT-APP (de 2 ori) si CT-LAM (de 2 ori) = 8 pct 2 pct pentru restul aplicatiilor CT-VAR Q5: 2 pct pt gasirea lui t 8 pct pentru justificare