Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών
Ιωάννης Γαροφαλάκης, Σπυρίδων Σιούτας, Παναγιώτης Χατζηδούκας
-
Μετάφραση Γλωσσών Προγραμματισμού
-
Σύνταξη Γλωσσών Προγραμματισμού
-
Μεταβλητές, Εκφράσεις, Εντολές
-
Τύποι Δεδομένων - Προχωρημένοι Τύποι Δεδομένων
(Πολυδιάστατα Arrays - Τανυστές)
-
Εμβέλεια και Χρόνος Δέσμευσης Μνήμης
-
Διαδικασίες, Συναρτήσεις
-
Αρχές Συναρτησιακού προγραμματισμού
(λ-calculus, Map-Reduce)
-
Εισαγωγή στην Python
-
Αρχές Αντικειμενοστραφούς προγραμματισμού
-
Αρχές Λογικού προγραμματισμού
-
Αρχές Γλωσσών Προγραμματισμού για Βάσεις Δεδομένων
-
Μετάφραση Γλωσσών Προγραμματισμού
-
Σύνταξη Γλωσσών Προγραμματισμού
-
Μεταβλητές, Εκφράσεις, Εντολές
-
Τύποι Δεδομένων - Προχωρημένοι Τύποι Δεδομένων
(Πολυδιάστατα Arrays - Τανυστές)
-
Εμβέλεια και Χρόνος Δέσμευσης Μνήμης
-
Διαδικασίες, Συναρτήσεις
-
Αρχές Συναρτησιακού προγραμματισμού
(λ-calculus, Map-Reduce)
-
Εισαγωγή στην Python
-
Αρχές Αντικειμενοστραφούς προγραμματισμού
-
Αρχές Λογικού προγραμματισμού
-
Αρχές Γλωσσών Προγραμματισμού για Βάσεις Δεδομένων
-
Μετάφραση Γλωσσών Προγραμματισμού
-
Σύνταξη Γλωσσών Προγραμματισμού
-
Μεταβλητές, Εκφράσεις, Εντολές
-
Τύποι Δεδομένων - Προχωρημένοι Τύποι Δεδομένων
(Πολυδιάστατα Arrays - Τανυστές)
-
Εμβέλεια και Χρόνος Δέσμευσης Μνήμης
-
Διαδικασίες, Συναρτήσεις
-
Αρχές Συναρτησιακού προγραμματισμού
(λ-calculus, Map-Reduce)
-
Εισαγωγή στην Python
-
Αρχές Αντικειμενοστραφούς προγραμματισμού
-
Αρχές Λογικού προγραμματισμού
-
Αρχές Γλωσσών Προγραμματισμού για Βάσεις Δεδομένων
Περίγραμμα

Γιάννης Γαροφαλάκης, Καθηγητής, garofala@ceid.upatras.gr
Σπύρος Σιούτας, Καθηγητής, sioutas@ceid.upatras.gr
Παναγιώτης Χατζηδούκας, Αν. Καθηγητής, phadjido@ceid.upatras.gr
Φροντιστήριο - Εργασίες:
Γεράσιμος Βονιτσάνος, Διδάκτορας, mvonitsanos@ceid.upatras.gr
Ιουλία Σίμου, Υποψήφια Διδακτόρισσα, simo@ceid.upatras.gr
-
Μετάφραση Γλωσσών Προγραμματισμού
-
Σύνταξη Γλωσσών Προγραμματισμού
-
Μεταβλητές, Εκφράσεις, Εντολές
-
Τύποι Δεδομένων - Προχωρημένοι Τύποι Δεδομένων
(Πολυδιάστατα Arrays - Τανυστές)
-
Εμβέλεια και Χρόνος Δέσμευσης Μνήμης
-
Διαδικασίες, Συναρτήσεις
-
Αρχές Συναρτησιακού προγραμματισμού
(λ-calculus, Map-Reduce)
-
Η Γλώσσα Προγραμματισμού Python
-
Αρχές Αντικειμενοστραφούς προγραμματισμού
-
Αρχές Λογικού προγραμματισμού
-
Μαθηματικές Γλώσσες Ερωτήσεων
Με την ολοκλήρωση της διδασκαλίας του μαθήματος, οι φοιτητές θα είναι ικανοί να:
- Κατανοούν το συνολικό πλαίσιο και ιστορικό της ανάπτυξης και χρήσης των διαφόρων παραδειγμάτων γλωσσών προγραμματισμού.
- Γνωρίζουν τα βασικά κριτήρια καλού σχεδιασμού και επιτυχίας μιας γλώσσας προγραμματισμού.
- Γνωρίζουν τη λειτουργία των μεταφραστών και διερμηνευτών, τις διαφορές τους και τα περιβάλλοντα χρήσης τους.
- Διακρίνουν τα διαφορετικά επίπεδα συντακτικών στοιχείων των γλωσσών προγραμματισμού.
- Κατασκευάζουν τυπικές γραμματικές που είναι μέρος των τυπικών γλωσσών, θεωρητικού μοντέλου περιγραφής του συντακτικού των γλωσσών προγραμματισμού.
- Υλοποιούν λεξικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με πεπερασμένα αυτόματα και κανονικές εκφράσεις, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το flex.
- Υλοποιούν συντακτικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με γραμματικές χωρίς συμφραζόμενα χρησιμοποιώντας σημειογραφία BNF, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το bison.
- Γνωρίζουν τον τρόπο που υλοποιούν και χειρίζονται οι διάφορες γλώσσες προγραμματισμού, τα συντακτικά στοιχεία ανώτερου επιπέδου όπως μεταβλητές, εκφράσεις, εντολές.
- Ορίζουν κατάλληλους τύπους δεδομένων στα προγράμματά τους, αξιοποιώντας τις δυνατότητες που προσφέρουν οι διαφορετικές γλώσσες προγραμματισμού.
- Γνωρίζουν τους δύο βασικούς κανόνες εμβέλειας (στατικός και δυναμικός) και τους τρόπους υλοποίησής τους στις διάφορες γλώσσες προγραμματισμού.
- Γνωρίζουν τους μηχανισμούς δέσμευσης και διαχείρισης μνήμης κατά την εκτέλεση ενός προγράμματος.
- Γνωρίζουν τα είδη, τα συστατικά, τα χαρακτηριστικά και τις σχεδιαστικές προκλήσεις για τη χρήση υποπρογραμμάτων.
- Προγραμματίζουν χρησιμοποιώντας υποπρογράμματα, αξιοποιώντας τους διαφορετικούς τρόπους μεταβίβασης παραμέτρων που υποστηρίζουν οι γλώσσες προγραμματισμού.
- Γνωρίζουν τα βασικά χαρακτηριστικά των διαφορετικών παραδειγμάτων προγραμματισμού, συγκεκριμένα του συναρτησιακού και του λογικού προγραμματισμού.
- Γνωρίζουν σε βάθος τη Γλώσσα Προγραμματισμού Python.
Με την ολοκλήρωση της διδασκαλίας του μαθήματος, οι φοιτητές θα έχουν αναπτύξει τις ακόλουθες δεξιότητες:
- Θα έχουν αποκτήσει μια συνολική άποψη για τη δομή, τον τρόπο λειτουργίας και τις δυνατότητες των σύγχρονων γλωσσών προγραμματισμού.
- Θα μπορούν να κατασκευάζουν τυπικές γραμματικές.
- Θα υλοποιούν λεξικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με πεπερασμένα αυτόματα και κανονικές εκφράσεις, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το flex.
- Θα υλοποιούν συντακτικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με γραμματικές χωρίς συμφραζόμενα χρησιμοποιώντας σημειογραφία BNF, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το bison.
- Θα ορίζουν κατάλληλους τύπους δεδομένων στα προγράμματά τους, αξιοποιώντας τις δυνατότητες που προσφέρουν οι διαφορετικές γλώσσες προγραμματισμού.
- Θα προγραμματίζουν χρησιμοποιώντας υποπρογράμματα, αξιοποιώντας τους διαφορετικούς τρόπους μεταβίβασης παραμέτρων που υποστηρίζουν οι γλώσσες προγραμματισμού.
- Θα προγραμματίζουν σε Python.
Αξιολόγηση:
2ο Έτος - Νέα διαδικασία:
- 60% Τελική γραπτή εξέταση
- 20% Project flex/bison (υποχρεωτικό), 1 – 3 ατόμων
- 20% Εργασία Python (υποχρεωτική), 1 – 3 ατόμων
Προϋποθέσεις:
- Τουλάχιστον 3,5 και στα τρία (γραπτό, flex/bison, Python)
- Φυσικά, μέσος όρος των τριών, τουλάχιστον 5.
- Μπορεί να δοθεί οποιο(α)δήποτε από τα τρία τον Ιούνιο και το/τα υπόλοιπο/α το Σεπτέμβριο (-> βαθμός Σεπτεμβρίου).
- Οι βαθμοί Project flex/bison και Εργασίας Python παραμένουν και για το επόμενο ακαδημαϊκό έτος. Όχι ο βαθμός του Γραπτού.
3ο Έτος και άνω:
-
70% Τελική γραπτή εξέταση
-
30% Project (υποχρεωτικό), 1 - 3 ατόμων
Προϋποθέσεις:
-
Τουλάχιστον 5 και στα δύο (γραπτό, project)
-
Μπορεί να δοθεί η εξέταση (ή το project) τον Ιούνιο και το project (ή η εξέταση) το Σεπτέμβριο (θα είναι βαθμός Σεπτεμβρίου τότε)
-
Ο βαθμός Project παραμένει και για το επόμενο ακαδημαϊκό έτος. Όχι του Γραπτού και της Άσκησης Python.
- Μπορεί να ακολουθηθεί η νέα διαδικασία, εφόσον παραδοθεί Εργασία Python (έμμεση δήλωση προτίμησης διαδικασίας…)
Παραδόσεις (Θεωρία - Εργασίες - Ασκήσεις):
- Δευτέρα 4 - 6 μμ
και
- Τρίτη 3 - 5 μμ
- Michael L. Scott, Πραγματολογία των Γλωσσών Προγραμματισμού, Κλειδάριθμος, 2009
ή
- Robert W. Sebesta, Αρχές Γλωσσών Προγραμματισμού, 11η Έκδοση, Μ. Γκιούρδας, 2017
-
Ellis Horowitz, Βασικές Αρχές Γλωσσών Προγραμματισμού, Κλειδάριθμος 1993
-
Ν. Παπασπύρου, Ε. Σκορδαλάκης, Μεταγλωττιστές, Συμμετρία 2002
-
Terrence W. Pratt, Marvin V. Zelkowitz, Programming Languages Design & Implementation, 4th Edition, 2001, Prentice Hall
-
J.P. Bennett, Introduction to Compiling Techniques. A first course using ANSI C, LEX and YACC, 2nd Edition, 1996, Mc Graw-Hill
-
A.V. Aho, R. Sethi, J.D. Ullman, Compilers: Principles, Techniques and Tools, 1986, Addison-Wesley
- Τεχνολογία και Προγραμματισμός Υπολογιστών (ΝΥ131)
- Οντοκεντρικός Προγραμματισμός (ΝΥ134)
- Εισαγωγή στους Αλγόριθμους (ΝΥ205)
- Δομές Δεδομένων (ΝΥ233)
- Θεωρία Υπολογισμού (ΝΥ3011).
- Εξέλιξη των Γλωσσών Προγραμματισμού,
- Κριτήρια σχεδιασμού.
- Είδη Μεταφραστών,
- Χρήσιμα Μεταεργαλεία,
- Διερμηνευτές,
- Σύγκριση Μεταφραστών/Διερμηνευτών
- Λεκτική Ανάλυση:
- Πεπερασμένα Αυτόματα,
- Κανονικές Εκφράσεις.
- Συντακτική Ανάλυση:
- Γραμματικές - BNF,
- LL - LR,
- Top -Down Parsing,
- Bottom-Up Parsing.
- Μεταβλητές,
- Εκφράσεις,
- Εντολές.
- Βασικοί Τύποι,
- Ακολουθίες Χαρακτήρων,
- Τύποι Απαρίθμησης,
- Array,
- Record,
- Δείκτες.
- Κανόνες Εμβέλειας,
- Χρόνος Δέσμευσης Μνήμης,
- Στοίβες Εκτέλεσης.
- Είδη Υπορουτίνων.
- Μεταβίβαση Παραμέτρων:
- Κλήση με Τιμή,
- Κλήση με Αναφορά,
- Κλήση με Τιμή-Αποτέλεσμα,
- Κλήση με Όνομα.
Ανοικτό Ακαδ. Μάθημα

Αρ. Επισκέψεων : 96873
Αρ. Προβολών : 814695