ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

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

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

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

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

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

Διάλεξη 01: Δομές Δεδομένων και Αλγόριθμοι Εισαγωγή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Περιγραφή Μαθήματος. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 3

Διάλεξη 01: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή

ΗΜΥ 203 Εργαστήριο Κυκλωµάτων και Μετρήσεων

Μέγιστη τιμή Οι στόχοι του μαθήματος είναι σαφείς ,18 0, ,5 4,31 0, ,29 0, ,82 1, ,71 1,27 1 5

Προγραμματισμός Χειμερινό Εξάμηνο 2014

Διάλεξη 01 Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή

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

Κωδικός Τίτλος Μαθήματος ΠΜ ΕΠΛ131 Αρχές Προγραμματισμού Ι 7.5. Ημέρα Διάλεξη Εργαστήριο Φροντιστήριο Δευτέρα, Πέμπτη 9:00 10:30, ΘΕΕ01, 202

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Χειµερινό Εξάµηνο 2013

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Περιγραφή Μαθήματος. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Σχολή Πολιτικών Μηχανικών

Σχολή Πολιτικών Μηχανικών ΣΤΟΧΑΣΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΤΟΥΣ ΥΔΑΤΙΚΟΥΣ ΠΟΡΟΥΣ ΚΟΥΤΣΟΓΙΑΝΝΗΣ ΔΗΜΗΤΡΙΟΣ, ΝΙΚΟΛΑΟΣ. Ακ. έτος Χειμερινό εξάμηνο

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

Προγραμματισμός. Εαρινό Εξάμηνο 2011

ΑΣΤΙΚΑ ΥΔΡΑΥΛΙΚΑ ΕΡΓΑ ΚΟΥΤΣΟΓΙΑΝΝΗΣ ΔΗΜΗΤΡΙΟΣ, ΝΙΚΟΛΑΟΣ

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Σχολή Πολιτικών Μηχανικών. Συγκεντρωτικά αποτελέσματα προπτυχιακών μαθημάτων για το Χειμερινό εξαμήνο του ακ. έτους

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Διδάσκων / Διδάσκουσα του μαθήματος

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Διαδικαστικά

Σχολή Πολιτικών Μηχανικών

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

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

xvi Προσέγγιση δομεσ δεδομενων και αλγοριθμοι

Προγραμματισμός Χειμερινό Εξάμηνο 2017

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

1= <2 Ώρες, 2=2-4 Ώρες, 3=4-6 Ώρες, 4=6-8 Ώρες, 5= >8 Ώρες

Σχεδίαση Εκπαιδευτικού Λογισμικού. Εργασία 2 - Α' φάση. Σενάριο/Σχέδιο μαθήματος. Σταματία Κορρέ Μ1430

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ. Τμήμα Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0175 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 9

ΕΚΠΑΙΔΕΥΤΙΚΟ ΣΕΝΑΡΙΟ.

Συμβόλαιο Μαθήματος. Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213. Χρήση Ηλεκτρονικού Υπολογιστή. Αναμενόμενα Αποτελέσματα Μαθήματος

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

Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών ΔΙΑΦΟΡΙΚΕΣ ΕΞΙΣΩΣΕΙΣ ΧΑΡΑΛΑΜΠΟΠΟΥΛΟΣ ΑΝΤΩΝΙΟΣ, ΓΡΗΓΟΡΙΟΣ. Ακ. έτος Χειμερινό εξάμηνο

Τμήμα Πληροφορικής & Τηλεπικοινωνιών Μεταπτυχιακό Πρόγραμμα Σπουδών Ακαδημαϊκό Έτος ΠΜΣ ΚΑΤΕΥΘΥΝΣΗ 6 η

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

«Εισαγωγή στην Γλώσσα Προγραμματισμού Python»

Κεφάλαιο 10 Ψηφιακά Λεξικά

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

Διάλεξη 1: Δομές Δεδομένων και Αλγόριθμοι - Εισαγωγή. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΗΥ370 Ψηφιακή Επεξεργασία Σήματος

Προγραμματισμός Ι (ΗΥ120)

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

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

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

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

Δομές Δεδομένων & Αλγόριθμοι

Διάλεξη 1. Εισαγωγή Επισκόπηση άσκησης

ΕΙΣΑΓΩΓΗ ΣΤΟ MARKETING

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

ΓΥΜΝΑΣΙΟ «ΒΕΡΓΙΝΑ» ΛΑΡΝΑΚΑΣ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΡΩΤΗΜΑΤΟΛΟΓΙΟ ΑΞΙΟΛΟΓΗΣΗΣ ΜΑΘΗΜΑΤΟΣ

Κεφάλαιο 1 Εισαγωγή. Περιεχόμενα. 1.1 Αλγόριθμοι και Δομές Δεδομένων

Διάταξη Θεματικής Ενότητας DEE 226 / Δίκαιο Πνευματικής Ιδιοκτησίας

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Γενικά (για τις γραπτές εξετάσεις)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

Περίγραμμα. Διαδικαστικά. Εργαστήρια Τεχνικών Προγραμματισμού 21/2/2017. ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

Προτεινόμενος τρόπος διδασκαλίας του μαθήματος με ενδεικτικό χρονοπρογραμματισμό. Α/Α Ενότητες Περιγραφή Ώρες 1 Εισαγωγικό μάθημα 1

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

ΑΝΑΛΥΣΗ ΔΕΔΟΜΕΝΩΝ. Δρ. Βασίλης Π. Αγγελίδης Τμήμα Μηχανικών Παραγωγής & Διοίκησης Δημοκρίτειο Πανεπιστήμιο Θράκης

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ και Τεχνικές Προγραμματισμού

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

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

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

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

Βασικές έννοιες προγραμματισμού

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

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

ΓΕΩΠΟΝΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

Κεφάλαιο 10. Υποπρογράμματα

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

ΠΡΑΚΤΙΚΗ ΑΣΚΗΣΗ ΑΠΟΚΤΗΣΗΣ ΔΙΔΑΚΤΙΚΗΣ ΕΠΑΡΚΕΙΑΣ

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια

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

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

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο

ΠΕΡΙΓΡΑΦΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΠΙΝΑΚΕΣ ΣΥΧΝΟΤΗΤΩΝ ΚΑΙ ΡΑΒΔΟΓΡΑΜΜΑΤΑ Α. Ερωτήσεις για το/τη φοιτητή/φοιτήτρια Διδάσκων: ΣΤΑΥΡΑΚΟΥΔΗΣ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

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

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ231: ομές εδομένων και Αλγόριθμοι ιδάσκων: Γιώργος Πάλλης Γραφείο: ΘΕΕ-01 Β119 Τηλέφωνο: 22-892743 E-mail: gpallis@cs.ucy.ac.cy Ιστοσελίδα Μαθήματος: http://www.cs.ucy.ac.cy/courses/epl231 ΠΕΡΙΓΡΑΦΗ Το μάθημα μελετά μεθόδους οργάνωσης των πληροφοριών, αλγόριθμους μετασχηματισμού τους και την ανάλυση της πολυπλοκότητας των αλγορίθμων. Για την υλοποίηση των προγραμμάτων θα χρησιμοποιηθεί η γλώσσα προγραμματισμού JAVA. ΙΑΛΕΞΕΙΣ ΚΑΙ ΕΡΓΑΣΤΗΡΙΟ Η διδασκαλία του μαθήματος αποτελείται από διαλέξεις και φροντιστήρια (συμπληρωματικές διαλέξεις, επίλυση ασκήσεων και θεωρητική εμπέδωση της ύλης). Η παρακολούθηση των διαλέξεων από τους φοιτητές είναι υποχρεωτική. Οι φοιτητές παρακαλούνται όπως προσέρχονται στην αίθουσα των διαλέξεων έγκαιρα. Στα εργαστήρια του μαθήματος οι φοιτητές θα έχουν την δυνατότητα να υποβοηθούνται στην υλοποίηση των αρχών που διδάσκονται στις διαλέξεις. Φροντιστήρια και Εργαστήρια θα γίνονται κάθε εβδομάδα στις προγραμματισμένος ώρες και αίθουσες, εκτός και αν γίνει σχετική ανακοίνωση. Το υλικό των διαλέξεων και του φροντιστηρίου θα ανεβαίνει στις σελίδες του μαθήματος. Το υλικό για τα εργαστήρια θα ανεβαίνει στο moodle. Για ανακοινώσεις και απορίες για το μάθημα θα γίνονται μέσω της πλατφόρμας Piazza που έχει δημιουργηθεί για τις ανάγκες του μαθήματος (https://piazza.com/configure-classes/fall2016/epl231). ΠΡΟΑΠΑΙΤΟΥΜΕΝΑ Τα μαθήματα ΕΠΛ 111 ( ιακριτές ομές στην Πληροφορική και Υπολογισμό) και ΕΠΛ 133 (Αντικειμενοστραφή Προγραμματισμό) είναι προαπαιτούμενα για την παρακολούθηση του ΕΠΛ 231. ΣΤΟΧΟΙ Με το πέρας του μαθήματος οι φοιτητές αναμένονται να είναι σε θέση: Να αναλύουν και να συγκρίνουν την αποδοτικότητα αλγορίθμων βάσει των τάξεων Ο, Ω και Θ. Να σχεδιάζουν και να υλοποιούν αλγόριθμους οι οποίοι ελαχιστοποιούν τον χρόνο εκτέλεσής τους όπως και τον χώρο που χρησιμοποιούν. Να χρησιμοποιούν, να υλοποιούν και να επεκτείνουν τις δομές δεδομένων που θα μελετηθούν στο μάθημα. Να εφαρμόζουν τους αλγόριθμους που θα μελετηθούν στο μάθημα σε τυχαία

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

ΠΕΡΙΕΧΟΜΕΝΟ Πολυπλοκότητα αλγόριθμων και ανάλυση μέσης και χείριστης περίπτωσης Τύποι δεδομένων και αφηρημένοι τύποι δεδομένων Τύποι λίστας, στοίβας και ουράς Αλγόριθμοι ταξινόμησης και ανάλυση της αποδοτικότητάς τους Μη γραμμικές δομές δεδομένων. ένδρα. ένδρα διερεύνησης Ισοζυγισμένα δένδρα Ουρές προτεραιότητας Γράφοι και αλγόριθμοι επεξεργασίας τους Bit- ιανύσματα. Τεχνικές κατακερματισμού (hashing) ΒΙΒΛΙΟΓΡΑΦΙΑ Συνίσταται η χρήση των πιο κάτω βιβλίων, σημειώσεων καθώς και η χρήση των διαφανειών του διδάσκοντα. M. A. Weiss, Data Structures and Algorithm Analysis in JAVA. 3rd edition, Addison Wesley, 2011 R. Sedgewick and K. Wayne Algorithms in JAVA, 4th edition by, Addison-Wesley, 2011 Σημειώσεις Καθηγητή Μάριου Μαυρονικόλα (το αρχείο βρίσκεται στα resources στο διαδικτυακό τόπο του piazza) Για περισσότερες πληροφορίες μπορείτε να συμβουλευτείτε και το ακόλουθα βιβλίο: M. Goodrich, R. Tamassia. Data Structures and Algorithms in JAVA, 5th edition, Wiley, 2011 Παρακαλείστε όπως προμηθεύεστε τις σημειώσεις των διαλέξεων από την ιστοσελίδα του μαθήματος πριν από την έναρξη κάθε διάλεξης. ΑΞΙΟΛΟΓΗΣΗ Το μάθημα αξιολογείται με 7.5 μονάδες ECTS. Η επίδοση των φοιτητών θα αξιολογείται συνεχώς με βάση τη συμμετοχή στο μάθημα και κατ οίκον εργασία. Η κατ οίκον εργασία θα περιλαμβάνει υποχρεωτικές θεωρητικές και προγραμματιστικές ασκήσεις. Επίσης θα υπάρξει μία ενδιάμεση εξέταση, 3 διαγνωστικά τεστ (quizzes) και μια τελική εξέταση. Η αναλογία ως προς τον τελικό βαθμό είναι η εξής: Τελική εξέταση: 40% Ενδιάμεση εξέταση: 25% Προγραμματιστικές Ασκήσεις: 15% (Οι προγραμματιστικές ασκήσεις θα εξετάζονται με παρουσίαση της άσκησης από το φοιτητή). Αν ο φοιτητής κάνει 3 αδικαιολόγητες απουσίες τότε δε θα προσμετρείται η βαθμολογία που έλαβε στις

προγραμματιστικές ασκήσεις. Θεωρητικές Ασκήσεις και ιαγνωστικά τεστ: 5% με την υποβολή όλων των ασκήσεων και 15% για τα τρία διαγνωστικά τεστ. Τα διαγνωστικά τεστ θα δίνονται στα πλαίσια του φροντιστηριακού μαθήματος Quiz της ημέρας: 5% bonus (2 απροειδοποίητα διαγνωστικά τεστ (quiz) πάνω στην ύλη του μαθήματος που διδάχθηκε τη συγκεκριμένη μέρα. Η βαθμολογία τους θα προσμετρείται αν ο φοιτητής/ρια επιτυγχάνει πάνω από 60%). Για την εξασφάλιση προβιβάσιμου βαθμού στο μάθημα (δηλ. τουλάχιστον πέντε), απαιτείται ο σταθμισμένος μέσος όρος της ενδιάμεσης και τελικής εξέτασης να είναι τουλάχιστον 4,5.

Ο ΗΓΙΕΣ ΕΚΠΟΝΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΩΝ ΑΣΚΗΣΕΩΝ Η παράδοση των προγραμματιστικών ασκήσεων θα γίνεται σε ηλεκτρονική μορφή στον υπεύθυνο βοηθό μέσω του blackboard. Οι προγραμματιστικές ασκήσεις θα κρίνονται με βάση τα ακόλουθα τρία κριτήρια: Ορθότητα: ο πρόγραμμα σας πρέπει τρέχει ορθά για οποιαδήποτε είσοδο. Κατανοητά Σχόλια: Γράφετε κατανοητά σχόλια που να εξηγούν την λειτουργία της κάθε κλάσης/πεδίου/μεθόδου. Αναφορά Προγράμματος: Θα πρέπει να παραδώσετε μία αναφορά η οποία να περιγράφει συνοπτικά τα διάφορα συστατικά (κλάσεις, μεθόδους, διαπροσωπείες, κτλ.) του προγράμματος σας. Επίσης, η αναφορά θα πρέπει να καταγράφει τυχόν υποθέσεων τις οποίες έχετε κάνει. Αποδοτικότητα: το πρόγραμμα σας: θα πρέπει να χρησιμοποιήσει αποδοτικές δομές δεδομένων και αλγόριθμους όπου αρμόζει. Κατά την υλοποίηση του προγράμματος σας, ακολουθείστε τους παρακάτω κανόνες: IDE: Προτρέπεται η χρήση ενός Ολοκληρωμένου Περιβάλλοντος Ανάπτυξης (π.χ., eclipse IDE) για τη συγγραφή των προγραμματιστικών σας εργασιών. Σχεδίαση Προγράμματος: Προτρέπεται όπως το πρόγραμμα σας σχεδιάζεται από πάνω προς τα κάτω, αποφασίζοντας δηλαδή πρώτα τις κλάσεις και διασυνδέσεις τους, στη συνέχεια τις μεταβλητές και μεθόδους και τέλος υλοποιώντας το σώμα των συναρτήσεων. Θα πρέπει να υπάρχει η κατάλληλη άρθρωση, στοίχιση του κώδικα, σαφήνεια και κατάλληλη ονοματολογία σε οντότητες του προγράμματος. Σχόλια: Τα αντικείμενα σας θα πρέπει να είναι σχολιασμένα έτσι ώστε να μπορεί να προκύπτει κάποιος οδηγός λειτουργίας μέσω javadoc. Ο ίδιος ο οδηγός δε χρειάζεται να είναι μέρος του παραδοτέου. Έλεγχος Μονάδων: Κάθε αντικείμενο πρέπει να συνοδεύεται από τους σχετικούς οδηγούς ελέγχου (drivers), οι οποίοι θα επικυρώνουν την ορθότητα των συναρτήσεων και λειτουργιών του εν λόγω αντικειμένου (unit testing). Οι έλεγχοι θα πρέπει να διερευνούν τις ακραίες περιπτώσεις λειτουργίας των συναρτήσεων και του αντικειμένου ευρύτερα. Προτρέπεται επίσης η χρήση εργαλείων ανάλυσης και βελτιστοποίησης του προγράμματος (π.χ., χρήση profilers). GPL: Σε μια προσπάθεια εξοικείωσης με τεχνικές ανάπτυξης ανοικτού λογισμικού, συνίσταται η χρήση του GPL προοιμίου (preamble) σε κάθε αρχείο πηγαίου κώδικα.

ΟΔΗΓΙΕΣ ΕΚΠΟΝΗΣΗΣ ΘΕΩΡΗΤΙΚΩΝ ΕΡΓΑΣΙΩΝ Για κάθε άσκηση, διαβάστε την εκφώνηση της προσεκτικά και σιγουρευτείτε ότι κατανοείτε αυτό που σας ζητείται να κάνετε. ιατυπώνετε τις σκέψεις σας με τρόπο κατά το δυνατόν απλό, κατανοητό και συγχρόνως μεστό, αποφεύγοντας τις διφορούμενες απαντήσεις. Μη γράφετε περισσότερα από αυτά που ζητούνται σε κάθε θέμα. Εξετάζετε πάντοτε στο τέλος πόσο λογικό είναι το αποτέλεσμα στο οποίο καταλήξατε. Υπάρχουν δύο είδη προβλημάτων: προβλήματα απόδειξης και αλγοριθμικά προβλήματα. (α) Προβλήματα απόδειξης: Για αυτό το είδος προβλημάτων θα πρέπει να δίνονται καθαρά όλα τα βήματα της απόδειξης με σαφείς επεξηγήσεις σχετικά με το πώς έχουν προκύψει. Βήματα της απόδειξης τα οποία παραλείπονται δυνατό να θεωρηθούν σημαντικά και να οδηγήσουν σε μείωση της βαθμολογίας ανεξάρτητα από την τελική κατάληξη της απόδειξης. (β) Αλγοριθμικά προβλήματα: Μια πλήρης λύση θα αναφέρει τα ακόλουθα: i. Μια σύντομη περιγραφή του αλγορίθμου με λόγια. ii. iii. Τις εισόδους και τις εξόδους του αλγόριθμου, τους τύπους των δεδομένων, τις δομές που χρησιμοποιήσατε και οτιδήποτε άλλο θα πρέπει να ξέρει κάποιος που διαβάζει τη λύση σας. Οι αλγόριθμοι θα πρέπει να περιγράφονται από μια σειρά από καθαρά βήματα. Στους αλγόριθμους θα μπορούν να χρησιμοποιηθούν αλγόριθμοι που θα συζητηθούν στην τάξη χωρίς περιγραφή. Αν όμως χρησιμοποιηθεί κομμάτι κάποιου αλγορίθμου ή/και κομμάτι κάποιας δομής δεδομένων αυτά θα πρέπει να εξηγηθούν. iv. Οι αλγόριθμοί σας θα πρέπει να είναι ορθοί για όλα τα στιγμιότυπα του προβλήματος και να λαμβάνουν υπόψη τους ακόμα και τις οριακές περιπτώσεις. v. Για το σύνολο των μονάδων ενός προβλήματος, ο αλγόριθμος θα πρέπει να είναι και ορθός και βέλτιστος. Ένας ορθός αλγόριθμος θα παίρνει μονάδες, έστω και αν αυτός δεν είναι βέλτιστος. vi. Για κάθε αλγόριθμο που παρουσιάζετε θα πρέπει να παραθέτετε και τον χρόνο εκτέλεσής του. vii. viii. Για την επίλυση των ασκήσεων απαγορεύεται η χρήση μεταβλητών που ορίζονται ως static ή global. Η χρήση στατικών ή γενικών μεταβλητών θα οδηγεί αυτόματα σε μηδενισμό της άσκησης. Στις αναδρομικές συναρτήσεις δεν πρέπει να περνούν παράμετροι δείκτες σε μεταβλητές οι οποίες επιστρέφουν την τελική απάντηση. Κάθε κλήση της συνάρτησης πρέπει να λύνει ένα κομμάτι του προβλήματος και να επιστρέφει την απάντησή της στην κλήση που την έχει καλέσει για περαιτέρω επεξεργασία.