There are no prerequisites.
Principles of programming languages
Computational models and programming paradigms: imperative, procedural programming, declarative, non-procedural programming, functional programming, logic and relational programming, programming with constraints, parallel programming, genetic programming, programming by examples, etc.
Overview of programming languages for various programming paradigms
Elements of languages for imperative programming
Declarative programming, logic programming and the Prolog language: logic as a programming language, procedural meaning of programs as automatic theorem proving, examples of symbolic programming and declarative program design
Programming with constraints: ideas, principles and examples, constraint logic programming (CLP)
Handling of syntax and semantics of programming languages: grammars, operational, translational, denotational and axiomatic semantics
Denotational semantics, relation to the the grammar of a language, examples of denotational definitions
Axiomatic semantics and proving correctness of programs: partial and total correctness, invariant conditions, techniques of proving program correctness, using weakest preconditions, automatic correctness proving
- I. Bratko: Prolog programming for artificial intelligence, 2nd ed., Wokingham [etc.] : Addison-Wesley, cop. 1990.
- I. Bratko: Prolog in umetna inteligenca, Ljubljana : Društvo matematikov, fizikov in astronomov SR Slovenije : Zveza organizacij za tehnično kulturo Slovenije, 1989.
- R. Harper: Practical foundations for programming languages, 2nd ed., Cambridge : Cambridge University Press, cop. 2016.
- B. C. Pierce: Types and programming languages, Cambridge (Massachusetts) ; London : The MIT Press, cop. 2002.
- P. Van Roy, S. Haridi: Concepts, techniques, and models of computer programming, Cambridge (Massachusetts) ; London : The MIT Press, cop. 2004.
- R. W. Sebesta: Concepts of programming language, 11th ed., global ed., Harlow [etc.] : Pearson, cop. 2016.
To introduce the principles and types of programming languages, including models of computation, formal treatment of the syntacs and semantics of languages and program correctness,
Understanding of various programming paradigms and their use in corresponding programming languages,
Practical applications of symbolic, declarative and constraint programming
Knowledge and understanding:
Understanding of various approaches to programming and suitability of these approaches to solving various problems;
Overview of the principles and mechanisms of types of programming languages;
Understanding ways of defining the syntax and semantics of languages, and formal proofs of program correctness.
Application:
Skill of symbolic programming, logic and constrain programming
Reflection:
Ability of thinking about alternative formulations of problems and approaches to their solution;
How different computational models, programming paradigms and languages, support alternative approaches to computer problem solving
Transferable skills:
Enhanced skills of program design
Lectures, practical work and exercises, home work
Continuing (homework, midterm exams, project work)
Final (written exam)
grading: 5 (fail), 6-10 (pass) (according to the Statute of UL)
BRATKO, Ivan. Prolog programming for artificial intelligence. 4th ed. Harlow (England) [etc.]: Addison-Wesley: Pearson, cop. 2012. XXI, 673 str., ilustr. ISBN 978-0-321-41746-6. ISBN 0-321-41746-1. [COBISS-SI-ID 8577364]
MOŽINA, Martin, ŽABKAR, Jure, BRATKO, Ivan. Argument based machine learning. Artificial intelligence, ISSN 0004-3702. [Print ed.], 2007, vol. 171, no. 10/15, str. 922-937. [COBISS-SI-ID 6240084]
LUŠTREK, Mitja, GAMS, Matjaž, BRATKO, Ivan. Is real-valued minimax pathological?. Artificial intelligence, ISSN 0004-3702. [Print ed.], 2006, vol. 170, str. 620-642. [COBISS-SI-ID 19805735]
ŠUC, Dorian, VLADUŠIČ, Daniel, BRATKO, Ivan. Qualitatively faithful quantitative prediction. Artificial intelligence, ISSN 0004-3702. [Print ed.], 2004, vol. 158, no. 2, str. [189]-214, ilustr. [COBISS-SI-ID 4422740]
BRATKO, Ivan, MOZETIČ, Igor, LAVRAČ, Nada. Kardio : a study in deep and qualitative knowledge for expert systems. Cambridge (Mass.), London: The MIT Press, 1989. XIV, 260 str., graf. prikazi. ISBN 0-262-02273-7. [COBISS-SI-ID 19925760]