-

Δομές Δεδομένων και Ανάλυση Αλγορίθμων

  • Κωδικός: 5302
  • Εξάμηνο: Εξαμ. Γ
  • Τύπος: Μάθημα Επιστημονικής Περιοχής (ΜΕΠ)
  • Κατηγορία: Μάθημα Ειδικής Υποδομής (ΜΕΥ)
  • Είδος: Υποχρεωτικό (Υ)

(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)

Πρόσφατες Ανακοινώσεις

4 Οκτ 2019
Διδασκαλία μαθημάτων από Μεταδιδάκτορες (ΕΣΠΑ)
4 Οκτ 2019
ΤΡΟΠΟΠΟΙΗΤΙΚΕΣ δηλώσεις μαθημάτων στο πληροφοριακό σύστημα ΠΥΘΙΑ 2019-20Χ
4 Οκτ 2019
Δηλώσεις τμημάτων εργαστηρίων 2019-20Χ
3 Οκτ 2019
ΠΡΟΘΕΣΜΙΕΣ ΚΑΙ ΔΙΚΑΙΟΛΟΓΗΤΙΚΑ ΣΙΤΙΣΗΣ ΑΚΑΔ.ΕΤΟΥΣ 2019-2020
3 Οκτ 2019
Οργάνωση Πινάκων Ανακοινώσεων
2 Οκτ 2019
ΔΗΛΩΣΕΙΣ ΜΑΘΗΜΑΤΩΝ ΚΑΤΕΥΘΥΝΣΕΩΝ – ΠΡΩΗΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ
2 Οκτ 2019
Θέση υποψήφιου διδάκτορα σε ερευνητικό έργο
1 Οκτ 2019
Μετακίνηση το Χειμερινό 2019-2020 – Δήλωση μαθημάτων στο Pithia (επείγον)

Πρόσφατες Εκδηλώσεις

3 Οκτ 2019
Τελετή Υποδοχής Πρωτοετών φοιτητών/τριών 2019-20
30 Σεπ 2019
Track on 5G for the Industrial Internet of Things @IEEE 5G World Forum
29 Αυγ 2019
Ημερίδα Πρακτικής Άσκησης
10 Ιουν 2019
Ημερίδα «Εθνική Στρατηγική Κυβερνοασφάλειας» στο Υπουργείο Ψηφιακής Πολιτικής
14 Απρ 2019
6ο Technology Forum – 15 Απριλίου 2019 (τελικό πρόγραμμα)
19 Μαρ 2019
6ο Technology Forum – 15 Απριλίου 2019 (εισιτήρια με μειωμένο κόστος)
19 Μαρ 2019
OWASP Student Chapter Συνάντηση «Introduction to Digital Forensics»
17 Δεκ 2018
Ομιλία του καθηγητή Man Wai Mak (Hong Kοng Polytechnic University)

Δείτε επίσης