|Professors||Orestis Telelis Christos Doulkeridis Aristi Galani|
|Lecture hours||3 hours|
|Lab hours||2 hours|
|Digital resources||View on Aristarchus (Open e-Class)|
In the context of this course, the fundamental data structures are presented and analyzed, along with their usage in programming and software development. The course’s aim is to familiarize the students with the concepts of organizing data in the computer’s main memory for efficient access, the role of data structures in designing and implementing algorithms, and with scaling end computational efficiency issues, for large sets of data.
Upon successful completion of the course, the students will be in position:
- to know and understand basic data organization concepts and access efficiency in the computer’s main memory.
- to choose the appropriate data structures to use, in the development of software applications.
- to evaluate the complexity of algorithms using specific data structures, with respect to the execution time and space requirements that the underlying data incur.
- Introduction, course overview, complexity analysis as an evaluation tool of the performance of operations on data structures
- Stacks and Queues
- Linked Lists, Simply Linked Lists, Doubly Linked Lists, Circular Lists
- Simple Sorting (bubblesort, selectionsort, insertionsort)
- Binary Trees, Binary Search Trees
- Balanced Binary Search Trees
- Priority Queues, Introductory Elements of Advanced Sorting.
- Red-Black Trees, 2-3-4 Trees
- Multiway Search Trees, B-Trees
- Hash Tables
- Graphs as Data Structures, Representation (adjacency matrix and list), Basic Search Algorithms (Depth-First and Breadth-First Search)
- R. Lafore. Data Structures and Algorithms in Java, Sams, 2002.
- M. T. Goodrich, R. Tamassia, M. H. Goldwasser. Data Structures & Algorithms in Java, John Wiley & Sons, 2014.
- R. Sedgewick. Algorithms in Java, Parts 1-4. Addison Wesley, 2002.