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

1.Наслов на наставниот предметПрограмски парадигми
Programming paradigms
2.КодF23L3W038
3.Студиска програма
4.Организатор на студиската програма (единица, односно институт, катедра, оддел)Факултет за информатички науки и компјутерско инженерство
5.Степен (прв, втор, трет циклус)Прв циклус
6.Академска година / семестар7 / Зимски
7.Број на ЕКТС кредити6
8.Наставник
9.Предуслови за запишување на предметотАлгоритми и податочни структури или Примена на алгоритми и податочни структури
10.Цели на предметната програма (компетенции)Целта на овој курс е запознавање на студентите со програмски парадигми различни од императивната и објектно-ориентираната, со фокус на декларативната и функционалната програмска парадигма. По завршувањето на курсот студентите треба да бидат способни да: Споредуваат различни програмски парадигми и да изберат соодветна за даден проблем, Користат логички програмски јазик за имплементација на ефикасни алгоритми, Користат логички програмски јазик за репрезентација и манипулација со знаење, Користат функционален програмски јазик за пишување на програми без странични ефекти, Разбираат и користат функции од прв и повисок ред, функционални затворања, мрзлива евалуација и апстракција на секвенци, Разбираат и пишуваат едноставни конкурентни програми
11.Содржина на предметната програмаПредавања:
1. Преглед и споредба на императивна, објектно-ориентирана, декларативна и функционална програмска парадигма.
2. Вовед во декларативна програмска парадигма. Исказно сметање. Предикатна логика од прв ред.
3. Основи на логички програмски јазик. Унификација. Пребарување со враќање наназад.
4. Клаузална репрезентација на податочни структури и алгоритми. Рекурзија. Прекини. Негација.
5. Претставување и манипулација со знаење со логички програмски јазик.
6. Вовед во функционална програмска парадигма. Програмирање без странични ефекти.
7. Структурирани податочни типови и нивно процесирање.
8. Функции како објекти од прв ред. Анонимни функции.
9. Функции од повисок ред. Функционални затворања. Карринг. Парцијални функции.
10. Мрзлива евалуација. Бесконечни секвенци. Апстракција на секвенци.
11. Конкурентност и паралелизам 1
12. Конкурентност и паралелизам 2
12.Методи на учењеПредавања со користење на презентации, интерактивни предавања, вежби (користење на опрема и софтверски пакети), тимска работа, пример случаи, поканети гости предавачи, самостојна изработка и одбрана на проектна задача и семинарска работа.
13.Вкупен расположив фонд на време6 ЕКТС x 30 часа = 180 часа
14.Распределба на расположивото време30 + 45 + 15 + 15 + 75 = 180 часа
15.Форми на наставните активности
15.1.Предавања - теоретска настава30 часови
15.2.Вежби (лабораториски, аудиториски), семинари, тимска работа45 часови
16.Други форми на активности
16.1.Проектни задачи15 часови
16.2.Самостојни задачи15 часови
16.3.Домашно учење75 часови
17.Начин на оценување
17.1.Тестови10 бодови
17.2.Семинарска работа / проект ( презентација: писмена и усна)15 бодови
17.3.Активности и учење10 бодови
17.4.Завршен испит70 бодови
18.Критериуми за оценување (бодови/ оценка)
до 50 бода5 (пет) (F)
од 51 до 60 бода6 (шест) (E)
од 61 до 70 бода7 (седум) (D)
од 71 до 80 бода8 (осум) (C)
од 81 до 90 бода9 (девет) (B)
од 91 до 100 бода10 (десет) (A)
19.Услов за потпис и полагање на завршен испитРеализирани активности 15.2 и 16.1
20.Јазик на кој се изведува наставатаМакедонски и англиски
21.Метод на следење на квалитетот на наставатамеханизам на интерна евалуација и анкети
22.Литература
22.1.Задолжителна литература
1. John C. Mitchell | Concepts in Programming Languages | Cambridge University Press | 2002
2. Maurizio Gabbrielli and Simone Martini | Programming Languages: Principles and Paradigms (Undergraduate Topics in Computer Science) | Springer | 2010
3. Neal Ford | Functional Thinking: Paradigm Over Syntax | O`Reilly Media | 2014
4. Ivan Bratko | Prolog Programming for Artificial Intelligence, 4/E | Pearson Education | 2011
22.2.Дополнителна литература
Ред.бр. Автор Наслов Издавач Година