# Data Structures and Algorithm Analysis

Објавено: October 23, 2019
 1.    Course Title Data Structures and Algorithm Analysis 2.    Code 3ФЕИТ07Л024 3.    Study program KTI, TKII 4.    Organizer of the study program (unit, institute, department) Faculty of Electrical Engineering and Information Technologies 5.    Degree (first, second, third cycle) First cycle 6.    Academic year/semester II/4 7.    Number of ECTS credits 6.00 8.    Lecturer Dr Daniel Denkovski 9.    Course Prerequisites Passed: Programming and algorithms Taken course: Data structures and programming 10.    Course Goals (acquired competencies):  Working with complex data structures in Java programming language. Algorithms for working with data structures. After finishing this course the student will be able to solve problems using complex data structures and algorithms in Java. 11.    Course Syllabus: Introduction to algorithm theory and basic concepts of data structures. Logical and physical structures. Implementation of Java ADT. Analysis and algorithm complexity. Linear data structures – arrays and lists. Statical and dynamical arrays and lists in Java. Application of arrays and lists for logical data structures: stack, queue, priority queue (in Java). Algorithmic strategies. Algorithm design. Algorithms classification. Brute force strategy. Greedy algorithms. Strategy divide and conquer. Non-linear structures. Trees. Binary trees. Binary search trees. Balanced binary search trees. AVL trees. Red Black trees. Hash structures. Hashing functions and their properties. Collisions and dismissal. Graphs. Directed and nondirected graphs. Application of graphs. Weighted graphs. Representation of graphs through data structures. Graph traversal algorithms: depth-first and breadth-first. Shortest path algorithms in weighted graphs. Bellman-Ford algorithm. Djikstra`s algorithm. Kruskal`s algorithm. Prim`s algorithm. 12.    Learning methods:  Lectures, exercises and laboratory exercises 13.    Total number of course hours 2 + 2 + 1 + 0 14.    Distribution of course hours 180 15.    Forms of teaching 15.1. Lectures-theoretical teaching 30 15.2. Exercises (laboratory, practice classes), seminars, teamwork 45 16.    Other course activities 16.1. Projects, seminar papers 25 16.2. Individual tasks 20 16.3. Homework and self-learning 60 17.    Grading 17.1. Exams 10 17.2. Seminar work/project (presentation: written and oral) 10 17.3. Activity and participation 0 17.4. Final exam 80 18.    Grading criteria (points) 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.    Conditions for acquiring teacher’s signature and for taking final exam Laboratory exercises 20.  Forms of assessment Two partial written exams during the semester (in the middle and in the end of the semester) with a duration of 120 minutes each or one final written exam in a corresponding exam session with a duration of 120 minutes. The laboratory exercises are also graded. The final grade includes points from the exam and the lab exercises. Usage of books, hand-written materials or any kind of supplementary text book during the exam is not allowed 21.  Language Macedonian and English 22.  Method of monitoring of teaching quality Internal evaluation and surveys 23.  Literature 23.1. Required Literature No. Author Title Publisher Year 1 T. H. Cormen et all Introduction to Algorithms,  3rd Ed. MIT Press 2009 2 Roberts Lafore Data Structures and Algorithms in JAVA,  2nd Ed. SAMS 2003 3 M. Goodrich,  R. Tamassia Data Structures and Algorithms in Java,  6th Ed. John Willey 2014