2025
CSC 353 | 2.0 Credits
Theory of Computations
Duration: Approximately 30 Lecture hours
Pre-requisites: None
Learning Objectives
- To introduce the mathematical formalisms of formal languages, finite automata, push downautomata and Turing machines.
- To explain their applications to computer languages and compilers.
- To provide exposure to the theory of complexity and intractable problems.
Course Content
- Mathematical Preliminaries
- Alphabets and Languages
- Finite automata
- Context free languages
- Turing Machines
- Computational Complexity
Learning Outcomes
- At the end of this course, the students will be able to
- Define and manipulate strings.
- Define languages; and perform language operations.
- Define and identify regular languages; and represent them finitely.
- Define a deterministic finite automaton; and describe its operation.
- Define a nondeterministic finite automaton; and describe its operation.
- Explain the relationship between regular languages and finite automata.
- Construct finite automata accepting regular languages.
- Define and identify context free grammars and languages.
- Define a pushdown automaton; and describe its operation.
- Relate context free languages with pushdown automata.
- Construct pushdown automata accepting context free languages.
- Explain and apply Pumping lemma.
- Define a Turing machine; and describe its operation.
- Describe the computation with Turing machine
References
1. H.R. Lewis, C.H. Papadimitrio. Elements of the Theory of Computation. Prentice Hall. 2nd Edition,1998
2. D.C. Kozen. Automata and Computability, Springer-Verlang, New York, 1997
Quizzes
Ready to test your knowledge?Try out 1 quiz