Το μάθημα είναι προπτυχιακό, διδάσκεται στο 7ο εξάμηνο σπουδών και εξετάζει τι μπορεί να υπολογίσει ένας υπολογιστής, ανάλογα με την αρχιτεκτονική του. Εξετάζει τρία αφηρημένα μοντέλα υπολογιστών, καθώς και αντίστοιχες κλάσεις προβλημάτων που αυτοί μπορούν να λύνουν. Για την περιγραφή των υπολογιστών χρησιμοποιούνται τα αυτόματα, ενώ για την περιγραφή των προβλημάτων χρησιμοποιούνται οι γλώσσες (σύνολα λέξεων που κατασκευάζονται από πεπερασμένα αλφάβητα). Μαθησιακοί στόχοι του μαθήματος είναι να είναι σε θέση ο φοιτητής (α) να αναγνωρίζει τα διάφορα αφηρημένα μοντέλα υπολογιστών, (β) να διακρίνει τις διάφορες κλάσεις προβλημάτων, (γ) να αποκτήσει ικανότητα τυπικής περιγραφής των προβλημάτων.
Αλφάβητα και γλώσσες. Κανονικές εκφράσεις.
Μετατροπή σε ισοδύναμα ντετερμινιστικά.
Ιδιότητες των γλωσσών των πεπερασμένων αυτομάτων. Ισοδυναμία γλωσσών πεπερασμένων αυτομάτων και κανονικών εκφράσεων.
Θεώρημα άντλησης. Γραμματικές χωρίς συμφραζόμενα.
Γλώσσες χωρίς συμφραζόμενα.
Θεώρημα άντλησης για γραμματικές χωρίς συμφραζόμενα. Ντετερμινιστικά αυτόματα στοίβας. Μηχανές Turing. Υπολογισμοί. Παραλλαγές της βασικής μηχανής.
Θέση του Church. Turing αποφασίσιμες γλώσσες. Turing αποδεκτές γλώσσες. Γραμματικές χωρίς περιορισμούς.
Το πρόβλημα του τερματισμού. Μη-αποφασίσιμα προβλήματα.
Μη ντετερμινισμός και αποφασισιμότητα. Αναγωγές. Απαριθμήσιμες γλώσσες. Θεώρημα του Rice. Υπολογιστική πολυπλοκότητα. Παραδείγματα προβλημάτων. Οι κλάσεις P, NP και EXP.
NP-πληρότητα. Το θεώρημα του Cook. P vs NP. Αντιμετώπιση NP προβλημάτων.