Προγραμματισμός με Python

Διδάσκων: Μιχάλης Πλεξουσάκης. Γραφείο: B-309, Τηλ: 281.039.3709, e-mail: plex@tem.uoc.gr
Ώρες γραφείου: Τρίτη 13-15, Πέμπτη 11-13 ή με rendez-vous.

Ώρες διαλέξεων: Δευτέρα, Τετάρτη 9-11, Α-203
Ώρες εργαστηρίων/ασκήσεων: Τρίτη 11-13, Τρίτη 15-17, Πέμπτη 09-11 στην αίθουσα Γ-109.

Επανάληψη των βασικών δομών της γλώσσας. Κλάσεις. Exceptions. Οι βιβλιοθήκες numpy και scipy. Εργαστηριακές ασκήσεις στη γλώσσα προγραμματισμού Python.

Διδακτικό υλικό

Για τις ανάγκες του μαθήματος θα χρησιμοποιηθεί το ηλεκτρονικό σύγγραμμα Beginning Python. From Novice to Professional, του Magnus Lie Hetland, το οποίο διατίθεται ελεύθερα μέσω της υπηρεσίας συγγραμμάτων Εύδοξος. Το ηλεκτρονικό σύγγραμμα Python Scripting for Computational Science, του Hans Petter Langtangen, το οποίο επίσης διατίθεται ελεύθερα μέσω της υπηρεσίας Εύδοξος, δεν αποτελεί εγχειρίδιο της γλώσσας Python αλλά απευθύνεται σε ερευνητές στις υπολογιστικές επιστήμες ή προγραμματιστές με επαρκή γνώση της γλώσσας.

Πέρα από την επίσημη ιστοσελίδα της Python, η οποία περιέχει ένα πολύ καλό οδηγό εκμάθησης, τα παρακάτω βιβλία προτείνονται ως βιβλιογραφικές αναφορές:

Οι παρακάτω σύνδεσμοι αποτελούν πηγές πληροφοριών για την γλώσσα Python στα Ελληνικά:

Στην ιστοσελίδα http://www.tem.uoc.gr/~plex/tem101-Fall2010/linux01.html θα βρείτε μια σύντομη εισαγωγή στο λειτουργικό σύστημα Linux.

Εγκατάσταση περιβάλλοντος εργασίας Python σε προσωπικό υπολογιστή

Αν ο προσωπικός υπολογιστής χρησιμοποιεί το λειτουργικό σύστημα Linux ή OS X τότε μάλλον έχετε ήδη εγκαταστημένo κάποιο περιβάλλον εργασίας για τη γλώσσα. Σε οποιαδήποτε περίπτωση, γράψτε στη γραμμή εντολών python για να το ελέγξετε. Αν θέλετε να εγκαταστήσετε στον προσωπικό υπολογιστή σας ένα περιβάλλον εργασίας για την γλώσσα Python ακολουθήστε τις οδηγίες που περιέχονται στην ιστοσελίδα https://www.enthought.com/products/canopy/. Η Python είναι ήδη εγκαταστημένη στους υπολογιστές των εργαστηρίων του Τμήματος.

Αξιολόγηση

Ο βαθμός, Β, του μαθήματος θα υπολογιστεί από τον τύπο B = 0.3 * E + 0.7 * T. Εδώ, E είναι ο μέσος όρος των εργαστηριακών ασκήσεων και T ο βαθμός στο τελικό διαγώνισμα. Ο ίδιος τύπος υπολογισμού του βαθμού του μαθήματος ισχύει και για την εξεταστική περίοδο του Σεπτεμβρίου. Για τη συμμετοχή στο τελικό διαγώνισμα απαιτείται ο μέσος όρος των εργαστηριακών ασκήσεων να είναι μεγαλύτερος ή ίσος του 4.

Ανακοινώσεις

Παραδώστε την 4η εργαστηριακή άσκηση μέχρι τις 8 Ιουνίου. Οδηγίες για τον τρόπο παράδοσης περιέχονται στο φυλλάδιο της άσκησης. Θα χρειαστείτε επίσης το αρχείο triangle.txt

Το πρόγραμμα greedy_TSP.py υλοποιεί έναν άπληστο αλγόριθμο για τη λύση του προβλήματος του πλανόδιου πωλητή (του Γ. Γρέκα).

Το πρόγραμμα greedy.py υλοποιεί έναν άπληστο αλγόριθμο για τη λύση του προβλήματος του σακιδίου (knapsack problem).

Παραδώστε την 3η εργαστηριακή άσκηση μέχρι τις 18 Μαϊου. Οδηγίες για τον τρόπο παράδοσης περιέχονται στο φυλλάδιο της άσκησης.

Όσοι δεν εξετάστηκαν στην 1η εργαστηριακή άσκηση πρέπει να αναπληρώσουν την εξέταση την Τρίτη 8 Απριλίου στις 13:00, εργαστήριο Γ-109.

Παραδώστε την 2η εργαστηριακή άσκηση μέχρι τις 13 Απριλίου. Οδηγίες για τον τρόπο παράδοσης περιέχονται στο φυλλάδιο της άσκησης.

Τα εργαστήρια της εβδομάδας 24-28 Μαρτίου θα ασχοληθούν με το module numpy.

Τα εργαστήρια της εβδομάδας 17-21 Μαρτίου θα ασχοληθούν με εξαιρέσεις και με τη λύση της 1ης εργαστηριακής άσκησης.

Απαντήστε στις ερωτήσεις του 3ου φυλλαδίου ως προετοιμασία για τα εργαστήρια της εβδομάδας 10-14 Μαρτίου.

Απαντήστε στις ερωτήσεις του 2ου φυλλαδίου ως προετοιμασία για τα εργαστήρια της εβδομάδας 3-7 Μαρτίου.

Παραδώστε την 1η εργαστηριακή άσκηση μέχρι την Δευτέρα 10 Μαρτίου. Οδηγίες για τον τρόπο παράδοσης περιέχονται στο φυλλάδιο της άσκησης. Θα σας χρειαστείτε και το αρχείο words.txt.

Απαντήστε στις ερωτήσεις του 1ου φυλλαδίου ως προετοιμασία για τα εργαστήρια της εβδομάδας 24-28 Φεβρουαρίου.

Μπορείτε να εγγραφείτε σε ένα από τα εργαστήρια του μαθήματος στη διεύθυνση http://doodle.com/affhhaxax8tase7i. Παρακαλώ, γράψτε το όνομά σας και τον αριθμό μητρώου σε μία μόνο από τις διαθέσιμες επιλογές.

Φοιτητές 3ου ή μεγαλύτερου εξαμήνου που γράφονται στο ΤΕΜ-101 έχουν την επιλογή να εξεταστούν στη γλώσσα C αντί στην Python.

Ημερολόγιο μαθήματος

Δεν έγινε μάθημα λόγω εκλογών.

Λύση της 3ης εργαστηριακής άσκησης.

Δεν έγινε μάθημα λόγω εκλογών.

Το πρόβλημα του σακιδίου. Αναπαράσταση γραφημάτων στην Python.

Άπληστοι αλγόριθμοι. Το πρόβλημα του σακιδίου.

Δεν έγινε μάθημα λόγω φοιτητικών εκλογών.

Αλγόριθμοι Monte Carlo (συνέχεια).

Παραδείγματα αλγορίθμων Monte Carlo. Τυχαίοι περίπατοι.

Εισαγωγή στους αλγορίθμους Monte Carlo.

Το module sympy. Παραδείγματα και εφαρμογές.

Δεν έγινε μάθημα.

Το module matplotlib. Παραδείγματα και εφαρμογές.

Το module numpy. Συναρτήσεις πάνω σε πίνακες. Λύσεις γραμμικών συστημάτων.

Το module numpy. Βασικές πράξεις.

Το module numpy. Παραδείγματα δημιουργίας πολυδιάστατων πινάκων. Βασικές πράξεις. Συναρτήσεις πάνω σε πίνακες.

Εισαγωγή στις εξαιρέσεις (exceptions).

Όλες οι ειδικές μέθοδοι. Παραδείγματα. Οι κλάσεις Vec2D και Complex.

Μια κλάση για πολυώνυμα (συνέχεια). Οι ειδικές μέθοδοι __sub__, __mul__.

Οι ειδικές μέθοδοι __call__ και __add__. Παραδείγματα. Μια κλάση για πολυώνυμα.

Δεν έγινε μάθημα λόγω αργίας.

Κλάσεις. Παραδείγματα. Προστατευμένα χαρακτηριστικά (protected attributes).

Εισαγωγή στον αντικειμενοστραφή προγραμματισμό. Ορισμός και χρήση των κλάσεων.

Επανάληψη. Συναρτήσεις και ανώνυμες συναρτήσεις. Εντολές εισόδου εξόδου. Μορφοποιημένη έξοδος. Οι βιβλιοθήκες math, cmath, time και random.

Καλωσόρισμα. Διαδικαστικά του μαθήματος. Επανάληψη βασικών δομών της Python. Λίστες, tuples, λεξικά. Δομές ελέγχου, δομές επανάληψης.