ΜΑΘΗΣΙΑΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ
Έχοντας ολοκληρώσει επιτυχώς το μάθημα, οι φοιτητές/ήτριες αναμένεται να είναι σε θέση να:
- Κατανοούν αλγορίθμους κωδικοποιημένους στη γλώσσα C για την επίλυση προβλημάτων (i) απλών μαθηματικών υπολογισμών, (ii) πρώτων αριθμών και ανάλυσης σε γινόμενο πρώτων παραγόντων, (iii) ταξινόμησης πινάκων.
- Τροποποιούν δεδομένους αλγορίθμους για να αυξήσουν την απόδοσή τους.
- Υπολογίζουν την πολυπλοκότητα δεδομένου αλγορίθμου.
- Κατανοούν, εξηγούν και αναπαράγουν αναδρομικούς αλγορίθμους για απλά προβλήματα αναδρομής.
- Μετατρέπουν επαναληπτικούς σε αναδρομικούς αλγορίθμους και υπολογίζουν την πολυπλοκότητά τους.
- Αναγνωρίζουν, περιγράφουν και διαφοροποιούν μεταξύ τους τις κυριότερες δομές δεδομένων (πίνακες, γραμμικές λίστες, δένδρα, γράφους).
- Καταλαβαίνουν, εξηγούν και προγραμματίζουν τις βασικές λειτουργίες για καθεμία από αυτές τις δομές δεδομένων (π.χ., εισαγωγή στοιχείου, διαγραφή στοιχείου, διάσχιση δομής, ταξινόμηση με βάση κλειδί, κλπ.)
- Εκτιμούν τις απαιτήσεις σε χώρο μνήμης Η/Υ των διαφόρων εναλλακτικών δομών δεδομένων που μπορεί να αξιοποιήσει ένας δεδομένος αλγόριθμος.
- Επιλέγουν την κατάλληλη δομή δεδομένων, μεταξύ των διαθέσιμων εναλλακτικών, και κωδικοποιούν τις βασικές της λειτουργίες σε γλώσσα C. Δικαιολογούν την επιλογή τους με βάση τον απαιτούμενο χρόνο εκτέλεσης και χώρο αποθήκευσης στη μνήμη του Η/Υ.
Γενικές Ικανότητες
- Αναζήτηση, ανάλυση και σύνθεση δεδομένων και πληροφοριών, με τη χρήση και των απαραίτητων τεχνολογιών
- Αυτόνομη Εργασία
- Λήψη αποφάσεων
- Άσκηση κριτικής και αυτοκριτικής
- Προαγωγή της ελεύθερης, δημιουργικής και επαγωγικής σκέψης
ΠΕΡΙΕΧΟΜΕΝΟ ΜΑΘΗΜΑΤΟΣ
Ο στόχος του μαθήματος είναι να διδάξει βασικές γνώσεις αλγορίθμων και δομών δεδομένων καθώς και την εφαρμοσμένη χρήση τους για την επίλυση προβλημάτων μέσω κωδικοποίησής τους στη γλώσσα προγραμματισμού C. Επιμέρους στόχοι του μαθήματος είναι να εξοικειώσει τους/τις φοιτητές/ήτριες με τις έννοιες των δομών δεδομένων και της οργάνωσης των δεδομένων στη μνήμη του Η/Υ, το ρόλο των δομών δεδομένων στη σχεδίαση και κωδικοποίηση αλγορίθμων καθώς και να τους εισάγει στα θέματα των επιδόσεων και της πολυπλοκότητας των αλγορίθμων και της κλιμάκωσής τους για μεγαλύτερα σύνολα δεδομένων.
Τα περιεχόμενα του μαθήματος εν συντομία είναι τα εξής:
- Αλγοριθμική προσέγγιση στην επίλυση προβλημάτων, εισάγοντας προβλήματα
- μαθηματικών υπολογισμών,
- πρώτων αριθμών,
- ταξινόμησης.
- Πολυπλοκότητα
- Επαναληπτικοί και αναδρομικοί αλγόριθμοι
- Στατικές και δυναμικές δομές δεδομένων
- ραμμικές δομές δεδομένων (πίνακες, λίστες, στίβες, ουρές, σωροί)
- Ιεραρχικές δομές δεδομένων (δένδρα, δένδρα αναζήτησης, ισορροπημένα δένδρα)
- Γράφοι
- Κατακερματισμός
- Ψηφιακά Ευρετήρια
ΑΞΙΟΛΟΓΗΣΗ ΦΟΙΤΗΤΩΝ
Ι. Γραπτή πρόοδος (προαιρετική, 50% ή 30% του τελικού βαθμού):
-Ερωτήσεις πολλαπλής επιλογής
-Ερωτήσεις σύντομης απάντησης
-Ερωτήσεις επίλυσης προβλήματος και κωδικοποίησης της λύσης σε γλώσσα C
II. Εργασίες για το σπίτι (προαιρετικές, 20% του τελικού βαθμού):
-Ερωτήσεις επίλυσης προβλήματος και κωδικοποίησης της λύσης σε γλώσσα C
IΙΙ. Τελική γραπτή εξέταση (υποχρεωτική, 100% ή 50% του τελικού βαθμού):
-Ερωτήσεις πολλαπλής επιλογής
-Ερωτήσεις σύντομης απάντησης
-Ερωτήσεις επίλυσης προβλήματος και κωδικοποίησης της λύσης σε γλώσσα C
Η εξεταστέα ύλη του μαθήματος ανακοινώνεται στην αρχή του εξαμήνου στην ιστοσελίδα του μαθήματος και οι φοιτητές μπορούν να έχουν κατά τη διάρκεια της εξέτασης οποιοδήποτε σχετικό βιβλίο.
ΣΥΝΙΣΤΩΜΕΝΗ ΒΙΒΛΙΟΓΡΑΦΙΑ
- Fundamentals of Data Structures in C, by E. Horowitz, S. Sahni & S. Anderson-Freed, 2008
- Data Structures Using C and C++, by Y. Langsam, M. Augenstein & A. Tenenbaum, 2013
- Algorithms Illuminated (Part 2): Graph Algorithms and Data Structures (vol 2), by Tim Roughgarden, 2018
- The Intuitive Guide to Data Structures and Algorithms, by Parker Phinney, 2018
- Advances in Computational Algorithms and Data Analysis, by Sio-Iong Ao, 2009
- C and Data Structures by Practice, by Ramesh Vasappanavara, 2007
- Algorithms: Parallel and Sequential, by Umut A. Acar, 2019
- Data Structures & Algorithms in Swift, by Kelvin Lau & Vincent Ngo, 2018
- C++ Data Structures and Algorithms, by Wisnu Anggoro, 2018
- Compact Data Structures: A Practical Approach, by Gonzalo Navarro, 2016
- Genetic Algorithms and Machine Learning for Programmers: Create AI Models and Evolve Solutions, by Frances Buontempo, 2019
- Data Structures and Algorithms Made Easy: Data Structures and Algorithmic Puzzles, 5th Edition, by Narasimha Karumanchi, 2016
- Data Structures, Algorithms, And Applications In C++, by Sartaj Sahni, 2004
- Data structures and algorithms in C++, by Michael T Goodrich, Roberto Tamassia & David M Mount, 2011
- Data Structures Using C, by Reema Thareja, 2014
- Basic Matrix Algebra with Algorithms and Applications, by Robert A. Liebler, 2003
- Encyclopedia of Algorithms, by Ming-Yang Kao, 2016
- Machine Learning Algorithms: Popular algorithms for data science and machine learning, 2nd Edition, by Giuseppe Bonaccorso, 2018
- Data Structures and Algorithms in Python, by Michael T. Goodrich, Roberto Tamassia & Michael H. Goldwasser, 2013
- Probabilistic Data Structures and Algorithms for Big Data Applications, by Andrii Gakhov, 2019