Advanced Logic and Functional Programming
Public syllabus for 2025-2026
Academic overview
Teaching team
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 | |
| 108 | 34 | 21 | 37 | 8 | 0 | |
| Overall | ||||||
| 150 |
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
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
Evaluation and delivery
| Activity | Criteria | Methods | Percentage |
|---|---|---|---|
| C |
|
|
|
| C |
|
|
|
| S |
|
|
|
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)