Τμήμα Πληροφορικής, Φθινόπωρο 2002

Η/Υ 4-32: Δομές Δεδομένων

Υποχρεωτικό μάθημα 3ου εξαμήνου  

 


Γενικά | Ανακοινώσεις | Ημερολόγιο | Διαφάνειες Διαλέξεων & Άλλο Υλικό


Το 4ο Σετ Ασκήσεων είναι διαθέσιμο.


Εξέταση 4ης Προγραμματιστικής Άσκησης

H εξέταση της 4ης προγραμματιστικής άσκησης θα γίνει την Πέμπτη 16/1 και την Παρασκευή 17/1 στο γραφείο μου. Η εξέταση της άσκησης είναι υποχρεωτική και θα πρέπει όλοι όσοι έχετε παραδώσει την άσκηση να έρθετε στην προφορική της εξέταση. Όσοι φοιτητές δεν μπορέσουν να έρθουν θα πρέπει να με ενημερώσουν πριν την εξέταση, διαφορετικά η άσκηση τους θα μηδενιστεί. Οι φοιτητές που έχουν παραδώσει την άσκηση και θέλουν να εξεταστούν θα πρέπει να δηλώσουν την ώρα της προτίμησής τους σε έναν από τους πίνακες που έχουν αναρτηθεί έξω από το γραφείο μου. Όλοι οι φοιτητές θα πρέπει να έχουν συμπληρώσει το όνομά τους πριν ξεκινήσει η εξέταση την Πέμπτη 16/1.


Εξέταση 3ης Προγραμματιστικής Άσκησης

H εξέταση της 3ης προγραμματιστικής άσκησης θα γίνει τη Δευτέρα 13/1, την Τρίτη 14/1 και την Τετάρτη 15/1 στο γραφείο μου. Η εξέταση της άσκησης είναι υποχρεωτική και θα πρέπει όλοι όσοι έχετε παραδώσει την άσκηση να έρθετε στην προφορική της εξέταση. Όσοι φοιτητές δεν μπορέσουν να έρθουν θα πρέπει να με ενημερώσουν πριν την εξέταση, διαφορετικά η άσκηση τους θα μηδενιστεί. Οι φοιτητές που έχουν παραδώσει την άσκηση και θέλουν να εξεταστούν θα πρέπει να δηλώσουν την ώρα της προτίμησής τους σε έναν από τους πίνακες που έχουν αναρτηθεί έξω από το γραφείο μου. Όλοι οι φοιτητές θα πρέπει να έχουν συμπληρώσει το όνομά τους πριν ξεκινήσει η εξέταση τη Δευτέρα 13/1.


Γενικές Πληροφορίες

Διδάσκων:                                               Παναγιώτα Φατούρου
Γραφείο:                                                  26 (Α´ ορόφου)
Ώρες Γραφείου:                                      Δευτέρα: 17:00-19:00, Τρίτη: 17:00 – 19:00 (?)
Ηλεκτρονική Διεύθυνση:                        
Τηλέφωνο:                                               (0651) 98808


Βοηθός Μαθήματος:                                 Στέλιος Μαστρογιαννάκης (smastrog ΑΤ cs.uoi.gr)  
Γραφείο Βοηθού:                                      Α5
Ηλεκτρονική Διεύθυνση Μαθήματος:      

 

Ώρες και Αίθουσες Διδασκαλίας

Δευτέρα, 15:00-17:00, στην αίθουσα Ι-2.
Τετάρτη, 15:00-17:00, στην αίθουσα Ι-2.

 

Ώρες και Αίθουσα Φροντιστηρίου

Τρίτη, 15:00-17:00, στην αίθουσα Ι-2 ή στο εργαστήριο UNIX του 1ου ορόφου. 

 

Σύνοψη Μαθήματος

Το μάθημα θα εστιάσει στη μελέτη βασικών δομών δεδομένων, όπως π.χ. πινάκων, λιστών, στοιβών, ουρών, δένδρων κλπ., καθώς και πιο πολύπλοκων δομών δεδομένων, όπως ισοζυγισμένων δένδρων, γράφων, αλφαριθμιτικών, κ.α. Επίσης, θα μελετηθεί η τεχνική του κατακερματισμού, καθώς και δομές δεδομένων για την υλοποίηση απλών συνόλων και συνόλων με ειδικές λειτουργίες, καθώς και δυναμικών λεξικών.

 

Βιβλία

q       Harry Lewis and Larry Denenberg, “Data Structures and Their Algorithms”, HarperCollins Publishers, Inc., New York, 1991.  

q       Γεώργιος Φ. Γεωργακόπουλος, Δομές Δεδομένων: Έννοιες, Τεχνικές, Αλγόριθμοι, Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 2002.

Το βιβλίο που θα μοιραστεί στους φοιτητές είναι το 2ο από τα παραπάνω. Ωστόσο, το μάθημα θα βασιστεί σε μεγάλο βαθμό στο 1ο βιβλίο της παραπάνω λίστας. Οι διαφάνειες του μαθήματος μαζί με τις σημειώσεις που μπορούν οι φοιτητές να κρατάνε κατά την παράδοση και οποιοδήποτε άλλο υλικό θα μοιρασθεί στην τάξη θα είναι αρκετά για να διεκπεραιώσουν οι φοιτητές επιτυχώς το μάθημα.  

Πρόγραμμα

1η εβδομάδα

Εισαγωγή, Ανάλυση Αλγορίθμων
Δείκτες & Δυναμική Αποθήκευση στη
C, Πίνακες

2η εβδομάδα

Λίστες

3η εβδομάδα

Δένδρα

4η εβδομάδα

Λίστες & Δένδρα: Υλοποίηση Συνόλων  

5η εβδομάδα

Λίστες & Δένδρα: Υλοποίηση Συνόλων

6η εβδομάδα

Ισοζυγισμένα Δένδρα: Υλοποίηση Δυναμικών Λεξικών  

7η εβδομάδα

Ισοζυγισμένα Δένδρα: Υλοποίηση Δυναμικών Λεξικών

8η εβδομάδα

Ισοζυγισμένα Δένδρα: Υλοποίηση Δυναμικών Λεξικών

9η εβδομάδα

Κατακερματισμός

10η εβδομάδα

Κατακερματισμός, Σύνολα που υποστηρίζουν ειδικές λειτουργίες

11η εβδομάδα

Σύνολα που υποστηρίζουν ειδικές λειτουργίες, Αλφαριθμητικά

12η εβδομάδα

Γράφοι

 

Εργασίες και Βαθμολόγηση

Κατά τη διάρκεια του εξαμήνου θα δοθούν 4 εργασίες. Κάθε εργασία θα έχει ένα σύνολο από θεωρητικές ασκήσεις και ένα προγραμματιστικό μέρος. Ο προγραμματισμός θα γίνει σε γλώσσα C. Κάθε εργασία θα πρέπει να επιστρέφεται πριν από την αναγραφόμενη ημερομηνία και ώρα. Δεν υπάρχει δυνατότητα παράτασης για το θεωρητικό μέρος κάθε εργασίας. Το θεωρητικό μέρος καθυστερημένων εργασιών χωρίς προηγούμενη συνεννόηση με το διδάσκοντα θα μηδενίζεται.

Το προγραμματιστικό μέρος μπορεί να παραδοθεί καθυστερημένα βάσει του εξής αλγόριθμου:

§         Αν η παράδοση της άσκησης γίνει μέχρι και τρία 24ωρα μετά την προθεσμία, η άσκηση βαθμολογείται με μείωση βαθμού κατά 1.0/10.0 μονάδα για κάθε μέρα καθυστέρησης. 

§         Αν η παράδοση της άσκησης γίνει αφού έχουν περάσει τρία 24ωρα μετά τη λήξη της προθεσμίας (και φυσικά πριν την εξέταση της άσκησης), η άσκηση βαθμολογείται με άριστα το 5.0/10.0.

Ο προγραμματισμός, όπως και η έκθεση, είναι μια ιδιαίτερη ατομική εργασία. Κάθε φοιτητής πρέπει ατομικά να κατανοήσει το πρόβλημα και να σκιαγραφήσει μια πιθανή λύση του (αν και μπορεί να ρωτάει το βοηθό του μαθήματος τις απορίες του ή για προβλήματα στη μετάφραση του κώδικά του). Είναι επίσης σημαντικό να μπορεί οποιοσδήποτε να διαβάσει τον κώδικά του. Η βαθμολογία στα προγράμματα θα αντικατοπτρίζει την πληρότητα και την ορθότητα, αλλά και τα συνοδεύοντα σχόλια. Μετά από κάθε προγραμματιστική άσκηση ο φοιτητής θα πρέπει να κάνει παρουσίαση (εξήγηση) του κώδικά του, σε κάποια προκαθορισμένη ημερομηνία. Οι αντιγραφές απαγορεύονται αυστηρά και θα τιμωρούνται με μείωση ή μηδένιση βαθμού. Είναι καλύτερα να παραδοθεί μια ημιτελή άσκηση παρά μια παραλλαγμένη αντιγραφή.

Οι φοιτητές μπορούν να χρησιμοποιήσουν οποιονδήποτε υπολογιστή για τις προγραμματιστικές ασκήσεις τους. Για τη βαθμολόγηση της άσκησής τους όμως, το πρόγραμμα θα δοκιμάζεται στα μηχανήματα κάποιου εργαστηρίου του Τμήματος. Σε αυτούς τους σταθμούς εργασίας εκτελείται το λειτουργικό σύστημα unix και η μεταγλώτιση των προγραμμάτων γίνεται με τον μεταγλωτιστή gcc της C. Επομένως, όσοι από τους φοιτητές επιθυμούν να εργαστούν σε άλλα μηχανήματα θα πρέπει να σιγουρευτούν ότι ο κώδικας τους τρέχει σωστά και στα παραπάνω μηχανήματα.

Οι φοιτητές είναι υπεύθυνοι για την κακή χρήση του λογαριασμού τους. Το password τους θα πρέπει να παραμείνει μυστικό και ο λογαριασμός τους να χρησιμοποιείτε μόνο από αυτούς. Θα πρέπει τέλος να φροντίζουν η προστασία του καταλόγου στον οποίο βρίσκονται τα προγράμματά τους να μην επιτρέπει ανάγνωση (ή ακόμη χειρότερα εγγραφή) από άλλους (η εντολή chmod είναι πολύ χρήσιμη).

Η τελική εξέταση θα γίνει με ανοιχτά βιβλία και ανοιχτές σημειώσεις. Όλες οι σημειώσεις που θα έχετε μαζί σας θα πρέπει ωστόσο να είναι δεμένες σε μορφή ενός ή δύο  βιβλίων. Χαρτιά που μπορούν εύκολα να κυκλοφορούν από έδρανο σε έδρανο δεν θα γίνουν δεκτά. Σε όλα τα βιβλία και τις σημειώσεις που θα έχετε μαζί σας θα πρέπει να αναγράφεται το όνομά σας με ανεξίτηλο τρόπο. Στην τελική εξέταση θα πρέπει όλοι οι εξεταζόμενοι φοιτητές να έχουν μαζί τους το πάσο τους. Φοιτητές που δεν έχουν μαζί τους το πάσο τους δεν θα γίνονται δεκτοί στην εξέταση.

Ο τελικός βαθμός θα εξαρτηθεί τόσο από τη βαθμολογία των ασκήσεων, όσο και από την επίδοση των φοιτητών στην τελική εξέταση, ως εξής:

Σειρές Ασκήσεων: 35%
Τελική Εξέταση: 65%

Προκειμένου ένας φοιτητής να περάσει το μάθημα πρέπει να γράψει τουλάχιστον 4 στο τελικό διαγώνισμα και να έχει συγκεντρώσει βαθμό τουλάχιστον 3.5/10.0 στις ασκήσεις του (συνολικά για το θεωρητικό και το προγραμματιστικό μέρος).

Ο ίδιος αλγόριθμος για την διεξαγωγή της βαθμολογίας ισχύει και στην εξέταση του Σεπτεμβρίου.

 

Παρακολούθηση

Η παρακολούθηση στις διαλέξεις αναμένεται, αλλά δεν είναι υποχρεωτική. Ωστόσο, οι φοιτητές θα πρέπει να γνωρίζουν στην τελική εξέταση οτιδήποτε παρουσιάζεται ή αναφέρεται στην τάξη και στο φροντιστήριο. Μεγάλο ποσοστό της ύλης δεν περιέχεται σε βιβλία ή παρουσιάζεται με άλλη σειρά, για αυτό η παρακολούθηση συνίσταται ισχυρά.

 

Παρατήρηση

Θα βοηθήσει πολύ αν οι φοιτητές έχουν διεκπεραιώσει με επιτυχία τα μαθήματα της «Εισαγωγής στον Προγραμματισμό» και της «Εισαγωγής στους Η/Υ». H καλή γνώση της γλώσσας Προγραμματισμού  C είναι απαραίτητη.

 

Άλλη σχετική βιβλιογραφία

 


Ανακοινώσεις

  Εξέταση 4ης Προγραμματιστικής Άσκησης

Η εξέταση της 4ης προγραμματιστικής άσκησης θα γίνει την Πέμπτη 16/1 και την Παρασκευή 17/1 στο γραφείο μου. Η εξέταση της άσκησης είναι υποχρεωτική και θα πρέπει όλοι όσοι έχετε παραδώσει την άσκηση να έρθετε στην προφορική της εξέταση. Όσοι φοιτητές δεν μπορέσουν να έρθουν θα πρέπει να με ενημερώσουν πριν την εξέταση, διαφορετικά η άσκηση τους θα μηδενιστεί. Οι φοιτητές που έχουν παραδώσει την άσκηση και θέλουν να εξεταστούν θα πρέπει να δηλώσουν την ώρα της προτίμησής τους σε έναν από τους πίνακες που έχουν αναρτηθεί έξω από το γραφείο μου. Όλοι οι φοιτητές θα πρέπει να έχουν συμπληρώσει το όνομά τους πριν ξεκινήσει η εξέταση τη Δευτέρα 13/1.

  Εξέταση 3ης Προγραμματιστικής Άσκησης

Η εξέταση της 3ης προγραμματιστικής άσκησης θα γίνει τη Δευτέρα 13/1, την Τρίτη 14/1 και την Τετάρτη 15/1 στο γραφείο μου. Η εξέταση της άσκησης είναι υποχρεωτική και θα πρέπει όλοι όσοι έχετε παραδώσει την άσκηση να έρθετε στην προφορική της εξέταση. Όσοι φοιτητές δεν μπορέσουν να έρθουν θα πρέπει να με ενημερώσουν πριν την εξέταση, διαφορετικά η άσκηση τους θα μηδενιστεί. Οι φοιτητές που έχουν παραδώσει την άσκηση και θέλουν να εξεταστούν θα πρέπει να δηλώσουν την ώρα της προτίμησής τους σε έναν από τους πίνακες που έχουν αναρτηθεί έξω από το γραφείο μου. Όλοι οι φοιτητές θα πρέπει να έχουν συμπληρώσει το όνομά τους πριν ξεκινήσει η εξέταση τη Δευτέρα 13/1.

Η εξέταση της 2ης προγραμματιστικής άσκησης θα γίνει την Τετάρτη 18/12, την Πέμπτη 19/12  και την Παρασκευή 20/12 στο γραφείο μου. Η εξέταση της άσκησης είναι υποχρεωτική και θα πρέπει όλοι όσοι έχετε παραδώσει την άσκηση να έρθετε στην προφορική της εξέταση. Όσοι φοιτητές δεν μπορέσουν να έρθουν θα πρέπει να με ενημερώσουν πριν την εξέταση, διαφορετικά η άσκηση τους θα μηδενιστεί. Οι φοιτητές που έχουν παραδώσει την άσκηση και θέλουν να εξεταστούν θα πρέπει να δηλώσουν την ώρα της προτίμησής τους σε έναν από τους πίνακες που έχουν αναρτηθεί έξω από το γραφείο μου. Όλοι οι φοιτητές θα πρέπει να έχουν συμπληρώσει το όνομά τους ΠΡΙΝ ΞΕΚΙΝΗΣΕΙ Η ΕΞΕΤΑΣΗ το πρωί της Τετάρτης 18/12.


Ημερολόγιο

Δευτέρα Τρίτη Τετάρτη Πέμπτη Παρασκευή
30/9

 

1/10

 

2/10

 

3/10

 

4/10

 

7/10

Μελέτη διαφανειών & κεφ. 1, Γεωργακόπουλου (επιλεκτικά). Εισαγωγή.
Επανάληψη στη C

Το βάρος πρέπει να δοθεί στην επανάληψη της C.

8/10

 

 

 

9/10

Μελέτη Διαφανειών & κεφ. 2, Γεωργακόπουλου (επιλεκτικά). Εισαγωγή.
Επανάληψη στη C 

Το βάρος πρέπει να δοθεί στην επανάληψη της C.

10/10

 

 


11/10

 

 

 

14/10

Αργία λόγω Εκλογών

Μελέτη διαφανειών. Σειριακές Στοίβες, Σειριακές Ουρές.

 

15/10

Extra δίωρο:

Μελέτη διαφανειών. Συνδεδεμένες Στοίβες, Συνδεδεμένες Ουρές

16/10

Μελέτη διαφανειών. Συνδεδεμένες Στοίβες, Συνδεδεμένες Ουρές.

 

17/10

 

 

 

18/10

 

 

 

21/10

Μελέτη διαφανειών. Λίστες, Ταξινομημένες Λίστες.

Μπορείτε να δουλεύετε στις ασκήσεις 1-5 του θεωρητικού μέρους της 1ης σειράς.


22/10 

Εργαστηριακή Απασχόληση

 

 

 

 

23/10

Μελέτη διαφανειών. Διασχίσεις, Διασχίσεις Zig-Zag.

Βάρος στην επίλυση των θεωρητικών ασκήσεων του 1ου σετ.

Η ύλη για την επίλυση όλων των θεωρητικών ασκήσεων έχει καλυφθεί.

24/10

 

 

 

 

 

 

25/10

 

 

 

 

 

 

28/10

 

 


 

 

 

 

 


29/10

 


 

 

 

 

 


 

30/10

Μελέτη διαφανειών. Διασχίσεις Ζig-Zag, Διπλά Συνδεδεμένη λίστα.

Βάρος στην επίλυση των προγραμματιστικών ασκήσεων 1ου μέρους

 

Θεωρητικές ασκήσεις 1ου σετ: due

 

 

31/10

Εργαστηριακή Απασχόληση

 

 

 

 

 

 


1/11

Extra δίωρο: 

 Μελέτη διαφανειών. Διασχίσεις Ζig-Zag, Διπλά Συνδεδεμένη λίστα.

Βάρος στην επίλυση των προγραμματιστικών ασκήσεων 1ου μέρους

 Η ύλη για την επίλυση των όλων των προγραμματιστικών ασκήσεων έχει καλυφθεί.

 

4/11

 Μελέτη διαφανειών. Δένδρα, Είδη & Ιδιότητες, Λειτουργίες, Υλοποίηση.

 

 

 


 5/11

 

 

 

 

 

 

6/11

Μελέτη διαφανειών. Δένδρα, Διάσχιση Δένδρων, Υλοποίηση διασχίσεων, Αναστροφή, Νηματικά δένδρα.

Βάρος στην επίλυση των προγραμματιστικών ασκήσεων 2ου μέρους


7/11

Extra Δίωρο

 

Μελέτη διαφανειών. Σύνολα & Λεξικά.

Βάρος στην επίλυση των προγραμματιστικών ασκήσεων 2ου μέρους

 

8/11

 

 

 

 

 

 

11/11

Μελέτη διαφανειών. Σύνολα & Λεξικά.

 

Προγραμματιστικό Μέρος B 1ου σετ: due 

 



12/11

 

 

 

 

 

 

 

13/11

Μελέτη διαφανειών. Λίστες Παράλειψης.

Η ύλη για την επίλυση των ασκήσεων 1,2,3, 4, 6 και 7 του 2ου σετ  έχει καλυφθεί.

 

 

 

14/11

Extra Δίωρο

Μελέτη διαφανειών.
Ταξινομημένα Δυαδικά Δένδρα

Η ύλη για την επίλυση της άσκησης 5  του 2ου σετ  έχει καλυφθεί.

Βάρος στην επίλυση των θεωρητικών ασκήσεων του 2ου σετ.

15/11

 

 

 

 

 

 

 

18/11

Μελέτη Διαφανειών.
AVL


19/11

 

 

 

20/11

Μελέτη Διαφανειών.
2-3 Δένδρα

Θεωρητικό Μέρος 2ου σετ: due

21/11

Εργαστηριακή Απασχόληση

 

 

22/11

 

 

 

25/11


Μελέτη Διαφανειών. Κόκκινα-Μαύρα Δένδρα.

 

26/11


 

27/11


Μελέτη Διαφανειών. (a,b)-Δένδρα.

 

28/11


 

29/11

Προγραμματιστικό Μέρος 2ου σετ: due

2/12

Μελέτη Διαφανειών. Splay Δένδρα

Έμφαση στην επίλυση των θεωρητικών ασκήσεων του 3ου Σετ. Η ύλη για την επίλυση αυτών των ασκήσεων έχει καλυφθεί.

3/12

 

 

 

 

 

4/12 

Μελέτη Διαφανειών. Hashing. Μέθοδος Αλυσίδας, Μέθοδος Μικτών Αλυσιδών.

 

 

 

5/12

 

 

 


 

6/12

 

 

 


 

9/12

Μελέτη Διαφανειών. Hashing. Μέθοδος Ανοικτής Διεύθυνσης, Ordered Hashing.

 

 

 


10/12

 

 

 

 

 

 

 

11/12

Μελέτη Διαφανειών. Hashing, Επεκτάσιμος Κατακερματισμός, Συναρτήσεις Κατακερματισμού.

Έμφαση στον προγραμματισμό της 3ης προγραμματιστικής άσκησης.

Θεωρητικό Μέρος 3ου Σετ: due

12/12

 

Φροντιστηριακή Απασχόληση

 

 

 

 

 

13/12

 

 

 

 

 

 

 

16/12

Μελέτη Διαφανειών. Ουρές Προτεραιότητας, Ξένα Σύνολα με Ένωση

 

17/12

 

 

 

18/12

 Μελέτη Διαφανειών. Αλφαριθμητικά, Κωδικοποίηση κατά Lebel-Ziv, Κωδικοποίηση Huffman. Γράφοι.

19/12

 

 

 

20/12

 

 

 

23/12

Προγραμματιστικό Μέρος 3ου Σετ: due

24/12


25/12


26/12


27/12


6/1

 

7/1

 

8/1

 

9/1

 Φροντιστηριακή Απασχόληση

10/1

 

13/1

Φροντιστηριακή Απασχόληση 

 

 

14/1

Θεωρητικό & Προγραμματιστικό Μέρος 4ου Σετ: due

 Φροντιστηριακή Απασχόληση

15/1

Φροντιστηριακή Απασχόληση 

 

 

16/1

 


 

17/1

 


 

 


Διαφάνειες Διαλέξεων & Άλλο Υλικό

Εκφώνηση 4ου σετ ασκήσεων (homework4.doc)

 


Τελευταία  τροποποίηση: 9/1/03
Κατασκευή και συντήρηση των σελίδων:  Παναγιώτα Φατούρου