Labs
2021/2022
Regulament laborator
Fiecare student va participa la laborator impreuna cu semigrupa in care a fost repartizat. Daca doreste sa vina la o alta ora, poate sa faca schimb permanent cu cineva din alta semigrupa, dar doar la inceputul semestrului, pana cel tarziu in saptamana a doua.
Pe parcurs se vor da 3 teste din materia parcursa in cadrul laboratoarelor anterioare. Cele 3 teste sunt obligatorii si media lor va reprezenta nota de la laborator (nota pentru activitatea pe parcurs). Pentru a promova laboratorul, fiecare din cele 3 teste trebuie promovat (cu nota minima 5.00). Un test nepromovat, sau de la care s-a absentat, va putea fi recuperat in ultima saptamana (14). Media de la laborator ramane cu 2 zecimale, nu se rotunjeste.
La sfarsitul fiecarui laborator studentii primesc o tema din materia laboratorului curent. Aceste teme sunt obligatorii, iar realizarea lor la un nivel satisfacator conteaza pentru prezenta. Prezenta la laborator este obligatorie, dar, datorita situatiei epidemiologice curente, aceasta va consta 50% din prezenta online/fata in fata la laborator (situatia evolueaza continuu, si in functie de restrictiile impuse vom putea trece in online, reveni fata in fata etc.) si 50% din rezolvarea la un nivel satisfacator al temelor. In total se pot obtine astfel un maximum de 20 de puncte de prezenta, 16 puncte fiind minimum pentru a promova laboratorul.
Pentru a instala mediul de dezvoltare consultati acest ghid Attach:InstallVSCodeOCaml.pdf
Notele de la laborator sunt/vor fi disponibile pe Campus Virtual
IMPORTANT. Rezolvările temelor trebuie să adere la urmatoarele standarde:
1. Codul trebuie scris īntr-un fișier pur text (nu .doc, .docx, jpg, etc.), nu trimiteți poze cu foi pe care ați scris cod, și să aibă extensia .ml (nu .txt)
2. Fișierul descris mai sus trebuie să compileze. Adică dacă deschideți un interpretor ocaml și īl īncărcați folosind comanda # #use "test.ml";;, sau dacă din Visual Studio folosiți F6 nu trebuie să aveți nicio eroare de compilare. Īn consecință: tot codul parțial scris, sau care nu vrea să compileze, trebuie pus īn comentarii, (* acesta este un comentariu in Ocaml. *) tot textul care nu este cod, de exemplu: explicațiile, numărul problemelor, etc. trebuie pus īn comentarii. trimiteți un singur fișier per laborator/tema cu toate problemele, le puteți delimita frumos cu linii goale și comentarii.
3. Regula cu formatul fisierului se poate īncălca intr-o anumită măsura in momentul īn care trebuie să trimiteți lucruri care nu sunt cod.
Link-uri utile:
Pagina oficiala a distributiei OCaml
Manualul OCaml, mai ales functiile predefiniti si modulele standard
Try OCaml -- interpretor online de OCaml
Think OCaml de Allen Downey și Nicholas Monje -- introducere in programarea functionala
Real World OCaml de Anil Madhavapeddy, Jason Hickey, Yaron Minsky -- OCaml: concepte, structuri de date, tool-uri, si multe altele
2. Recursivitate, potrivire de tipare, definitii interne
8. Relatii si Dictionare -- continuare
Vezi si parcurgerea in adancime si/sau prin cuprindere a unui graf reprezentat cu ajutorul unui dictionar
(avand drept cheie un nod si drept valoare ori lista nodurilor adiacente, ori multimea acestora) aici.
Parcurgerile pot fi adaptate pentru a determina anumite proprietati ale grafului:
- are graful cicluri? (prin adaptarea parcurgerii in adancime)
- distanta minima intre 2 noduri (prin adaptarea parcurgerii prin cuprindere)
10. Logica propozitionala
Reprezentarea formulelor cu ajutorul BDD (constructie de BDD-uri aplicand recursiv descompunerea Shannon)
Aducerea formulelor in forma CNF
Determinarea realizabilitatii unei formule
11. Logica predicatelor
Demonstratoare de teoreme: Prover9 Z3 (exemplul de la curs, formalizat in formatul specific Z3, aici )
12. Automate. Expresii regulate
Conversie din NFA in DFA. Conversie expresie regulata in/din automat. Minimizare DFA.
Simulator de DFA, NFA si convertor din expresii regulate (regex) aici.
Expresii regulate online aici. Verificare echivalenta pentru expresii regulate aici
13. Automate. Expresii regulate (continuare + test)
14. Recuperari