Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Informatică
Programul de studii: Informatică - linia de studiu maghiară
Limba de predare: Maghiară

SYLLABUS

I. Általános adatok
Kód	Tantárgy neve	
MID0005	Programare logică şi funcţională	

Félév	Órák: C+S+L	Kategória	Típus	
3	2+0+1	specialitate	obligatorie	

II. Foállásban az  Egyetem  oktatói
Név	Tudományos	Oktatói	Tanszék	Tevékenység	
	fokozat	státus		E	Sz	L	
CSATO Lehel	Dr.	Lect.	Limbaje şi Metode de Programare	*			

Társult oktatók
Név	Tudományos	Intézmény	Állás	Tevékenység 	
	fokozat		típusa	E	Sz	L	

III. A tantárgy célkituzései
1. Sa deprinda studentul cu noi paradigme de programare (programarea functionala si programarea logica)
2. Sa introduca cate un limbaj de programare pentru fiecare din aceste paradigme (Common Lisp si Prolog)
3. Sa induca ideea utilizarii acestor paradigme in functie de necesitatile aplicatiilor
4. Sa asigure baza necesara urmaririi unor cursuri avansate	

IV. A tantárgy tartalma
1. Programare Functionala. Limbajul LISP
  1.1. Programare si limbaje de programare. Programare imperativa vs. programare declarativa. Introducere. Importanta programarii functionale ca noua metodologie de programare. Istoric si prezentare a limbajului LISP.
  1.2. Elemente de baza Lisp. Structuri dinamice de date. Reguli sintactice si semantice. Clasificarea functiilor Lisp. Functii primitive în Lisp. Predicate de baza în Lisp. Predicate pentru liste; pentru numere. Functii logice si aritmetice. Definirea functiilor utilizator. Ramificarea prelucrarilor. Metoda variabilei colectoare. Exemple.
  1.3. Gestiunea simbolurilor. Alte functii de acces la liste. OBLIST si ALIST. Functii cu caracter destructiv. Comparatii. Alte functii interesante. Exemple.
  1.4. Mecanisme definitionale evoluate Forma EVAL. Forme functionale; functiile  FUNCALL si APPLY.  Expresii LAMBDA. Expresii LABEL. Generatori, argumente functionale. Functii MAP. Forme iterative. Exemple.
  1.5. Alte elemente ale limbajului Lisp. Structuri de date. Macrodefinitii. Argumente optionale. Exemple.

2. Programare Logica. Limbajul PROLOG
  2.1. Elemente fundamentale ale limbajului Prolog. Fapte si reguli Prolog. Intrebari. Strategia de control în Prolog. Variabile si propozitii  compuse. Variabile anonime. Reguli de definire a potrivirilor. Model de flux. Sectiunile unui program Prolog. Exemple.
  2.2. Programul Prolog. Domenii predefinite. Întrebari interne si externe. Predicate  cu aritate multipla. Simbolul IF (Prolog) si instructiunea IF (alte limbaje). Directive de compilare. Expresii aritmetice si comparatii. Operatii de intrare / iesire. siruri de caractere. 
  2.3. Backtracking. Controlarea backtracking-ului. Predicatele fail si ! (cut).  Utilizarea lui !. Tipuri de taieturi. Predicatul "not". Liste Prolog. Recursivitate. Exemple de tratare a backtracking-ului. Gasirea tuturor solutiilor în acelasi timp. Exemple de predicate Prolog. Predicate nedeterministe. 
  2.4. Obiecte compuse si functori. Unificarea obiectelor compuse. Argumente de tipuri multiple; liste eterogene. Compararea obiectelor compuse. Backtracking cu ciclari. Exemple de proceduri  recursive. Cadrul stivei. Optimizarea prin recursivitate de coada. Utilizarea taieturii pentru pastrarea recursivitatii de coada.
  2.5. Structuri de date recursive. Arborii ca structuri de date. Construirea si traversarea unui  arbore. Arbori de cautare. Baza de date interna a sistemului Prolog. Sectiunea database. Declararea bazei de date interne. Predicate relativ la operatii cu baza de date interna. 
  2.6. Backtracking in Prolog. 
  2.7. Gestiunea fisierelor în PROLOG. Elemente de grafica.

3. Topici diverse
  3.1. Alte limbaje functionale si logice. Versiuni de LISP. Versiuni de PROLOG.
  3.2. Exemple de aplicatii. Programe prezentate comparativ în Lisp, Prolog si limbaje imperative. Aplicatii specifice. 

V. Könyvészet
1. SERBAN G., POP H.F., Elemente avansate de programare in Lisp si Prolog. Aplicatii in Inteligenta Artificiala, Editura Albastra, Cluj-Napoca, 2006
2. FIELD A., Functional Programming, Addison Wesley, New York, 1988.
3. GIUMALE G., et. al., LISP, 2 Volume, Editura Tehnica, Bucuresti, 1987.
4. HOGER C.J., Introduction to Logic Programming, Academic Press, New York, 1984.
5. KLEENE S.E., Object Oriented Programming in Common Lisp, Addison Wesley, New York, 1989.
6. PARV B., VANCEA Al., Fundamentele limbajelor de programare, Litografia Universitatii Babes-Bolyai Cluj-Napoca, 1992.
7. REEDE C., Elements of Functional Programming, Addison Wesley, New York, 1989.
8. STREINU I., Lisp, Editura Stiintifica si Enciclopedica, Bucuresti, 1986.
9. WALKER A., et. al., Knowledge Systems and Prolog. A Logical Approach to Expert Systems and Natural Processing, Addison Wesley, New York, 1987.
10. WINSTON P.H., Lisp, Addison Wesley, New York, 2nd edition, 1984.
11. WINSTON P.H., Artificial Intelligence, Addison Wesley, New York, 2nd edition, 1984.
12. FLACH P., Simply Logical Intelligent reasoning by Example, John Wiley & Sons, Chichester, England, 1994
13. * * *, Documentatia produselor: Gold Common Lisp 1.01 si 4.30,XLisp, Free Lisp.
14. * * *, Documentatia produselor: Turbo Prolog 2.0, Logic Explorer, Sicstus Prolog.
15. http://www.ifcomputer.com/PrologCourse, Lecture on Prolog
16. http://www.lpa.co.uk, Logic Programming	

VI. Az oktatói tevékenység heti tematikája

VII. Alkalmazott didaktikai módszerek

VIII. Értékelés
Fiecare student trebuie sa demonstreze ca a atins un nivel acceptabil de cunoastere si intelegere a domeniului, ca este capabil sa exprime cunostintele intr-o forma coerenta, ca are capacitatea de a stabili anumite conexiuni si de a utiliza cunostintele in rezolvarea unor probleme. Nota finala va fi compusa luand in calcul urmatoarele componente: lucrarea scrisa (NE - 60%); activitatea de laborator(NA - 10%) (intarzierea in predarea lucrarilor de laborator; absentele de la activitatea de laborator); nota pe documentatiile si programele realizate in timpul activitatii de laborator (NL - 10%); doua teste practice de laborator in timpul semestrului(NT - 10%+10%). Se acorda punctaj in plus pentru realizarea unui proiect optional. Participarea la examenul scris este conditionata de notele NL si NT, care trebuie sa fie cel putin 5. Pentru promovare, NE si nota finala trebuie sa fie >=5.	

IX. Kiegészíto könyvészet

	Dátum,						Eloadás felelose,
								Lect. Dr. CSATO Lehel