Skip to content

Advanced Logic and Functional Programming

Public syllabus for 2025-2026

Academic overview

Programme
BD
Period
Year 1, Semester 1
Credits
5
Weeks
14

Curriculum placement

Appears in study plans

Teaching team

Course coordinator
Seminar coordinators
Mircea Marin

Learning time distribution

Total
Curriculum Lecture Practice Total Weekly Lecture Practice
42 28 14 3 2 1
Exam hours
8
Individual Study Bibliography study Field study Homework Tutoring Others
83 25 16 28 6 0
Overall
125

Learning outcomes

Knowledge

  • Students learn techniques of functional programming using the Lisp (or, more precisely, Racket) and Haskell language and (constraint) logic programming in the Prolog language. All these languages are declarative in the sense that the programmer describes the problem to be solved instead of indicating the exact sequence of actions to be taken for solving the problem.
  • These languages are used often in AI-related fields, such as machine learning and agent systems.

Skills

  • New tools, skills and problem-solving methods in the discipline of software engineering, using Functional Programming and Logic Programming. Emphasis will be put on using tools and concepts that are not available in other programming styles.
  • identify problems, create solutions, innovate and improve current practices

Responsibility

  • (1) Write programs using functional programming concepts and principles (2) Use Functional Programming to achieve high levels of abstraction and program correctness; (3) Solve appropriate problems using Logic Programming.
  • (2) Compare and contrast programming styles, such as Functional Programming, Logic Programming and Procedural Programming, and choose the one that is more appropriate for your problem.
  • (3) Identify the advantages and disadvantages of the alternative approaches to solve a problem.

Online platform

(none)

Course content

Content Methods Obs
L1.(2h) Introduction to declarative programming languages. Main features of logic programming and functional programming. Lecture, conversation, illustration
L2.(2h) Introduction to strict functional programming using the Racket language. Basic language idioms, atoms, lists, recursion. Lecture, conversation, illustration
L3.(2h) Racket: lambda abstraction, built-in functions, advanced data structures. Lecture, conversation, illustration
L4.(2h) Efficient computation techniques. Optimizations of tail-recursive definitions in Racket; built-in higher-order functions. Lecture, conversation, illustration
L5.(2h) Racket: state space search; applications in AI Lecture, conversation, illustration
L6.(2h). Lazy functional programming with Haskell: types, patterns, built-in functions, lambda abstractions Lecture, conversation, illustration
L7.(2h). Haskell: advanced programming capabilities in comparison with Racket. Lecture, conversation, illustration
L8.(2h). Logic programming and Prolog. Facts, rules and queries. Recursion. Query answering. Lecture, conversation, illustration
L9.(2h). Functions. Unification. List operations. Lecture, conversation, illustration
L10.(2h). Prolog and logic: clauses, Herbrand base, interpretaton, model, the closed-world assumption. Lecture, conversation, illustration
L11.(2h). Cut and negation. Extralogical operators, arithmetics. Lecture, conversation, illustration
L12.(2h). Combinatorial search in Prolog. Lecture, conversation, illustration
L13.(2h) Constraint logic programming. Lecture, conversation, illustration
L14.(2h) Constraint logic programming. Lecture, conversation, illustration

Course bibliography

[1] Paul Hudak: The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press. 2000. [2] Simon Thompson. Haskell: The Craft of Functional Programming. Pearson Education. 2011. [3] Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes: Essentials of Programming Languages. Second Edition. The MIT Press. 2001. [4]Isabela Drămnesc – slides http://staff.fmi.uvt.ro/~isabela.dramnesc [5] Ulf Nilsson, Jan Maluszynski, Logic, Programming and Prolog, 2nd Edition, copyright Ulf Nilsson and Jan Maluszynski, 2000. [6] Bratko - PROLOG. Programming for Artificial Intelligence, Addison Wesley, third edition, 2001. [7] http://www.swi-prolog.org/

Seminar content

Content Methods Obs
1. Introduction to Racket and its programming environment. Examples of recursive programming techniques. Dialogue, programming assignments.
2. Haskell: the programming environment; characteristic features of lazy functional programming. Dialogue, programming assignments.
3. State space search; applications in AI. Project assignment, dialogue, colaborative learning.
4. Prolog programs as databases of knowledge. Facts, rules, and queries. Unification, Dialogue, collaborative learning, programming assignments.
5. . Search algorithms Dialogue, programming assignments.
6. Constraint logic programming. Dialogue, collaborative learning, problem solving
7. Individual and collective projects. Dialogue, collaborative learning, problem solving
Bibliography: [1] Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes: Essentials of Programming Languages. Second Edition. The MIT Press. 2001. [2] Paul Hudak: The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press. 2000. [3] Simon Thompson. Haskell: The Craft of Functional Programming. Pearson Education. 2011. [4] Isabela Drămnesc – slides http://staff.fmi.uvt.ro/~isabela.dramnesc [5] Ulf Nilsson, Jan Maluszynski, Logic, Programming and Prolog, 2nd Edition, copyright Ulf Nilsson and Jan Maluszynski, 2000. [6] http://www.swi-prolog.org/ [7] https://www.haskell.org

Seminar bibliography

The content of the course corresponds with curricula of other universities in Romania or the European Union. The contents of practical work (labs) meet the requirements of the local labor market.

Corroboration

(none)

AI tools guidance

(none)

Evaluation and delivery

Activity Criteria Methods Percentage
C
  • Evaluation of the theoretical knowledge and practical skills
  • Exam
  • 25.0%
C
  • Periodic assessment of the knowledge acquired from attending the lectures
  • Tests, homework
  • 25.0%
S
  • Homework and project activities cover specific parts, as they were exposed during the semester, and their solution is based on laboratory activity
  • Individual or group axercises and projects
  • 50.0%

Performance standards

Lecture: the capacity to understand the basic principles and concepts of Logical and Functional Programming. An average level of understanding the principles of Constraint Programming Lab: the ability to solve problems of average complexity

Additional info

(none)