Διδάσκων
Νίκος Αβούρης
O Νίκος Αβούρης είναι καθηγητής στο Πανεπιστήμιο Πατρών και στο Ελληνικό Ανοικτό Πανεπιστήμιο. Διαθέτει εμπειρία άνω των 30 ετών στη διδασκαλία και την έρευνα σε θέματα πληροφορικής και τεχνολογίας υπολογιστών. Κύριο ερευνητικό του ενδιαφέρον είναι η Αλληλεπίδραση Ανθρώπου-Υπολογιστή. Διδάσκει «Βάσεις Δεδομένων», «Προγραμματισμό με την Python» και «Προγραμματισμό Διαδικτύου» στην Πολυτεχνική Σχολή του Πανεπιστημίου Πατρών. Έχει συγγράψει βιβλία σε ποικίλα θέματα υπολογιστών και πληροφορικής και έχει δημοσιεύσει εκτενώς στο ερευνητικό πεδίο των διαδραστικών τεχνολογιών. Το τελευταίο βιβλίο του με τίτλο Python: Εισαγωγή στους Υπολογιστές κυκλοφορεί από τις Πανεπιστημιακές Εκδόσεις Κρήτης.
Εθελοντές βοηθοί μαθήματος
Αλέκος Παπαδόπουλος (AlekosPap), Βαγγέλης Σκαρμούτσος (SkarmoutsosV), Ξενοφών Στρατάκης (virxen75), Xρήστος Τσόλκας (chrtsolkas)
Αξιολόγηση του μαθήματος από τους φοιτητές του
Κατά την πρώτη φορά που προσφέρθηκε το μάθημα οι φοιτητές του (236 απαντήσεις) αξιολόγησαν το μάθημα από τα ερωτηματολόγια εξόδου ως εξής:
Είστε ικανοποιημένος απ' αυτό που μάθατε σε σχέση μ' αυτό που περιμένατε;
Πολύ ικανοποιημένος: 53%
Ικανοποιημένος: 42%
Λίγο ικανοποιημένος: 4%
Καθόλου ικανοποιημένος: 1%
Έγραψαν για το μάθημα
Συγχαρητήρια για μια εξαιρετική εμπειρία μάθησης και φυσικά μπράβο στον κ. Αβούρη και τους συνεργάτες του για την αρτιότητα τόσο των σημειώσεων όσο και των διαλέξεων.
-Bασίλης Ν.
Το περίμενα εδώ και καιρό, σε συνέχεια του πρώτου μαθήματος. Θεωρώ εξαιρετική την προσφορά όλων όσοι δούλεψαν, για να είναι σε αυτό το επίπεδο. Προσωπικά, αισθάνομαι ότι απογειώθηκα.
-Θανάσης Φ.
Τελείωσε κι αυτός ο κύκλος και από τη μεριά μου θα ήθελα να πω ένα τεράστιο ευχαριστώ στον καθηγητή Ν. Αβούρη αλλά και σε όλους όσοι συντέλεσαν στο να πραγματοποιηθεί ένα ακόμη εξαιρετικό μάθημα, όπως αυτό, αλλά και ένα μπράβο στους Community TAs για τη βοήθειά τους στο forum.
Κάλυψε πολλά και ενδιαφέροντα θέματα (όπως OOP, βάσεις δεδομένων, GUI) και μέσα από τα παραδείγματα και τις εργασίες μάς δόθηκε η ευκαιρία να εξασκηθούμε πάνω σε αυτά. Θα ήθελα βέβαια να δω και πιο προχωρημένες έννοιες πάνω στον αντικειµενοστρεφή προγραµµατισµό. Η αλήθεια είναι πως θα προτιμούσα να υπήρχε άλλο τόσο υλικό μια και προσωπικά δε μου έφτασε. Ήταν τόσο ωραίο το μάθημα που δεν ήθελα να τελειώσει.
-Έλενα Ο.
Το μάθημα ήταν πλούσιο σε πληροφορία και ωραία δομημένο. Ευχαριστούμε τον κύριο Αβούρη και την ομάδα του Mathesis για όλα.
-Γιάννης Π.
Να ευχαριστήσω όλους τους συμφοιτητές που δίναμε το καθημερινό μας ραντεβού εδώ, η συντροφιά τους και οι απορίες και συζητήσεις μας ήταν πολύτιμες για να προχωρήσω. Φυσικά, είμαι ευγνώμων στο διδακτικό προσωπικό, όχι μόνο για τις γνώσεις που μας μετέδωσαν αλλά και για τη συμπαράσταση, την άμεση παρουσία τους και τη φιλική τους στάση.
-Μιχάλης Κ.
Η τελική εμπειρία μου και το αποτέλεσμα της παρακολούθησης αποτιμώνται ως θετικά. Οι γνώσεις μου (με τη στενή έννοια του προγραμματισμού σε python) και οι συνολικές δεξιότητές μου (με την ευρύτερη έννοια της κατανόησης του προγραμματισμού και της επίλυσης προβλημάτων) διαπιστώνω ότι αυξήθηκαν πολύ περισσότερο από τα όρια του διδαχθέντος υλικού. Ευχαριστώ και εύχομαι καλή δύναμη στους συντελεστές του μαθήματος και του Mathesis.
-Στέλιος Κ.
Είμαι πολύ χαρούμενος που μετά το "Εισαγωγή στην Python" προχωρήσατε στο "Προχωρημένος προγραμματισμός με Python" με τον ίδιο ζήλο, όπως διαπιστώνω από την πρώτη μου επαφή.
-Αντώνης Θ.
Να εκφράσω τις ευχαριστίες μου σε όλους τους συντελεστές του μαθήματος και φυσικά στον κ. Αβούρη για τους νέους δρόμους που μας άνοιξαν.
-Δημήτρης Π.
To μάθημα ήταν πολύ δυνατό. Κάλυψε πολλά θέματα, όπως Βάσεις δεδομένων, GUI εφαρμογές, τεχνικές για ανάπτυξη παιχνιδιών και ήταν πολύ ενδιαφέρον. Το υλικό, τα βίντεο, τα τεστ, οι ασκήσεις, οι εργασίες όλα εξαιρετικά.
-Γιάννης Β.
Εβδομάδα 1: Εισαγωγή – κλάσεις και αντικείμενα
1.1 Εισαγωγή στην Python
1.1.1 Η γλώσσα - Εισαγωγή
1.1.2 Τύποι δεδομένων
1.1.3 Έλεγχος ροής προγράμματος
1.1.4 Άσκηση επανάληψης
1.2 Δομημένη Python και εργαλεία προγραμματισμού
1.2.1 Συναρτήσεις και βιβλιοθήκες
1.2.2 Εργαλεία - pycharm
1.3 Κλάσεις και αντικείμενα
1.3.1 Κλάσεις και αντικείμενα - Βασικοί ορισμοί
1.3.2 Παράδειγμα: Η κλάση "Employee"
1.3.3 Ταξινόμηση αντικειμένων
Εβδομάδα 2: Κλάσεις και κληρονομικότητα
2.1 Ειδικές μέθοδοι
2.1.1 Γνωρίσματα κλάσεων
2.1.2 Παράδειγμα: η κλάση Point
2.1.3 Οι μέθοδοι __str__ και __repr__
2.1.4 Διαγραφή αντικειμένων και γνωρισμάτων
2.2 Παράδειγμα: Οι κλάσεις Card-Deck
2.2.1 Παράδειγμα: Η κλάση Card
2.2.2 Παράδειγμα: Η κλάση Deck
2.3.2 Διαγράμματα κλάσεων με UML
2.3 Κληρονομικότητα κλάσεων
2.3.1 Κληρονομικότητα κλάσεων
2.3.2 Παράδειγμα: η μισθοδοσία
2.3.3 Μέθοδοι κλάσεων
2.4 Παράδειγμα: το παιχνίδι 31
2.4.1 Παράδειγμα: το παιχνίδι 31 - Μέρος Α’: Η κλάση Game
2.4.2 Παράδειγμα: το παιχνίδι 31 - Μέρος Β’: H κλάση Player
2.4.3 Παράδειγμα: το παιχνίδι 31 - Μέρος Γ’: η κλάση ComputerPlayer
Εβδομάδα 3: Μόνιμη αποθήκευση δεδομένων
3.1 Εισαγωγή, αρχεία csv
3.1.1 Εισαγωγή, μόνιμη αποθήκευση
3.1.2 Η εφαρμογή contacts
3.1.3 Η εφαρμογή contacts: Η μέθοδος create_contacts
3.1.4 Αποθήκευση σε αρχείο csv
3.1.5 Παράδειγμα: η contacts με csv
3.2 Οι βιβλιοθήκες pickle και shelves – η κωδικοποίηση JSON
3.2.1 H βιβλιοθήκη pickle
3.2.2 Παράδειγμα: η contacts με pickle
3.2.3 Η βιβλιοθήκη shelve
3.2.4 Παράδειγμα: η contacts με shelve
3.2.5 JSON
3.3 Σχεσιακές βάσεις δεδομένων
3.3.1 Σύντομη εισαγωγή στο σχεσιακό μοντέλο SQL
3.3.2 Η βιβλιοθήκη sqlite3
3.3.3 Παράδειγμα: η contacts με sqlite3
3.3.4 Ανασκόπηση διαφορετικών προσεγγίσεων
Εβδομάδα 4: Τkinter: γραφική διεπαφή χρήστη
4.1 Εισαγωγή στην tkinter
4.1.1 Το μοντέλο προγραμματισμού με γεγονότα
4.1.2 Το πρώτο γραφικό πρόγραμμα
4.1.3 Η μηχανή γεωμετρίας pack
4.1.4 Παράδειγμα: γεννήτρια παραθύρων
4.1.5 Απλά widget
4.1.6 Εικόνες
4.2 Υποδοχείς
4.2.1 Υποδοχέας Frame
4.2.2 Υποδοχέας Notebook
4.2.3 Γεωμετρία grid
4.2.4 Άλλα γραφικά αντικείμενα
4.3 Μενού και διάλογοι
4.3.1 Μενού
4.3.2 Combobox
4.3.3 Treeview
4.3.4 Τα εγγόνια του Κολοκοτρώνη
4.3.5 Διάλογοι
4.3.6 Διαχείριση γεγονότων bind()
Εβδομάδα 5: Σύνθετα γραφικά αντικείμενα
5.1 Listbox και η εφαρμογή MyContacts
5.1.1 Listbox και Scrollbar
5.1.2 MyContacts: Παρουσίαση επαφών σε Listbox
5.1.3 MyContacts: Σύνδεση με την κλάση Contact και τη βάση δεδομένων
5.1.4 MyContacts: Αναζήτηση στις επαφές
5.1.5 MyContacts: Ανάπτυξη των μενού χειρισμού των επαφών
5.1.6 MyContacts: Εισαγωγή νέων επαφών
5.2 Τo widget Text
5.2.1 To γραφικό αντικείμενο Text
5.2.2 Διαχείριση κειμένου με ετικέτες
5.2.3 Παράδειγμα: MyEditor. Μέρος Α’
5.2.4 Παράδειγμα: MyEditor. Μέρος Β’
5.3 To widget Canvas
5.3.1 Μέθοδοι και ταυτότητες αντικειμένων
5.3.2 Canvas: παραδείγματα
5.3.3 Canvas: το γεγονός <B1-Moäon>
5.3.4 Παράδειγμα: ελαστικό ορθογώνιο
5.3.5 Παράδειγμα: Το παιχνίδι "Γέμισε το κουτί"
Εβδομάδα 6: Σχεδιάζουμε παιχνίδια με python
6.1 Κίνηση
6.1.1 Βασικός μηχανισμός κίνησης
6.1.2 Φυσική κίνησης
6.1.3 Κίνηση χαρακτήρα
6.1.4 Κίνηση τοπίου
6.1.5 Παράδειγμα κίνησης
6.2 Αναπτύσσουμε παιχνίδια
6.2.1 Caveman – το παιχνίδι
6.2.2 Caveman – η πίστα
6.2.3 Caveman – οι χαρακτήρες
6.2.4 Προσωποποίηση παιχνιδιών
6.2.5 Διαχείριση του χρόνου
6.3 Τελική εργασία
6.3.1 Το παιχνίδι 31: Αρχική σχεδίαση του καμβά
6.3.2 Το παιχνίδι 31: Η κλάση CardImages
6.3.3 Το παιχνίδι 31: Η κλάση GUICard
6.3.4 To παιχνίδι 31: Οι κλάσεις των παικτών
6.3.5 To παιχνίδι 31: Η κλάση GUIGame
6.3.6 Τελική εργασία: Ολοκληρώνουμε το παιχνίδι 31
6.3.7 Κατευθύνσεις: από δω και πέρα τι;
Το μάθημα απευθύνεται σε κάθε ενδιαφερόμενο πολίτη, μπορείτε δηλαδή να εγγραφείτε χωρίς να υπάρχει κάποιο προαπαιτούμενο.
Επίσης, είναι βιντεοσκοπημένο και ασύγχρονο. Μπορείτε, συνεπώς, να το παρακολουθήσετε στην πλατφόρμα μας τις ημέρες και ώρες που επιθυμείτε. Έχει διάρκεια έξι εβδομάδων και κάθε εβδομάδα προστίθενται νέες ενότητες, τις οποίες μπορείτε, όπως αναφέραμε, να δείτε στο πρόγραμμά σας.
Πέρα από το διδακτικό υλικό, το μάθημα περιλαμβάνει εβδομαδιαία τεστ, μία τελική εξέταση και μια τελική εργασία. Η συμπλήρωση των τεστ γίνεται και αυτή στο δικό σας πρόγραμμα, εντός κάποιων εβδομαδιαίων συνήθως προθεσμιών. Η συμμετοχή στα τεστ είναι βεβαίως στη δική σας ευχέρεια. Αν όμως επιθυμείτε την έκδοση βεβαίωσης επιτυχούς παρακολούθησης, θα χρειαστεί να συμμετάσχετε στην τελική εξέταση/εργασία και στα περισσότερα τουλάχιστον τεστ.
Τα μαθήματα του Mathesis προσφέρονται δωρεάν και έτσι θα συνεχίσουν. Μπορείτε να τα παρακολουθήσετε μέχρι τέλους και να συμμετάσχετε στα εβδομαδιαία τεστ και την τελική εξέταση. Εάν επιθυμείτε τη βεβαίωση επιτυχούς παρακολούθησης, θα σας ζητείται όμως ένα μικρό αντίτιμο –της τάξης των 30€– για την έκδοσή της, μετά την υποβολή της τελικής σας εξέτασης/εργασίας. Εάν δεν υποβάλετε την τελική σας εξέταση/εργασία –ή αν την υποβάλετε, αλλά δεν περάσετε το μάθημα– δεν υπάρχει κάποια υποχρέωση πληρωμής.
Αν έχετε ήδη λογαριασμό στο Mathesis, αρκεί να συνδεθείτε στο Mathesis με το email που έχετε ήδη δηλώσει και, στη συνέχεια, να εγγραφείτε στο μάθημα. Αν δεν έχετε λογαριασμό στο Mathesis, θα χρειαστεί προηγουμένως να δημιουργήσετε έναν. Αν τυχόν χρειαστείτε βοήθεια για την εγγραφή σας στο μάθημα ή στην πλατφόρμα του Mathesis, μπορείτε να δείτε εδώ τις σχετικές οδηγίες.
Βιντεοσκόπηση: Νίκος Αβούρης
Μοντάζ:Νίκος Αβούρης
Γενική επιμέλεια και προγραμματισμός ασκήσεων: Δημήτρης Αγγελάκης, Νίκος Γκικόπουλος
Η βιντεοσκόπηση έγινε το 2018.