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
Principles of programming languages
Robert W. Sebesta, Concepts of Programming Languages, 8th edition, Addison-Wesley 2007.
Peter van Roy, Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press 2004.
Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th edition, Pearson Education, Addison-Wesley, 2001.
Ivan Bratko, Prolog in umetna inteligenca, Založba FE in FRI, ponatis 2011.
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]