Teaching material

The course lectures are given (and recorded) in the Slovenian language. Similarly, the exercise classes are conducted in Slovenian, as we lack sufficient human resources to establish a separate English track.

Nevertheless, you are welcome to take the course, provided that you are willing to put in some extra effort and self-study. You are always welcome to contact the lecturer and the teaching assistant regarding any questions you have.

Here are some pointers to material that will help you understand the course material.

General resources

Textbooks

  1. LICS – Michael Huth and Mark Ryan: Logic in Computer Science
  2. TAPL – Benjamin Pierce: Types and Programming Languages
  3. TPL – John Reynolds, Theories of Programming Languages
  4. PFPL – Robert Harper, Practical Foundations of Programming Languages (2nd ed).
  5. PPAI – Ivan Bratko: Prolog Programming for Artificial Intelligence
  6. RWO - Anil Madhavapeddy And Yaron Minsky: Real World OCaml (2nd ed.).

Most of these are available through the university library system COBISS, but it might be easier to just go to the library at the Faculty of mathematics and physics or the Faculty of computer science and informatics.

Old exams

Examples of old exams are available on the course web page (at the bottom, sorry no English versions yet).

Resources for learning programming languages

  1. OCaml, the , and [Real World OCaml (2nd ed.)].
  2. Haskell and Learn You a Haskell for the Great Good!.
  3. Prolog (still looking for the best source, but the PAI book above is very good).

Resources for specific lectures

Week 1: Artithmetical expressions and syntax

Reading material (it's a bit tricky to get it precisely the way we did it, so please combine sources):

  • TPL, Section 1.1
  • PFPL, Section 1.1
  • TAPL, Section 5.1 (discussion about concrete and abstract syntax)

Week 2: Simple imperative langauge

Reading material:

  • TPL, Section 2.1

Week 3: Correctness of programs

Reading material:

  • LICS, Chapter 4
  • TPL, Chapter 3

Week 4: Untyped lambda calculus

Reading material:

  • TAPL, Chapter 5 (try to read 5.4 but if it gets too strange, do not worry too much)

Week 5: Functional programming

Reading material:

  • TAPL, Sections 9.1 and from 11.6 to 11.10
  • OCaml tutorial
  • RWO, Chapters 1, 2, 3, 5, 6

Week 6: Recursion

Reading material:

  • TAPL, Sections 11.11 and 11.12
  • TAPL, Sections 20.1 and 20.2

Week 7: Type inference

Reading material:

  • TAPL, Sections 22.1 to 22.5 (feel free to skip the theorems)

Week 8: Abstraction

Reading material:

  • RWO, Chapters 4, 10

Week 9: Logical programming

Reading material:

  • PPAI, Chapters 1, 2, 3, 4

Week 10: Constraint logical programming

Reading material:

  • PPAI, Chapters 6, 7
Last modified: Monday, 13 May 2024, 2:23 PM