Programming paradigms
| 1. | Course title | Programming paradigms | ||||||||||||
| 2. | Code | F18L3W038 | ||||||||||||
| 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 / semester | 7 / Winter | ||||||||||||
| 7. | Number of ECTS credits | 6 | ||||||||||||
| 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 content | Overview 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 methods | Lectures 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 time | 6 ECTS x 30 hours = 180 hours | ||||||||||||
| 14. | Distribution of the available time | 30 + 45 + 15 + 15 + 75 = 180 hours | ||||||||||||
| 15. | Forms of teaching activities |
| ||||||||||||
| 16. | Other forms of activities |
| ||||||||||||
| 17. | Grading |
| ||||||||||||
| 18. | Grading criteria (points / grade) |
| ||||||||||||
| 19. | Requirements for signature and taking the final exam | Activities 15.2 and 16.1 have been completed. | ||||||||||||
| 20. | Language of instruction | Macedonian and English | ||||||||||||
| 21. | Method of monitoring teaching quality | internal evaluation and survey mechanism | ||||||||||||
| 22. | Literature |
|