Data Structures

About this course

The course is an introduction to structured programming using the C programming language, where the student will start with the basic concepts of variable, data type, loop and will continue learning to structure his code correctly in functions.

Expected learning outcomes

Upon successful completion of the course the student will be able to:

  • mention and describe the characteristics of the basic data structures.
  • mention and describe the basic algorithms for searching and sorting data (internal and external).
  • mention and describe binary trees traversal methods.
  • mention basic algorithms in Graphs.
  • analyze a complex problem and design the solution on an abstract level.
  • analyze the quality of a solution in relation to the execution time of its individual procedures.
  • Tcompose the solution of a problem based on the individual parts of the solution.
  • check the correctness of a solution and to evaluate the various alternative solutions to a problem.
  • Eevaluate both the quality of the design and the implementation of the solution of a problem.
  • modify known algorithms so that they can be better utilized in solving a problem.
  • evaluate the algorithmic solutions in relation to the execution time of the respective algorithm.
  • design and write code for programs that require the use of data structures.
  • use the most appropriate sorting or searching technique taking into account the expected distribution of data.
  • find solutions to complex problems, to describe its algorithmic solutions in pseudo-code and / or in a flowchart, and of course to be able to encode them.

Indicative Syllabus

    • Introduction to the basic concepts of data structures and algorithms.
    • Accessing sequential files. Define new type or variable as a data union.
    • Arrays, linearization of multidimensional arrays.
    • Define the most important operations that can be performed in a stack, implemented using either static or dynamic data types.
    • Queues and fundamental operations that can be defined in a queue. Queue implementation with circular array (static) and queue implementation with nodes (dynamic).
    • Singly linked lists. Doubly linked lists and function definitions for basic operations.
    • Two-way interconnection technique using just a single link.
    • Binary tree traversal methods. Binary search trees. Balanced search trees.
    • Design and implementation of appropriate data structures for specific programming problems.
    • Evaluation of different data structures.
    • Straight sorting methods: sort by selection, shaker sort and bubble sort.
    • Quick sort technique. Sort variable-length sequences.
    • Sorting files using natural merge sort. Sequential search. Binary search.
    • Performance and analysis of algorithms. Time complexity. Algorithm performance comparison.
    • Learn software design and implementation principles in the Dev-C ++ or CODE :: BLOCKS or MS Visual Studio environment.

    Teaching / Learning Methodology

    Weekly Lectures 5hr/week (if the number of students is greater than 4), else project based

    Recommended Reading

    TBA

    Prerequisites

    Basic knowledge of Computer Programming using C

    Start Date

    2023

    End Date

    2024

    Apply

    2023

    Local Course Code

    TBA

    Cycle

    TBA

    Year of study

    TBA

    Language

    English

    Study Load

    5ECTS

    Mode of delivery

    Written exams, class contribution, delivery of small individual projects every two weeks.

    Instructors

    Dr. Nikolaos Petrakis

    Course coordinator

    Dr. Nikolaos Petrakis

    E-mail

    nik.s.petrakis@hmu.gr