Programming paradigms

1.Course titleProgramming paradigms
2.CodeF18L3W038
3.Study programme
4.Organizer of the study programme (unit, institute, department)Faculty of Computer Science and Engineering
5.Degree level (first, second, third cycle)First cycle
6.Academic year / semester7 / Winter
7.Number of ECTS credits6
8.Teacher—
9.Prerequisites for enrolling in the courseАлгоритми и податочни структури
10.Course objectives (competences)The goal of this course is introducing students with programming paradigms, other than the imperative and object-oriented, with focus on the declarative and functional paradigm. On completion students should be able to:
- Compare different programming paradigms and make appropriate choice of a programing paradigm for a given problem
- Use a logic programming language to implement efficient algorithms
- Use a logic programming language for knowledge representation and manipulation
- Use a functional programming language to write effect-free programs
- Understand and use first-class and higher-order functions, functional closures, lazy evaluation, sequence comprehensions
- Understand and write simple concurrent programs.
11.Course contentOverview and comparison of the imperative, object-oriented, declarative and functional programming paradigms.
Introduction to the declarative programming paradigm. Propositional calculus. First order logic.
Programing in logic primer. Unification. Backtracking.
Clausal representation of data structures and algorithms. Recursion. Cuts. Negation.
Knowledge representation and manipulation.
Introduction to the functional programming paradigm. Effect-free programming.
Structured data and processing.
First-class functions. Anonymous functions.
Higher-order functions. Function closures. Currying. Partial application.
Lazy evaluation. Infinite sequences. Sequence comprehension.
Concurrency and Parallelism
12.Learning methodsLectures using presentations, interactive lectures, exercises (using equipment and software packages), teamwork, case studies, guest lectures, independent preparation and defense of a project assignment and a seminar paper.
13.Total available time6 ECTS x 30 hours = 180 hours
14.Distribution of the available time30 + 45 + 15 + 15 + 75 = 180 hours
15.Forms of teaching activities
15.1.Lectures – theoretical teaching30 hours
15.2.Exercises (laboratory, auditory), seminars, team work45 hours
16.Other forms of activities
16.1.Project assignments15 hours
16.2.Individual assignments15 hours
16.3.Home study75 hours
17.Grading
17.1.Tests10 points
17.2.Seminar paper / project (presentation: written and oral)15 points
17.3.Activity and participation10 points
17.4.Final exam70 points
18.Grading criteria (points / grade)
up to 50 points5 (five) (F)
from 51 to 60 points6 (six) (E)
from 61 to 70 points7 (seven) (D)
from 71 to 80 points8 (eight) (C)
from 81 to 90 points9 (nine) (B)
from 91 to 100 points10 (ten) (A)
19.Requirements for signature and taking the final examActivities 15.2 and 16.1 have been completed.
20.Language of instructionMacedonian and English
21.Method of monitoring teaching qualityinternal evaluation and survey mechanism
22.Literature
22.1.Required literature
No. Author Title Publisher Year
22.2.Additional literature
No. Author Title Publisher Year