Subject

Design of Algorithms

1. Course Title Design of Algorithms
Algorithm design
2. Code F23L2S097
3. Study Programme
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 4 / Summer
7. Number of ECTS credits 6
8. Teacher Maria Mihova
9. Prerequisites for enrolling in the course Discrete Mathematics or Discrete Structures 2 or Mathematics 2 or Selected Topics in Mathematics
10. Objectives of the course programme (competences) In this course, students will learn various algorithms and methods for solving problems with a computer, as well as certain data structures for their implementation. The student will gain programming experience, understand the principles of algorithm design and performance analysis, and learn the fundamental ideas for designing an efficient algorithm and combining it with an appropriate data structure. These ideas will be applied in practice through laboratory exercises.
11. Course content What is an algorithm. Techniques for designing algorithms and techniques for calculating complexity. Multidimensional dynamic and greedy programming. Memoization in DP. Graph search (classification of edges and vertices, visit time, and their associated properties). Algorithms for shortest paths from any to any vertex and their applications. Algorithms that use traversal techniques. Union-find, Fibonacci heap, and other advanced structures and primitives. Network flow and min-cut/max-flow. Search trees (segment, interval index). String pattern matching algorithms. Geometric algorithms.
12. Learning methods Lectures supported by slide presentations, interactive lectures, exercises (using equipment and software packages), teamwork, case studies, guest lecturers, independent completion of homework assignments, and learning in an electronic environment (forums, consultations).
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
15.1. Lectures - theoretical instruction 30 hours
15.2. Exercises (laboratory, auditory), seminars, teamwork 45 hours
16. Other forms of activities
16.1. Project assignments 15 hours
16.2. Independent assignments 15 hours
16.3. Home study 75 hours
17. Assessment method
17.1. Tests 10 points
17.2. Seminar paper / 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 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. Requirement for obtaining a signature and taking the final exam completed activities 15.1 and 15.2
20. Language of instruction Macedonian and English
21. Method for monitoring the quality of teaching internal evaluation and survey mechanism
22. Literature
22.1. Required literature
1. Thomas H. Carmen et al. | Introduction to Algorithms | MIT Press | 2009
2. Jon Cleindberg, Eva Targos | Algorithm design | Pearson Education, Inc | 2006
3. Maria Mihova, Bojan Ilijoski | Design of Algorithms from Dynamic Programming | UCM | 2019
4. codefu.mk
5. www.topcoder.com
6. http://mendo.mk/Welcome.do
22.2. Additional literature
No. Author Title Publisher Year