Programming paradigms

Programming paradigms

1.

Subject title

Programming paradigms

Програмски парадигми

2.

Code

F23L3W038

3.

Study program

Примена на информациски технологии, Софтверско инженерство и информациски системи, Компјутерско инженерство, Интернет, мрежи и безбедност, Информатичка едукација, Software engineering and information systems, Примена на информациски технологии, Софтверско инженерство и информациски системи, Компјутерски науки, Компјутерско инженерство, Интернет, мрежи и безбедност, Software engineering and information systems, Стручни студии за програмирање, Стручни студии за програмирање, Компјутерски науки, Bioinformatics,

4.

Organizer of the study program (unit, institute, department, division)

Faculty of Information Sciences and Computer Engineering

5.

Study cycle (first, second, third)

Прв циклус

6.

Academic year / semester

4 / Зимски

7. Number of ECTS credits

6.0

8.

Instructor

доц. д-р Емил Станков проф. д-р Кире Триводалиев проф. д-р Миле Јованов

9.

Prerequisites for enrollment

Алгоритми и податочни структури или Примена на алгоритми и податочни структури

10.

Subject goals and competencies:


The aim of this course is to acquaint students with programming paradigms other than imperative and object-oriented, with a focus on declarative and functional programming paradigms. After completing the course, students should be able to: Compare different programming paradigms and choose the appropriate one for a given problem, Use a logical programming language to implement efficient algorithms, Use a logical programming language for knowledge representation and manipulation, Use a functional programming language for writing of programs without side effects, Understand and use first and higher order functions, functional closures, lazy evaluation and sequence abstraction, Understand and write simple concurrent programs

11.

Subject content:


Предавања: 1. Преглед и споредба на императивна, објектно-ориентирана, декларативна и функционална програмска парадигма. 2. Вовед во декларативна програмска парадигма. Исказно сметање. Предикатна логика од прв ред. 3. Основи на логички програмски јазик. Унификација. Пребарување со враќање наназад. 4. Клаузална репрезентација на податочни структури и алгоритми. Рекурзија. Прекини. Негација. 5. Претставување и манипулација со знаење со логички програмски јазик. 6. Вовед во функционална програмска парадигма. Програмирање без странични ефекти. 7. Структурирани податочни типови и нивно процесирање. 8. Функции како објекти од прв ред. Анонимни функции. 9. Функции од повисок ред. Функционални затворања. Карринг. Парцијални функции. 10. Мрзлива евалуација. Бесконечни секвенци. Апстракција на секвенци. 11. Конкурентност и паралелизам 1 12. Конкурентност и паралелизам 2

12.

Learning methods:


Предавања со користење на презентации, интерактивни предавања, вежби (користење на опрема и софтверски пакети), тимска работа, пример случаи, поканети гости предавачи, самостојна изработка и одбрана на проектна задача и семинарска работа.

13.

Total available time fund

6.0 ECTS x 30 hours = 180 hours

14.

Time distribution

30 + 45 + 15 + 15 + 75 = 180 hours

15.

Forms of teaching activities

15.1.

Lectures - theoretical teaching

30 hours

15.2.

Exercises (laboratory, classroom), seminars, team work

45 hours

16.

Other forms of activities

16.1.

Project tasks

15 hours

16.2.

Independent tasks

15 hours

16.3.

Homework

75 hours

17.

Grading method

17.1.

Tests

10 points

17.2.

Seminar work / project (presentation: written and oral)

15 points

17.3.

Activities and learning

10 points

17.4.

Final exam

70 points

18.

Grading criteria (points / grade)

up to 50 points

5 (five) (F)

from 51 to 60 points

6 (six) (E)

from 61 to 70 points

7 (seven) (D)

from 71 to 80 points

8 (eight) (C)

from 81 to 90 points

9 (nine) (B)

from 91 to 100 points

10 (ten) (A)

19.

Condition for signature and taking final exam

Реализирани активности 15.2 и 16.1

20.

Language of instruction

Македонски и англиски

21.

Quality assurance method

механизам на интерна евалуација и анкети

22.

Literature

22.1.

Mandatory literature

No.

Author

Title

Publisher

Year

4656

John C. Mitchell

Concepts in Programming Languages

Cambridge University Press

2002

4657

Maurizio Gabbrielli and Simone Martini

Programming Languages: Principles and Paradigms (Undergraduate Topics in Computer Science)

Springer

2010

4658

Neal Ford

Functional Thinking: Paradigm Over Syntax

O`Reilly Media

2014

4659

Ivan Bratko

Prolog Programming for Artificial Intelligence, 4/E

Pearson Education

2011

22.2.

Additional literature

No.

Author

Title

Publisher

Year