|Program of Graduate Studies||Applied Informatics|
|Subject Area||Applications and Foundations of Computer Science|
|Semester||Semester 2 – Spring|
|Weekly Teaching Hours||4|
The course provides the students an introduction to the basic data structures, sorting and searching techniques and algorithm design and analysis techniques. The following topics are covered: Introduction of asymptotic estimations, worst case and average case performance; Basic Data Structures like Arrays, Lists, Stacks, FIFOs, Dequeues, Static and Dynamic Trees and their Traversals; Binary Search and Introduction and Αnalysis of Comparison-based sorting algorithms (i.e., Insertion Sort, Selection Sort, Bubble Sort, Shaker Sort, Quick sort, Heap Sort, Merge Sort) and Distribution-based Sorting Algorithms (i.e., Bucket Sort, LSD and MSDRadix Sort); Tree Dictionaries, like Simple, Balanced Search Trees (AVL Trees, (a, b)-Trees, Red-Black Trees); Introduction to Hashing and Unordered Dictionaries like Hashing with Chaining, Hashing with Open Addressing; Priority Queues; Graphs (directed and undirected); Graph Traversals and their applications (Connectivity, Biconnectivity, Shotest paths, Spanning Trees); Algorithm Design Techniques (Divide and Conquer, Dynamic Programming, Greediness, Backtracking, Branch and Bound); Intractable problems.
The course introduces to the basic concepts of data structuring and algorithms. Aims at introducing to the right usage and application of fundamental data structures and algorithm design and analysis techniques.
Upon successful completion of this course, the student will be able to:
- know the usage of a variety of data structures and algorithms
- analyze and understand the characteristics and the performance of data structures and algorithms
- compare and categorize a variety of data structures and algorithms based on their functionality and performance
- choose the appropriate data structures and algorithms based on criteria related to functionality, time/space complexity and hardware requirements.