(1) ΜΑΘΗΣΙΑΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ
Το μάθημα αποτελεί μία γενική εισαγωγή στις δομές δεδομένων, στους αλγορίθμους που τις χειρίζονται και στην ανάλυση της πολυπλοκότητάς τους. Τα θέματα που καλύπτονται σχετίζονται τόσο με τις στατικές όσο και με τις δυναμικές δομές δεδομένων. Το μάθημα δίνει ιδιαίτερη έμφαση στις τεχνικές της αφαίρεσης δεδομένων και του προγραμματισμού που βασίζεται σε αντικείμενα. Την περίοδο αυτή σα γλώσσα υλοποίησης χρησιμοποιείται η Java.
Με την ολοκλήρωση του μαθήματος οι φοιτητές/τριες:
- Θα έχουν αποκτήσει καλή γνώση των θεμελιωδών δομών δεδομένων και θα είναι σε θέση να τις χρησιμοποιούν για την υλοποίηση καλοσχεδιασμένων και αποδοτικών προγραμμάτων.
- Θα έχουν κατανοήσει τις έννοιες των αφηρημένων τύπων δεδομένων και των αντικειμένων και το ρόλο που παίζουν στην ανάπτυξη των προγραμματιστικών συστημάτων.
- Θα μπορούν να αναλύουν την πολυπλοκότητα των προγραμμάτων που αναπτύσσουν΄.
(2) ΠΕΡΙΕΧΟΜΕΝΟ ΜΑΘΗΜΑΤΟΣ
- Εισαγωγικές Εννοιες
- Δομές Δεδομένων, Τύποι Δεδομένων και η υλοποίησή τους
- Αφηρημένοι Τύποι Δεδομένων (Abstract Data Types)
- Απόκρυψη πληροφορίας, “ενκαψούλωση” δεδομένων, κληρονομικότητα και πολυμορφισμός.
- Πρωταρχικοί Τύποι Δεδομένων στη Java
- Τύποι Αναφοράς στη Java
- Έλεγχος τύπων (type checking)
- Ανάλυση Πολυπλοκότητας
- Τύποι πολυπλοκότητας
- Παραδείγματα ανάλυσης πολυπλοκότητας αλγορίθμων ταξινόμησης
- Γραμμικές Δομές Δεδομένων
- Πίνακες (Arrays)
- Διανύσματα (Vectors)
- Συμβολοσειρές (Strings) Αμετάβλητες και Ευμετάβλητες συμβολοσειρές
- H κλάση StringTokenizer στη Java
- Στοίβες και Ουρές (Stacks & Queues)
- Υλοποίηση Στοίβας με τη βοήθεια Πίνακα και Διανύσματος
- Υλοποίηση Ουράς με τη βοήθεια Πίνακα και Διανύσματος
- Κυκλική Ουρά
- Δυναμικές Δομές Δεδομένων
- Συνδεδεμένες Λίστες (Linked Lists)
- Εφαρμογές Δυναμικής Εκχώρησης μνήμης
- Υλοποίηση Στοίβας και Ουράς με τη βοήθεια Συνδεδεμένης Λίστας
- Αναδρομή
- Αναδρομικοί αλγόριθμοι και αναδρομικές δομές δεδομένων
- Η Αναδρομή σαν Μεθοδολογία Προγραμματισμού
- Δέντρα (Trees)
- Ορισμοί και ορολογία
- Δυαδικά Δέντρα
- Υλοποίηση Δυαδικών Δέντρων με τη βοήθεια Δεικτών
- Μέθοδοι Διέλευσης από τους κόμβους Δυαδικού Δέντρου
- Δυαδικά Δέντρα Αναζήτησης
- Σωροί και Λίστες Προτεραιοτήτων
- Γράφοι (Graphs)
- Ορισμοί και ορολογία
- τρόποι υλοποίησης γράφων
- Βασικοί αλγόριθμοι γράφων.
- Αρχεία και Ρεύματα (Files & Streams)
- Φυσική και Λογική Οργάνωση αρχείων
- Ακολουθιακά αρχεία
- H Έννοια του Stream στη Java
- Streams Εισόδου Αρχείων (Είσοδος Αρχείων)
- Streams Εξόδου Αρχείων (Έξοδος Αρχείων)
- Διάφοροι Τύποι Streams – Φίλτρα
- Αρχεία κατ’ ευθείαν πρόσβασης, hashing
(3) ΔΙΔΑΚΤΙΚΕΣ και ΜΑΘΗΣΙΑΚΕΣ ΜΕΘΟΔΟΙ – ΑΞΙΟΛΟΓΗΣΗ
ΤΡΟΠΟΣ ΠΑΡΑΔΟΣΗΣ
Πρόσωπο με πρόσωπο, το υλικό του μαθήματος διαθέσιμο στους φοιτητές/τριες Εξ Αποστάσεως
ΧΡΗΣΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ
Περιβάλλον Ανάπτυξης Λογισμικού (NetBeans/Java)
Λογισμικό προσομοίωσης σε επιλεγμένα αντικείμενα
Υποστήριξη Μαθησιακής διαδικασίας μέσω της σελίδας του μαθήματος και ηλεκτρονικής πλατφόρμας (Moodle)
ΟΡΓΑΝΩΣΗ ΔΙΔΑΣΚΑΛΙΑΣ
| Δραστηριότητα |
Φόρτος Εργασίας Εξαμήνου |
| Διαλέξεις Θεωρίας |
13 x 2= 26 |
| Ασκήσεις Πράξης που εστιάζουν στην εφαρμογή μεθοδολογιών και των τεχνικών της θεωρίας |
13 x 2 = 26 |
| Εργαστηριακές ασκήσεις που εστιάζουν στην προγραμματιστική υλοποίηση(γλώσσα Java) των μεθοδολογιών και των τεχνικών της θεωρίας |
13 x 2 = 26 |
| Αυτοτελής Μελέτη |
18 x 5.5 = 99 |
| Επικοινωνία/συνεργασία |
3 |
| Σύνολο Μαθήματος (30 ώρες φόρτου εργασίας ανά πιστωτική μονάδα) |
180 |
ΑΞΙΟΛΟΓΗΣΗ ΦΟΙΤΗΤΩΝ
Για το θεωρητικό μέρος του μαθήματος:
Ι. Γραπτή τελική εξέταση (80-100%) που περιλαμβάνει:
– Ερωτήσεις πολλαπλής επιλογής
– Συγκριτική αξιολόγηση στοιχείων θεωρίας
– Επίλυση μικρών προβλημάτων σχετικών με τη θεωρία
ΙΙ. Συγγραφή – Παρουσίαση Εργασίας (0-20%)
Για το εργαστηριακό μέρος του μαθήματος:
Ανάπτυξη σειράς Προγραμμάτων/Εφαρμογών και τελική εξέτασή που βασίζεται σε αυτά
(4) ΣΥΝΙΣΤΩΜΕΝΗ-ΒΙΒΛΙΟΓΡΑΦΙΑ
1. Δ. Σταμάτης, Δομές Δεδομένων με JAVA, Σημειώσεις Διαλέξεων
2. Algorithms in Java, Parts 1-4 : Fundamentals, Data Structures, Sorting, Searching», Robert Sedgewick, 3rd Edition, Addison-Wesley (2003)Κυκλοφορεί μετάφρασή του στα Ελληνικά: Αλγόριθμοι σε JAVA (προτάθηκε στον «Εύδοξο»)
3. “Data Structures and Algorithms in Java”, Robert Lafore, 2nd Edition, SAMS (200?)Κυκλοφορεί μετάφρασή του στα Ελληνικά: Δομές Δεδομένων & Αλγόριθμοι σε JAVA (προτάθηκε στον «Εύδοξο»)
4. “Data Structures and Algorithms in Java”, Michael Goodrich & Roberto Tamassia, 4th Edition, Addison-Wesley (2006)