Labs

2020/2021

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 la laborator 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

Laborator 2

Attach:Ghid-Laborator-Recursivitate.pdf

4. Liste (functii de parcurgere)

Laborator 4

Notite de curs -- Liste

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)

Notite Laborator Grupa 6.1

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

Laborator 10

Observatii formalizare

Exemplu rezolutie

Exercitii rezolutie

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.

Laborator 12

Exercitii rezolvate

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