120 likes | 161 Views
Explore data structures with C++ algorithms, learn concepts of algorithm analysis, develop coding skills, and enhance problem-solving abilities. 8
E N D
Δομές Δεδομένων(Data Structures)3o Εξάμηνο Σπουδών Διδάσκων: Απόστολος Παπαδόπουλος 2310-991918και 2310-996363 apostol@delab.csd.auth.gr papadopo@csd.auth.gr Εργαστήριο Τεχνολογίας και Επεξεργασίας Δεδομένων http://delab.csd.auth.gr Ιστοσελίδα μαθήματος http://delab.csd.auth.gr/courses/c_ds/index.html
Διδασκαλία του Μαθήματος • 4 ώρες την εβδομάδα (θεωρία + ασκήσεις). • Τετάρτη 15-17(Β) και Παρασκευή 9-11 (Β). • Εργασία 40-50% του βαθμού. • Η εργασίες παραδίδονται αποκλειστικά στην εξεταστική του Ιανουαρίου. • Ο βαθμός της εργασίας μπορεί να κρατηθεί μέχρι το Σεπτέμβριο. • Οι επι πτυχίω μπορούν να εκπονήσουν την εργασία και στην εξεταστική του Ιουνίου.
Εργασία Αντικείμενο: υλοποίηση αλγορίθμων και δομών δεδομένων σε C++ Τμήματα: • Θεωρητική μελέτη • Πηγαίος κώδικας με σχόλια • Εκτελέσιμο αρχείο • Πειραματικές μετρήσεις
Διδασκαλία του Μαθήματος Διδακτικό Βιβλίο: Δομές Δεδομένων Αλγόριθμοι και Εφαρμογές στη C++ Sartaj Shani Μετάφραση: Ι. Μανωλόπουλος, Ι. Θεοδωρίδης
Διδασκαλία του Μαθήματος Για το μάθημα θα χρειαστούμε • Βασικές γνώσεις C++ • Βασικές γνώσεις θεωρίας αλγορίθμων Τα παραπάνω θέματα διδάσκονται σε ξεχωριστά μαθήματα. Ωστόσο θα μελετήσουμε τις απαραίτητες έννοιες ώστε να προχωρήσουμε με άνεση.
Στόχοι Διδασκαλίας • Κατανόηση της αρχής ότι κάθε δομή δεδομένων έχει υπέρ και κατά. • Εκμάθηση των πιο δημοφιλών δομών δεδομένων • Αυτές σχηματίζουν ένα βασικό σύνολο εργαλείων πάνω στις δομές δεδομένων, το οποίο είναι χρήσιμο για έναν προγραμματιστή • Κατανόηση των τεχνικών μέτρησης του κόστους μιας δομής δεδομένων ή ενός προγράμματος • Αυτές οι τεχνικές επίσης επιτρέπουν να κριθεί η αξία νέων δομών δεδομένων που μπορεί να ανακαλυφθούν στο μέλλον.
Στόχοι Διδασκαλίας Μετά την ολοκλήρωση του μαθήματος θα είστε σε θέση: • Να χρησιμοποιείται τις υπάρχουσες βασικές δομές δεδομένων. • Να υλοποιήσετε δομές δεδομένων σε γλώσσα C++. • Να συνδυάζετε δομές για την επίλυση προβλημάτων. • Να κατανοήσετε καλύτερα μαθήματα όπως Ανάλυση και Σχεδίαση Αλγορίθμων, Βάσεις Δεδομένων.
Διάρθρωση Μαθήματος • C++ • Θέματα απόδοσης αλγορίθμων • Αναπαράσταση δεδομένων • Πίνακες • Γραμμικές λίστες • Στοίβες • Κατακερματισμός • Δένδρα • Ουρές προτεραιότητας • Δυαδικά δένδρα αναζήτησης • Γραφήματα Προχωρημένα θέματα • Τετραδικά και πολυδιάστατα δένδρα • Δυναμικά δένδρα
Βιβλιογραφία Aho, Ullman, Hopcroft: “Data Structures and Algorithms”, Addison-Wesley, 1983 Weiss: “Data Structures and Algorithm Analysis in C++”, Addison-Wesley, 2006 Knuth:“The Art of Computer Programming”, Volumes1-3, Addison-Wesley Professional, 1998 Drozdek: “Data Structures and Algorithms in C++”, Course Technology, 2004
Χρήσιμοι Σύνδεσμοι Handbook of Algorithms and Data Structures http://www.cs.sunysb.edu/~algorith/implement/handbook/implement.shtml Dictionary of Algorithms and Data Structures http://www.nist.gov/dads/ Interactive Data Structures Visualization http://www.student.seas.gwu.edu/~idsv/idsv.html
Εισαγωγή Οι Δομές Δεδομένων αποτελούν βασικά εργαλεία τα οποία χρησιμοποιούνται από αλγορίθμους για την επίλυση ενός προβλήματος. Με απλά λόγια: Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Δομές Δεδομένων στοχεύουν στην αποτελεσματική και αποδοτική οργάνωση των δεδομένων έτσι ώστε κάποιες λειτουργίες να εκτελούνται γρήγορα.
Εισαγωγή Η χρήση καλύτερου hardwareείναι η προφανής και όχι πάντα η καλύτερη λύση για τη μείωση του χρόνου εκτέλεσης μίας εφαρμογής ή την επίλυση ενός προβλήματος. Η χρήση της κατάλληλης δομής και του κατάλληλου αλγορίθμου θεωρούνται πιο σημαντικά στοιχείααπό την απόκτηση καλύτερου hardware. Γιατί;