Algorithms and Data Structures

General

Course Contents

  • Βασικές έννοιες αλγορίθμων, αλγόριθμοι παραγωγής τυχαίων αριθμών.
  • Αποδοτικότητα αλγορίθμων, συναρτήσεις time() και clock().
  • Βασικές έννοιες πινάκων, αποθήκευση πινάκων, ειδικές μορφές πινάκων, δυναμική δημιουργία πινάκων.
  • Αναδρομή, αναδρομικές συναρτήσεις.
  • Αναζήτηση, σειριακή αναζήτηση, δυαδική αναζήτηση.
  • Ταξινόμηση, ταξινόμηση με απευθείας επιλογή, ταξινόμηση με απευθείας εισαγωγή, ταξινόμηση φυσαλίδας, γρήγορη ταξινόμηση.
  • Γραμμικές λίστες, σειριακές λίστες (στοίβα, ουρά), υλοποίηση με πίνακα.
  • Γραμμικές λίστες, δείκτες και δυναμικές δομές, συνδεδεμένες λίστες (απλή συνδεδεμένη λίστα, στοίβα ως συνδεδεμένη λίστα, ουρά ως συνδεδεμένη λίστα).
  • Δένδρα, δυαδικά δένδρα, μέθοδοι διάσχισης δυαδικού δένδρου (προδιατεταγμένη μέθοδος, ενδοδιατεταγμένη μέθοδος, μεταδιατεταγμένη μέθοδος).
  • B-trees, Tries.
  • Πίνακες κατακερματισμού, συνάρτηση κατακερματισμού, συγκρούσεις, συνώνυμα, ανοιχτή διευθυνσιοδότηση, ξεχωριστή αλυσίδωση.
  • Γράφοι, μέθοδοι αναπαράστασης γράφων, μέθοδοι διάσχισης γράφων (αναζήτηση με προτεραιότητα Βάθους, αναζήτηση με προτεραιότητα Πλάτους), το πρόβλημα του   συντομότερου μονοπατιού.

Educational Goals

The course provides a systematic analysis of data structures, including linear lists, stacks, queues, pointers and dynamic data structures such as linked lists. Non-linear data structures such as binary trees, B-trees, tries are also analyzed. Memory demand is analyzed, the restrictions and efficiency of data structures are discussed. Comprehensive analysis of fast and slow sorting algorithms is presented, including bubble sort, insertion sort, selection sort, quicksort etc. Searching and recursive algorithms are explained. Hashing tables and graphs are also introduced. Finally, students will be given the opportunity to design and implement a program in C, using large data structures with random numbers and various sorting algorithms, testing the efficiency of each sorting technique.

General Skills

  • Αυτόνομη εργασία.
  • Ανάλυση και σχεδίαση στατικών και δυναμικών δομών δεδομένων.
  • Ανάλυση και σχεδίαση αλγοριθμικών διαδικασιών.
  • Εφαρμογή της γνώσης στην πράξη.
  • Προαγωγή της ελεύθερης, δημιουργικής και επαγωγικής σκέψης.

Teaching Methods

  • Θεωρητική από έδρας διδασκαλία με συζήτηση και ενεργή συμμετοχή των φοιτητών. Κατά τη διάρκεια του μαθήματος γίνονται παρουσιάσεις σε PowerPoint, καθώς και παρουσίαση και ανάλυση αλγορίθμων.
  • Εργαστηριακές ασκήσεις και εργασίες σχεδίασης και υλοποίησης προγραμμάτων.

Use of ICT means

  • Χρήση εξειδικευμένου λογισμικού.
  • Υποστήριξη της μαθησιακής διαδικασίας μέσω της ηλεκτρονικής πλατφόρμας E-Learning ή E-Class.
  • Ηλεκτρονικές Ασκήσεις Αυτοαξιολόγησης.
  •  Επικοινωνία με φοιτητές μέσω e-mail και της ιστοσελίδας του μαθήματος.

Teaching Organization

ActivitySemester workload
Lectures26
Practice Exercises13
Laboratory Exercises13
Writing laboratory reports20
Autonomous Study53
Total125

Students Evaluation

Ο τελικός βαθμός του μαθήματος διαμορφώνεται από το βαθμό του θεωρητικού μέρους (που περιλαμβάνει γραπτή τελική εξέταση), καθώς και από ατομικές εργασίες που ανατίθενται στους φοιτητές και αξιολόγηση των εργαστηριακών δεξιοτήτων τους.

  1. Η γραπτή τελική εξέταση του θεωρητικού μέρους περιλαμβάνει:
    • Ερωτήσεις πολλαπλής επιλογής.
    • Επίλυση προβλημάτων εφαρμογής των γνώσεων που αποκτήθηκαν.
    • Ερωτήσεις σύντομης απάντησης.
    • Συγκριτική αξιολόγηση στοιχείων θεωρίας.
  2. Η αξιολόγηση του εργαστηριακού μέρους του μαθήματος περιλαμβάνει:
    • Την αξιολόγηση των προγραμματιστικών δεξιοτήτων που αποκτήθηκαν μέσω εξέτασης εβδομαδιαίων εργασιών και
    • την εξέταση μίας τελικής ατομικής εργασίας (project) που ανατίθεται σε κάθε φοιτητή.

Recommended Bibliography

Συγγράμματα μέσω του συστήματος ΕΥΔΟΞΟΣ:

  1. Robert Sedgewick, ΑΛΓΟΡΙΘΜΟΙ ΣΕ C, ΜΕΡΗ 1-4: ΘΕΜΕΛΙΩΔΕΙΣ ΕΝΝΟΙΕΣ, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ, ΤΑΞΙΝΟΜΗΣΗ, ΑΝΑΖΗΤΗΣΗ
    3η Έκδοση, Εκδόσεις Κλειδάριθμος, 2006.
  2. Παπουτσής Ιωάννης, Εισαγωγή στις δομές δεδομένων και στους αλγόριθμους 1η Έκδοση, Εκδόσεις Σταμούλη, 2010.

Συγγράμματα που διανέμονται μέσω του Ιδρύματος ή της ηλεκτρονικής σελίδας του μαθήματος:

  1. Ε. Ούτσιος, Δομές Δεδομένων, Σημειώσεις Θεωρίας, 2020.
  2. Ε. Ούτσιος, Δομές Δεδομένων, Σημειώσεις Εργαστηρίου, 2020.

Συμπληρωματική προτεινόμενη βιβλιογραφία:

  1. Γ. Κόλλιας, Γ. Μανωλόπουλος, Δομές Δεδομένων, τόμος Α΄.
  2. Nicklaus Wirth, Algorithms + Data Structures = Programs, 1976.
  3. S. Sahni, Μετάφραση Ι. Μανωλόπουλος και Ι. Θεοδωρίδης, Δομές Δεδομένων, Αλγόριθμοι και Εφαρμογές στη C++, Εκδόσεις Τζιόλα, 2004.
  4. Π. Μποζάνης, Αλγόριθμοι: Σχεδιασμός και Ανάλυση, Εκδόσεις Τζιόλα, 2003.
  5. Robert Lafore, Data Structures & Algorithms in JAVA, 2nd Edition, 2003.
  6. Leendert Ammeraal, Προγραμματισμός και Δομές Δεδομένων στην C, Εκδόσεις Γκιούρδας, 1989.