Προγραμματισμός Η/Υ

Περιγραφή Μαθήματος:

Εμβάθυνση στο προγραμματισμό γενικού σκοπού με αντικειμενοστραφείς μεθόδους στη γλώσσα Python και στη χρήση σύνθετων τύπων αντικειμένων. Εισαγωγή στον παράλληλο προγραμματισμό MPI και διαδικτυακό προγραμματισμό εξυπηρετητή. Εφαρμογή στη δημιουργία ολοκληρωμένων προγραμμάτων με γραφικό περιβάλλον διεπαφής, σύνθετες αριθμητικές μεθόδους και γραφήματα. Διερμηνευτικές και γλώσσες που απαιτούν μεταγλώττιση. Παραγωγή γρήγορου εκτελέσιμου κώδικα με την αντικειμενοστραφή Fortran 2003 και την παράλληλη Fortran 2008.

Απαιτούμενες Γνώσεις

Αριθμητική Ανάλυση, μαθήματα με εφαρμογές μηχανικού, αρχές προγραμματισμού.

Κεφάλαια Μαθήματος

# Τίτλος Διδακτέα Ύλη Ώρες
1 Εισαγωγή στην Python Εισαγωγή στα εργαλεία που θα χρησιμοποιηθούν, επίδειξη της εγκατάστασής τους, εισαγωγή στην Python, μεταβλητές, εκφράσεις, βαθμωτοί τύποι, εκτέλεση υπό συνθήκη. 1Χ3=3
2 Βρόγχοι, συναρτήσεις & Αριθμητική πινάκων και μητρώων Βρόγχοι, επαναλήψεις (γεννήτορες), εντολές ελέγχου ροής. Αριθμητική πινάκων και μητρώων. Ορισμός και κλήση συναρτήσεων. Ορίσματα εισόδου και εξόδου. Ορίσματα εξορισμού (default). Μεταβλητός αριθμός ορισμάτων. Παραδείγματα. 1Χ3=3
3 Σύνθετοι τύποι αντικειμένων & Αντικειμενοστρα-φής προγραμματι-σμός Το ολοκληρωμένο περιβάλλον Pyzo. Μεταβλητές, πλειάδες, λίστες, σύνολα, λεξικά. Παραδείγματα. Κλάσεις και αντικείμενα. Έτοιμα αντικείμενα της Python. Μέθοδοι και μέλη. Κληρονομικότητα. Πολυμορφισμός. Παραδείγματα. 1Χ3=3
4 Διαχείριση λαθών εκτέλεσης και εξαιρέσεις Διάδοση λαθών σε εμφωλευμένες συναρτήσεις. Σύλληψη λαθών με εξαιρέσεις. Είδη εξαιρέσεων. Δημιουργία εξαιρέσεων. Αποσφαλμάτωση με το Pyzo. Παραδείγματα. 1Χ3=3
5 Δημιουργία και χειρισμός αριθμη-τικών δεδομένων Μητρωικοί υπολογισμοί numpy. Επιστημονικοί υπολογισμοί scipy. Σύνθετα γραφήματα matplotlib. Συμβατότητα με Matlab. Παραδείγματα. 1Χ3=3
6 Γραφικό περιβάλλον διεπαφής (GUI) Το γραφικό περιβάλλον tkinter. Κύριο παράθυρο. Widgets. Προβολή και εισαγωγή κειμένου. Γραμματοσειρές. Οδηγός γεωμετρίας – κάναβος. Μενού. Μηνύματα λάθους. GUI και αντικειμενοστραφής προγραμματισμός. Παραδείγματα. 1Χ3=3
7 Γραφικό περιβάλλον διεπαφής (συνέχεια) Διαχωρισμός GUI και υπολογισμών. Γραφική ανάγνωση και αποθήκευση αρχείων. Σχεδίαση διανυσματικών γραφικών, γραμμές κύκλοι κλπ. Αυτόματη αναπροσαρμογή γεωμετρίας. Κείμενο με πολλαπλές γραμμές. Scrollbars. Δοχεία widgets. Νέες κλάσεις widgets. Πολλαπλά παράθυρα. 1Χ3=3
8 Εισαγωγή στους παράλληλους υπολογισμούς Σειριακοί και παραλληλοποιήσιμοι υπολογισμοί. Αρχιτεκτονική παράλληλων συστημάτων. Παράλληλο σύστημα MPI. Εκτέλεση στιγμιότυπων ίδιου κώδικα σε πολλαπλούς πυρήνες. Διαφοροποίηση εκτέλεσης κατά Rank. Επικοινωνία στιγμιότυπων με send/recv. Broadcast και Reduce. Παραδείγματα. 1Χ3=3
9 Γεννήτριες και διαδρομές Παραστάσεις γεννήτριας. Γεννήτριες. Εμφωλευμένες γεννήτριες. Έτοιμες γεννήτριες και πράξεις με γεννήτριες. Διαδρομές αρχείων. Διαδρομές φακέλλων. Ενιαία χρήση σε Windows, Linux, MacOS. Μέθοδοι διαδρομών. Εμφωλευμένες διαδρομές. Παραδείγματα. 1Χ3=3
10 Εισαγωγή στο διαδικτυακό προγραμματισμό Διαδίκτυο, WWW, HTTP, URL. Πελάτες και εξυπηρετητές. Σύνδεσμοι. Συνοπτική περιγραφή HTML. Δημιουργία εξυπηρετητή με Python bottle. Αντιστοιχία ιστοσελίδων σε συναρτήσεις. Ομαδοποίηση ιστοσελίδων. Ορίσματα σε ιστοσελίδες. Εκτύπωση HTML από συναρτήσεις. Παραδείγματα. 1Χ3=3
11 Εισαγωγή στη Fortran Διερμηνευτές και μεταγλωττιστές. Πλεονεκτήματα και μειονεκτήματα. Μεταβλητές Fortran. Ελεγχόμενη και ανεξάρτητη από πλατφόρμα ακρίβεια. Εντολές ελέγχου ροής. Πολυδιάστατα μητρώα. Πράξεις και συναρτήσεις μητρώων. Μητρώα μεταβλητών διαστάσεων. Αριθμητικές βιβλιοθήκες. Παραγωγή εκτελέσιμου κώδικα. Παραδείγματα. 1Χ3=3
12 Αντικειμενοστρα-φής προγραμματι-σμός στην Fortran Ενότητες. Κοινές μεταβλητές. Συναρτήσεις δημόσιες και ιδιωτικές. Υπερφόρτιση συναρτήσεων. Νέοι τύποι δεδομένων. Ορισμός κλάσεων. Κληρονομικότητα και πολυμορφισμός. Παραδείγματα. 1Χ3=3
13 Παράλληλος προγραμματισμός στη Fortran & Συνεργασία με C Ενιαίο πρόγραμμα σε πολλά στιγμιότυπα. Ενσωμάτωση παραλληλίας στις εντολές Fortran. Επικοινωνία με συμμητρώα. Συγχρονισμός στιγμιοτύπων με SYNC και NOTIFY/QUERY. Αποφυγή παρενεργειών με κρίσιμες περιοχές. Παραδείγματα. Συμβατότητα με C. Συμβατοί τύποι μεταβλητών. Κλήση συναρτήσεων C από Fortran. Κλήση συναρτήσεων Fortran από C. Interfaces. Κλήση συναρτήσεων C από Python, κλήση συναρτήσεων Fortran από Python. 1Χ3=3

Μαθησιακοί Στόχοι

Με την επιτυχή ολοκλήρωση του μαθήματος, οι φοιτητές θα είναι σε θέση να: 1. έχουν βαθιά και πλουραλιστική γνώση στον προγραμματισμό Η/Υ (Διερμηνευτικές και γλώσσες με μεταγλώττιση), 2. συνειδητοποιούν την αξία των Η/Υ στην επιστήμη του ΠΜ, 3. κατανοούν τον τρόπο λειτουργίας των Η/Υ, και τα όρια και περιορισμούς των προγραμμάτων και των Η/Υ γενικότερα, 4. δομούν μεγάλα και ολοκληρωμένα προγράμματα Η/Υ γενικού σκοπού, και να 5. υπολογίζουν μέσω προγραμματισμού Η/Υ οποιοδήποτε πρόβλημα της επιστήμης πολιτικού μηχανικού.

Μέθοδοι και Μέσα Διδασκαλίας και Μάθησης

Μέθοδοι Διδασκαλίας Διαλέξεις στην τάξη και εργαστήρια.
Μέσα Διδασκαλίας Θεωρία-Εφαρμογές και Ασκήσεις από Πίνακες με διαφάνειες σε ένα τμήμα.
Εργαστήρια Ναι. Το μάθημα είναι εργαστηριακό. Όλες οι εβδομάδες μαθημάτων γίνονται σε εργαστήριο Η/Υ όπου ο κάθε φοιτητής αναπτύσσει προγράμματα και επιλύει προβλήματα μηχανικού σε περιβάλλον PYTHON και FORTRAN.
Χρήση ΗΥ και προγραμμάτων Ναι (Υπολογιστικά πακέτα PYTHON και FORTRAN)
Ασκήσεις Ναι

Αξιολόγηση Επίδοσης

  • 80% Τελική γραπτή εξέταση
  • 20% Θέματα, εργασίες και τεχνικές εκθέσεις

Διδασκαλία:

  • Πέμπτη, 14:45 – 17:30,
    Αίθουσες:
    • Ζωγράφου, Εργαστήριο Κέντρου Η/Υ ΔΕΠΥ Α & Β (ισογ., 1ος όροφος)