Functional and Logic Programming
Basic Information
- Offered by: Institute of Informatics and Software Engineering
- Type of Study: Undegraduate in Informatics
- Specialization track: Software Engineering
- Duration: 12 weeks
- Semester: Autumn
- Hours per week (lectures - labs): 3 - 2
- Credits: 6
- Reader: Mária Bieliková
- Prerequisites:
- undegraduate discrete math including first-order logic, functions, relations;
basic knowledge about programming techniques would be helpful
|
to Homepage |
|
to Teaching |
|
to the Top |
Objective
Logic and functional programming has been applied successfully to a large number of domains such as building applications ranging from natural language understanding, programming language compilers, intelligent databases and expert systems. In this course two of programming paradigms are covered: functional and logic programming. Procedural and declarative aspects of thsese paradigms are discussed and compared with imperative programming. Functional programming is introduced through programming language LISP (LISt Processor). Programming language PROLOG (PROgramming in LOGic) is used for logic programming introduction. The goal of this course is to develop an understanding of non-conventional programming paradigms and to practice it. Programming in Lisp and Prolog is taught through programming schemas and examples.
Keywords: function, functional program, list, recursion, second order function, clause, Horn clause, logic program, resolution, unification, backtracking, Lisp, Prolog.
|
to Homepage |
|
to Teaching |
|
to the Top |
Contents
- Programming paradigms:
- terminology, procedural and declarative aspects of programming, expressions vs. commands
- Functional programming:
- function, data types, list, applicative list processing, recursion, second order function
- Logic programming:
- clause (fact, rule, goal), declarative and procedural aspects of logic programming, list processing, recursion, control structures in Prolog (cut, negation, inputs, outputs, repetition)
|
to Homepage |
|
to Teaching |
|
to the Top |
Laboratory Excercises
Labs are organized in two major segments:
- Functional programming
- small recursive functions (concentrated on list processing)
- abstract data type implementation (set, table, array,...)
- Logic programming
- small recursive predicates (concentrated on list processing)
- simple database application
|
to Homepage |
|
to Teaching |
|
to the Top |
Readings
- Bieliková, M. and Návrat, P.
- Functional and logic programming, STU, 1997. (in slovak)
- Molnár, L. and Návrat, P.
- Programming in Lisp, Alfa, 1988. (in slovak)
- Bratko, I.
- PROLOG Programming for Artificial Intelligence, Addison-Wesley, 2nd Edition, 1990.
- Csonto, J.
- Aplikacie jazyka prolog v UI, Technicka Univerzita v Kosiciach, Elektrotechnicka fakulta, 1992. (in slovak)
- Kalas, I.
- Ine programovanie - Stretnutie s jazykom lisp, Alfa, 1990. (in slovak)
- Kelemen, J. a spol.
- Zaklady umelej inteligencie, Alfa 1992. (in slovak)
- Polák, J.
- PROLOG, Grada, 1992. (in Czech)
- Rowe, N.C.
- Artificial Intelligence trough Prolog, Prentice-Hall International, Inc. 1988.
- Sangal, R.
- Programming Paradigms in Lisp, McGraw-Hill, 1991.
- Van Le, T.
- Techniques of Prolog Programming, John Wiley and Sons, 1993.
- Winston, P.H. and Horn, B.K.I.
- Lisp, 3rd Edition, Addison-Wesley, 1989.
|
to Homepage |
|
to Teaching |
|
to the Top |
Conditions to obtain a grade
- "pass" mark for labs which requires:
- active participation in labs
- elaboration of programs in Lisp and Prolog (the last date is lab in last week of the semester)
- at least 56% of marks
- Assignments for labs will constitute 30% of the final grade.
- Midterm and Final tests will constitute 70% of the final grade.
- Schedule for tests will be announced.
|
to Homepage |
|
to Teaching |
|
to the Top |
|
|
|
|