Data structures and Algorithms
Semester: IV
Teacher(s): Siniša Nešković Dejan Stojimirović
Prerequisite Knowledge: Digital Computers and Operating Systems,
Principles of Programming
Description: This course discusses fundamental data structures such as stacks, queues, trees and graphs, introduces basic techniques for analysis of the algorithms on data structures, and presents some fundamental algorithms on data structures, like searching and sorting. Students are also introduced to some basic principles of software engineering. Building abstract data types is the primary concept running through the course. 
Objectives: The purpose of the course is to provide students with solid foundations in the basic concepts of data structures and algorithms. Understanding of common data abstractions, how they are used in designing software, providing knowledge of main algorithms on data structures such as searching and sorting, and determining the efficiency of these algorithms are main objectives of the course. 
Content Through
Learning Units:
Abstractions: Abstractions in programming; Abstract Data Types; Data structures; Algorithms: Algorithm analysis; Best, worst-case and expected time complexity; Linear data structures: Array, Stack, Queue, List; Basic algorithms: Basic searching algorithms; Sorting algorithms; Nonlinear data structures: Trees; Traversal; Implementations; Binary trees; Binary search trees; AVL trees; Indexing methods; B-trees. Hashing; Graphs; Implementations; Depth-first search and breadth-first search; shortest path problems; Directed acyclic graphs;
Website: http://strukture.labis.fon.rs