Sunteți pe pagina 1din 6

Master, anul univ. 2011 / 2012, sem.

I, (anul I IS) (anul II AI&DC romana si eng leza)

Cursul de Programare Logica si Functionala Avansata:

____________________________________________________________ A. Derulare cursuri ******************* Limbajul Lisp (progr. simbolica; programare functionala, recursivitate) - cursurile 1 si 2 Tehnici avansate in Lisp - cursurile 3 si 4 Inchideri lexicale si abstractizare date - cursurile 5 si 6 Limbajul Prolog - cursurile 7 si 8 Programare cu constrangeri - cursurile 9 si 10 Programare logica cu constrangeri - cursurile 11 si 12 Aplicatii; Sustinere teme - cursurile 13 si 14. In cadrul laboratorului for fi si doua prezentari ale editorului LaTeX. B. Informatii legate de Lisp si Prolog ************************************** 1. la Universitatea de Vest (incl. interpretoarele: clisp; gclisp; gnuprolog etc) le gasiti la adresa myri1.ieat.ro/plf (in reteaua Departamentului de Informatica). Tot aici gasiti directorul de faq-uri - organizate pe grupuri: ai (ailife; const raints; expert; fuzzy etc); limbaje (lisp; prolog, scheme etc). Suport de curs si laboratoare Lisp, Prolog: - www.info.uvt.ro/~cizbasa/lisp - www.info.uvt.ro/~cizbasa/prolog - http://beta.wikiversity.org/wiki/Functional_programming_--_2008-2009_--_info.u vt.ro - http://beta.wikiversity.org/wiki/Prolog_EN_--_2006-2007_--_info.uvt.ro

2. pe INTERNET a) Un mediu interesant (interactiv si adaptativ) de a invata notiuni introductive Lisp si recursivitate. http://www.psychologie.uni-trier.de:8000/projects/ELM/elmart.html b) O adresa cu referinte, ... http://www.apl.jhu.edu/~hall/lisp.html c) Format html a celei mai interesante carti de initiere in programare (bazata pe Scheme - o varianta Lisp): Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science) Harold Abelson, Gerald Jay Sussman, Julie Sussman, MIT Press http://mitpress.mit.edu/sicp/ O gasiti si la biblioteca! St. Trausanu-Matu - Programare in LISP. Inteligenta artificiala si web semantic, Ed. POLIROM, 2004 Practical Common Lisp, Peter Seibel, Apress, 2005 d) Rezolvari de probleme din Ansi lisp - Graham http://www.paulgraham.com/lispcode.html si din Patrick H. Winston and Berthold K. P. Horn. "LISP", 3rd edition. Addison-Wesley (Reading, MA), 1989. 611 pages. ISBN 0-201-08319-1 si alte carti ... http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/bookcode/0.htm l Ivan Bratko, Prolog: programming for artificial intelligence ISBN:0-201-40375-7, Addison-Wesley, 2000 e) Articole interesante: Jacques Cohen, Constraint logic programming languages, Communications of the ACM archive, Volume 33 , Issue 7 (July 1990), Pages: 52 - 68, ISSN:0001-0782 C. Teme / miniproiecte / referate de realizat ******************* a) Toate temele / miniproiectele se trimit prin e-mail. Structura este urmatoare: - o parte descriptiva (descriere probleme, mod de rezolvare, justificare / explicatii, platforma, date de testare semnificative (intrare + re zultate) foarte buna pentru aplicatii

- o parte cu codul sursa - cod comentat. Cele doua fisiere vor fi fisiere text. O sa-mi rezerv dreptul de a va contacta prin e-mail pentru explicatii sau de a va cere o intrevedere directa. Nu se trimit prin e-mail fisiere executa bile sau fisiere doc!!! b Referatul va fi scris in LaTeX (tip report) (http://www.latex-project.org/ h ttp://www.miktex.org/) si va contine circa 15 - 20 pagini, font de 12, spatiere normala (va contine titlul, autorul / autorii, abstract, inroducere, definire de termeni , notiuni, exemple, figuri, explicatii, bibligrafie (cel putin 7 referinte, in c are nu se iau in calcul adrese web) etc). Figurile se vor edita intr-un editor care genereaza text la iesire (gen Xfig), u rmand sa produca (prin export) incapsulari eps. Se vor trimite prin e-mail fisie rele sursa latex, figurile (daca exista, de exemplu: fisiere fig si eps), respec tiv fisierul postscript sau pdf corespunzator. Nu se admit prin e-mail figuri reprezentate ca si imagini! De asemenea, nu se admite conversia automata in LaTeX! CERINTE: 1. Pentru cei care nu au parcurs cursurile de Lisp si Prolog - la alegere din Lisp sau Prolog - 3 exemple de aplicatii recursive ce opereaza cu liste (de genul member) - comentate. 2. Pentru toata lumea una din cele doua variante ce urmeaza: i) un miniproiect la alegere din: MP1. Nucleu obiect in Lisp (creare clase cu ajutorul lui struct); mostenire simpla. MP2. Microeditor (gen - microemacs) in Lisp MP3. Lisp in Lisp (scrierea unui mini-interpretor Lisp in Lisp) MP4. Derivator simbolic in Lisp (pentru expresii preluate dintr-un limbaj de programare - de ex. C; cu conversie infixat in prefixat) MP5. Derivator simbolic in Prolog MP6. Analiza sintactica a frazelor din limba engleza in Lisp (vezi Winston) MP7. Analiza sintactica a frazelor din limba engleza in Prolog MP8. Problema celor n regine (caz particular n=8) cu vizualizarea tablei de sah si cu evidentierea pas cu pas a gasirii solutiei (incl. cazurile de esec) - este vorba de explicitarea backtracking-ului. Extensie (optional) la 3D (tabla nxnxn ). MP9. Editor HTML in Lisp MP10. Implementarea unui mecanism pentru gestiunea functiilor generice.

MP11. Definirea structurii de tip arbore in Lisp + operatii asupra arborilor. MP12. Abstractizare proceduri- Lisp. Operatii cu polinoame MP13. Abstractizare proceduri - Lisp. Operatii cu liste (stive, cozi ...) MP14. Definirea unei masini virtuale pentru operatii in limbaj de asamblare pent ru evaluarea expersiilor aritmetice. Optimizarea numarului de operatii. MP15. A Spam Filter MP16. Parsing Binary Files MP17. An ID3 Parser MP18. Web Programming with AllegroServe MP19. An MP3 Database MP20. A Shoutcast Server MP21. An MP3 Browser MP22. An HTML Generation Library, the Interpreter MP23. An HTML Generation Library, the Compiler MP24. Generator de sisteme expert in Lisp - cu inlantuire inainte MP25. Generator de sisteme expert in Lisp - cu inlantuire inapoi. MP26. Sistem expert de planificare in Lisp. MP27. Sistem expert cu inlantuire inapoi in Prolog. ... MPn+1. Propuneri proprii PS. Miniproiectul poate fi realizat si in echipa (2 persoane), cu cresterea core spunzatoare a complexitatii. ii) un referat cu o tema la alegere din: LISP / SCHEME R0: Recursivitate in Lisp R1. Construire abstractizari cu proceduri R2. Construire abstractizari cu date R3. Modularitate, obiecte si stari R4. Metalinguistic abstraction R5. Calcul bazat pe registri

R6. Argumente functionale. Inchideri lexicale in Lisp. R7. Macrouri in Lisp R8. Advanced macros in Lisp R9. CLOS - nucleu obiect in Common Lisp R10. Programare functionala in Scheme R11. Programare functionala in ML R12. Programamre functionala in Haskell R13. Programare functionala in CAML. R14. Lexical closure in Lisp R15. Advanced lexical closure in Lisp R16. Continuarea in SCHEME. PROLOG R101. Termeni Prolog, backtracking si unificare R102. Recursivitate in Prolog R103. Operatii cu liste in Lisp / Prolog R104. Operatii cu arbori in Lisp / Prolog R105. Controlul si negatia in Prolog CONSTRANGERI R201 Programre cu constrangeri R202 Metode de cautare completa R203 Mentinerea consistentei R204 Constangeri in domenii finite R205 Constangeri in domenii continue R206 - R210. Programare logica cu constrangeri (Bprolog / Ciao prolog / ECLiPSe / Gnu Prolog / SICStus Prolog / SWI-Prolog...) R211. Programare cu constrangeri (Oz / ...) R212. Concurrent CPS R212. Algoritmi distribuiti pentru programarea (logica) cu constrangeri

... Rm+1 Propuneri proprii

3. Tema (pentru toata lumea - considerata ca activitate de verificare a laborato rului) Se vor rula 3 exemple dintr-un limbaj (logic) cu constrangeri. Sursele vor fi in sotite de descrierea problemelor, explicatii, date de intrare, rezultate comenta te (tema poate fi suplinita printr-o prezenta activa la laborator) Nota: CP / CLP in unul din limbajele / implementarile: Oz (http://www.ps.uni-sb.de/oz2/), Eclipse (http://www-icparc.doc.ic.ac.uk/eclipse/), Sicstus Prolog (http://www.sics.se/sicstus/) sau o alta varianta de implementare CP / CLP. Termene: tema de la 1) - 10 noiembrie 2011 miniproiectul / referatul de la 2) 21 decembrie 2011 tema de la 3) - 12 ianuarie 2012 Alegerea miniproiectului / referatului se va face direct la curs sau prin e-mail cu confirmare (dar nu mai tarziu de 27 octombrie). Dupa aceasta data se va face o asignare automata.

O sa primiti sistematic suport de curs si materiale ajutatoare prin e-mail sau fotocopiate.

Succes! Viorel Negru

S-ar putea să vă placă și