Ανακοινώθηκε η τελική βαθμολογία της κανονικής εξεταστικής περιόδου (Φεβρουάριος 2006). Όσοι σπουδαστές έχουν ακόμα εκκρεμότητες με τις ασκήσεις, να επικοινωνήσουν άμεσα με τους διδάσκοντες.
13/3/2006
Ανακοινώθηκε η βαθμολογία της κανονικής εξεταστικής περιόδου (Φεβρουάριος 2006).
11/10/2005
Οι διαλέξεις
του μαθήματος θα διεξάγονται κάθε Τρίτη, ώρα 15:00-18:00,
στην Αίθουσα 0.1.15 του Κτιρίου Ηλεκτρολόγων.
Υλικό
Γενικά
Το μάθημα χωρίζεται σε δύο μέρη ως ακολούθως. Το ίδιο και η βαθμολογία (αν
και το ποσοστό κάθε μέρους δεν είναι αυστηρά 50%, προκειμένου να πριμοδοτηθούν
σπουδαστές με κλίση/ενδιαφέρον σε κάποιο από τα δύο μέρη) .
Επεξεργασία φυσικής γλώσσας, Γιάννης Μαΐστρος
Η βαθμολογία θα προκύψει αποκλειστικά από μια σειρά ασκήσεων που οι
σπουδαστές θα πρέπει να παραδώσουν στο διδάσκοντα.
Θεωρία γλωσσών προγραμματισμού, Νίκος Παπασπύρου
Η βαθμολογία θα προκύψει από μια εξέταση, διάρκειας 1.5 με 2.0 ωρών, που
θα γίνει στο τέλος του εξαμήνου με ανοιχτά βιβλία και σημειώσεις.
Οι σπουδαστές μπορούν να βελτιώσουν τη βαθμολογία τους σε αυτό το μέρος,
παραδίδοντας στο διδάσκοντα μια σειρά ασκήσεων (bonus).
Χρήσιμο υλικό από τις παραδόσεις του κ. Μαΐστρου, για το μέρος του μαθήματος
που σχετίζεται με την επεξεργασία φυσικής γλώσσας, είναι διαθέσιμο
στη σελίδα:
ΠΡΟΣΟΧΗ: Τα παρακάτω αφορούν
μόνο στο μέρος του μαθήματος που σχετίζεται με τη θεωρία γλωσσών
προγραμματισμού.
Διαφάνειες
Οι διαφάνειες που θα χρησιμοποιούνται στις διαλέξεις είναι διαθέσιμες από την
παρούσα σελίδα για τη διευκόλυνση των σπουδαστών, ώστε αυτοί να μη χρειάζεται
να κρατούν εκτενείς σημειώσεις κατά τη διάρκεια των μαθημάτων. Η ύλη των διαφανειών
παρουσιάζεται αναλυτικά στις σημειώσεις του μαθήματος. Μη σπεύσετε να
εκτυπώσετε τις διαφάνειες στην παρούσα μορφή. Πρόκειται να τροποποιηθούν
κατά τη διάρκεια του εξαμήνου.
Σε μορφή για παρουσίαση: ps.gz (395KB), pdf
(654KB), μία διαφάνεια ανά σελίδα.
Σε μορφή για εκτύπωση: ps.gz (396KB),
pdf (562KB), έξι διαφάνειες ανά σελίδα.
Τελευταία
ενημέρωση των διαφανειών: 5/12/2005.
Προγραμματιστική άσκηση
Παραδώστε τα παρακάτω με e-mail στο διδάσκοντα το αργότερο δέκα ημερολογιακές μέρες μετά το τέλος της εξεταστικής περιόδου. Η άσκηση είναι προαιρετική και μετράει θετικά μέχρι του 20% της βαθμολογίας του μέρους του μαθήματος που σχετίζεται με τη θεωρία γλωσσών προγραμματισμού.
Προδιαγράψτε μια γλώσσα εκφράσεων συνδυάζοντας χαρακτηριστικά που παρουσιάστηκαν στις παραδόσεις με τίτλο Συστήματα Τύπων (25/10 , 8/11 και 29/11, βλ. σχετικές διαφάνειες). Η γλώσσα σας θα πρέπει να περιέχει τουλάχιστον: τους βασικούς τύπους, τον τύπο συναρτήσεων και μία ακόμα επέκταση. Για τη γλώσσα αυτή δώστε:
τη σύνταξη,
τη λειτουργική σημασιολογία, και
τους κανόνες τύπων.
Στη γλώσσα προγραμματισμού της αρεσκείας σας, υλοποιήστε έναν ελεγκτή τύπων (type checker) και ένα διερμηνέα (interpreter) βασισμένο στη λειτουργική σημασιολογία της παραπάνω γλώσσας. Μην ασχοληθείτε με τη λεκτική και συντακτική ανάλυση των εκφράσεων, αλλά θεωρήστε ότι ο αρχικός κώδικας δίνεται σε κατάλληλη αφηρημένη μορφή.
Ελέγξτε την ορθότητα της υλοποίησής σας με κατάλληλα παραδείγματα εκφράσεων.
Όσοι θα ήθελαν να χρησιμοποιήσουν μια γλώσσα συναρτησιακού προγραμματισμού για την υλοποίηση του ελεγκτή τύπων και του διερμηνέα (μέρος 2 της άσκησης) παραπέμπονται στη βιβλιογραφία, όπου μπορούν να βρούν πληροφορίες για τις γλώσσες Haskell, Ocaml και Clean.
Επίσης, ίσως βρείτε χρήσιμο το περισυνό παράδειγμα υλοποίησης ενός απλού διερμηνέα εκφράσεων σε Haskell: hs (1,6KB)