Notes TOC
Notes TOC
Allows practice with formal definitions of computation and introduces concepts relevant to other
nontheoretic areas of computer science.
Complexity Theory- What makes some problems computationally hard and others easy?
“Hard” problem - if it cannot be solved efficiently, or if we don’t know whether it can be solved
efficiently. An example is finding an optimal timetable for all UTech students .
PREREQUISITE KNOWLEDGE
Mathematical Concepts
Set theory plays a fundamental role in the theory of computation, providing a mathematical
foundation for formal languages, automata theory, formal proofs, and complexity theory. It
enables the precise definition and analysis of computational models and their properties, making
it an essential tool in computer science research and practice.
Sequences and Tuples
sequences represent strings and words over an alphabet, which form the basis of formal
languages.
Tuples represent states, transitions, input symbols, and instances of computational problems in
automata theory and complexity theory.
Understanding these concepts is essential for analyzing computational models and algorithms’
behavior, properties, and complexity.
Functions and Relations
Functions describe mappings or computations on sequences and play a role in language processing,
automata behavior, computational models, and complexity analysis.
Relations describe associations or connections between sequences and are used to define the structure
and dependencies of formal languages, automata, computational models, and problems in complexity
theory.
Graphs
Graphs are used to represent and analyze various structures, including parse trees, state transition
diagrams, data flow/control flow graphs, circuit/communication graphs, and reduction graphs.
Graph theory and graph algorithms provide insights into the behavior, properties, and complexity of
computational models, formal languages, and problems in the theory of computation.
Boolean Logic
Boolean logic provides the foundation for expressing and manipulating binary values, enabling
the design, analysis, and understanding of computational systems and algorithms.
Strings and Languages
Strings represent data and form the basis for formal languages, while languages are sets of
strings defined by specific rules.
Theory of Computation WK5: Context-Free Languages