Algorithms and Data Structures
General
- Code: ΠΛΥ03042
- Semester: 3rd
- Study Level: Undergraduate
- Course type: Special Background
- Teaching and exams language: Greek
- The course is offered to Erasmus students
- Teaching Methods (Hours/Week): Lectures (2) / Practice Exercises (1) / Laboratory Exercises (1)
- ECTS Units: 5
- Course homepage: https://elearning.cm.ihu.gr/course/view.php?id=270
- Instructors: Outsios Evangelos
- Coordinator: Outsios Evangelos
- Class Schedule:
Course Contents
The course provides a systematic analysis of data structures, including linear lists, stacks, queues, pointers and dynamic data structures such as linked lists. Non-linear data structures such as binary trees, B-trees, tries are also analyzed. Memory demand is analyzed, the restrictions and efficiency of data structures are discussed. Comprehensive analysis of fast and slow sorting algorithms is presented, including bubble sort, insertion sort, selection sort, quicksort etc. Searching and recursive algorithms are explained. Hashing tables and graphs are also introduced. Finally, students will be given the opportunity to design and implement a program in C, using large data structures with random numbers and various sorting algorithms, testing the efficiency of each sorting technique.
Educational Goals
Να αποκτήσουν οι φοιτητές το απαραίτητο θεωρητικό και πρακτικό υπόβαθρο για την κατανόηση και το χειρισμό απλών και σύνθετων δομών δεδομένων κύριας μνήμης παράλληλα με τη μελέτη δημοφιλών αλγορίθμων και να εξοικειωθούν με τη χρήση των δομών δεδομένων σε αλγορίθμους διαφόρων προβλημάτων με στόχο την πιο αποδοτική επίλυσή τους με χρήση Η/Υ. Επίσης, δίνεται η δυνατότητα στους φοιτητές να υλοποιήσουν μία εφαρμογή που χρησιμοποιεί δομές δεδομένων και αλγορίθμους μέσα από μία ατομική εργασία που εκπονούν και η οποία τους ανατίθεται κατά τη διάρκεια του εξαμήνου.
General Skills
- Αυτόνομη εργασία.
- Ανάλυση και σχεδίαση στατικών και δυναμικών δομών δεδομένων.
- Ανάλυση και σχεδίαση αλγοριθμικών διαδικασιών.
- Εφαρμογή της γνώσης στην πράξη.
- Προαγωγή της ελεύθερης, δημιουργικής και επαγωγικής σκέψης.
Teaching Methods
- Θεωρητική από έδρας διδασκαλία με συζήτηση και ενεργή συμμετοχή των φοιτητών. Κατά τη διάρκεια του μαθήματος γίνονται παρουσιάσεις σε PowerPoint, καθώς και παρουσίαση και ανάλυση αλγορίθμων.
- Εργαστηριακές ασκήσεις και εργασίες σχεδίασης και υλοποίησης προγραμμάτων.
Use of ICT means
- Χρήση εξειδικευμένου λογισμικού.
- Υποστήριξη της μαθησιακής διαδικασίας μέσω της ηλεκτρονικής πλατφόρμας E-Learning ή E-Class.
- Ηλεκτρονικές Ασκήσεις Αυτοαξιολόγησης.
- Επικοινωνία με φοιτητές μέσω e-mail και της ιστοσελίδας του μαθήματος.
Teaching Organization
Activity | Semester workload |
Lectures | 26 |
Practice Exercises | 13 |
Laboratory Exercises | 13 |
Writing laboratory reports | 20 |
Autonomous Study | 53 |
Total | 125 |
Students Evaluation
Ο τελικός βαθμός του μαθήματος διαμορφώνεται από το βαθμό του θεωρητικού μέρους (που περιλαμβάνει γραπτή τελική εξέταση), καθώς και από ατομικές εργασίες που ανατίθενται στους φοιτητές και αξιολόγηση των εργαστηριακών δεξιοτήτων τους.
- Η γραπτή τελική εξέταση του θεωρητικού μέρους περιλαμβάνει:
- Ερωτήσεις πολλαπλής επιλογής.
- Επίλυση προβλημάτων εφαρμογής των γνώσεων που αποκτήθηκαν.
- Ερωτήσεις σύντομης απάντησης.
- Συγκριτική αξιολόγηση στοιχείων θεωρίας.
- Η αξιολόγηση του εργαστηριακού μέρους του μαθήματος περιλαμβάνει:
- Την αξιολόγηση των προγραμματιστικών δεξιοτήτων που αποκτήθηκαν μέσω εξέτασης εβδομαδιαίων εργασιών και
- την εξέταση μίας τελικής ατομικής εργασίας (project) που ανατίθεται σε κάθε φοιτητή.
Recommended Bibliography
Συγγράμματα μέσω του συστήματος ΕΥΔΟΞΟΣ:
- Robert Sedgewick, ΑΛΓΟΡΙΘΜΟΙ ΣΕ C, ΜΕΡΗ 1-4: ΘΕΜΕΛΙΩΔΕΙΣ ΕΝΝΟΙΕΣ, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ, ΤΑΞΙΝΟΜΗΣΗ, ΑΝΑΖΗΤΗΣΗ
3η Έκδοση, Εκδόσεις Κλειδάριθμος, 2006. - Παπουτσής Ιωάννης, Εισαγωγή στις δομές δεδομένων και στους αλγόριθμους 1η Έκδοση, Εκδόσεις Σταμούλη, 2010.
Συγγράμματα που διανέμονται μέσω του Ιδρύματος ή της ηλεκτρονικής σελίδας του μαθήματος:
- Ε. Ούτσιος, Δομές Δεδομένων, Σημειώσεις Θεωρίας, 2020.
- Ε. Ούτσιος, Δομές Δεδομένων, Σημειώσεις Εργαστηρίου, 2020.
Συμπληρωματική προτεινόμενη βιβλιογραφία:
- Γ. Κόλλιας, Γ. Μανωλόπουλος, Δομές Δεδομένων, τόμος Α΄.
- Nicklaus Wirth, Algorithms + Data Structures = Programs, 1976.
- S. Sahni, Μετάφραση Ι. Μανωλόπουλος και Ι. Θεοδωρίδης, Δομές Δεδομένων, Αλγόριθμοι και Εφαρμογές στη C++, Εκδόσεις Τζιόλα, 2004.
- Π. Μποζάνης, Αλγόριθμοι: Σχεδιασμός και Ανάλυση, Εκδόσεις Τζιόλα, 2003.
- Robert Lafore, Data Structures & Algorithms in JAVA, 2nd Edition, 2003.
- Leendert Ammeraal, Προγραμματισμός και Δομές Δεδομένων στην C, Εκδόσεις Γκιούρδας, 1989.