Υποχρεωτικό
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
ΓΕΩΡΓΙΟΣ ΝΟΚΑΣ
ΘΕΟΔΩΡΟΣ ΚΟΤΣΙΛΙΕΡΗΣ
- ΓΕΝΙΚΑ
-
ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΕΒΔΟΜΑΔΙΑΙΕΣΩΡΕΣ ΔΙΔΑΣΚΑΛΙΑΣ Διαλέξεις 2 Εργαστήριο 1 ΤΥΠΟΣ ΜΑΘΗΜΑΤΟΣ
Γενικού Υποβάθρου ΠΡΟΑΠΑΙΤΟΥΜΕΝΑ ΜΑΘΗΜΑΤΑ:
Όχι ΓΛΩΣΣΑ ΔΙΔΑΣΚΑΛΙΑΣ και ΕΞΕΤΑΣΕΩΝ: Ελληνική ΤΟ ΜΑΘΗΜΑ ΠΡΟΣΦΕΡΕΤΑΙ ΣΕ ΦΟΙΤΗΤΕΣ ERASMUS Όχι - ΜΑΘΗΣΙΑΚΑ ΑΠΟΤΕΛΕΣΜΑΤΑ
-
Μαθησιακά Αποτελέσματα Στόχος του μαθήματος είναι να εισάγει τους φοιτητές στη φιλοσοφία του αντικειμενοστραφούς προγραμματισμού και να τους δώσει την δυνατότητα να εξοικειωθούν στον προγραμματισμό με μια γλώσσα υψηλού επιπέδου. Με την ολοκλήρωση του μαθήματος οι φοιτητές θα είναι σε θέση να αναπτύξουν αυτόνομα κώδικα αλλά θα έχουν και κατάλληλο υπόβαθρο για να ανταπεξέλθουν σε πιο προχωρημένα προγραμματιστικά μαθήματα.
Με την ολοκλήρωση του μαθήματος οι φοιτητές θα έχουν:
Γνώσεις: Να κατανοούν και να αναλύουν δομές δεδομένων κι αλγορίθμους, για την επίλυση προβλημάτων. Να μάθουν το αντικειμενοστραφές μοντέλο προγραμματισμού μέσω μιας γλώσσας 3ης γενιάς
Δεξιότητες: Να εφαρμόζουν τη μεθοδολογία ανάπτυξης του προγραμματιστικού υποβάθρου
Ικανότητες: Να αναπτύξουν αυτόνομα κώδικα αλλά θα έχουν και κατάλληλο υπόβαθρο για να ανταπεξέλθουν σε πιο προχωρημένα προγραμματιστικά μαθήματα.
Γενικές Ικανότητες Οι ικανότητες που αναμένεται να αποκομίσει ο πτυχιούχος είναι οι ακόλουθες:
Αναζήτηση, ανάλυση και επεξεργασία δεδομένων και πληροφοριών, με τη χρήση και των απαραίτητων τεχνολογιών
Λήψη αποφάσεων κι ανάπτυξη αντίστοιχων εργαλείων με χρήση ΤΠΕ
Αυτόνομη εργασία
Ομαδική εργασία
Παράγωγή νέων ερευνητικών ιδεών
- ΠΕΡΙΕΧΟΜΕΝΟ ΜΑΘΗΜΑΤΟΣ
-
Το μάθημα επικεντρώνεται στην απόκτηση των απαραίτητων δεξιοτήτων και γνώσης ώστε οι φοιτητές να έχουν την ικανότητα να κατανοήσουν και να εφαρμόσουν τις σύγχρονες τεχνικές και γλώσσες προγραμματισμού υπό το πρίσμα της ανάλυσης δομών δεδομένων και της μοντελοποίησης – ανάπτυξης αλγορίθμων για την επίλυση προβλημάτων στο σύγχρονο επιχειρηματικό περιβάλλον.
Το μάθημα αναπτύσσεται σε 13 μαθήματα που αποτυπώνονται στον ακόλουθο πίνακα.
Eισαγωγή στον αντικειμενοστραφή προγραμματισμό: Εισαγωγή στη γλώσσα Python. Αριθμητικές πράξεις, Τύποι μεταβλητών, Μεταβλητές, Διαχείριση και Δεικτοδότηση Αλφαριθμητικών, Προγράμματα σε Python
Κλάσεις και αντικείμενα: Γνωρίσματα, ιδιότητες, υποκλάσεις, κληρονομικότητα, αρχικοποίηση, πολυμορφισμός
Λίστες: Δείκτες θέσης, τροποποίηση λίστας, αντικατάσταση μέρους λίστας, αλφαριθμητικά, μορφοποίηση αλφαριθμητικών, μέθοδοι αλφαριθμητικών.
Έλεγχος ροής προγράμματος & Δομές ελέγχου: Έλεγχος ροής με if, συνθήκες & τελεστές σύγκρισης, ο βρόγχος while, ο βρόγχος for, επαναλήψεις σε λεξικά, παράλληλες επαναλήψεις, παραδείγματα ελέγχου ροής, παραδείγματα χρήσης δομών ελέγχου, if, while, for, εμφωλιασμένες επαναλήψεις, ορισμός και διαχείρηση πινάκων, συγκλίνον άθροισµα.
Συναρτήσεις: Παράμετροι, εμβέλεια μεταβλητών, δόµηση προγράµµατος, συναρτήσεις σαν αντικείµενα, Τοπικότητα παραµέτρων, πέρασµα µε τιµή/αναφορά, αναδρομικές συναρτήσεις (παραδείγματα: ύψωση σε δύναμη, παραγοντικό, αριθμοί Fibonacci), πολυπλοκότητα και χρόνος εκτέλεσης προγράμματος
Ταυτόχρονος προγραμματισμός και νήματα - Διαχείριση σφαλμάτων και εξαιρέσεων: Βασικές λειτουργίες νημάτων, κλειδώματα, συγχρονισμός, Τύποι σφαλμάτων, τύποι εξαιρέσεων, δήλωση και χειρισμός εξαιρέσεων, αποσφαλμάτωση.
Βασικές Έννοιες Δεδομένων και Αλγόριθμων: Τύποι Δεδομένων και Δομές Δεδομένων, Πίνακες, Πίνακες μιας διάστασης, Δισδιάστατοι πίνακες, Σύνθετη Δομή (Πίνακες με Δομές ή Εγγραφές), Πίνακες από Δομές, Δείκτες σε Δομές, Αλγόριθμοι, Παραγωγή Τυχαίων Αριθμών
Αναζήτηση, Ταξινόμηση, Αλγόριθμοι και Εφαρμογές σε Πίνακες: Κριτήρια κατηγοριοποίησης αλγορίθμων ταξινόμησης, Ταξινόμηση με εισαγωγή (insertion sort), Ταξινόμηση επιλογής (selection sort), Ταξινόμηση φυσαλλίδας (bubble sort), Σειριακή και δυαδική αναζήτηση, διαμέριση και διάμεσος πίνακα
Δομές Δεδομένων: Στοίβα, Ουρά, Συνδεδεμένες λίστες
Αναδρομή και Δενδρικές Δομές: Αναδρομή, Δένδρα, Δυαδικά δένδρα, Ουρές προτεραιότητας και σωροί, B-Trees, Ερυθρόμαυρα δένδρα
Σχεδίαση και Ανάλυση Αλγορίθμων: Κατηγορίες Αλγορίθμων και Ορολογία, Ανάλυση Αλγορίθμων, Χρονική Πολυπλοκότητα, Η Κλάση Προβλημάτων P, Η Κλάση Προβλημάτων NP, Παραδείγματα
Θεωρία Γραφημάτων: Ορισμοί και Ιδιότητες Γράφων, Κύκλος και Γράφημα Euler, Γράφος Hamilton, Αναπαράσταση Γράφων, Το πρόβλημα του Κινέζου ταχυδρόμου
Αλγόριθμοι Γραφημάτων: Διάσχιση ή Επίσκεψη ενός Γράφου, Πίνακας Αποστάσεων, Γνωστά Βασικά Προβλήματα Γράφων, Βελτιστοποίηση και αλγόριθμοι ACO (αποικίας μυρμηγκιών)
Η αρίθμηση αναφέρεται στην αντίστοιχη εβδομάδα του μαθήματος.
- ΔΙΔΑΚΤΙΚΕΣ και ΜΑΘΗΣΙΑΚΕΣ ΜΕΘΟΔΟΙ - ΑΞΙΟΛΟΓΗΣΗ
-
ΤΡΟΠΟΣ ΠΑΡΑΔΟΣΗΣ Διαλέξεις πρόσωπο με πρόσωπο
Ανάρτηση υλικού για περαιτέρω μελέτη και επίλυση εργαστηριακών ασκήσεων στην πλατφόρμα e-class
ΧΡΗΣΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ Χρήση ΤΠΕ στη διδασκαλία και την Εργαστηριακή Εκπαίδευση, ως εξής:
Aσκήσεις με χρήση διαδικτυακών διερμηνέων
Πρόσθετο κι ελεύθερα διαθέσιμο υλικό για την εμπέδωση στοιχείων θεωρίας κι επίλυση ασκήσεων μέσω διαδικτύου και μέσων κοινωνικής δικτύωσης
Υποστήριξη Μαθησιακής διαδικασίας μέσω της ηλεκτρονικής πλατφόρμας e-class
Επικοινωνία με φοιτητές μέσω πλατφόρμας e-class
ΟΡΓΑΝΩΣΗ ΔΙΔΑΣΚΑΛΙΑΣ
Δραστηριότητα Φόρτος Εργασίας Εξαμήνου Διαλέξεις 39 Ασκήσεις όπου οι φοιτητές είτε σε μικρές ομάδες είτε μεμονωμένα θα ασκούνται στην εφαρμογή της θεωρίας. Οι ασκήσεις θα παρουσιάζονται από το διδάσκοντα και θα επιλύονται από τους φοιτητές ασύγχρονα. Η απάντηση θα παρέχεται αποκλειστικά μέσω της πλατφόρμας e-class ή εργαλείων υπολογιστικής νέφους (webmail, google-drive κλπ.) 40 Αυτοτελής Μελέτη 71 Σύνολο μαθήματος 150 ΑΞΙΟΛΟΓΗΣΗ ΦΟΙΤΗΤΩΝ
Η αξιολόγηση θα διενεργείται στην ελληνική γλώσσα με τρεις διακριτούς τρόπους:
Ενδιάμεση αξιολόγηση κατά την 7η ή 8η εβδομάδα (20%) που θα πραγματοποιείται με: Ερωτήσεις Πολλαπλής επιλογής, ερωτήσεις σύντομης απάντησης
Ασκήσεις (20%) που θα αξιολογούνται ως εξής: Ικανότητα επίλυσης προβλημάτων σε ομάδες, σύνταξη αναφοράς για την προτεινόμενη επίλυση, δημόσια παρουσίαση
Τελική εξέταση (60%) που θα πραγματοποιείται με: Ερωτήσεις πολλαπλής επιλογής, Επίλυση προβλημάτων, Ερωτήσεις Σύντομης Απάντησης, Ανάπτυξη στοιχείων θεωρίας, Ανάλυση ρόλων και ενδιαφερομένων μερών σε σύντομη, Μελέτη περίπτωσης, Συγκριτική αξιολόγηση στοιχείων θεωρίας
- ΣΥΝΙΣΤΩΜΕΝΗ-ΒΙΒΛΙΟΓΡΑΦΙΑ
-
Παπουτσής Ι., «Εισαγωγή στις Δομές Δεδομένων και στους Αλγορίθμους», Εκδόσεις Σταμούλη, 2016, Β’ έκδοση
Nell Dale, John Lewis, «Computer Science Illuminated», Third Edition
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό με Python - Μια Προσέγγιση από την Πλευρά των Υπολογιστικών Συστημάτων, Μαγκούτης Κωνσταντίνος – Νικολάου Χρήστος, Ελληνικά Ακαδημαϊκά Ebooks, Κάλλιπος, 2015, (διαθέσιμο από: )
Εισαγωγή στον Προγραμματισμό με αρωγό τη γλώσσα Python, Μανής Γεώργιος, Ελληνικά Ακαδημαϊκά Ebooks, Κάλλιπος, 2015, (διαθέσιμο από: https://repository.kallipos.gr/handle/11419/2745)