Αλγόριθμοι και Δομές Δεδομένων

Γενικά

Περιεχόμενα μαθήματος

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

Μαθησιακοί Στόχοι

Να αποκτήσουν οι φοιτητές το απαραίτητο θεωρητικό και πρακτικό υπόβαθρο για την κατανόηση και το χειρισμό απλών και σύνθετων δομών δεδομένων κύριας μνήμης παράλληλα με τη μελέτη δημοφιλών αλγορίθμων και να εξοικειωθούν με τη χρήση των δομών δεδομένων σε αλγορίθμους διαφόρων προβλημάτων με στόχο την πιο αποδοτική επίλυσή τους με χρήση Η/Υ. Επίσης, δίνεται η δυνατότητα στους φοιτητές να υλοποιήσουν μία εφαρμογή που χρησιμοποιεί δομές δεδομένων και αλγορίθμους μέσα από μία ατομική εργασία που εκπονούν και η οποία τους ανατίθεται κατά τη διάρκεια του εξαμήνου.

Γενικές Ικανότητες

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

Μέθοδοι Διδασκαλίας

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

Χρήση Τεχνολογιών Πληροφορίας και Επικοινωνιών

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

Οργάνωση Διδασκαλίας

ΔραστηριότηταΦόρτος εργασίας εξαμήνου
Διαλέξεις26
Ασκήσεις Πράξης13
Εργαστηριακές Ασκήσεις13
Συγγραφή εργαστηριακών αναφορών20
Αυτοτελής Μελέτη53
Σύνολο125

Αξιολόγηση Φοιτητών

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

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

Συνιστώμενη Βιβλιογραφία

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

  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.