Τεχνολογίες Υλοποίησης Αλγορίθµων



Σχετικά έγγραφα
Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Προγραμματισμός ΙΙ Ενότητα 5:

οµηµένος Προγραµµατισµός ΙΙΙ - Java

Δομές Δεδομένων. Παύλος Εφραιμίδης

οµηµένος Προγραµµατισµός ΙΙΙ - Java Παύλος Εφραιµίδης οµηµένος Προγρ. ΙΙΙ - 1 Java Το Μάθηµα

Περιγραφή Μαθήματος ΠΕΡΙΓΡΑΦΗ ΜΑΘΗΜΑΤΟΣ. Γεώργιος Παπαϊωάννου ( )

Προγραμματισμός ΙΙ. Ενότητα 8: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 7: Βιβλιοθήκες - Μέρος 2. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 2: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Δομές Δεδομένων. Ενότητα 2: Περισσότερα για τους δείκτες. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Το µάθηµα Αντικείµενο-Περιεχόµενα µαθήµατος Τρόπος ιδασκαλίας Εργαστήριο Βιβλίο, Βιβλιογραφία On-line Υλικό 2

Αλγόριθμοι και Πολυπλοκότητα

Δομημένος Προγραμματισμός ΙΙΙ - Java

Τεχνολογίες Υλοποίησης Αλγορίθµων

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 1 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθµοι και Πολυπλοκότητα

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ

Αλγόριθμοι και Πολυπλοκότητα

Αλγόριθμοι και Πολυπλοκότητα

Δομές Δεδομένων Ενότητα 1

Προγραμματισμός ΙΙ. Ενότητα 7: Βιβλιοθήκες - Μέρος 1. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 4:

Προγραμματισμός ΙΙ. Ενότητα 6: Βιβλιοθήκες - Μέρος 1. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ Ενότητα 3:

Μοτίβα Σχεδίασης (Design Patterns)

Προγραμματισμός ΙΙ. Ενότητα 1: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Tεχνολογία Λογισµικού II

Δομές Δεδομένων. Ενότητα 3: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός ΙΙ. Ενότητα 9: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 2 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Προγραμματισμός ΙΙ. Ενότητα 4: Διαχείριση μνήμης. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Προγραμματισμός ΙΙ. Ενότητα 1: Προαπαιτούμενα. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

Αλγόριθμοι και Πολυπλοκότητα

Προγραμματισμός ΙΙ Ενότητα 5:

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

Τεχνολογίες Υλοποίησης Αλγορίθµων

ΗΥ 252: Αντικειµενοστρεφής Προγραµµατισµός

Εισαγωγικά. 1 η Εβδομάδα. Κάθε Τρίτη (17:00-20:00) και Τετάρτη (13:00 15:00) στην αίθουσα Ι5. 4 ώρες Θεωρία (ΤΡ : 1η-2η ώρα, ΤΕ : 1η-2η ώρα)

Αλγόριθμοι και Πολυπλοκότητα

Προγραμματισμός ΙΙ. Ενότητα 8: Βιβλιοθήκες - Μέρος 2. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Δομές Δεδομένων (Data Structures)

Rational Unified Process:

Τεχνολογίες Υλοποίησης Αλγορίθµων

ΕΞΟΡΥΞΗ ΔΕΔΟΜΕΝΩΝ. Εισαγωγή

ΕΞΟΡΥΞΗ ΔΕΔΟΜΕΝΩΝ. Διαδικαστικά

Ανάλυση Πληροφοριακών Συστημάτων. «Εισαγωγή στην UML» Βασίλειος Καρακόιδας

Ανοικτά Ακαδημαϊκά Μαθήματα

Αντικειμενοστραφής Προγραμματισμός

Εισαγωγή. Τμήμα Μηχανικών Σχεδίασης Προϊόντων και Συστημάτων, ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ. Παναγιώτης Κουτσαμπάσης

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

Προγραμματιστική Εργασία

Δομές Δεδομένων Boost C++ Libraries. 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

Προγραμματισμός ΙΙ. Ενότητα 2: Επανάληψη στον Προγραμματισμό Ι. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στους Αλγορίθμους Ενότητα 10η

Εισαγωγή στην πληροφορική

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΜΑΤΙΚΗΣ Β ΕΞΑΜΗΝΟ

Δομές Δεδομένων. Ενότητα 4: Πίνακες. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στους Αλγορίθμους Ενότητα 7η

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 1 : Σύνολα & Σχέσεις (1/2) Αλέξανδρος Τζάλλας

Σχεδίαση & Ανάλυση Αλγορίθμων

UML: Unified modelling language

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

Δομές Δεδομένων. Ενότητα 1: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός Διαδικτύου

Φ Υ Σ Ι Κ Η Ι (Μ Η Χ Α Ν Ι Κ Η)

Αλγόριθμοι. Χρυσόστομος Στύλιος. Εργαστήριο Γνώσης και Ευφυούς Πληροφορικής. Δομές Δεδομένων & Αλγόριθμοι 1

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Δομές Δεδομένων. Ενότητα 5: Στοίβες. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Κεφάλαιο 6ο: Παρόν και μέλλον της Υπολογιστικής Γλωσσολογίας

ΑΝΑΠΤΥΞΗ ΠΡΟΗΓΜΕΝΩΝ ΛΟΓΙΣΜΙΚΩΝ ΕΡΓΑΛΕΙΩΝ ΓΙΑ ΤΟ ΣΧΕ ΙΑΣΜΟ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΑΙ ΡΥΘΜΙΣΗ ΙΕΡΓΑΣΙΩΝ ΠΟΛΥΜΕΡΙΣΜΟΥ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 3 : Γραφήματα & Αποδείξεις. Αλέξανδρος Τζάλλας

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

Προγραµµατισµός Η/Υ. Δρ. Δ.Ν. Παγώνης. Καθηγητής Εφαρµογών. Τηλ: Τµήµα Ναυπηγών Μηχανικών ΤΕ, ΤΕΙ Αθήνας

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ Επιστήµη των Αποφάσεων, ιοικητική Επιστήµη 5 ο Εξάµηνο. Τµήµα Στατιστικής & Αναλογιστικών-Χρηµατοοικονοµικών Μαθηµατικών

Προγραμματισμός ΙΙ. Ενότητα 10: Πρότυπες συναρτήσεις και πρότυπες κλάσεις - Μέρος 2 Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Οντοκεντρικός Προγραμματισμός

Δομές Δεδομένων (Data Structures)

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΑΚΑΔΗΜΑΪΚΟΥ ΕΤΟΥΣ

Προγραμματισμός Διαδικτύου

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Δεδομένων. Ενότητα 6: Ουρές. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 10 : Κατασκευή ΝΠΑ. Αλέξανδρος Τζάλλας

Αλγόριθμοι. Μάρθα Σιδέρη. epl333 lect

Προγραμματισμός ΙΙ. Ενότητα 3: Βασικοί τύποι δεδομένων. Δρ. Γεώργιος Σίσιας Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

ΕΠΛ 476: ΚΙΝΗΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ

Εισαγωγή στην πληροφορική

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΕΡΙΓΡΑΜΜΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ (ΠΜΣ) ΜΕ ΤΙΤΛΟ

Αθήνα, 13/06/2014 Αριθ. Πρωτ.:49793 Τα μέλη της Ειδικής Επταμελούς Επιτροπής (σύμφωνα με τον πίνακα αποδεκτών) Π Ρ Ο Σ Κ Λ Η Σ Η

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

ΑΝΑΘΕΣΗ ΜΑΘΗΜΑΤΩΝ ΕΝΔΕΙΚΤΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ ΑΚΑΔΗΜΑΪΚΟΥ ΕΤΟΥΣ Α ΕΤΟΣ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Τµήµα Πληροφορικής Φθινοπωρινό Εξάµηνο

Transcript:

Τεχνολογίες Υλοποίησης Αλγορίθµων Σχολιασµένη Βιβλιογραϕία Χρηστος. Ζαρολιαγκης Καθηγητής Τµήµα Μηχ/κων Υπολογιστών & Πληροϕορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Φεβρουάριος 2013 1

Περίληψη Το παρόν κείµενο παρουσιάζει µια ϐασική σχολιασµένη ϐιβλιογραϕία για το µάθηµα Τεχνολογίες Υλοποίησης Αλγορίθµων. Περιέχει µια λίστα ϐιβλίων τα οποία καλύπτουν ένα µεγάλο µέρος του µαθήµατος, καθώς και Ϲητήµατα «συγγενών» γνωστικών περιοχών. Ανάλογα µε τις γνώσεις σας, κάποια µπορεί να είναι καταλληλότερα από κάποια άλλα. 2

1 Τεχνολογίες Υλοποίησης Αλγορίθµων Οι Τεχνολογίες Υλοποίησης Αλγορίθµων (Algorithm Engineering) είναι ένας σχετικά νέος κλάδος της Επιστήµης και Τεχνολογίας Υπολογιστών, που αναπτύχθηκε στο δεύτερο ήµισυ της δεκαετίας του 1990. Ασχολείται κυρίως µε την αποδοτική υλοποίηση αλγορίθµων και δοµών δεδοµένων, καθώς και µε την εκτενή ανάλυση και πειραµατική αξιολόγησή τους, έτσι ώστε το προκύπτον λογισµικό να έχει πρακτική εϕαρµογή. Ασχολείται επίσης µε Ϲητήµατα δηµιουργίας περιβαλλόντων και ϐιβλιοθηκών λογισµικού που επιτρέπουν την εύκολη υλοποίηση και πειραµατική αξιολόγηση αλγορίθµων, και µε Ϲητήµατα µεθοδολογίας σε ότι αϕορά την πει- ϱαµατική έρευνα αλγορίθµων και δοµών δεδοµένων, καθώς και σε ότι αϕορά τη διαδικασία µετατροπής των απαιτήσεων του χρήστη σε αποδοτικές αλγοριθµικές λύσεις και υλοποιήσεις Υπάρχουν τρία πολύ αξιόλογα ϐιβλία σχετικά µε το περιεχόµενο του µαθήµατος. Το πρώτο είναι το κλασσικό ϐιβλίο των Mehlhorn και Naeher [8], το οποίο πραγµατεύεται διεξοδικά τα Ϲητήµατα εύκολης και αποδοτικής υλοποίησης ϐασικών και προηγµένων αλγο- ϱίθµων και δοµών δεδοµένων, µε χρήση της (πιο επιτυχηµένης) ϐιβλιοθήκης/περιβάλλοντος ανάπτυξης αλγορίθµων LEDA (Library for Efficient Data types and Algorithms). Το ϐιβλίο καλύπτει σχεδόν πλήρως το αντικείµενο του µαθήµατος µε χρήση της ϐιβλιοθήκης LEDA ειδικά σε ότι αϕορά την αποδοτική υλοποίηση αλγορίθµων και δοµών δεδοµένων, παρουσιά- Ϲοντας (σε αρκετά µεγάλο ϐάθος) τεχνικές και παραδείγµατα υλοποίησης και πειραµατικής αξιολόγηση µιας πληθώρας αλγορίθµων και δοµών δεδοµένων. Το ϐιβλίο αυτό αποτελεί το κυρίως ϐιβλίο του παρόντος µαθήµατος. Το δεύτερο ϐιβλίο [9], που επιµελήθηκαν οι Mueller-Hannemann και Schirra, πραγµατεύεται όλα σχεδόν τα Ϲητήµατα του κλάδου των Τεχνολογιών Υλοποίησης Αλγορίθµων, και κυρίως Ϲητήµατα µοντελοποίησης προβληµάτων, µεθοδολογίας σχεδιασµού σωστών υλοποιήσεων, δηµιουργίας περιβαλλόντων και ϐιβλιοθηκών λογισµικού, και πειραµατικής αξιολόγησης. Ουσιαστικά, είναι µια εκτενής καταγραϕή της εξέλιξης του κλάδου από τη δεκαετία του 1990 έως σήµερα. Το τρίτο (και πιο πρόσϕατο) ϐιβλίο [7] αϕορά Ϲητήµατα πειραµατικής αξιολόγησης αλγο- ϱίθµων καθώς και µεθοδολογικά Ϲητήµατα σχεδιασµού πειραµάτων. Μία εναλλακτική και ενδιαϕέρουσα µεθοδολογία υλοποίησης αλγορίθµων (που ϑα εξεταστεί και στο µάθηµα) είναι αυτή του γενικευµένου προγραµµατισµού (generic programming). Ο γενικευµένος προγραµµατισµός αποτελεί το υπόβαθρο της ϐιβλιοθήκης της C++και ειδικότερα το τµήµα που ονοµάζεται Standard Template Library (STL). Η µελέτη της STL µπορεί να ξεκινήσει από το ϐιβλίο [6] που παρουσιάζει µε πληρότητα την αρχιτεκτονική της STL καθώς και τους αλγόριθµους και τις δοµές δεδοµένων που παρέχει. Περαιτέρω µελέτη του γενικευµένου προγραµµατισµού γίνεται στο ϐιβλίο [1]. Ειδικότερα στο ϐιβλίο [1] αναλύεται η χρησιµότατη µεθοδολογία του σχεδιασµού κλάσεων µε πολιτικές (policy-based class design). Τέλος, όσοι ενδιαϕέρονται για τεχνικές γενικευµένου προγραµµατισµού στην υλοποίηση αλγορίθµων για γραϕήµατα µπορούν να ανατρέξουν στο ϐιβλίο [11], και για πιο προχωρηµένες εϕαρµογές στο ϐιβλίο [2]. Βιβλία τα οποία καλύπτουν γενικά το αντικείµενο της υλοποίησης αλγορίθµων και δοµών δεδοµένων είναι τα ϐιβλία των Sahni [10] και Weiss [12], αλλά είναι σε εισαγωγικό επίπεδο και δεν προχωρούν σε µεγάλο ϐάθος. Χρήσιµα µπορεί να ϐρείτε και τα ϐιβλία [4, 5]. 3

Αναϕορές [1] A. Alexandrescu, Modern C++design: Programming and Design Patterns Applied, Addison-Wesley, 2001. [2] D. Abrahams and A. Gurtovoy, C++ Template Metaprogramming : Concepts, Tools, and Techniques from Boost and Beyond, Addison-Wesley, 2004. [3] T. Budd, Data structures in C++ using the standard template library, Addison-Wesley, 1998. [4] F. Carrano, P. Helman, and R. Veroff, Data abstraction and problem solving with C++, 2nd Edition, Addison-Wesley, 1998. [5] E. Horowitz, S. Sahni, and D. Mehta, Fundamentals of data structures in C++, Computer Science Press, 1995. [6] N. Jossutis, The C++standard library: a tutorial and a reference, Addison Wesley Longman, 1999. [7] C.C. McGeoch, A Guide to Experimental Algorithmics, Cambridge University Press, 2012. [8] K. Mehlhorn and S. Naeher, LEDA: A platform for combinatorial and geometric computing, Cambridge University Press, 1999. [9] M. Mueller-Hannemanni and S. Schirra, Algorithm Engineering - Bridging the Gap between Algorithm Theory and Practice, Springer 2010. [10] S. Sahni, Data structures, algorithms, and applications in C++, WCB/McGraw-Hill, 1998. [11] J. Siek, A. Lumsdaine, L. Lee, The Boost Graph Library: User Guide and Reference Manual, Addison Wesley, 2002. [12] M.A. Weiss, Data structures and problem Solving with C++, 2nd Edition, Addison- Wesley, 2000. 4

2 Η Γλώσσα C++ Υπάρχουν πολλά διαθέσιµα ϐιβλία για C++ σε διάϕορα επίπεδα. Για όσους έχουν µικρή προγραµµατιστική εµπειρία, ένα αρκετά καλό ϐιβλίο είναι το [1]. Οσοι διαθέτουν µια καλή εµπειρία προγραµµατισµού µπορούν να ανατρέξουν στα ϐιβλία [3, 5, 6]. Το ϐιβλίο των Lippman και Lajoie [3] είναι πολύ καλό, ενώ µια διαϕορετική προσέγγιση µε περισσότερη έµϕαση στον γενικευµένο προγραµµατισµό προσϕέρεται από το ϐιβλίο των Koenig και Moo [2]. Ενα πολύ καλό ϐιβλίο σε προχωρηµένα ϑέµατα C++ είναι αυτό του Meyers [4]. Αναϕορές [1] H.M. Deitel and P.J. Deitel, C++: How to Program, 2nd Edition, Prentice-Hall, 1998. [2] A. Koenig and B. Moo, Accelerated C++, Addison-Wesley, 2000. [3] S.B. Lippman and J. Lajoie, C++ Primer, 3rd Edition, Addison-Wesley, 1998. [4] S. Meyers, Effective C++, 2nd Edition, Addison-Wesley, 1997. [5] I. Pohl, Object-Oriented Programming using C++, 2nd Edition, Addison-Wesley, 1997. [6] B. Stroustrup, The C++ Programming Language, 3rd Edition, Addison-Wesley, 1997. 3 Αντικειµενοστρεϕής Σχεδιασµός, Ανάλυση και Προγραµ- µατισµός Μερικά κλασικά ϐιβλία για την αντικειµενοστρεϕή µεθοδολογία είναι τα [1, 4, 5]. Πιο πρόσϕατα και συνιστώµενα ϐιβλία είναι τα [2, 3]. Το τελευταίο ϐιβλίο [3] εισάγει την έννοια των σχεδιαστικών προτύπων (design patterns) η οποία αποδείχθηκε µια από τις πλέον ϑεµελιώδεις στο σχεδιασµό λογισµικού τα τελευταία χρόνια. Αναϕορές [1] G. Booch, Object Oriented Design with Applications, 2nd Edition, Benjamin Cummings, 1994. [2] T. Budd, An Introduction to Object-Oriented Programming, 2nd Edition, Addison- Wesley, 1997. [3] E. Gamma, R. Helms, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. 5

[4] B. Meyer, Object Oriented Software Construction, Prentice-Hall, 1988. [5] J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, and W. Lorenson, Object Oriented Modelling and Design, Prentice Hall, 1991. 4 Αλγόριθµοι και οµές εδοµένων Γενικά Υπάρχει µια πληθώρα καλών ϐιβλίων για τον (ϑεωρητικό) σχεδιασµό και την ανάλυση αλγο- ϱίθµων και δοµών δεδοµένων. Συνιστώµενα αντιπροσωπευτικά δείγµατα αποτελούν τα ϐιβλία [1, 2, 3, 4, 5]. Τα ϐιβλία [3, 4] είναι πολύ καλά και περιέχουν αρκετό υλικό πρόσϕατων ερευνητικών αποτελεσµάτων σε αλγορίθµους και δοµές δεδοµένων. Το ίδιο ισχύει και για το ϐιβλίο [2], το οποίο είναι σε πιο προχωρηµένο επίπεδο και εστιάζει κυρίως σε ϑέµατα ϱοών και συντοµότερων διαδροµών. References [1] A. Aho, J. Hopcroft, and J. Ullman, Data Structures and Algorithms, Addison-Wesley, 1983. [2] R. Ahuja, T. Magnanti, and J. Orlin, Network Flows, Prentice-Hall, 1993. [3] T. Cormen, C. Leiserson, R. Rivest, and C. Stein, Εισαγωγή στους Αλγορίθµους, ελληνική έκδοση, Πανεπιστηµιακές Εκδόσεις Κρήτης, 2012. [4] J. Kleinberg and E. Tardos, Σχεδιασµός Αλγορίθµων, ελληνική έκδοση, Εκδόσεις Κλειδάριθµος, 2008. [5] R.E. Tarjan, Data Structures and Network Algorithms, SIAM, 1983. 6