Skip to main content

Principles of programming languages

2023/2024
Programme:
Interdisciplinary University Study Programme Computer Science and Mathematics
Year:
2 year
Semester:
second
Kind:
mandatory
ECTS:
6
Language:
slovenian
Course director:
Lecturer (contact person):
Hours per week – 2. semester:
Lectures
3
Seminar
0
Tutorial
0
Lab
2
Content (Syllabus outline)

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

Readings

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.

Objectives and competences

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

Intended learning outcomes

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

Learning and teaching methods

Lectures, practical work and exercises, home work

Assessment

Continuing (homework, midterm exams, project work)
Final (written exam)
grading: 5 (fail), 6-10 (pass) (according to the Statute of UL)

Lecturer's references

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]