Learning objectives
Provide the basic elements and formal tools for studying problems that can and cannot be dealt with using a computer.
Prerequisites
Mathematical analysis 1, Fundamentals of programming.
Course unit content
<br /> Introductory notes on the algorithm concept, on the representation<br />of information, and on computer architecture.<br />Formal languages.<br />Regular expressions.<br />Finite state automata.<br />Generative grammars.<br />Context-free languages.<br />Turing machines.<br />Computable and non-computable functions.
Bibliography
A. Dovier, R. Giacobazzi. Fondamenti dell'Informatica: Linguaggi Formali e Calcolabilita.<br />
A. M. Pitts. Regular Languages and Finite Automata.<br />
I. Mastroeni. Collection of exercises for the ``Fundamentals of Computer Science: Linguaggi Formali e Calcolabilita''.<br />
U. Solitro. <em>Linguaggi Formali, Computabilità e Complessità: Esercizi risolti</em>, 2006.<br />
A. Pettorossi. <em>Automata Theory and Formal Languages</em>, Aracne Editrice, 2006. ISBN: 88-548-0889-X.<br />
A. Pettorossi. <em>Elements of Computability, Decidability, and Complexity</em>, Aracne Editrice, 2006. ISBN: 88-548-0682-X.