-

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

  • Κωδικός: 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)

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

14 Ιούν 2019
Θέση Εργασίας: Μηχανικός Λογισμικού
29 Μάι 2019
Εθελοντική δράση καθαριότητας από το IEEE Student Branch ATEITHE
27 Μάι 2019
Τετάρτη 29/5/19, και ώρα 13.30 – i-Mentor, Επιτυχημένο mentoring; Τι θα κερδίσω;
22 Μάι 2019
Φόρμα συμμετοχής στο δίκτυο i-Mentor
14 Μάι 2019
Προσκεκλημένη Ομιλία Prof. Athina Petropulu, Rutgers University, USA
13 Μάι 2019
H2020 Marie Curie ITN project TeamUp5G – OPEN 2 ESR positions in Thessaloniki!
12 Μάι 2019
Μετακίνηση με Erasmus+ (πρακτική άσκηση/after placement/πτυχιακή)
9 Μάι 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)
3 Δεκ 2018
Εκδήλωση «Robotic Operating System to Reality»
27 Νοέ 2018
IEEE Career Day 2018
16 Νοέ 2018
Livestreaming των εργασιών του SingularityU Greece Summit (19-20 Νοεμβρίου 2018)

Δείτε επίσης