Subject
Programming paradigms
| 1. | Course Title |
Programming paradigms Programming paradigms |
||||||||||||
| 2. | Code | F18L3W038 | ||||||||||||
| 3. | Study Programme | Computer Science | ||||||||||||
| 4. | Organizer of the study programme (unit, institute, department or division) | 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 | Algorithms and Data Structures | ||||||||||||
| 10. | Objectives of the course programme (competences) | The goal of this course is to introduce students to programming paradigms other than imperative and object-oriented, with a focus on the declarative and functional programming paradigm. Upon completion of the course, students should be able to: Compare different programming paradigms and choose an appropriate one for a given problem; use a logic programming language to implement efficient algorithms; use a logic programming language to represent and manipulate knowledge. Use a functional programming language to write 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. | Course content | Overview and comparison of imperative, object-oriented, declarative, and functional programming paradigms. Introduction to declarative programming paradigm. Expression evaluation. First-order predicate logic. Fundamentals of a logic programming language. Unification. Backtracking search. Clausal representation of data structures and algorithms. Recursion. Termination. Negation. Representation and manipulation of knowledge with a logic programming language. Introduction to the functional programming paradigm. Side-effect free programming. Structured data types and their processing. Functions as first-class objects. Anonymous functions. Higher-order functions. Functional closures. Currying. Partial functions. Lazy evaluation. Infinite sequences. Sequence abstraction. 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 available time | 30 + 45 + 15 + 15 + 75 = 180 hours | ||||||||||||
| 15. | Forms of teaching activities |
|
||||||||||||
| 16. | Other forms of activities |
|
||||||||||||
| 17. | Assessment method |
|
||||||||||||
| 18. | Grading criteria (points / grade) |
|
||||||||||||
| 19. | Requirement for obtaining a signature and taking the final exam | Activities 15.2 and 16.1 have been completed. | ||||||||||||
| 20. | Language of instruction | Macedonian and English | ||||||||||||
| 21. | Method for monitoring the quality of teaching | internal evaluation and survey mechanism | ||||||||||||
| 22. | Literature |
|