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:

  1. Functional programming
    • small recursive functions (concentrated on list processing)
    • abstract data type implementation (set, table, array,...)
  2. 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

  1. "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)
  2. 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

Home
Research
Projects
Publications
Books
SCM
Teaching
Links
Last updated:
Mária Bieliková bielik [zavináč] fiit-dot-stuba-dot-sk
Design © 2oo1 KoXo