IP: 54.158.245.157

Εξέταση Σεπτεμβρίου

Οδηγίες

Οι παρακάτω οδηγίες θα τηρηθούν αυστηρά.
  1. Κάνετε login ως guest, όχι με τα στοιχεία σας. Με τα στοιχεία σας όμως θα πρέπει να κάνετε upload τις ασκήσεις στο τέλος.
  2. Είναι υποχρέωσή σας να ξέρετε να χειριστείτε τον υπολογιστή του εργαστηρίου, να γράψετε το πρόγραμμα και να το ανεβάσετε επιτυχώς. Δεν πρόκειται να απαντήσουμε ερωτήσεις για το πώς γίνεται τι.
  3. Θα έχετε να κατεβάσετε 4 προγράμματα (προσοχή, το καθένα στο δικό του κενό directory) να γράψετε το πρόγραμμά σας στο αντίστοιχο αρχείο user.py και να το ανεβάσετε με το σύστημα στη σωστή άσκηση (προσέξτε γιατί είναι κοινό λάθος να ανεβάζει κανείς άλλο πρόγραμμα σε άλλη άσκηση--τέτοιο λάθος δε διορθώνεται).
  4. Έχετε 1.5 ώρα στη διάθεσή σας. Το σύστημα θα σταματήσει αυτόματα να δέχεται ασκήσεις μετά από αυτή την ώρα. Είναι ευθύνη σας να τα έχετε ανεβάσει έγκαιρα.
  5. Δε θα υπάρχει πρόσβαση στο internet. Θα έχετε όμως πρόσβαση στη σελίδα του μαθήματος και στις σημειώσεις των διαλέξεων. Δικές σας σημειώσεις δεν επιτρέπονται
  6. Οπωσδήποτε θα πρέπει να έχετε μαζί σας ταυτότητα (φοιτητική ή αστυνομική). Αν δεν έχετε μην έρθετε.
  7. Οποιουδήποτε είδους συνεργασία ανάμεσα σε φοιτητές κατά τη διάρκεια της εξέτασης οδηγεί σε μηδενισμό σας και σε αποβολή από το μάθημα.

Γλώσσα Προγραμματισμού ΙΙ

Τμήμα Μαθηματικών και Εφαρμοσμένων Μαθηματικών

Πανεπιστήμιο Κρήτης

Εαρινό Εξάμηνο 2014-15

Διδάσκοντες: Μιχ. Κολουντζάκης και Μιχ. Πλεξουσάκης

Forum (συζητήσεις) για το μάθημα.
Σελίδα του Μ. Πλεξουσάκη για το μάθημα.
Τεχνικές ερωτήσεις μόνο εδώ ώστε να τις βλέπουν όλοι.

Διαδικαστικά μαθήματος

Ωράριo: Διαλέξεις: Τρίτη 9-11 & 11-1 (Τμήμα Β & Τμήμα Α) και Πέμπτη 9-11 & 11-1 (Τμήμα Β και Τμήμα Α) στα αμφιθέατρα Α201 (τμήμα Α, αρχικά Α-Μ, διδάσκων: Πλεξουσάκης) και Α203 (τμήμα Β, αρχικά Ν-Ω, διδάσκων: Κολουντζάκης).

Ωράριo Εργαστηρίων: Τρίτη 11-3, Πέμπτη 1-3, Παρασκευή 9-3

Βοηθοί εργαστηρίων: Δημήτρης Καλοψικάκης, Μιχάλης Μπάρκας, Μανώλης Παρασκουλάκης, Γεωργία Σφακιανάκη

Περιεχόμενο μαθήματος: Το μάθημα αποτελεί συνέχεια του μαθήματος Γλ. Προγραμματισμού Ι, το οποίο αποτελούσε μια εισαγωγή σε απλή χρήση των υπολογιστών και στοιχεία της γλώσσας προγραμματισμού python. Παρ' όλ' αυτά θα ξαναγίνει στις πρώτες εβδομάδες του μαθήματος μια γρήγορη εισαγωγή/υπενθύμιση στη γλώσσα python την οποία και θα χρησιμοποιούμε στο υπόλοιπο εξάμηνο με πιο προχωρημένο τρόπο. Σκοπός είναι να αποκτήσει ο φοιτητής μια άνεση σε βασικές προγραμματιστικές τεχνικές που θα τους είναι απαραίτητες στο υπόλοιπο των σπουδών του και βεβαίως μετά την αποφοίτησή του.

Χρήσιμα links:

  1. Online Python Tutor: Visualize program execution.
  2. The Python Tutorial
  3. Think Python
  4. Οδηγός Python μέσω παραδειγμάτων
  5. 46 Simple Python Exercises

Αξιολόγηση φοιτητών: Όλες οι αξιολογήσεις των φοιτητών θα γίνονται μπροστά στον υπολογιστή. Δε θα υπάρχει τελική γραπτή εξέταση, ούτε τον Ιούνιο ούτε σε μεταγενέστερες εξεταστικές περιόδους. Συγκεκριμένα ο βαθμός του φοιτητή θα προκύπτει ως εξής:

Για να κλείσετε θέση σε κάποιο τμήμα εξέτασης πηγαίνετε στο link εδώ.

Για όσους απουσιάζουν από το Ηράκλειο: Αν κάποιος δε μπορεί να είναι παρών κατά τη διάρκεια των 4 ενδιάμεσων εξετάσεων τότε μπορεί να επιλέξει να εξεταστεί με τον ίδιο τρόπο μέσα στην εξεταστική περίοδο. Σε αυτή την περίπτωση θα εξεταστεί και στις 4 εξετάσεις αυτές (με άλλα θέματα φυσικά) μέσα στην ίδια μέρα. Απαραίτητη προϋπόθεση για να μπορέσει κάποιος να εξεταστεί με αυτό τον τρόπο είναι να το δηλώσει σε μένα (ένα email αρκεί) ότι αυτό επιθυμεί μέχρι και τις 5 Μαρτίου 2015. Μετά από αυτή την ημερομηνία δε θα γίνει δεκτή καμία αίτηση για να υπαχθεί κάποιος σε αυτό τον εναλλακτικό τρόπο εξέτασης. Η αίτησή σας θα πρέπει να είναι αιτιολογημένη ως προς το γιατί δε μπορείτε να εξεταστείτε κατά τη διάρκεια του εξαμήνου.

Εξέταση Σεπτεμβρίου ή άλλων περιόδων: Εξέταση για το σύνολο του βαθμού στο εργαστήριο με συνθήκες παρόμοιες με τις εργαστηριακές εξετάσεις που γίνονται κατά τη διάρκεια του εξαμήνου.

Για εξαίρεση από ΜΙΑ εξέταση: Παρακαλώ συμπληρώστε τη φόρμα που βρίσκεται εδώ.

Μορφή Ασκήσεων/Εξετάσεων: Κάθε άσκηση (από αυτές που θα έχετε να λύσετε κάθε εβδομάδα, στο σπίτι σας ή στο εργαστήριο) και κάθε εξέταση (από αυτές που 4 φορές μέσα στο εξάμηνο θα έχετε να δώσετε) θα έχει ακριβώς την ίδια μορφή (και οι εξετάσεις θα είναι σημαντικά πιο εύκολες από τις ασκήσεις για το σπίτι):

Τις ασκήσεις θα τις κατεβάζετε από αυτή εδώ την ιστοσελίδα κάθε βδομάδα. Τις εξετάσεις όμως θα τις παίρνετε (την ώρα της εξέτασης) από συγκεκριμένη ιστοσελίδα αφού πρώτα κάνετε login με τα στοιχεία σας (username mathXXXX ή temXXXX και το password που χρησιμοποιείτε για πρόσβαση στο email του Πανεπιστημίου).

ΠΡΟΣΟΧΗ: Αποθηκεύστε τα αρχεία user.py και tester.py σε διαφορετικό φάκελο για κάθε άσκηση. Αν δεν το κάνετε αυτό κινδυνεύετε (επειδή το όνομα των αρχείων αυτών δεν αλλάζει από άσκηση σε άσκηση) να γράψετε το ένα αρχείο πάνω στο άλλο καταστρέφοντας έτσι προηγούμενη δουλειά σας.

Παράδειγμα άσκησης και αυτόματου διορθωτή: Δείτε τα αρχεία εδώ. Κατεβάστε τα και τα τρία σε ένα κενό κατάλογο (directory) και ρίξτε μια ματιά στο αρχείο README.txt και στο αρχείο user.py όπου πρέπει να γραφτεί το πρόγραμμα (ανάμεσα στις δύο γραμμές START και STOP). Το αρχείο tester.py είναι ο αυτόματος διορθωτής. Θα πρέπει οπωσδήποτε γρήγορα να εξοικειωθείτε με τον τρόπο λειτουργίας αυτού του απλού συστήματος.

Για να δείτε πώς θα εγκαταστήσετε την python στα Windows πάτε εδώ.

Υποβολή των προγραμμάτων σας:
Υποβάλλετε τα προγράμματά σας πριν την καθορισμένη ημερομηνία παράδοσης στη θέση αυτή. Μπορείτε να ξαναυποβάλετε το ίδιο πρόγραμμα μέχρι την ημερομηνία παράδοσης και μετράει πάντα το τελευταίο. Κρατάτε πάντα αντίγραφα των προγραμμάτων σας όπως και τα email επιβεβαίωσης. Αν νομίζετε ότι ότι το σύστημα δε δούλεψε σωστά στείλτε μου email με τις λεπτομέρειες.

Μπορείτε εδώ να βλέπετε τα αποτελέσματα των προγραμμάτων σας ακόμη και πριν την λήξη της προθεσμίας παράδοσης (συνήθως μια φορά την ημέρα ελέγχονται). Αν το πρόγραμμά σας εμφανίζει σφάλμα τότε μπορείτε να το ξαναπροσπαθήσετε μέχρι την προθεσμία.

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

ΑΝΑΚΟΙΝΩΣΗ (8/2/2015):
Τις πρώτες εβδομάδες του εξαμήνου το μάθημα θα γίνεται για όλους τους φοιτητές (και τα δύο τμήματα) από τον Μ. Κολουντζάκη στο Αμφ. Α 203, και ώρα 9-11. Το μάθημα θα χωριστεί σε δύο τμήματα (Κολουντζάκης, Πλεξουσάκης) το συντομότερο δυνατό.

Τρίτη 10 Φεβ 2015: Σήμερα είπαμε διάφορα εισαγωγικά για το μάθημα, πώς να λύνουμε τις ασκήσεις (δηλ. πώς να γράφουμε τα προγράμματα), πώς να εγκαταστήσουμε την python στον υπολογιστή μας, πώς να χρησιμοποιήσουμε τον tester, κλπ.

Έπειτα είπαμε διάφορα εισαγωγικά για τη γλώσσα python.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 12 Φεβ 2015: Σήμερα αναφερθήκαμε στις παρακάτω έννοιες: λίστες, ανακύκλωση for, έλεγχοι if .. else, βιβλιοθήκη math, εκτυπώσεις με print και formatting strings. Δείτε το σημειωματάριο για πολύ περισσότερες λεπτομέρειες.

Σημειωματάριο της ημέρας με σχόλια.

Προγράμματα προς παράδοση Νο 1: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 0, Πρόγραμμα 1, Πρόγραμμα 2

έως τα μεσάνυχτα της Δευτέρας 23 Φεβ. 2015. Δείτε παραπάνω για οδηγίες.

Πριν κατεβάσετε τα αρχεία από τα παραπάνω links δημιουργείστε στον υπολογιστή σας από ένα κενό κατάλογο (directory) για κάθε μια από τις ασκήσεις. Π.χ. θα μπορούσατε να δημιουργήσετε τρεις καταλόγους με ονόματα 0, 1, 2 και να αποθηκεύσετε τα αρχεία της κάθε μιας από τις παραπάνω τρεις ασκήσεις στον αντίστοιχο κατάλογο. Αν δεν το κάνετε αυτό τότε τα αρχεία των τριών ασκήσεων θα εγγραφούν όλα το ένα πάνω στο άλλο γιατί έχουν όλα το ίδιο όνομα (user.py, tester.py).

Προγράμματα Νο 1: Αποτελέσματα Δείτε εδώ για τα τελικά αποτελέσματα. Ασκήσεις που δεν υποβλήθηκαν με το σωστό τρόπο δεν ελήφθησαν υπόψιν. Λυπάμαι αλλά ο αριθμός των φοιτητών είναι τέτοιος που δεν πρόκειται να αλλάξει αυτό. Οι ασκήσεις βαθμολογήθηκαν με τον tester που σας είχα δώσει, στον οποίο προστέθηκαν 1-2 περιπτώσεις ακόμη. Στις ασκήσεις 1 & 2 αυτό δεν έκανε διαφορά αλλά στην άσκηση 0 (min, max) έκανε πολύ μεγάλη διαφορά αφού πολλοί φαίνεται ότι είχατε γράψει το πρόγραμμά σας με περιπτωσιολογία στην οποία κάποιες περιπτώσεις (που δεν υπήρχαν στον αρχικό tester, ο οποίος φυσικά δε μπορεί να περιέχει όλες τις δυνατές εισόδους) σας είχαν ξεφύγει.

ΑΝΑΚΟΙΝΩΣΗ (18/2/2015):
Υποβάλλετε τα προγράμματά σας πριν την καθορισμένη ημερομηνία παράδοσης στη θέση αυτή. Μπορείτε να ξαναυποβάλετε το ίδιο πρόγραμμα μέχρι την ημερομηνία παράδοσης και μετράει πάντα το τελευταίο. Κρατάτε πάντα αντίγραφα των προγραμμάτων σας όπως και τα email επιβεβαίωσης. Αν νομίζετε ότι ότι το σύστημα δε δούλεψε σωστά στείλτε μου email με τις λεπτομέρειες.

NEO: Μπορείτε εδώ να βλέπετε τα αποτελέσματα των προγραμμάτων σας ακόμη και πριν την λήξη της προθεσμίας παράδοσης. Αν το πρόγραμμά σας εμφανίζει σφάλμα τότε μπορείτε να το ξαναπροσπαθήσετε μέχρι την προθεσμία.

ΑΝΑΚΟΙΝΩΣΗ (16/2/2015):
Τα "εργαστήρια" θα αρχίσουν τη λειτουργία τους αυτή την εβδομάδα. Αρχή γίνεται αύριο Τρίτη 17/2/2015 και ώρα 11-1 στα εργαστήρια της πτέρυγας Γ (επίπεδο 1). Οι ώρες λειτουργίας θα σταθεροποιηθούν μέσα στην εβδομάδα, όπως και το ποιοι θα είναι οι βοηθοί.

Δε θα υπάρχουν συγκεκριμένες ώρες για τον κάθε φοιτητή. Τα εργαστήρια θα παραμένουν ανοιχτά κάποια 2ωρα ή 3ωρα την εβδομάδα κατά τη διάρκεια των οποίων θα μπορείτε να βρείτε εκεί βοηθούς ή καθηγητές να σας βοηθούν με ό,τι προγράμματα προσπαθείτε να φτιάχνετε ή με άλλες απορίες τις οποίες τυχόν έχετε για τη χρήση των συστημάτων. Θα βρίσκετε επίσης και επιπλέον ασκήσεις τις οποίες θα προσπαθείτε να λύνετε εκεί είτε μόνοι σας, είτε αλληλοβοηθούμενοι, είτε βοηθούμενοι από εμάς.

Η πρωτοβουλία είναι σε σας. Αν θέλετε βοήθεια ελάτε στα εργαστήρια. Αν τα καταφέρνετε μια χαρά μόνοι σας ή αν δε σας ενδιαφέρει να μάθετε τότε πάτε για καφέ. Εμείς θα είμαστε εκεί.

Τρίτη 17 Φεβ 2015: Μιλήσαμε σήμερα για την ανακύκλωση while, για το πώς αποθηκεύονται οι λίστες στη μνήμη και κάποιες ιδιαιτερότητες που έχουν, για το πώς κάνουμε διάφορες πράξεις σε λίστες και τέλος είδαμε και ένα αλγόριθμο ταξινόμησης λίστας.

Σημειωματάριο της ημέρας με σχόλια.

ΑΝΑΚΟΙΝΩΣΗ (18/2/2015):
Δεύτερο εργαστήριο σήμερα Τετάρτη 18/2/2015 και ώρα 1:10-3μμ.

ΑΝΑΚΟΙΝΩΣΗ (18/2/2015):
Τρίτο εργαστήριο Παρασκευή 20/2/2015 και ώρες 9:00-1:00.

Σας τονίζω ότι αν δεν πηγαίνετε τακτικά στο εργαστήριο για να εγκλιματιστείτε στα εκεί συστήματα τότε τη μέρα της εξέτασης θα χάσετε πολύτιμο χρόνο στο να καταλάβετε πώς δουλεύει τι και δε προλάβετε να γράψετε το πρόγραμμα που θα σας ζητηθεί.

ΑΝΑΚΟΙΝΩΣΗ (18/2/2015):
Πρώτη εξέταση: Παρασκευή 6 Μαρτίου 2015, πρωί.

Πέμπτη 19 Φεβ 2015: Σήμερα μιλήσαμε για το πώς ορίζουμε και χρησιμοποιούμε συναρτήσεις στην python.

Σημειωματάριο της ημέρας με σχόλια.

Προγράμματα προς παράδοση Νο 2: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 3, Πρόγραμμα 4, Πρόγραμμα 5

έως τα μεσάνυχτα της Δευτέρας 2 Μαρ. 2015. Δείτε παραπάνω για οδηγίες.

ΑΝΑΚΟΙΝΩΣΗ (21/2/2015):
Το forum του μαθήματος στήθηκε στη θέση http://prog2uoc.my-freeforum.com/.

Θα απαντώ στο εξής τεχνικές ερωτήσεις μόνο αν γίνονται στο forum, ώστε από τις απαντήσεις να επωφελούνται όλοι και να μην επαναλαμβάνω συνέχεια τα ίδια.

Τρίτη 24 Φεβ 2015: Μιλήσαμε κατ' αρχήν για τις διαφορές ανάμεσα σε τοπικές και καθολικές μεταβλητές. Επίσης φτιάξαμε ένα πρόγραμμα για να βρίσκουμε προσεγγιστικά τη ρίζα μιας μη γραμμικής εξίσωσης με τη μέθοδο του δυαδικού ψαξίματος.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 26 Φεβ 2015: Λύσαμε διάφορα μικρά προβληματάκια με τις τεχνικές που έχουμε μάθει ως τώρα.

Σημειωματάριο της ημέρας με σχόλια.

ΑΝΑΚΟΙΝΩΣΗ (27/2/2015):
Για να κλείσετε θέση για την πρώτη εξέταση (Παρασκευή 6 Μαρτίου, πρωί) πηγαίνετε στο

https://fourier.math.uoc.gr/prog2/work/signup.php

Αν δεν έχετε κλείσει θέση σε κάποιο τμήμα δε θα σας επιτραπεί να εξεταστείτε.

Προγράμματα προς παράδοση Νο 3: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 6, Πρόγραμμα 7, Πρόγραμμα 8

έως τα μεσάνυχτα της Δευτέρας 9 Μαρ. 2015. Δείτε παραπάνω για οδηγίες.

Τρίτη 3 Μαρτίου 2015: Λύσαμε το πρόβλημα της εύρεσης όλων των ακεραίων που μπορούν να γραφτούν ως άθροισμα δύο τετραγώνων. Επίσης μιλήσαμε για αναδρομικές συναρτήσεις και κάναμε μια σύντομη εισαγωγή στο πώως χειριζόμαστε αρχεία στην python.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 5 Μαρτίου 2015: Σήμερα συνεχίσαμε να μιλάμε για επεξεργασία αρχείων (διάβασμα μόνο). Είδαμε επίσης την έννοι του list comprehension καθώς και τα λεξικά (dictionaries) της python.

Σημειωματάριο της ημέρας με σχόλια.

Αποτελέσματα 1ης εξέτασης: Δείτε εδώ.
Μπορείτε να δείτε όλες τις ασκήσεις εδώ. Στο αντίστοιχο αρχείο myuser.py μπορείτε να βλέπετε μια δυνατή λύση της άσκησης.

Προγράμματα προς παράδοση Νο 4: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 9, Πρόγραμμα 10, Πρόγραμμα 11

έως τα μεσάνυχτα της Δευτέρας 16 Μαρ. 2015. Δείτε παραπάνω για οδηγίες. Αυτή τη φορά θα πρέπει να κατεβάσετε και από ένα συνοδευτικό αρχείο (.txt) στο ίδιο directory με τα user.py, tester.py.

Τρίτη 10 Μαρτίου 2015: Σήμερα συνεχίσαμε να μιλάμε για επεξεργασία αρχείων (διάβασμα μόνο) εστιάζοντας σε ένα συγκεκριμέον μεγάλο αρχείο και το πώς επεξεργαζόμαστε τις πληροφορίες εκεί μέσα. Είδαμε επίσης το πώς ταξινομούμε μια λίστα με τη μέθοδο sort προσδιορίζοντας το ποια είναι η αξία του κάθε στοιχείου της λίστας μέσω μιας συνάρτησης.

Σημειωματάριο της ημέρας με σχόλια.

ΑΝΑΚΟΙΝΩΣΗ (11/3/2015):
Από αύριο Πέμπτη 12/3/2015 αρχίζει να διδάσκει και ο κ. Πλεξουσάκης.

Πέμπτη 12 Μαρτίου 2015: Σήμερα συνεχίσαμε να μιλάμε για επεξεργασία αρχείων (διάβασμα και γράψιμο). Επίσης είδαμε το πώς μπορεί κανείς να υπολογίσει με for loops διάφορα αθροίσματα που εμφανίζονται στα Μαθηματικά. Είδαμε ακόμη πώς να υλοποιήσουμε το κόσκινο του Ερατοσθένη για τον υπολογισμό όλων των πρώτων μέχρι κάποιο όριο. Τέλος είδαμε πώς υπολογίζεται το τρίγωνο του Pascal για τον υπολογισμό των διωνυμικων συντελεστών.

Σημειωματάριο της ημέρας με σχόλια.

Προγράμματα προς παράδοση Νο 5: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 12, Πρόγραμμα 13, Πρόγραμμα 14

έως τα μεσάνυχτα της Δευτέρας 23 Μαρ. 2015. Δείτε παραπάνω για οδηγίες. Στο πρόγραμμα 12 ο tester δημιουργεί ένα αρχείο με όνομα __in.txt και τυχαία περιεχόμενα για να δοκιμάσει το πρόγραμμά σας. Το output του προγράμματός σας πάει στο αρχείο με όνομα __out.txt. Αν το πρόγραμμά σας δεν περνάει από τον tester τότε κοιτάξτε τα δύο αυτά αρχεία για να δείτε τι δεν έκανε καλά το πρόγραμμά σας.

ΑΝΑΚΟΙΝΩΣΗ (16/3/2015):
Στα σετ ασκήσεων που έχουν λήξει μπορείτε να βλέπετε μια πρότυπη λύση στο αρχείο myuser.py που βρίσκεται στην ίδια θέση απ' όπου κατεβάσατε την άσκηση.

Τρίτη 17 Μαρτίου 2015: Μιλήσαμε για γραφήματα, πώς τα αναπαριστάμε στον υπολογιστή και πώς υπολογίζουμε διάφορα πράγματα πάνω σε ένα γράφημα.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 17 Μαρτίου 2015: Σήμερα μιλήσαμε λίγο για κάποιες απλές μεθόδους κρυπτογράφησης και αποκρυπτογράφησης κειμένου.

Σημειωματάριο της ημέρας με σχόλια.

Αποτελέσματα 2ης εξέτασης: Δείτε εδώ.
Μπορείτε να δείτε όλες τις ασκήσεις εδώ. Στο αντίστοιχο αρχείο myuser.py μπορείτε να βλέπετε μια δυνατή λύση της άσκησης.

Προγράμματα προς παράδοση Νο 6: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 15, Πρόγραμμα 16, Πρόγραμμα 17

έως τα μεσάνυχτα της Δευτέρας 30 Μαρ. 2015. Δείτε παραπάνω για οδηγίες. Γράψτε το πρόγραμμα 15 πριν γράψετε το πρόγραμμα 16 και αυτό πριν γράψετε το πρόγραμμα 17.

ΑΝΑΚΟΙΝΩΣΗ (21/3/2015):
Δυστυχώς μετά από τη χθεσινή εξέταση προέκυψε ότι κάποιοι φοιτητές υπέβαλαν προγράμματα για άλλους φοιτητές. Αυτό είναι ισοδύναμο με πλαστοπροσωπία. Οι φοιτητές αυτοί αλλά και αυτοί που επωφελήθηκαν διαγράφονται από το μάθημα.

Τρίτη 24 Μαρτίου 2015: Εισαγωγή στη βιβλιοθήκη υπολογισμών numpy.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 26 Μαρτίου 2015: Εισαγωγή στη βιβλιοθήκη υπολογισμών numpy (συνέχεια).

Σημειωματάριο της ημέρας με σχόλια.

ΑΝΑΚΟΙΝΩΣΗ (30/3/2015):
Αύριο Τρίτη 31/3/2015 το εργαστήριο δε θα ανοίξει κατά το διάστημα 11-1 αλλά μόνο από 1-3.

ΑΝΑΚΟΙΝΩΣΗ (2/4/2015):
Αύριο Παρασκευή 2/4/2015 το εργαστήριο δε θα ανοίξει κατά το διάστημα 9-11.

Προγράμματα προς παράδοση Νο 7: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 18, Πρόγραμμα 19, Πρόγραμμα 20

έως τα μεσάνυχτα της Δευτέρας 20 Τετάρτης 22 Απρ. 2015. Δείτε παραπάνω για οδηγίες.

Αν τρέχετε Windows και δεν υπάρχει η numpy εγκατεστημένη στο σύστημά σας (η python βγάζει μήνυμα ότι δεν τη βρίσκει) τότε μπορείτε να την εγκαταστήσετε κατεβάζοντας τον installer.

Τρίτη 31 Μαρτίου 2015: Εισαγωγή στη βιβλιοθήκη γραφικών pyplot.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 2 Απριλίου 2015: Εισαγωγή στη βιβλιοθήκη γραφικών pyplot. Εφαρμογή στο ζωγράφισμα ενός Πασχαλινού αυγού.

Σημειωματάριο της ημέρας με σχόλια.

Προγράμματα προς παράδοση Νο 8: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 21, Πρόγραμμα 22, Πρόγραμμα 23

έως τα μεσάνυχτα της Δευτέρας 27 Απρ. 2015. Δείτε παραπάνω για οδηγίες.

ΑΝΑΚΟΙΝΩΣΗ (19/4/2015):
Για να κλείσετε θέση για την τρίτη εξέταση (Παρασκευή 24 Απριλίου, πρωί) πηγαίνετε στο

https://fourier.math.uoc.gr/prog2/work/signup.php

Τρίτη 21 Απριλίου 2015: Εισαγωγή στην έννοια της class στην python.

Σημειωματάριο της ημέρας με σχόλια.

ΑΝΑΚΟΙΝΩΣΗ (23/4/2015):
Το εργαστήριο της Πέμπτης 23/4/2015 και ώρα 1-2 πιθανότατα δε θα γίνει. Το 2-3 θα γίνει κανονικά.

ΑΝΑΚΟΙΝΩΣΗ (23/4/2015):
Η εξεταστέα ύλη για την αυριανή εξέταση είναι ό,τι έχετε διδαχθεί μέχρι και πριν το Πάσχα εκτός τα γραφικά (pyplot).

ΑΝΑΚΟΙΝΩΣΗ (23/4/2015):
Το μάθημα της Πέμπτης από τον Μιχάλη Κολουντζάκη δε θα γίνει λόγω ασθένειας του διδάσκοντα. Παρακαλώ παρακολουθείστε το μάθημα του Μιχάλη Πλεξουσάκη στις 11.

Πέμπτη 21 Απριλίου 2015: Δεν έγινε το μάθημα του Μ. Κολουντζάκη σήμερα λόγω ασθενείας του. Διαβάστε από τις διαλέξεις του κ. Πλεξουσάκη για classes.

Αποτελέσματα 3ης εξέτασης: Δείτε εδώ.
Μπορείτε να δείτε όλες τις ασκήσεις εδώ. Στο αντίστοιχο αρχείο myuser.py μπορείτε να βλέπετε μια δυνατή λύση της άσκησης.
Διευκρίνιση: Στον tester που βαθμολογεί τα προγράμματά σας έχουν προστεθεί και άλλες περιπτώσεις ελέγχου πέρα από αυτές που υπήρχαν στον tester που είχατε στη διάθεσή σας κατά τη διάρκεια του διαγωνίσματος. Αυτό είναι αναγκαίο για τη σωστή βαθμολόγηση γιατί κάποιοι (αποφεύγω το χαρακτηρισμό τους) κοιτάνε τις περιπτώσεις ελέγχουν και τις απαντήσεις στον tester και απλά τις αντιγράφων στο user.py ώστε να απαντάει με τις αντίστοιχες απαντήσεις στις περιπτώσεις αυτές.

Προγράμματα προς παράδοση Νο 9: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 24, Πρόγραμμα 25, Πρόγραμμα 26

έως τα μεσάνυχτα της Δευτέρας 4 Μαϊου 2015 Τετάρτης 6 Μαϊου 2015. Δείτε παραπάνω για οδηγίες.

Τρίτη 28 Απριλίου 2015: Παραδείγματα χρήσης του class για κάποια γεωμετρικά αντικείμενα (θα σας βοηθήσει και στη λύση της άσκησης που είναι παραδοτέα τη Δευτέρα).

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 30 Απριλίου 2015: Παραδείγματα χρήσης του class για πολυώνυμα.

Σημειωματάριο της ημέρας με σχόλια.

Προγράμματα προς παράδοση Νο 10: Πρέπει να υποβάλετε στο σύστημα τα παρακάτω τρία προγράμματα

Πρόγραμμα 27, Πρόγραμμα 28, Πρόγραμμα 29,

έως τα μεσάνυχτα της Δευτέρας 11 Μαϊου 2015. Δείτε παραπάνω για οδηγίες.

ΑΝΑΚΟΙΝΩΣΗ (4/5/2015):
Στα προγράμματα 24, 25, 26 υπάρχουν πάρα πολλά λάθη στα προγράμματά σας τα οποία δεν τα <<έπιαναν>> οι περιπτώσεις του tester.py που σας είχαν βάλει. Έχω ανεβάσει ενημερωμένους testers τους οποίους θα πρέπει να κατεβάσετε και να ελέγξετε τα προγράμματά σας με αυτούς, πέρα από το ότι πρέπει να τα ελέγχετε και με το μυαλό σας γιατί ο κάθε tester μπορεί να ελεγξει μερικές μόνο περιπτώσεις. Τα προγράμματα πήραν παράταση μέχρι την Τετάρτη το βράδυ.

Για παράδειγμα, πολλοί από εσάς για να ελέγξουν αν δύο ποσότητες που είναι πραγματικοί αριθμοί (και όχι ακέραιοι) είναι ίσες χρησιμοποιούν απλά το σύμβολο της ισότητας (x==y). Επειδή όμως οι πραγματικοί αριθμοί δεν αναπαρίστανται ακριβώς στον υπολογιστή (σε αντίθεση με τους ακεραίους) αυτή δεν είναι η ενδεδειγμένη μέθοδος γιατί μπορεί να αποτύχει λόγω απόκλισης του x από το y κατά μια πολύ μικρή ποσότητα η οποία προέρχεται ακριβώς από αυτή την έλλειψη ακριβούς αναπαράστασης και φυσικά από το γεγονός ότι ούτε το αποτέλεσμα των πράξεων ανάμεσα σε πραγματικούς αριθμούς είναι απολύτως ακριβώς. Υπάρχει δηλ. περίπτωση το παρακάτω πρόγραμμα να τυπώσει "Not equal" (όπως συμβαίνει στο δικό μου σύστημα). (Θυμηθείτε την ταυτότητα $\cos{2x} = 2\cos^2{x}-1$.)

Γι' αυτό όταν ελέγχουμε την ισότητα δύο πραγματικών ποσοτήτων αφήνουμε πάντα ένα περιθώριο σφάλματος (π.χ. 1e-8) και ελέγχουμε ως αν η απόλυτη διαφορά τους είναι μικρότερη από αυτό το περιθώριο.

ΑΝΑΚΟΙΝΩΣΗ (5/5/2015):
Το εργαστήριο αυτή την Παρασκευή 8/5/2015 θα είναι στη διάθεσή μας μέχρι τις 1μμ και την επόμενη Παρασκευή 15/5/2015 θα είναι στη διάθεσή μας μέχρι τις 11πμ.

Τρίτη 5 Μαΐου 2015: Πολυπλοκότητα αλγορίθμων. Γραμμικό και δυαδικό ψάξιμο μιας διατεταγμένης λίστας.

Σημειωματάριο της ημέρας με σχόλια.

Πέμπτη 7 Μαΐου 2015: Περισσότερα για την αναδρομή. Η μέθοδος ταξινόμησης mergesort.

Σημειωματάριο της ημέρας με σχόλια.

Πρόγραμμα προς παράδοση Νο 11: Πρέπει να υποβάλετε στο σύστημα το παρακάτω πρόγραμμα

Πρόγραμμα 30,

έως τα μεσάνυχτα της Δευτέρας 18 Μαϊου 2015. Δείτε παραπάνω για οδηγίες.

Τρίτη 12 Μαΐου 2015: Σήμερα δεν προγραμματίσαμε σχεδόν καθόλου, αλλά μιλήσαμε κυρίως για τη χρονική πολυπλοκότητα κάποιων αλγορίθμων. Τελειώσαμε κατ' αρχήν τη χρονική ανάλυση του mergesort (είναι γραμμένη στο προηγούμενο σημειωματάριο). Έπειτα μιλήσαμε γενικά για το συμβολισμό $f(n) = O(g(n))$ και το τι σημαίνει αυτός (δείτε στην 6.12 στις σημειώσεις αυτές). Είδαμε έπειτα ότι η αναδρομική συνάρτηση (η πρώτη που είχαμε γράψει) για την ακολουθία Fibonacci είναι εκθετικού χρόνου, ενώ αυτή με αποθήκευση δεδομένων είναι χρόνου $O(N)$. Μιλήσαμε αρκετά για την ίδια την ακολουθία Fibonacci και είδαμε π.χ. ότι μπορούμε να βρούμε ένα τύπο για το γενικό όρο, που όμως δεν είναι και τόσο εύκολο να οδηγήσει σε ένα καλό αλγόριθμο υπολογισμού. Τέλος είδαμε και μια άλλη μέθοδο υπολογισμού των αριθμών αυτών που περιγράφετα και εδώ.

ΑΝΑΚΟΙΝΩΣΗ (15/5/2015):
Για να κλείσετε θέση για την τέταρτη εξέταση (Παρασκευή 22 Μαΐου, πρωί) πηγαίνετε στο

https://fourier.math.uoc.gr/prog2/work/signup.php

Πέμπτη 14 Μαΐου 2015: Αρχίσαμε να μιλάμε για δυναμικό προγραμματισμό.

Σημειωματάριο της ημέρας με σχόλια.

Προγράμματα τέλος. Μένει μόνο η τελευταία εξέταση της Παρασκευής.

ΑΝΑΚΟΙΝΩΣΗ (19/5/2015):
Το εργαστήριο σήμερα Τρίτη 19/5/2015 θα είναι κλειστό στο διάστημα 11-1.

ΑΝΑΚΟΙΝΩΣΗ (19/5/2015):
Το μάθημα της Πέμπτης 21/5/2015 (με Κολουντζάκη) δε θα γίνει. Οι διαλέξεις του κ. Κολουντζάκη έχουν τελειώσει.

Τρίτη 19 Μαΐου 2015: Τελειώσαμε τη συζήτηση για δυναμικό προγραμματισμό.

Σημειωματάριο της ημέρας με σχόλια.

ΑΝΑΚΟΙΝΩΣΗ (22/5/2015):
Διευκρινίζεται ότι η ημερομηνία εξέτασης μέσα στην εξεταστική περίοδο αφορά μόνο όσους είχαν στη διάρκεια του εξαμήνου ζητήσει (και η αίτησή τους έγινε δεκτή) να εξεταστούν μόνο στη διάρκεια της εξεταστικής περιόδου γιατί δε μπορούσαν να εξεταστούν κατά τη διάρκεια του εξαμήνου. Αυτοί που δικαιούνται να εξεταστούν μέσα στην εξεταστική φαίνονται εδώ.

Αποτελέσματα 4ης εξέτασης: Δείτε εδώ.
Μπορείτε να δείτε όλες τις ασκήσεις εδώ. Στο αντίστοιχο αρχείο myuser.py μπορείτε να βλέπετε μια δυνατή λύση της άσκησης.

ΑΝΑΚΟΙΝΩΣΗ (1/6/2015):
Τελικοί βαθμοί μαθήματος (εκτός αν ανήκετε σε αυτούς που εξετάζονται μόνο μέσα στην εξεταστική βρίσκονται εδώ σε μορφή pdf.

ΑΝΑΚΟΙΝΩΣΗ (5/6/2015):
Το εργαστήριο της Γ109 θα ανοίξει την ερχόμενη εβδομάδα Τρίτη 9/6/15 12:00-14:00 και Πέμπτη 11/6/15 12:00-14:00. Όσοι από σας εξετάζεστε μέσα στην εξεταστική περίοδο (τα ονόματα είναι εδώ) μπορείτε να πάτε ώστε να εξοικειωθείτε με το σύστημα στο οποίο θα εξεταστείτε.

ΑΝΑΚΟΙΝΩΣΗ (19/6/2015):
Βαθμοί όσων εξετάστηκαν στην τελική εξέταση:

ΜΑΘ 4043 -- 6
ΜΑΘ 4111 -- 6
ΤΕΜ 1290 -- 7.5
ΤΕΜ 1539 -- 1.5
ΤΕΜ 1656 -- 7.5
ΤΕΜ 1741 -- 0

Η εξέταση Σεπτεμβρίου θα γίνει στις 16/9/2015, στις 9:00 το πρωί στα εργαστήρια της Γ109. Το στυλ θα είναι παρόμοιο με τις εργαστηριακές εξετάσεις που δόθηκαν κατά τη διάρκεια του εξαμήνου με τη διαφορά ότι η εξέταση θα διαρκεί 1:30 και θα υπάρχουν τέσσερα προγράμματα τα οποία θα πρέπει να γράψετε. Ο τελικός σας βαθμός θα είναι αποκλειστικά ο βαθμός σας από αυτό το διαγώνισμα (δε μετράνε δηλ. οι εργαστηριακές ασκήσεις του εξαμήνου, ούτε οι ασκήσεις που γράφατε από το σπίτι σας).

Για να κλείσετε θέση σε κάποιο τμήμα εξέτασης πηγαίνετε στο link εδώ.

Όσοι έχετε περάσει ήδη το μάθημα δεν έχετε δικαίωμα επανεξέτασης για βελτίωση του βαθμού σας. Αν επιθυμείτε εξέταση για βελτίωση του βαθμού σας θα πρέπει να έρθετε σε συνεννόηση με τον αντίστοιχο διδάσκοντα και να το δηλώσετε. Σε αυτή την περίπτωση θα εξεταστείτε ειδικά για αναβαθμολόγηση.

Το εργαστήριο της Γ109 θα είναι ανοικτό 10-2 κάθε μέρα, από σήμερα Πέμπτη 10/9/2015 μέχρι και την προηγουμένη της μέρας της εξέτασης. Όσοι από σας δεν είστε αρκετά εξοικειωμένοι με τα συστήματα πάνω στα οποία θα εξεταστείτε μπορείτε να πηγαίνετε και να δουλεύετε στους υπολογιστές αυτούς κάποια παραδείγματα από τα παλιά προγράμματα.

Βαθμοί εξέτασης Σεπτεμβρίου είναι εδώ. Οι ασκήσεις είναι εδώ. Τελικοί βαθμοί εδώ σε μορφή PDF.

Οι φοιτητές με ΑΜ 4931, 4832 δεν είναι εγγεγραμμένοι στο μάθημα και δεν τους καταχωρείται βαθμός.

Όσοι φοιτητές έχουν περάσει το μάθημα τον Ιούνιο και επιθυμούν εξέταση για αναβαθμολόγηση θα εξεταστούν προφορικά και πάνω στον υπολογιστή από τον κο Πλεξουσάκη. Παρακαλούνται όσοι το επιθυμούν να επικοινωνήσουν με τον κο Πλεξουσάκη μέχρι και την Τετάρτη 23/9/2015.

Η εξέταση της 29ης Ιαν. 2016 (ειδική εξεταστική) θα γίνει όπως και οι προηγούμενες εξετάσεις του μαθήματος, στις αίθουσες υπολογιστών της πτέρυγας Γ, επίπεδο 1. Όλοι οι εξεταζόμενοι πρέπει να έχουν προσέλθει στις αίθουσες στις 1μμ ακριβώς. Ο βαθμός της εξέτασης αυτής θα είναι και ο τελικός βαθμός.

Δικαιούνται να συμμετάσχουν στην εξέταση μόνο όσοι (α) έχουν εγγραφεί στο παρελθόν στο μάθημα, (β) δεν έχουν περάσει το μάθημα ποτέ και (γ) έχουν αριθμό μητρώου <= 4577 (ΜΑΘ) ή <= 1638 (ΕΦΜ).

Αποτελέσματα εξέτασης 29/1/2016: εδώ. Πρέπει να έχετε γράψει σωστά 3 από τις 6 ασκήσεις τουλάχιστον για να περάσετε το μάθημα.


Τμήμα Μαθηματικών και Εφαρμοσμένων Μαθηματικών, Πανεπιστήμιο Κρήτης

Πίσω στην κεντρική σελίδα για τη Γλώσσα Προγραμματισμού ΙΙ.