Δομές Δεδομένων (Data Structures) 3o Εξάμηνο Σπουδών Διδάσκων: Απόστολος Παπαδόπουλος και Εργαστήριο Τεχνολογίας και Επεξεργασίας Δεδομένων Ιστοσελίδα μαθήματος
Διδασκαλία του Μαθήματος 4 ώρες την εβδομάδα (θεωρία + ασκήσεις). Τετάρτη (Β) και Παρασκευή 9-11 (Β). Εργασία 40-50% του βαθμού. Η εργασίες παραδίδονται αποκλειστικά στην εξεταστική του Ιανουαρίου. Ο βαθμός της εργασίας μπορεί να κρατηθεί μέχρι το Σεπτέμβριο. Οι επι πτυχίω μπορούν να εκπονήσουν την εργασία και στην εξεταστική του Ιουνίου.
Εργασία Αντικείμενο: υλοποίηση αλγορίθμων και δομών δεδομένων σε C++ Τμήματα: -Θεωρητική μελέτη -Πηγαίος κώδικας με σχόλια -Εκτελέσιμο αρχείο -Πειραματικές μετρήσεις
Διδασκαλία του Μαθήματος Διδακτικό Βιβλίο: Δομές Δεδομένων Αλγόριθμοι και Εφαρμογές στη C++ Sartaj Shani Μετάφραση: Ι. Μανωλόπουλος, Ι. Θεοδωρίδης
Διδασκαλία του Μαθήματος Για το μάθημα θα χρειαστούμε Βασικές γνώσεις C++ Βασικές γνώσεις θεωρίας αλγορίθμων Τα παραπάνω θέματα διδάσκονται σε ξεχωριστά μαθήματα. Ωστόσο θα μελετήσουμε τις απαραίτητες έννοιες ώστε να προχωρήσουμε με άνεση.
Στόχοι Διδασκαλίας 1.Κατανόηση της αρχής ότι κάθε δομή δεδομένων έχει υπέρ και κατά. 2.Εκμάθηση των πιο δημοφιλών δομών δεδομένων –Αυτές σχηματίζουν ένα βασικό σύνολο εργαλείων πάνω στις δομές δεδομένων, το οποίο είναι χρήσιμο για έναν προγραμματιστή 3.Κατανόηση των τεχνικών μέτρησης του κόστους μιας δομής δεδομένων ή ενός προγράμματος –Αυτές οι τεχνικές επίσης επιτρέπουν να κριθεί η αξία νέων δομών δεδομένων που μπορεί να ανακαλυφθούν στο μέλλον.
Στόχοι Διδασκαλίας Μετά την ολοκλήρωση του μαθήματος θα είστε σε θέση: Να χρησιμοποιείται τις υπάρχουσες βασικές δομές δεδομένων. Να υλοποιήσετε δομές δεδομένων σε γλώσσα C++. Να συνδυάζετε δομές για την επίλυση προβλημάτων. Να κατανοήσετε καλύτερα μαθήματα όπως Ανάλυση και Σχεδίαση Αλγορίθμων, Βάσεις Δεδομένων.
Διάρθρωση Μαθήματος C++ Θέματα απόδοσης αλγορίθμων Αναπαράσταση δεδομένων Πίνακες Γραμμικές λίστες Στοίβες Κατακερματισμός Δένδρα Ουρές προτεραιότητας Δυαδικά δένδρα αναζήτησης Γραφήματα Προχωρημένα θέματα -Τετραδικά και πολυδιάστατα δένδρα -Δυναμικά δένδρα
Βιβλιογραφία Aho, Ullman, Hopcroft: “Data Structures and Algorithms”, Addison- Wesley, 1983 Weiss: “Data Structures and Algorithm Analysis in C++”, Addison- Wesley, 2006 Drozdek: “Data Structures and Algorithms in C++”, Course Technology, 2004 Knuth: “The Art of Computer Programming”, Volumes 1-3, Addison- Wesley Professional, 1998
Χρήσιμοι Σύνδεσμοι Handbook of Algorithms and Data Structures ndbook/implement.shtml Dictionary of Algorithms and Data Structures Interactive Data Structures Visualization
Εισαγωγή Οι Δομές Δεδομένων αποτελούν βασικά εργαλεία τα οποία χρησιμοποιούνται από αλγορίθμους για την επίλυση ενός προβλήματος. Με απλά λόγια: Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Δομές Δεδομένων στοχεύουν στην αποτελεσματική και αποδοτική οργάνωση των δεδομένων έτσι ώστε κάποιες λειτουργίες να εκτελούνται γρήγορα.
Εισαγωγή Η χρήση καλύτερου hardware είναι η προφανής και όχι πάντα η καλύτερη λύση για τη μείωση του χρόνου εκτέλεσης μίας εφαρμογής ή την επίλυση ενός προβλήματος. Η χρήση της κατάλληλης δομής και του κατάλληλου αλγορίθμου θεωρούνται πιο σημαντικά στοιχεία από την απόκτηση καλύτερου hardware. Γιατί;